Proposition de TER pour la Maîtrise d'Informatique: sujets liés à la Compilation et la programmation fonctionnelle
Encadrants:
- Roberto Di Cosmo
-
Université de Paris 7
http://www.dicosmo.org, E-mail: roberto@dicosmo.org
Tel: 01 44 27 86 55.
Laboratoires d'accueil:
PPS (Université de Paris 7).
Cadre de la recherche:
Dans le domaine de la compilation, et de la programmation fonctionnelle, ils
existent des nombreux travaux de recherche recents qui, sans être d'une
très grande difficulté d'accès, se prêtent bien à la réalisation d'un TER sous
forme de lecture et explication d'un article, plus un petit travail d'implantation
qui prouve que l'on a bien compris l'article.
Voici une liste non exhaustive des sujets proposes:
- Allocation de registres
- : on a vu dans le cours de compilation l'algorithme
d'allocation de registres par coloriage de graphes. Cependant, on connaît en litérature
un certain nombre d'autres techniques pour l'allocation de registres, comme le Bin Packing
ou le Linear Scan. Le but de ce TER est d'etudier l'article "Linear Scan Register Allocation"
de M. Poletto et V. Sarkar (disponible sur simple demande), et de le comparer à ce que nous
avons étudié en cours.
Eventuellment, un module qui réalise cette allocation, à integrer dans le compilateur CTigre,
pourraît être réalisé.
- Calcul incremental
- : on connaît en litérature un ensemble de techniques qui
se prêtent à l'écriture d'algorithmes ``incrementaux'', dans le sens que si une
partie seulement des données en entrée est modifiée, alors on ne recalcul pas
entiérement le résultat, mais seulement la partie qui est affectée par le changement.
Par exemple, si on cherche le minimum d'une liste par l'agorithme naturel,
et que l'on a déjà calculé le minimum 1 sur la liste l qui vaut
[1;2;3;2;3;7;10;12;3;1]
et maintenant on modifie l en ajoutant à la fin de la liste un élément de valeur 12, on souhaiterait n'avoir à calculer que le minimum entre 1 et 12, sans reéxaminer toute la liste l, et cela sans avoir à trop modifier la structure du programme qui calcul le minimum.
Une technique bien connue est celle dite de change propagation, qui prévoit que l'utilisateur manipule les tructures modifiables seulement à travers des primitives particulières, ce qui permet d'effectuer le calcul incremental sans besoin d'autre aide du programmeur.
Le but de ce TER est de lire l'article ``Monads for incremental computing'', disponible sur http://www.cse.ogi.edu/~magnus/papers/icfp-2002.pdf, et de réaliser une petite librairie en OCaml en se basant sur la libreiaire Haskell presentée dans l'article.
- Utilisation du partage dans les structures fonctionnelles
- Dans l'article
``Trouble shared is trouble halved'', paru comme ``Functional Pearl'' dans les
``Proceedings of the ACM SIGPLAN workshop on Haskell'' en 2003, Richard Bird et Ralf Hinze
proposent un usage originel des structures partagées que l'on crée souvent en programmation
fonctionnel, pour réaliser de la mémoisation efficace. La mémoisation est un
procédé dual du change propagation et cet article l'explore d'un point de vue
nouveau.
On vous demande de lire et comprendre l'article et de traduire en OCaml l'un des deux exemples présentés.
This document was translated from LATEX by HEVEA.