Langages de programmation et compilation 2026-2027
Jean-Christophe Filliâtre
Cours donné aux élèves de première année à
l'École Normale Supérieure.
- Cours le vendredi de 8:30 à 10:30 en salle
E. Noether (ex U ou V)
(voir moodle)
- TDs le jeudi (15h30 à 17h00) ou le vendredi (10h45 à 12h15) en salle INFO 3 NIR
avec Samuel Vivien
- Évaluation : un examen + un projet
Cours
Séances :
- Cours 1 (2 octobre 2026) : aperçu de la compilation / assembleur x86-64
- séance du 9 octobre reportée au 16 octobre (décalage)
- Cours 2 (16 octobre 2026) : syntaxe abstraite / sémantique / interprètes
- Cours 3 (23 octobre 2026) : analyse lexicale
- pas de cours le vendredi 30 octobre
(vacances Toussaint)
- Cours 4 (6 novembre 2026) : analyse syntaxique 1/2
- Cours 5 (13 novembre 2026) : analyse syntaxique 2/2
- Cours 6 (20 novembre 2026) : typage
- pas de cours le vendredi 27 novembre
- Cours 7 (4 décembre 2026) : mode de passage des paramètres
- Cours 8 (11 décembre 2026) : compilation des langages fonctionnels
- Cours 9 (18 décembre 2026) : compilation des langages objets
- Cours 10 (8 janvier 2027) : compilateur optimisant, partie 1
- Cours 11 (15 janvier 2027) : compilateur optimisant, partie 2
- Cours 12 (22 janvier 2027) : allocation mémoire
Un polycopié reprographié sera distribué avant la Toussaint.
TD
Il y a deux groupes de TD (en alternance avec les TD d'algo) :
- groupe 1 le vendredi 10h45 - 12h15
- groupe 2 le jeudi (de la semaine suivante) 15h30 - 16h45
Séances :
- TD 1 (2/15 oct)
: Assembleur x86-64
- TD des 8 et 9 octobre reportés
- TD 2 (16/22 oct)
: Interprète mini-Python
- TD 3 (23 oct/5 nov)
- pas de TD les 29 et 30 octobre (vacances Toussaint)
- TD 4 (6/12 nov)
- TD 5 (13/19 nov)
- TD 6 (20 nov/3 déc)
- pas de TD les 26 et 27 novembre
- TD 7 (4/10 déc)
: Aide au projet
- TD 8 (11/17 déc)
: Aide au projet
- TD 9 (18 déc/7 jan)
- TD 10 (8/14 jan)
- TD 11 (15/21 jan)
: Aide au projet
- TD 12 (22/27 jan)
Projet
Cette année on compile un fragment de Zig.
Le sujet du projet sera donné plus tard.
Quelques tests sont fournis
(les télécharger
: tests-19-oct.tar.gz).
Ce script shell peut être utilisé pour
automatiser les tests, avec la syntaxe ./test -n
binaire-compilo où n vaut 1 (tests parseur), 2
(tests typage) ou 3 (tests production de code).
Un module OCaml est fourni pour construire du code x86-64 :
x86_64.ml
/ x86_64.mli /
télécharger.
Libre à vous de le compléter si besoin.
(Si vous choisissez de faire votre projet en Rust, il existe un module
similaire write_x86_64
écrit par Samuel Vivien, que je remercie.)
Le projet est à rendre en deux fois :
- partie 1 (analyse syntaxique et typage uniquement) pour le
jeudi 17 décembre 18:00 ;
- partie 2 (projet complet, avec production de code) pour le
dimanche 24 janvier 18:00.
Examen
L'examen aura lieu le vendredi 29 janvier
de 8h30 à 11h30 en salle E. Noether.
Archives :
janvier 2026
(corrigé) /
janvier 2025
(corrigé) /
janvier 2024
(corrigé) /
janvier 2023
(corrigé) /
janvier 2022
(corrigé) /
janvier 2021
(corrigé) /
Liens / Bibliographie
Outils
Cartes de référence
Ouvrages en rapport avec le cours
Ces trois ouvrages sont disponibles à la bibliothèque.
Le cours ci-dessus ne suit pas vraiment ces ouvrages.
Néanmoins, ce sont de très bons ouvrages, conseillés pour aller plus loin.
For foreign students not yet fluent in French
- A tiny French-English dictionary
- there is an English version of the lecture notes
- a rough correspondence between the lectures and chapters from the
books above (which are in English):
| Lecture | Chapters
|
| 1 | Assembly | Bryant & O'Hallaron 3
|
| 2 | Semantics | Pierce 3-4-5
|
| 3 | Lexical analysis | Dragon 3
|
| 4-5 | Syntactic analysis | Dragon 4
|
| 6 | Typing | Pierce 8-9-10 et 22
|
| 12 | Memory allocation
| Bryant & O'Hallaron 9
|
Remerciements : merci à Christine Paulin, François Pottier et
Xavier Leroy pour leur aide dans la préparation de ce cours