previous up next top index
Précédent : Implantation des langages fonctionnels Remonter : Implantation des langages fonctionnels Suivant : Langages restreints pour machines parallèles


Taxonomie des implantations séquentielles

Participants : Rémi Douence, Pascal Fradet De nombreuses techniques ont été proposées pour implanter les langages fonctionnels et il est difficile d'établir des comparaisons rigoureuses entre les différentes options existantes. Afin d'apporter des éléments de solution à ce problème difficile, nous avons proposé un cadre formel pour décrire et comparer les techniques de compilation des langages fonctionnels. L'idée de base consiste à définir le processus de compilation comme une suite de transformations de programmes dans le cadre fonctionnel. Nous nous sommes dans un premier temps concentrés sur les mises en oeuvre basées sur l'appel par valeur [22]. Les principales tâches d'un compilateur sont la compilation du schéma d'évaluation, de la tex2html_wrap_inline470 -réduction et des transferts de contrôle (appels et retours de fonctions). Nous avons identifié pour chaque étape plusieurs choix fondamentaux et nous les avons décrits comme des transformations de programmes. Nous nous sommes ensuite intéressés à l'appel par nom, l'appel par nécessité et la réduction de graphe [23]. Nous avons mené le même travail de description et de comparaison. L'appel par nécessité a demandé la modélisation d'une nouvelle étape de compilation: le partage et la mise à jour des fermetures. Nous avons identifié des étapes et des choix communs entre ces différentes options. La description dans un cadre unique a permis de mettre clairement en évidence les différences et les similitudes entre la réduction de graphe et les implantations à environnement.

Un des avantages de cette démarche est de décomposer et de structurer le processus de compilation. On peut, par exemple, montrer que des implantations apparemment très différentes partagent certaines options de mise en oeuvre [9]. Nous avons établi une taxonomie des mises en oeuvre de langages fonctionnels et nous avons classifié de nombreuses implantations classiques comme la SECD, la Cam, la G-machine, Tim, etc. Nous avons également étudié l'expression d'optimisations classiques, la conception de machines hybrides (i.e. intégrant plusieurs choix de compilation) et proposé des comparaisons formelles sous la forme d'étude de complexité des transformations. Le document de thèse de Rémi Douence [2] offre une présentation complète et unifiée de ces travaux.



previous up next top index Précédent : Implantation des langages fonctionnels Suivant : Langages restreints pour machines parallèles Remonter : Implantation des langages fonctionnels