Commit 895fb37f authored by Pietro Abate's avatar Pietro Abate
Browse files

[r2005-12-19 14:19:27 by afrisch] stages mpri 2006

Original author: afrisch
Date: 2005-12-19 14:19:27+00:00
parent 2cc73a6d
......@@ -6,20 +6,148 @@
<box title="Pour les étudiants du MPRI" link="mpri">
<ul>
<li>
<local href="stage_compil_cduce"/>. INRIA Rocquencourt (projet Cristal),
<local href="stage_streaming"/>. INRIA Rocquencourt (projet Cristal),
encadrant: Alain Frisch.</li>
<li>
<local href="stage_poly_cduce"/>. INRIA Rocquencourt (projet
Cristal), ENS Ulm (équipe Langages),
encadrants: Alain Frisch, Giuseppe Castagna.</li>
<li>
<local href="stage_pattern_template"/>. INRIA Rocquencourt (projet Cristal),
<local href="stage_exact_typing"/>. INRIA Rocquencourt (projet Cristal),
encadrant: Alain Frisch.</li>
</ul>
</box>
<page name="stage_streaming">
<title>Traitement de XML en flux</title>
<box title="Infos pratiques" link="info">
<ul>
<li>Encadrant: <a href="mailto:Alain.Frisch@inria.fr">Alain
Frisch</a>.</li>
<li>Laboratoire: <a
href="http://cristal.inria.fr/">projet
Cristal</a>, INRIA Rocquencourt.</li>
</ul>
<p>Le stage se rapporte au cours 2-4 (Langages de programmation) du MPRI.
</p>
</box>
<box title="Description" link="descr">
<p>
<b>Présentation du domaine:</b>
XML est un format standardisé de stockage et d'échange de données
arborescentes. Le modèle classique de manipulation de documents XML,
sur lequel s'appuient en particulier le langage de requête XPath et
le langage de transformation XSLT, consiste à charger tout le
document en mémoire, à effectuer les opérations nécessaires, et
enfin à produire la sortie attendue. Ce modèle n'est pas adapté à toutes
les situations. En particulier, il ne permet pas de travailler sur
des documents de très grande taille (en entrée ou en sortie), ou qui
arrivent progressivement (exemple du protocole de messagerie
instantanée Jabber). Un modèle alternatif consiste à traiter les
données XML en flux (<i>streaming</i>), c'est-à-dire à faire les
calculs dès que possible au cours de la lecture de l'entrée, à
produire la sortie au vol, et à ne garder en mémoire que la partie
du document encore nécessaire pour les calculs à venir.
</p>
<p><b>Objectifs du stage:</b> Pour le programmeur, le modèle
classique est plus facile à appréhender. L'idéal serait pour lui de
pouvoir écrire son application comme si le document était tout
entier disponible en mémoire, et de laisser le compilateur produire
automatiquement du code de traitement en flux. L'objectif de ce
stage est d'étudier et d'implémenter des techniques de compilation,
existantes ou originales, qui permettent d'atteindre cet
objectif. Par exemple, on pourra chercher à développer une
implémentation (d'un fragment) de XSLT en flux, ou à développer un
langage <i>ad hoc</i> qui se prête bien à une implémentation en
flux. On pourra également développer des analyses statiques qui
permettent de donner programmeur une estimation de la consommation
mémoire de ses programmes. Un outil qui pourra servir de base
à la conception d'un langage adapté à une implémentation en flux
sera celui destransducteurs d'arbres.
</p>
<p><b>Compétences espérées:</b> Il y a peu de prérequis
théoriques. Des bases de théorie des automates seraient
appréciables. Le travail d'implémentation se fera dans le langage
Objective Caml, dont la connaissance est nécessaire. Une
familiarité avec XML et XSLT facilitera la prise en main du sujet
mais n'est nullement nécessaire.
</p>
</box>
<box title="Références" link="ref">
<p>Le projet <a href="http://xtisp.psdlab.org/">XTiSP</a> propose
une technique d'implémentation en flux pour un langage orienté XML.</p>
</box>
</page>
<page name="stage_exact_typing">
<title>Typage exact de transformations d'arbres</title>
<box title="Infos pratiques" link="info">
<ul>
<li>Encadrant: <a href="mailto:Alain.Frisch@inria.fr">Alain
Frisch</a>.</li>
<li>Laboratoire: <a
href="http://cristal.inria.fr/">projet
Cristal</a>, INRIA Rocquencourt.</li>
</ul>
<p>Le stage se rapporte aux cours 2-4 (Langages de programmation)
et 2-28-1 (Automates d'arbres et applications) du MPRI. Il n'est pas
nécessaire d'avoir suivi ces deux cours.
</p>
</box>
<box title="Description" link="descr">
<p>
Le domaine du typage exact des transformations d'arbres a été abordé
lors d'une des séances du cours 2-4. Il s'agit de vérifier de
manière exacte (contrairement aux systèmes de types classiques pour
les langages de programmation) qu'une transformation d'arbres
vérifie certaines propriétés. On s'appuie sur des formalismes
de transducteurs d'arbres, qui ne sont pas Turing-complets,
pour que les questions que l'on se pose restent décidables.
Le stage ne portera <i>pas</i> sur l'étude abstraite des formalismes
de transducteurs d'arbres, domaine largement exploré depuis
plusieurs dizaines d'années, mais plutôt sur la manière de mettre
en application ces théories dans le cadre de langages de
programmation. Le stage pourra s'orienter dans plusieurs
directions, selon les centres d'intérêts de l'étudiant, par exemple:
</p>
<ul>
<li>Attaquer les problèmes algorithmiques liés à l'implémentation
des algorithmes de typage exact, qui ont une complexité théorique
très élevée.</li>
<li>Mélanger la théorie du typage des
transducteurs d'arbres avec un système de types plus classique pour
un langage de programmation.</li>
<li>Explorer l'idée d'utiliser les
transducteurs d'arbres non comme une description du comportement
d'une transformation (transducteur = programme), mais comme une
spécification des propriétés attendues pour une transformation
(transducteur = type).</li>
</ul>
<p>Un domaine d'application immédiat est celui de la programmation
sûre de transformations de documents XML. On pourra aussi considérer
le problème consistant à donner des types plus fins à des programmes
fonctionnels écrits dans un langage du genre Caml (pour capturer
des invariants plus forts que ceux exprimés par le système de types
existant).
</p>
</box>
</page>
<!--
<page name="stage_compil_cduce">
<title>Compilation du langage CDuce</title>
......@@ -193,4 +321,7 @@
</page>
-->
</page>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment