Thèse soutenue

De l'expressivité à l'efficacité : une approche modulaire des langages à objets : le langage PRM et le compilateur prmc

FR  |  
EN
Auteur / Autrice : Jean Privat
Direction : Roland Ducournau
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 2006
Etablissement(s) : Montpellier 2

Résumé

FR  |  
EN

Cette thèse se place dans le contexte des langages à objets statiquement typés en héritage multiple. Elle est divisée en deux parties. La première concerne la spécification des langages. Elle aborde et formalise les relations entre classes et propriétés en insistant sur la problématique de l'héritage multiple : une classe peut redéfinir les méthodes héritées des classes qu'elle spécialise. Elle propose également le mécanisme du raffinement de class} qui permet d'ajouter a posteriori de nouvelles propriétés à des classes existantes. Ce mécanisme, couplé avec une notion de hiérarchie de modules, est basé sur une analogie structurelle avec les relations entre classes et propriétés : un module peut raffiner les classes importées des modules dont il dépend. Son originalité concerne la prise en compte des dépendances multiples, des raffinements multiples et des combinaisons entre raffinement et spécialisation. Cette première partie présente également PRM, un langage qui valide notre approche de l'héritage multiple, des modules et du raffinement de classes. La seconde partie concerne la compilation des langages à objets. Elle propose un schéma original de compilation pour les langages à objets qui est à la fois séparé (les modules sont compilés indépendamment de leurs utilisations finales) et intègre des techniques d'implémentation globales qui nécessitent la connaissance du programme dans son ensemble : analyse de types, suppression du code mort, coloration et arbres binaires de sélection. Ces techniques annulent le coût lié à l'héritage multiple et au raffinement de classes et réduisent fortement le coût du polymorphisme inhérent à tout langage à objets. L'originalité d'une telle approche réside dans l'application des techniques globales après la compilation des modules. Prmc, le compilateur pour PRM est ensuite présenté et le schéma de compilation proposé est validé par différents benchmarks.