Formalismi nella programmazione concorrente e / o distribuita?


10

Il mio background proveniva da linguaggi imperativi, principalmente C, C ++ e Python. Ho raccolto Scala, Erlang e un po 'di Haskell qualche anno dopo e da allora sono diventato molto interessato alla programmazione funzionale e ai formalismi alla base.

Sono anche interessato alla programmazione concorrente e distribuita e ho esaminato i formalismi dietro a ciò, in particolare quelli che hanno visto almeno un po 'della "luce del giorno" (ad esempio l'uso del mondo reale o almeno un'implementazione da qualche parte). Finora conosco i processi sequenziali comunicanti, il modello di attore, l'algebra dei processi comunicanti e il calcolo dei sistemi comunicanti. Tra questi, so che il modello Actor si è realizzato in lingue come Erlang, Scala e Haskell.

Mi chiedo se ci sono basi che dovrei imparare e mettere in pratica prima di affrontare questi campi, se ce n'è una "classica" che dovrei studiare per prima, e se ce ne sono altre popolari che potrei aver perso?

Risposte:


5

Il formalismo più utilizzato è il -calculus di Milner, Parrow e Walker. È un'estensione di CCS ed è disponibile in molte varianti, alcune delle quali (il asincrono -calculus) tentano di essere una formalizzazione del modello dell'attore. Ora ci sono molte discipline di battitura per -calculi, le più semplici delle quali sono probabilmente i tipi di sessione di Honda. Tali tipi si stanno lentamente diffondendo dai documenti di ricerca alle implementazioni di ricerca.πππ


Ah molto interessante, grazie! Che tipo di background matematico mi consiglia prima di affrontare un campo del genere o è più o meno autonomo?
adelbertc,

2
È più o meno autonomo. Almeno le basi. Milner's Comunicating and Mobile Systems è un'introduzione amichevole. Se vuoi entrare nei tipi per la concorrenza, ti suggerisco di capire prima il non tipizzato -calculus e forse anche di avere familiarità con il tipo -calculi. πλ
Martin Berger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.