Sémantique parallèle d'un langage fonctionnel indulgent

Les langages fonctionnels indulgents --- non-stricts mais non-paresseux --- sont particulièrement intéressants pour la programmation parallèle implicite. Dans cet article, nous allons présenter la sémantique d'un tel langage à l'aide d'une algèbre de processus (pi-calcul).

Dans un premier temps, nous présenterons ce qu'est un langage fonctionnel indulgent. À l'aide d'un exemple, nous verrons pourquoi un tel langage facilite l'écriture de programmes implicitement parallèles. Cette première partie sera suivie d'une brève introduction au pi-calcul, notation introduite par R. Milner pour la description de processus concurrents et mobiles.

Une sémantique formelle d'un noyau de langage fonctionnel indulgent (kpH) sera ensuite présentée. Cette sémantique sera exprimée de facon dénotationnelle, en utilisant des termes de pi-calcul comme dénotations d'expressions du langage; elle permettra d'exprimer comment l'indulgence permet d'exploiter le parallélisme implicite présent dans un programme fonctionnel.

Finalement, la dernière partie présentera un interpréteur de pi-calcul réalisé en Java et où les threads de Java sont utilisés pour obtenir un interpréteur parallèle reflétant le parallélisme inhérent au pi-calcul. Nous y décrirons aussi quelques-uns des tests effectués pour vérifier de façon empirique la validité de notre sémantique indulgente ainsi que pour examiner le parallélisme pouvant être extrait de programmes indulgents vs. stricts.

Pour obtenir la version postscript

Cliquez ici pour obtenir la version postscript.