Vous êtes ici

  1. Accueil
  2. Compilation

Compilation

Compilation

En pratique :

Volume horaire de cours : 24
Volume horaire global de TP : 24
Langue principale : français

Description du contenu de l'enseignement

Découvrir les fonctions d'un compilateur, leurs rôles et la façon dont elles sont réalisées : interface entre génie logiciel et système d'exploitation, analyse lexicale et syntaxique, analyse dite sémantique, production de code intermédiaire, analyse et transformation de code, production de code cible.
Découvrir les fonctions d'une machine langage et leurs rôles : gestion de mémoire, représentation des données et du contrôle, interface entre processus d'exécution et système d'exploitation.
Développer la curiosité pour l'anatomie des langages de programmation.
Explorer la rencontre entre les exigences du génie logiciel qui façonnent les langages de programmation et les exigences du système d'exploitation qui façonnent la machine langage.
Même si cela ne rentre pas dans les objectifs de ce module, il contient aussi une initiation à l'agilité et au test, deux compétences qui sont nécessaires pour développer le projet prévu dans ce module.


Compétences à acquérir

  • Développer une application informatique dirigée par la syntaxe de ses entrées.
  • Utiliser des outils logiciels de description de langage : ANTLR et Xtext.
  • Valider l'application

Bibliographie, lectures recommandées

  • « Compilateurs : principes, techniques et outils » par Aho, R. Sethi et J. Ullman (multiples éditions, Dunod) : pour un classique, le « Dragon », un peu ancien, mais incontournable.
  • « Les compilateurs : théorie, construction, génération » par R. Wilhelm et D. Maurer (1994, Masson) : pour une approche formalisée de la compilation.
  • « Modern compiler design » par D. Grune, H.E. Bal, C.J.H. Jacobs et K.G. Langendoen (2001, Wiley) : pour une approche pragmatique.
  • « Compilation des langages de programmation » par M. Gautier (2006, Ellipses) : pour une approche orientée projet.
  • « Programming language pragmatics » par M. Scott (plusieurs éditions, Morgan Kaufmann) : pour alimenter la curiosité concernant les langages de programmation.
  • « The Definitive ANTLR Reference: Building Domain-Specific Languages » par T. Parr (2007, Pragmatic Bookshelf, http://www.pragprog.com/titles/tpantlr/the-definitive-antlr-reference) : pour comprendre comment utiliser ANTLR.
  • « Implementing Domain-Specific Languages with Xtext and Xtend » par Lorenzo Bettini (PACKT, 2013) : pour comprendre comment utiliser Xtext.
  • « Beautiful Code: Leading Programmers Explain How They Think » édité par Andy Oram et Greg Wilson (2007, O'Reilly, http://vample.com/ebooks/OReilly.Beautiful.Code.Jun.2007.pdf) : pour quelques exemples de codes relatifs à ce cours.