Thèse soutenue

Decrire et comparer les mises en oeuvre de langages fonctionnels

FR
Auteur / Autrice : REMI DOUENCE
Direction : Daniel Le Métayer
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 1996
Etablissement(s) : Rennes 1

Résumé

FR

Les langages fonctionnels offrent de nombreux choix de mise en uvre. Un grand nombre de descriptions formelles d'implantation ont ete proposees, mais leur manque de structuration et les differents formalismes utilises rendent difficile l'identification et la comparaison de ces choix. Ces differents choix n'ont jamais ete systematiquement ni recenses ni compares. Nous proposons un cadre formel pour decrire et comparer les implantations de langages fonctionnels. Le cadre considere est une hierarchie de langages intermediaires qui sont tous des sous ensembles du lambda-calcul. Notre description d'une mise en uvre consiste en une sequence de transformations chacune compilant une tache particuliere en traduisant une expression d'un langage intermediaire dans un autre. Les expressions fonctionnelles du dernier langage peuvent etre vues comme du code machine. Pour chaque etape, differentes transformations representent les choix fondamentaux et les optimisations. Un benefice de cette approche est de structurer et decomposer le processus d'implantation. Deux mises en uvre differentes en apparence peuvent en fait partager des etapes de compilation. La correction de chaque etape est traitee independamment en prouvant la correction d'une transformation de programme fonctionnel. Cela aussi ouvre la voie aux comparaisons formelles en estimant la complexite des transformations (individuelles ou de leur composees). Cette these introduit quatre langages intermediaires pour modeliser les etapes principales: compilation de la strategie de reduction, de la beta-reduction, des ruptures de sequences, et du partage de calcul. Nous decrivons et comparons les differentes options pour chaque etape. Puis nous classifions les principales machines a environnement, et les reducteurs de graphes pour differentes strategies de reduction. Nous modelisons plusieurs extensions: les constantes (entier, flottant, booleen,. . . ), les operateurs primitifs, les structures de donnees et differentes optimisations. Enfin, ce travail ouvre de nouvelles perspectives en indiquant comment differentes techniques de compilation pourraient cohabiter dans des implantations hybrides plus efficaces