Sono interessato all'apprendimento della programmazione concorrente, concentrandomi sull'applicazione / livello utente (non sulla programmazione di sistema). Sto cercando un linguaggio di programmazione moderno di alto livello che fornisca astrazioni intuitive per scrivere applicazioni concorrenti. Voglio concentrarmi sulle lingue che aumentano la produttività e nascondono la complessità della programmazione concorrente.
Per dare alcuni esempi, non considero una buona opzione scrivere il codice multithread in C, C ++ o Java perché IMHO la mia produttività è ridotta e il loro modello di programmazione non è intuitivo. D'altra parte, le lingue che aumentano la produttività e offrono astrazioni più intuitive come Python e il modulo multiprocessing, Erlang, Clojure, Scala, ecc., Sarebbero buone opzioni.
Che cosa consiglieresti in base alla tua esperienza e perché?
EDIT: Grazie a tutti per le vostre risposte interessanti. È difficile fare una conclusione senza tentare in realtà poiché ci sono molti buoni candidati: Erlang, Clojure, Scala, Groovy e forse Haskell. Ho votato la risposta con gli argomenti più convincenti, ma proverò tutti i buoni candidati prima di decidere quale scegliere:)