Sono interessato all'apprendimento della programmazione concorrente, concentrandomi sul livello applicazione / utente (non sulla programmazione del sistema). Sto cercando un moderno linguaggio di programmazione di alto livello che fornisca astrazioni intuitive per la scrittura di applicazioni simultanee. Voglio concentrarmi su linguaggi che aumentano la produttività e nascondono la complessità della programmazione concorrente.
Per fare alcuni esempi, non considero una buona opzione per scrivere 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 multiprocessore, Erlang, Clojure, Scala, ecc. Sarebbero buone opzioni.
Cosa consiglieresti in base alla tua esperienza e perché?
EDIT: grazie a tutti per le vostre risposte interessanti. È difficile trarre una conclusione senza tentare davvero 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 :)
begin transaction
end transaction
e tutto ciò che è dentro dovrebbe essere privo di deadlock e riuscire o fallire nel suo insieme.
To give an example, I don't consider a good option writing multithreaded code in C, C++, or Java
. Perché?On the other hand, Python and the multiprocessing module, Erlang, Clojure, Scala, etc. are some of my options.
Ancora una volta, perché? Espandi la tua domanda per definire meglio ciò che stai effettivamente cercando.