Précédent : Communications pour C++//: SCHOONER Remonter
: Langages à objets parallèles Suivant :
Communication et placement dans les
Participants : Isabelle Attali (CROAP ), Denis Caromel, Sidi Ould Ehmety (CROAP ), Yves Roudier, David Sagnol
Mots-clés : langage à objets, parallélisme
Nous étudions à travers les langages Eiffel et Eiffel// comment paralléliser des programmes à objets. Nous avons tout d'abord décrit la sémantique dynamique d'Eiffel en sémantique naturelle. Première application de sémantique naturelle à un vrai langage à objets, elle définit formellement héritage et liaison dynamique en présence de renommage et de redéfinition [6].
Nous avons ensuite modifié la sémantique d'Eiffel pour obtenir la sémantique d'Eiffel//. Celle-ci est décrite en termes de systèmes de transitions. Défini dans le cadre de Centaur, un environnement interactif pour le langage Eiffel// a ainsi pu être produit [15] avec notamment la visualisation graphique des systèmes d'acteurs et de leur topologie (objets actifs et passifs, requêtes en attente de service, attente par nécessité, etc.). Cet environnement est également valide pour la version séquentielle du langage, puisque la sémantique d'Eiffel// inclut celle d'Eiffel.
Enfin, nous avons exploré d'autres modélisations pour le langage Eiffel//, afin de montrer l'équivalence de programmes séquentiels et parallèles ; en particulier, nous avons étudié comment modéliser des programmes Eiffel// en TLA+ [62]. Il a été possible de prouver l'équivalence entre la version séquentielle et la version parallèle d'un arbre binaire de recherche.
Nous avons décrit la sémantique dynamique d'un autre langage : Sisal [7] (expressions multi-valuées, fonctions d'ordre supérieur, boucles, tableaux et séquences). Nous avons ensuite défini dans [16] le format intermédiaire IF1 et spécifié la traduction de Sisal vers IF1, puis des optimisations classiques sur ce format, incluses dans le compilateur OSC. Nous espérons ainsi établir la base d'une définition et d'une implantation de compilateurs validés pour le langage Sisal 2.0. A terme, l'objectif est d'étendre les techniques data-flow utilisées dans le cadre fonctionnel de Sisal afin de les appliquer à la représentation de programmes à objets Eiffel// et à leur parallélisation.
Ces travaux ont donné lieu à collaborations avec Jean-Luc Gaudiot (University of Southern California, USA) et Andrew Wendelborn (University of Adelaïde, Australie), qui a accueilli Romain Guider en stage de mai à août 96, afin de travailler sur la parallélisation des boucles Sisal [40].