¿Formalismos en programación concurrente y / o distribuida?

10

Mi experiencia provino de lenguajes imperativos, principalmente C, C ++ y Python. Recogí Scala, Erlang y un poco de Haskell unos años más tarde y desde entonces me he interesado mucho en la programación funcional y los formalismos detrás de ella.

También estoy interesado en la programación concurrente y distribuida y he estado buscando formalismos detrás de eso, especialmente aquellos que han visto al menos un poquito de la "luz del día" (por ejemplo, uso en el mundo real, o al menos una implementación en alguna parte). Hasta ahora sé acerca de los procesos secuenciales de comunicación, el modelo de actor, el álgebra de los procesos de comunicación y el cálculo de los sistemas de comunicación. Entre estos, sé que el modelo de actor se ha realizado en idiomas como Erlang, Scala y Haskell.

Me pregunto si hay fundamentos que debería aprender y practicar antes de abordar estos campos, si hay uno "clásico" que debería estudiar primero, y si hay otros populares que me haya perdido.

adelbertc
fuente

Respuestas:

5

El formalismo más utilizado es el cálculo de Milner, Parrow y Walker. Es una extensión de CCS, y viene en muchas variantes, algunas de las cuales (el cálculo asíncrono ) intentan ser una formalización del modelo de actor. Ahora hay muchas disciplinas de tipeo para -calculi, la más simple de las cuales probablemente sean los tipos de sesión de Honda. Estos tipos se difunden lentamente de los trabajos de investigación a las implementaciones de investigación.πππ

Martin Berger
fuente
Ah muy interesante, gracias! ¿Qué tipo de formación matemática recomienda antes de abordar dicho campo, o es más o menos autónomo?
adelbertc
2
Es más o menos autónomo. Al menos lo básico. Milner's Communicating and Mobile Systems es una introducción amigable. Si desea entrar en tipos por concurrencia, le sugiero que entienda primero el cálculo sin tipo, y tal vez también esté familiarizado con los cálculos escritos. πλ
Martin Berger