Aspects théoriques et pratiques de l'inférence de type et d'effets
Auteur / Autrice : | Jean-Pierre Talpin |
Direction : | Christian Queinnec |
Type : | Thèse de doctorat |
Discipline(s) : | Sciences appliquées |
Date : | Soutenance en 1993 |
Etablissement(s) : | Paris 6 |
Résumé
Dans de nombreuses disciplines scientifiques, comme en informatique, et tout specialement dans le domaine des langages de programmation, il est communement acquis d'associer aux etudes theoriques, sur les modeles de calcul, des travaux de nature plus pratique de mise en uvre, ou d'implementation. Pour cela, les techniques de mise en uvre des langages de programmation reposent sur des methodes formelles qui permettent d'en assurer la correction. Parmi ces methodes formelles, le typage statique est sans doute la forme la plus populaire. Il consiste a detecter, au moment de la compilation, une source frequente d'erreurs d'execution de programmes: l'usage inconsistant d'une valeur par rapport a la structure de cette valeur. Des lors que le typage statique d'un programme est verifie, aucune erreur d'acces aux donnees ne peut se produire pendant son execution. Dans la recherche d'un compromis entre simplicite et performance, l'introduction du typage polymorphe est a l'origine de progres notables, permettant le typage statique des fonctions generiques. Le typage polymorphe est parfaitement approprie pour les langages fonctionnels. Mais l'ajout de traits de programmation imperative a un langage fonctionnel s'accompagne de la necessite d'introduire une notion d'etat pour comprendre le sens des programmes. Les systemes d'effet permettent d'integrer le typage polymorphe et la programmation imperative. De meme qu'un type represente ce qu'un programme calcule, un effet decrit comment ce programme calcule. Types et effets sont annotes par des regions. Les regions decrivent des relations de partage entre les zones memoire ou resident les structures de donnees. L'interet porte aux langages de programmation fonctionnels tels que ml ne se limite pas au seul probleme du typage polymorphe, et notre systeme d'effet procure des informations utiles aussi bien pour le programmeur, qui peut par ce moyen decrire la specification de ses applications, que pour le compilateur qui peut utiliser les informations de type pour produire un code plus efficace et une representation de donnees moins couteuse.