Je suis intéressé par l’apprentissage de la programmation concurrente, en mettant l’accent sur le niveau application / utilisateur (pas la programmation système). Je recherche un langage de programmation moderne de haut niveau offrant des abstractions intuitives pour l'écriture d'applications simultanées. Je veux me concentrer sur les langages qui augmentent la productivité et cachent la complexité de la programmation simultanée.
Pour donner des exemples, je ne considère pas comme une bonne option d’écrire du code multithread en C, C ++ ou Java car mon humble avis est ma productivité est réduite et leur modèle de programmation n’est pas intuitif. D'autre part, les langages qui augmentent la productivité et offrent des abstractions plus intuitives telles que Python et le module de multitraitement, Erlang, Clojure, Scala, etc. seraient de bonnes options.
Que recommanderiez-vous en fonction de votre expérience et pourquoi?
EDIT: Merci à tous pour vos réponses intéressantes. Il est difficile de conclure sans essayer, car il y a beaucoup de bons candidats: Erlang, Clojure, Scala, Groovy et peut-être Haskell. J'ai voté sur la réponse avec les arguments les plus convaincants, mais je vais essayer tous les bons candidats avant de décider lequel choisir :)
begin transaction
end transaction
tout doit être sans impasse et réussir ou échouer dans son ensemble.
To give an example, I don't consider a good option writing multithreaded code in C, C++, or Java
. Pourquoi?On the other hand, Python and the multiprocessing module, Erlang, Clojure, Scala, etc. are some of my options.
Encore une fois, pourquoi? Développez votre question pour mieux définir ce que vous recherchez réellement.