Participants : Cédric Fournet, Georges Gonthier
Mots clefs : parallélisme asynchrone, concurrence, programmation répartie
La formalisation de la sémantique des primitives de
programmation distribuée décrites ci-dessus a conduit C. Fournet
et G. Gonthier à proposer un nouveau modèle de la concurrence. En
effet, le
-calcul de
Milner s'est révélé inadapté, parce que son pas de calcul
élémentaire, le rendez-vous sur un canal, est très difficile à
mettre en oeuvre en présence de pannes en milieu distribué.
Ce modèle, qui sera présenté à POPL 96 [5], admet deux formulations
complémentaires. La première, la machine chimique abstraite
réflexive, est un modèle de calcul dérivé de celui de Berry
et Boudol. La seconde, le join-calcul, est un calcul de
processus similaire au
-calcul.
La MCA réflexive est à la fois une simplification et une généralisation de la machine chimique abstraite. D'une part, on interdit le filtrage non-linéaire dans les règles de réaction, ce qui rend le modèle beaucoup plus opérationnel. D'autre part, on ajoute la possibilité de créer dynamiquement de nouveaux types de molécules, ainsi que leurs règles de réaction (c'est la partie ``réflexive''). Ainsi, on remplace le petit nombre de règles complexes de la MCA par un grand nombre de règles simples.
La MCA réflexive suggère une nouvelle primitive de synchronisation, la définition conjointe de fonction. Celle-ci est mieux adaptée aux langages fonctionnels que le rendez-vous sur canaux, issu des langages impératifs ; par exemple, elle permet d'associer statiquement le texte d'une fonction à un envoi de message. Par ailleurs, les constructions plus classiques (rendez-vous, moniteurs, et même objets concurrents) se programment très facilement et très naturellement avec des définitions jointes.
Le join-calculus, qui n'est autre que le pendant
syntaxique de la MCA réflexive, peut être vu comme une
restriction du
-calcul
asynchrone. En effet, les primitives du le join-calculus
sont l'émission asynchrone, la composition parallèle, et la
définition jointe. Cette dernière permet de créer un ensemble de
canaux qui ont un unique récepteur commun. Elle réunit donc en
une seule primitive, la restriction, la garde et la réplication
du
-calcul. Grâce à
cette restriction statique, les équivalences structurelles dans
le join-calcul ont de meilleures propriétés théoriques. Malgré
cette simplification, C. Fournet et G. Gonthier ont démontré que
le join-calculus et le
-calcul ont exactement la même puissance d'expression
en exhibant des encodages réciproques complètements adéquats.