Notre travail visait à explorer les limites de l'expressivité de la programmation parallèle
fonctionnelle c’est à dire distincte à la fois de la programmation concurrente (par sa sémantique
déterministe) et de la programmation parallèle impérative (par sa sémantique compositionnelle et
ses fonctions d'ordre supérieur). Nous l'avons mené selon deux approches.
L'approche dénotationnelle nous a permis d'obtenir CDS*, un schéma pour des langages
fonctionnels dont les types monomorphes concrets sont explicitement distribués, incluent les types
d'ordre supérieur, les types sommes et les types définis récursivement. Les programmes peuvent y
être aussi grands que le réseau, et peuvent observer les événements de communication d'autres
programmes. Une telle flexibilité n'est pas présente dans les langages apparentés où des restrictions
sont posées par exemple sur les fonctions d'ordre supérieur ou la taille des structures de données.
Les problèmes ouverts à résoudre avant de parvenir à un langage utilisable pratiquement sont :
la définition d'une syntaxe pratique et suffisamment expressive pour la déclaration des états,
la conception d'un système de types concrets distribués polymorphe,
la gestion de la mémoire.
L'approche opérationnelle nous a conduit à définir des extensions du -calcul par des
opérations BSP. Nous avons obtenu le calcul BS et le calcul BS qui peuvent être la base de
langages BSP purement fonctionnels d'ordre supérieur. Nous avons également montré que ce cadre
est propice aux preuves de correction partielle de programmes.
La stratégie faible d'appel par valeur que nous avons défini met en évidence la structure
parallèle des réductions. Cependant ces réductions sont trop synchrones : l'évaluation de certaines
opérations qui ne nécessitent jamais de communications est synchrone. Nous avons toutefois défini
une évaluation distribuée (correcte par rapport à la stratégie faible d'appel par valeur) sur des
vecteurs distribués de termes dans laquelle seules les opérations de communication et les
conditionnelles globales (qui nécessitent la diffusion d'une valeur sur tout le réseau) sont évaluées
de façon synchrone. La structure parallèle des réductions suit parfaitement la structure d'exécution
parallèle du modèle BSP. Nos expériences ont confirmé que nos opérations sont assez expressives
et que la prévision des temps parallèles est possible.
Par rapport aux langages à patrons :
nous donnons une sémantique opérationnelle parallèle à nos opérations qui suit parfaitement le
modèle d'exécution choisi alors que les langages à patrons ne donnent qu'une sémantique
dénotationnelle,