Di recente ho letto molte discussioni sui linguaggi di programmazione funzionale (quasi nell'ultimo anno, in effetti). Vorrei davvero sceglierne uno e impararlo a fondo.
Lo scorso semestre [corso], mi è stato presentato Scheme. Lo amavo. Ho adorato l'estrema semplicità della sintassi, il principio di omoiconicità , le macro ( igieniche e non igieniche), la n-arità delle procedure, ecc.
Il problema con Scheme è che è un linguaggio accademico. Non credo sia davvero utilizzato negli ambienti di produzione. Non credo neanche che sia particolarmente bello avere sul nostro curriculum. Quindi, ho cercato alternative. Ce ne sono molti e in qualche modo sembrano tutti avere un livello simile di popolarità.
Alcuni pensieri su alcuni altri linguaggi funzionali che ho ancora considerato:
- Clojure: Sembra fantastico perché può accedere al mondo Java, è orientato verso la scalabilità e la concorrenza, ma il mondo Java non è al limite in questo momento? Conosco già abbastanza bene Java, ma sarebbe saggio aggiungere ancora più energia a seconda della JVM?
- Haskell: Sembra una lingua molto apprezzata, ma da quello che ho letto, è anche più una lingua accademica.
- Lisp: È in circolazione da sempre. Sembra avere la maggior parte di ciò che mi piace di Scheme. Ha una grande comunità. Per quello che [penso di sapere], è probabilmente il linguaggio di programmazione funzionale più utilizzato nell'industria (?).
- F #: Non l'ho davvero preso in considerazione. Non sono un grande fan delle cose sulla SM. Non ho i soldi per pagare i loro software (potrei averli liberi dalle alleanze universitarie, ma sono più propenso ad andare con soluzioni guidate dalla comunità). Anche se ... immagino che sarebbe la migliore scelta orientata alla carriera.
Stasera, mi chino verso Lisp. Una settimana fa, era Haskell. Prima di allora era Clojure. L'anno scorso, stavo facendo un po 'di Schema per divertimento, non spingendolo per il motivo che conosci. Ora vorrei prendere sul serio (sull'apprendimento di uno, su come realizzare progetti reali con esso, su eventualmente eventualmente lavorare professionalmente con esso). Il mio problema è che avrei bisogno di impararli tutti in profondità prima di poterne scegliere uno.