![]()
Précédent : Sémantique des langages concurrents d'ordre
Remonter : Sémantique des langages concurrents d'ordre
Suivant : Mobilité et vérification
Les langages pour le parallélisme d'ordre supérieur, étant beaucoup plus expressifs que les modèles « classiques » comme les calculs de processus MEIJE ou CCS que nous étudiions précédemment, posent des problèmes plus difficiles, aussi bien en ce qui concerne leur fondement sémantique que leur utilisation comme modèles permettant de raisonner et de faire des vérifications sur des applications concrètes. Dans cette section nous décrivons notre travail sur le premier point.
Un problème ouvert depuis quelques années, et qui a été résolu
indépendamment et presque simultanément cette année par plusieurs
chercheurs, est celui de la sémantique dénotationnelle
du
-calcul. Contrairement
au cas des algèbres de processus classique, la « bonne » notion
de bisimulation pour le
-calcul est loin
d'être clairement établie, et la notion de modèle l'est encore
moins. D. Sangiorgi, en collaboration avec Marcelo Fiore de
l'université d'Edimbourg et Eugenio Moggi de Gènes, a résolu ce
problème en proposant une construction abstraite de modèle qui
est complètement adéquate pour une forme particulière de
bisimulation, où un statut explicite est donné aux fonctions qui
associent des agents aux noms de canaux [16].
La notion de bisimulation elle-même continue de faire l'objet
d'actives recherches. Nous avons en particulier proposé, pour la
variante dite « asynchrone » du
-calcul,
une nouvelle définition qui parait mieux adaptée dans ce cadre.
L'idée est la suivante : dans un monde asynchrone, tout message
est émis sans délai, et cette émission ne bloque aucune autre
activité. Par conséquent on peut penser qu'un observateur ne
peut, dans ce cas, « contrôler » le processus observé en lui
envoyant des messages. Autrement dit, seuls les messages émis -
et non les réceptions de message - par le processus testé peuvent
être observés. Cette idée a été mise en oeuvre dans l'article
[7], qui développe la théorie
équationnelle de cette notion de bisimulation « asynchrone ».
Dans le même ordre d'idées, le papier [20] enrichit l'étude des diverses formes de
bisimulations proposées pour le
-calcul,
et plus particulièrement du point de vue de leur compatibilité
avec les opérateurs du langage. Les auteurs montrent en
particulier que la version « synchrone » du
-calcul, où l'émission de message est bloquante,
requiert une théorie élaborée, où la relation de causalité entre
les actions d'un processus est prise en compte.
Deux autres travaux sont à mentionner dans cette section de
sémantique. Le premier, dû à D. Sangiorgi [24], établit que le calcul d'objets typés
récemment proposé par Abadi et Cardelli peut être codé dans le
-calcul en respectant
les types. Ce n'est pas un résultat a priori évident : par
exemple le codage « naturel » du calcul d'Abadi et Cardelli dans
un
-calcul étendu avec des
« records » récursif ne préserve pas le typage. Le codage de
Sangiorgi, qui utilise un
-calcul
étendu avec une construction « par cas », reste au premier ordre,
et est donc plus simple que le codage dans le
-calcul du second ordre établi par Viswanathan
(POPL'96). Enfin, dans un article à paraître dans les actes de
POPL'97 (Janvier 97), G. Boudol a proposé une synthèse du
-calcul et du
-calcul asynchrone, où
l'émission de message est interprétée comme l'application du nom
du destinataire au contenu du message, tandis que le récepteur
est un agent associé à ce nom. Ainsi la réception d'un message
correspond à l'opération qui remplace un nom par sa valeur
trouvée dans l'environnement. On obtient un calcul où l'on peut,
comme en
-calcul, manipuler
directement des données d'ordre supérieur, tout en gardant les
facilités de communication du
-calcul
asynchrone. Ceci apparaît clairement dans le système de types,
qui généralise à la fois celui du
-calcul (types simples de Church et Curry) et le « sorting » du
-calcul donné par
Milner. Ce
-calcul généralisé
permet aussi de se rendre compte que les diverses traductions de
stratégies de réduction du
-calcul
dans le
-calcul ne sont rien
d'autre qu'une transcription de diverses transformations CPS («
continuation passing style ») connues depuis longtemps.