Ho letto e pensato un bel po 'su questo. Il ronzio sembra essere quello nel futuro multi-core, le lingue funzionali diventeranno più popolari. Sono relativamente noob alla programmazione funzionale. La mia unica esposizione era accademica, e nulla di abbastanza complicato da mettere davvero alla prova questa classe di linguaggio.I linguaggi funzionali sono intrinsecamente più parallelizzabili dei loro OO o cugini imperativi?
Quindi, a quanto ho capito, le funzioni pure possono essere facilmente e in modo trasparente parallelizzate. Questa è una grande funzionalità, dal momento che non comporta problemi con la scrittura del codice di threading. Tuttavia, non sembra dare molto aiuto con il codice seriale.
Example:
fooN(... (foo3(foo2(foo1(0)))))
Le chiamate di serie come questa sembrano essere un problema comune e talvolta inevitabile. Per me questi sono alla radice del perché la parallelizzazione è così difficile. Alcune attività sono semplicemente (o sembrano essere) altamente seriali. Avere una "mentalità funzionale" consente di decomporsi meglio alcune attività apparentemente serie? Esistono linguaggi funzionali esistenti che offrono meccanismi trasparenti per una migliore parallelizzazione del codice altamente seriale? Infine, i linguaggi funzionali sono intrinsecamente più parallelizzabili di OO o lingue imperative, e perché?
I linguaggi puramente funzionali (con i relativi lunedì) sono la chiave per il futuro. E non è necessario essere un programmatore immortale per zenarlo. Hai solo bisogno di affrontare i problemi in modo un po 'diverso. – yfeldblum
Non sono d'accordo. Lo stato mutabile che esiste per brevi periodi di tempo in ambiti di piccole dimensioni, come le variabili locali per una funzione, è una buona cosa perché rende l'implementazione delle funzioni più semplice ed efficiente. Quando diventa problematico è per cose come membri e variabili globali. – dsimcha
Più facile è un termine soggettivo. Pensavo come te, ora penso il contrario. Ho avuto ragione entrambe le volte. – luqui