Th´ eorie, conception et r´ ealisation d’un langage de programmation adapt´ e ` a XML Alain Frisch Soutenance de th` ese - 13/12/2004 Directeur: Giuseppe Castagna
Introduction ❈ Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Plan Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML 2/70
Introduction ❈ Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Plan Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML . . . XML. 1 3/70
Introduction ❈ Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Plan Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML . . . XML. 1 . . . langage de programmation adapt´ e . . . 2 4/70
Introduction ❈ Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Plan Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML . . . XML. 1 . . . langage de programmation adapt´ e . . . 2 . . . conception . . . 3 5/70
Introduction ❈ Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Plan Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML . . . XML. 1 . . . langage de programmation adapt´ e . . . 2 . . . conception . . . 3 Th´ eorie . . . 4 6/70
Introduction ❈ Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Plan Th´ eorie, conception, et r´ ealisation d’un langage de programmation adapt´ e ` a XML . . . XML. 1 . . . langage de programmation adapt´ e . . . 2 . . . conception . . . 3 Th´ eorie . . . 4 . . . r´ ealisation . . . 5 7/70
Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion Plan Introduction 1 Contexte, motivations, objectif initial 2 ❈ Duce : aper¸ cu du langage 3 Contributions th´ eoriques Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques 4 Conclusion 8/70
Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion XML et sch´ emas XML Un langage de balises. Pour repr´ esenter des donn´ ees de nature arborescente. Repr´ esentation ind´ ependante de l’application. Sch´ emas Chaque application d´ efinit des contraintes sur les documents XML qu’elle peut manipuler : balises (nom, structure d’imbrication), attributs (pr´ esence, valeurs autoris´ ees), texte (pr´ esence). Un tel ensemble de contraintes est un sch´ ema XML. Il existe des langages pour ´ ecrire des sch´ emas de mani` ere formelle : DTD, XML-Schema, Relax-NG. 9/70
Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion XML : sch´ emas Transformation XML Programme T � Sch´ Sch´ ema A ema B Garanties Le programme T s’engage ` a fournir un document XML de sch´ ema B si on lui donne un document XML de sch´ ema A. Peut-on le croire ? 10/70
� � � � � � � Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion XML : sch´ emas Application complexe Toutes les op´ erations effectu´ ees sur les documents ` a l’int´ erieur de l’appli- A ′ A cation sont-elles l´ egales ? � • • Op´ erations ill´ egales � � � � Consulter un attribut qui peut � � � � • • ne pas exister. � � � Supprimer un ´ el´ ement qui doit � � � � ˆ etre pr´ esent. � � B ′ B 11/70
Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion XML : sch´ emas et types Typage dans les langages de programmation : interdire des op´ erations ill´ egales ( 1 + "Hello" , customer.shutdown() ). Il est naturel de voir les sch´ emas XML comme des types de donn´ ees, ` a l’int´ erieur des applications. XML langages ← → sch´ emas types documents ← → valeurs 12/70
Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion XDuce (Hosoya, Vouillon, Pierce) Pour le programmeur Un langage pour la transformation de documents XML. Types ≃ DTD. Valeurs = arbres XML. Style fonctionnel. Fonctions r´ ecursives et filtrage. Th´ eorie Types = automates d’arbres � langages r´ eguliers d’arbres. Sous-typage = inclusion des langages. Regular Expression Types for XML (ICFP 2000). Regular Expression Pattern Matching for XML (POPL 2001). 13/70
Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion Sous-typage Sous-typage dans XDuce D´ efinition s´ emantique du sous-typage. Pourtant : Syst` eme de types : d´ epend du sous-typage. S´ emantique du langage : dirig´ ee par les types (filtrage). Paradoxe ? 14/70
Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion Sous-typage Sous-typage dans XDuce D´ efinition s´ emantique du sous-typage. Pourtant : Syst` eme de types : d´ epend du sous-typage. S´ emantique du langage : dirig´ ee par les types (filtrage). Paradoxe ? Non ! La s´ emantique des types ne d´ epend pas du langage. 15/70
� � Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion XDuce + ordre sup´ erieur ordre sup´ erieur XDuce ? ? ? 16/70
� � Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion XDuce : descendance XDuce � � � � � ���������� � � � � � � � � � � � � � � � � � � � � � � � ❈ Duce XHaskell Xtatic XHaskell : types XDuce dans Haskell (sous-typage encod´ e dans les type classes ) ; pas de filtrage XML, pas de m´ elange entre XML et fonctions, pas de sous-typage s´ emantique. (Zhuo Ming Lu, Sulzmann.) Xtatic : types XDuce dans C # (sous-typage par nom pour les objets) ; filtrage limit´ e. Perte du cot´ e structurel des types. (Pierce, Schmitt, Gapeyev, Levin.) 17/70
Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion Objectif initial de la th` ese ´ Etendre l’approche ensembliste de XDuce ` a un calcul d’ordre sup´ erieur, qui permet de m´ elanger librement fonctions et documents XML, dans un cadre structurel. Cot´ e langage XDuce est un langage fonctionnel, mais sans ordre sup´ erieur : ¸ ca manque ! Plus sp´ ecialement pour XML : transformations param´ etrables de mani` ere modulaire, syst` emes de templates de premi` ere classe, . . . Cot´ e λ -calcul Prospectif 18/70
Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion Objectif initial de la th` ese ´ Etendre l’approche ensembliste de XDuce ` a un calcul d’ordre sup´ erieur, qui permet de m´ elanger librement fonctions et documents XML, dans un cadre structurel. Cot´ e langage Cot´ e λ -calcul D´ efi intellectuel : sous-typage ensembliste avec types r´ ecursifs, combinaisons bool´ eennes, constructeurs de types. Sous-typage ensembliste ( t ≤ s ⇐ ⇒ � t � ⊆ � s � ) : Facile ` a expliquer. Exhiber valeur pour illustrer t �≤ s . D´ efinition conceptuellement simple, ind´ ependante d’un algorithme ou d’un syst` eme axiomatique complexe. Prospectif 19/70
Introduction ❈ Duce : aper¸ cu du langage Contexte, motivations, objectif initial Contributions th´ eoriques Conclusion Objectif initial de la th` ese ´ Etendre l’approche ensembliste de XDuce ` a un calcul d’ordre sup´ erieur, qui permet de m´ elanger librement fonctions et documents XML, dans un cadre structurel. Cot´ e langage Cot´ e λ -calcul Prospectif Interaction donn´ ees/comportements sur le web (formulaires,javascript,applets,servlets,. . . ) 20/70
Introduction ❈ Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Plan 1 Introduction Contexte, motivations, objectif initial ❈ Duce : aper¸ cu du langage 2 3 Contributions th´ eoriques Alg` ebre de types et sous-typage Noyau fonctionnel, syst` eme de types Aspects algorithmiques 4 Conclusion 21/70
Introduction ❈ Duce : aper¸ cu du langage Contributions th´ eoriques Conclusion Aper¸ cu de ❈ Duce Types XML type Bib = [ Book* ] type Book = <book>[ Title Subtitle? Author+ ] type Title = <title>[ PCDATA ] type Subtitle = <title>[ PCDATA ] type Author = <author>[ PCDATA ] Fonctions et filtrage let title(Book -> String) <book>[ <title>x _* ] -> x 22/70
Recommend
More recommend