Formalismos em programação concorrente e / ou distribuída?

10

Minha formação veio de linguagens imperativas, principalmente C, C ++ e Python. Peguei Scala, Erlang e um pouco de Haskell alguns anos depois e, desde então, fiquei muito interessado em programação funcional e nos formalismos por trás disso.

Também estou interessado em programação simultânea e distribuída e tenho estudado formalismos por trás disso, especialmente aqueles que viram pelo menos um pouquinho da "luz do dia" (por exemplo, uso no mundo real ou pelo menos uma implementação em algum lugar). Até agora, conheço os processos sequenciais de comunicação, o modelo do ator, a álgebra dos processos de comunicação e o cálculo dos sistemas de comunicação. Entre esses, eu sei que o modelo do ator se realizou em idiomas como Erlang, Scala e Haskell.

Gostaria de saber se existem fundações que eu deveria aprender e praticar antes de abordar esses campos, se há uma "clássica" que eu deveria estudar primeiro e se existem outras populares que eu possa ter perdido?

adelbertc
fonte

Respostas:

5

O formalismo mais amplamente utilizado é o -calculus de Milner, Parrow e Walker. É uma extensão do CCS e existe em muitas variantes, algumas das quais (o assíncrono -calculus) tentam ser uma formalização do modelo de ator. Atualmente, existem muitas disciplinas de digitação para -calculi, das quais as mais simples são provavelmente os tipos de sessão da Honda. Tais tipos estão difundindo lentamente de documentos de pesquisa para implementações de pesquisa.ππππ

Martin Berger
fonte
Ah muito interessante, obrigado! Que tipo de formação matemática você recomenda antes de abordar esse campo ou é mais ou menos independente?
Adelbertc
2
É mais ou menos independente. Pelo menos o básico. Os sistemas móveis e de comunicação de Milner são uma introdução amigável. Se você quiser entrar em tipos de simultaneidade, sugiro entender primeiro o -calculus não digitado e talvez também esteja familiarizado com o -calculi digitado . λπλ
Martin Berger