Estou interessado em aprender programação simultânea, focando no nível do aplicativo / usuário (não na programação do sistema). Estou procurando uma linguagem de programação moderna de alto nível que forneça abstrações intuitivas para escrever aplicativos simultâneos. Quero focar em linguagens que aumentam a produtividade e ocultam a complexidade da programação simultânea.
Para dar alguns exemplos, não considero uma boa opção escrever código multithread em C, C ++ ou Java, porque IMHO minha produtividade é reduzida e seu modelo de programação não é intuitivo. Por outro lado, linguagens que aumentam a produtividade e oferecem abstrações mais intuitivas, como Python e o módulo de multiprocessamento, Erlang, Clojure, Scala etc., seriam boas opções.
O que você recomendaria com base em sua experiência e por quê?
EDIT: Obrigado a todos por suas respostas interessantes. É difícil concluir sem realmente tentar, pois existem muitos bons candidatos: Erlang, Clojure, Scala, Groovy e talvez Haskell. Votei a resposta com os argumentos mais convincentes, mas tentarei todos os bons candidatos antes de decidir qual escolher :)
begin transaction
end transaction
e tudo o que está dentro deve estar livre de impasse e ter sucesso ou falhar como um todo.
To give an example, I don't consider a good option writing multithreaded code in C, C++, or Java
. Por quê?On the other hand, Python and the multiprocessing module, Erlang, Clojure, Scala, etc. are some of my options.
Novamente porque? Expanda sua pergunta para definir melhor o que você está realmente procurando.