Spécification et Implémentation des Langages à Objets Roland Ducournau LIRMM / INFO / DOC CNRS Université Montpellier II Journée LIRMM/INFO Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 1 / 34
Plan Plan 1 Contexte et Motivation 2 Deuxième Millénaire 3 Troisième Millénaire Problématique de l implémentation des objets Etude de quelques techniques particulières Schéma de compilation séparée avec optimisations globales Le langage PRM Perspectives sur le millénaire Bilan 4 Quatrième millénaire Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 2 / 34
Plan Contexte et Motivation 1 Contexte et Motivation 2 Deuxième Millénaire 3 Troisième Millénaire Problématique de l implémentation des objets Etude de quelques techniques particulières Schéma de compilation séparée avec optimisations globales Le langage PRM Perspectives sur le millénaire Bilan 4 Quatrième millénaire Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 3 / 34
Motivation Contexte et Motivation La plus grande réussite du dernier millénaire? Les objets (programmation, modélisation, etc.) Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 4 / 34
Motivation Contexte et Motivation La plus grande réussite du dernier millénaire? Les objets (programmation, modélisation, etc.) Le plus grand échec du dernier millénaire? C++! Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 4 / 34
Contexte et Motivation TRENTE Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 5 / 34
Plan Deuxième Millénaire 1 Contexte et Motivation 2 Deuxième Millénaire 3 Troisième Millénaire Problématique de l implémentation des objets Etude de quelques techniques particulières Schéma de compilation séparée avec optimisations globales Le langage PRM Perspectives sur le millénaire Bilan 4 Quatrième millénaire Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 6 / 34
Deuxième Millénaire Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 7 / 34
Deuxième Millénaire Les trois mousquetaires ( c A. Dumas) 1986-1994 Michel Habib Marianne Huchard Marie-Laure Mugnier Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 8 / 34
Deuxième Millénaire Les trois mousquetaires ( c A. Dumas) 1986-1994 Michel Habib Marianne Huchard Marie-Laure Mugnier Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 8 / 34
Deuxième Millénaire Spécification et implémentation... Héritage multiple Formalisation des techniques de linéarisation Utilisées par Clos, Dylan, Python, C++,... YAFOOL le plus beau langage objet du monde...... passé dans les poubelles de l histoire Contexte de typage dynamique LISP, CLOS, YAFOOL,... Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 9 / 34
Deuxième Millénaire avec Joël Quinqueton (le barde) Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 10 / 34
Plan Troisième Millénaire 1 Contexte et Motivation 2 Deuxième Millénaire 3 Troisième Millénaire Problématique de l implémentation des objets Etude de quelques techniques particulières Schéma de compilation séparée avec optimisations globales Le langage PRM Perspectives sur le millénaire Bilan 4 Quatrième millénaire Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 11 / 34
Troisième Millénaire Vingt ans après ( c A. Dumas) 2001-2006 Jean Privat (soutenance en juillet 2006, post-doc Purdue U.) Floréal Morandat (thèse commencée en septembre 2006) stagiaires de DEA/M2R (JP, P. Takhedmit, N. Desnos, FM,...) étudiants (IUP2, maîtrise/m1) Implémentation efficace de l héritage multiple étude de techniques particulières simulation sur gros benchmarks schéma de compilation global/séparé spécification du langage Prm compilateur Prm autogène Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 12 / 34
Troisième Millénaire Passage au typage statique Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 13 / 34
Troisième Millénaire Implémentation des objets Problématique de l implémentation des objets 3 mécanismes originaux envoi de message (ou liaison tardive) le polymorphisme ne permet pas l appel statique accès aux attributs le polymorphisme ne garantit pas la position de l attribut test de sous-typage le typage n est pas si sûr que ça! (vieille spécialité du LIRMM : M. Habib, L. Nourine, E. Thierry, O. Raynaud) Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 14 / 34
Troisième Millénaire Problématique de l implémentation des objets Héritage simple, typage statique A A Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 15 / 34
Troisième Millénaire Problématique de l implémentation des objets Héritage simple, typage statique A A B A B Problème : héritage multiple impossible Invariants de référence et de position Espace linéaire dans la taille de la relation de spécialisation Implémentation idéale Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 15 / 34
Troisième Millénaire Problématique de l implémentation des objets Héritage simple, typage statique A A B A B C A B C Problème : héritage multiple impossible Invariants de référence et de position Espace linéaire dans la taille de la relation de spécialisation Implémentation idéale Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 15 / 34
Troisième Millénaire Etude de quelques techniques particulières Alternatives pour l héritage multiple Coloration (1990-2006) idéale mais incompatible avec le chargement dynamique Hachage parfait (2005-2006) parfaitement incrémental mais efficacité moindre Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 16 / 34
Coloration A Troisième Millénaire Etude de quelques techniques particulières A B C A B A C D A B C D Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 17 / 34
Troisième Millénaire Etude de quelques techniques particulières Coloration A A B C A B A C D A B C D Problème : chargement dynamique impossible La coloration est une optimisation globale Invariants maintenus au prix de quelques trous Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 17 / 34
Troisième Millénaire Etude de quelques techniques particulières Coloration A A B C A B A C D A B C D Problème : chargement dynamique impossible La coloration est une optimisation globale Invariants maintenus au prix de quelques trous Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 17 / 34
Troisième Millénaire Etude de quelques techniques particulières Coloration A A B C A B A C D A B C D Problème : chargement dynamique impossible La coloration est une optimisation globale Invariants maintenus au prix de quelques trous Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 17 / 34
Troisième Millénaire Etude de quelques techniques particulières Coloration Quelques résultats Complexité (P. Takhedmit, Ch. Paul) problème de coloration de graphe, mais pas minimum NP-difficile dans la plupart des cas Heuristiques efficaces Simulation sur les benchmarks précités Schéma d utilisation en compilation séparée Synthèse sur la technique 3 inventeurs indépendants et complémentaires : Dixon 89, Pugh & Weddell 90, Ducournau 91, Vitek 97 Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 18 / 34
Hachage Parfait Troisième Millénaire Etude de quelques techniques particulières Sous-typage par table de hachage Soit une classe C et un objet o instance de D : o C id C est trouvé dans la table de o Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 19 / 34
Hachage Parfait Troisième Millénaire Etude de quelques techniques particulières Sous-typage par table de hachage Soit une classe C et un objet o instance de D : o C id C est trouvé dans la table de o Particularité Au chargement de la classe D, toutes ses super-classes sont connues. plus besoin d ajout, ni de retrait La table de D peut être optimisée statiquement Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 19 / 34
Hachage Parfait Troisième Millénaire Etude de quelques techniques particulières Sous-typage par table de hachage Soit une classe C et un objet o instance de D : o C id C est trouvé dans la table de o Particularité Au chargement de la classe D, toutes ses super-classes sont connues. plus besoin d ajout, ni de retrait La table de D peut être optimisée statiquement Solution : le hachage parfait [Sprugnoli 77] hachage sans collision temps constant, espace à déterminer par l expérience Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 19 / 34
Troisième Millénaire Etude de quelques techniques particulières Application à JAVA (1 pierre, 2 coups) table de hachage méthodes attributs de l instance Table bidirectionnelle de la classe C Partie positive pour les classes, comme en héritage simple Partie négative pour les interfaces, avec hachage parfait Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 20 / 34
Troisième Millénaire Etude de quelques techniques particulières Application à JAVA (1 pierre, 2 coups) H_C table de hachage méthodes h(d)=hash(id_d,h_c) attributs de l instance Table bidirectionnelle de la classe C Partie positive pour les classes, comme en héritage simple Partie négative pour les interfaces, avec hachage parfait Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 20 / 34
Troisième Millénaire Etude de quelques techniques particulières Application à JAVA (1 pierre, 2 coups) H_C id_d? méthodes h(d) h(d)=hash(id_d,h_c) attributs de l instance Table bidirectionnelle de la classe C Test de sous-typage pour interfaces D est une interface : o D? Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 20 / 34
Troisième Millénaire Etude de quelques techniques particulières Application à JAVA (1 pierre, 2 coups) H_C id_d? #foo méthodes de D h(d) h(d)=hash(id_d,h_c) attributs de l instance Table bidirectionnelle de la classe C Appel de méthode pour interfaces (invokeinterface) D x ; x.foo(arg) Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 20 / 34
Hachage Parfait Troisième Millénaire Etude de quelques techniques particulières Expérimentation avec des fonctions de hachage simples and et modulo complexité faible et algorithmes exacts simples Simulation sur les benchmarks précités Intrinsèquement incrémental Conclusions mitigées trop grande tables avec and la division entière est trop lente! Cherche fonction de hachage... 2 opérations à 1 cycle, garantissant des tables compactes. Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 21 / 34
Troisième Millénaire Schéma de compilation séparée avec optimisations globales Compilation séparée et optimisation globale Quadrature du cercle Compilation séparée : génération de code C, compilé séparément Optimisations globales à l édition de liens Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 22 / 34
Troisième Millénaire Schéma de compilation séparée avec optimisations globales Compilation séparée et optimisation globale Quadrature du cercle Compilation séparée : génération de code C, compilé séparément Optimisations globales à l édition de liens Optimisations Analyse de types Invocation de méthodes : Coloration pour les appels mégamorphes Arbres de décision binaires pour les appels oligomorphes Appel statique dans les cas monomorphes Elimination du code mort. Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 22 / 34
Troisième Millénaire Schéma de Compilation Schéma de compilation séparée avec optimisations globales phase locale Module source A compilation séparée schéma A externe schéma interne A code A analyse inter classes schéma global vivant phase globale phase locale Module source B compilation séparée schéma externe B schéma B interne code B coloration substitution de code édition de liens Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 23 / 34
Le langage PRM Troisième Millénaire Le langage PRM Un langage objet normal (donc unique!) statiquement typé avec héritage multiple basé...... sur un méta-modèle simple. Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 24 / 34
Le langage PRM Troisième Millénaire Le langage PRM Un langage objet normal (donc unique!) statiquement typé avec héritage multiple basé...... sur un méta-modèle simple. Une innovation majeure des modules avec du raffinement de classes Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 24 / 34
Le langage PRM Troisième Millénaire Le langage PRM Un langage objet normal (donc unique!) statiquement typé avec héritage multiple basé...... sur un méta-modèle simple. Une innovation majeure des modules avec du raffinement de classes Un compilateur modulaire, PRMc architecture basée sur les modules et le raffinement de classes Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 24 / 34
Benchmarks Troisième Millénaire Le langage PRM Size of the Exec. (kb) 120 100 80 60 40 20 0 g++ SmartEiffel prmc w/ btd prmc w/ vft 0 10 20 30 40 50 60 70 Number of Classes Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 25 / 34
Benchmarks Troisième Millénaire Le langage PRM Time (s) 14 12 10 8 6 4 2 0 g++ SmartEiffel prmc w/ btd prmc w/ vft 0 10 20 30 40 50 60 70 Size of the Concrete Type of the Reicever Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 26 / 34
Benchmarks Troisième Millénaire Le langage PRM Time (s) 35 30 25 20 15 10 5 0 g++ SmartEiffel prmc 0 10 20 30 40 50 60 70 Size of the Concrete Type of the Casted Expression Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 27 / 34
Benchmarks Troisième Millénaire Le langage PRM Time (s) 10 9 8 7 6 5 4 3 2 1 0 g++ SmartEiffel prmc 0 10 20 30 40 50 60 70 Size of the Concrete Type of Receiver Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 28 / 34
Perspectives Troisième Millénaire Perspectives sur le millénaire A court terme : Benchmarks sur PRMc autant de versions du compilateur que de techniques à tester ; autant de versions du compilateur que de versions du compilateur pour le compiler ; le vertige! Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 29 / 34
Perspectives Troisième Millénaire Perspectives sur le millénaire A court terme : Benchmarks sur PRMc autant de versions du compilateur que de techniques à tester ; autant de versions du compilateur que de versions du compilateur pour le compiler ; le vertige! A moyen terme : Machine virtuelle PRM la coloration n est pas incrémentale, le raffinement de classes non plus. Enfin un problème intéressant! Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 29 / 34
Troisième Millénaire Bilan Ne pas céder aux sirènes de la spécialisation! Besoin d étudiants très polyvalents programmation, de C à YAFOOL et PRM, impérative, fonctionnelle, objet algorithmique pointue analyse syntaxique, compilation, interprétation architecture des machines proba-stats un zest d Aristote et de Spinoza Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 30 / 34
Troisième Millénaire Bilan Ne pas céder aux sirènes de la spécialisation! Besoin d étudiants très polyvalents programmation, de C à YAFOOL et PRM, impérative, fonctionnelle, objet algorithmique pointue analyse syntaxique, compilation, interprétation architecture des machines proba-stats un zest d Aristote et de Spinoza Durée de thèse Sur un tel sujet, en partant de rien, 4 ans c est extrêmement court! Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 30 / 34
Troisième Millénaire Bilan Publications Difficile et long! 180 pages actuellement soumises : ACM Computing Surveys (soumis 2002, révisé 2005,...) ACM Trans. on Progr. Lang. Syst. (soumis 2005, révisé 2006) 4 refus successifs à ECOOP et OOPSLA! 1 workshop (conférence) ACM PASTE 1 workshop (workshop) à ECOOP 4 LMO (francophone) Commentaires revues : liberté de soumission mais délais et longueurs papier jamais assez autosuffisant ECOOP/OOPSLA : trop de sélection tue Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 31 / 34
Plan Quatrième millénaire 1 Contexte et Motivation 2 Deuxième Millénaire 3 Troisième Millénaire Problématique de l implémentation des objets Etude de quelques techniques particulières Schéma de compilation séparée avec optimisations globales Le langage PRM Perspectives sur le millénaire Bilan 4 Quatrième millénaire Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 32 / 34
Quatrième millénaire Le vicomte de Bragelonne ( c A. Dumas) Le règne de PRM tout le monde programme en Prm la hot-line sonne sans arrêt l âge de la retraite est repoussé tous les siècles on s ennuie... Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 33 / 34
Quatrième millénaire import string import file println("that s all folks") d après A. Dumas, dessins F murr. Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 34 / 34
Quatrième millénaire import string import file println("that s all folks") d après A. Dumas, dessins F murr. Roland Ducournau (lirmm/info/doc) Implémentation des Langages Objets 16 novembre 2006 34 / 34