Cours en salle C307.
Le but de ce cours est de comprendre comment les langages de
programmation s'articulent autour de la notion de sémantique,
et d'illustrer ceci au travers de la réalisation en projet d'un
mini-compilateur pour un langage-jouet, vers le langage machine.
Voici un guide de référence de l'assembleur Pentium,
qui vous sera utile dans le projet.
1 Architecture
Ou: qu'est-ce que c'est et comment ça marche, un ordinateur?
-
Lundi 30 septembre: exemples, l'ordinateur vu d'en bas: le
langage machine [cours] Transparents: ps pdf.;
architecture matérielle, mémoires, processeurs, bus [cours]
Transparents: ps pdf.
- Jeudi 03 octobre, 16h30--18h30: sémantique du langage machine (du
Pentium en l'occurrence), relation de transition, modes d'adressage;
expérimentation avec
ddd
[cours] Transparents: ps pdf. [TD] Transparents: ps pdf.
2 Un aperçu de deux langages
2.1 Le langage C
C est l'un des langages les plus utilisés aujourd'hui, vous verrez ici sa syntaxe...
Mais le point important c'est que C est essentiellement une syntaxe
portable pour la sémantique que vous aurez déjà vue pour le
langage machine.
-
Lundi 07 octobre
-
9h30--10h45: syntaxe et sémantique opérationnelle de C, entiers machine,
tableaux, pointeurs, allocation mémoire [cours] Transparents: ps pdf.
- 11h00--12h30: exercices sur la sémantique de C [TD] Transparents: ps pdf.
- Jeudi 10 octobre, 16h30--18h30: exercices en assembleur [TP]
Transparents: ps pdf.
Source du programme td_asm.s.
2.2 Le langage Caml
Caml est l'exemple typique d'un langage fonctionnel,
c'est-à-dire fondé sur la notion de fonction. Il présente une
sémantique plus évoluée que les langages précédents.
Le but est aussi d'apprendre ou de rappeler des concepts permettant
d'écrire le compilateur du projet, qu'il est conseillé d'écrire
en Caml.
-
Lundi 14 octobre
-
9h30-11h: introduction à Caml; fonctions, récursion; types de
données de base (entiers, chaînes, listes, tableaux); notion de
portée des identificateurs [cours] Transparents: ps pdf.
Note: la version complète des transparents est sur la
page de Pierre Weis à l'INRIA.
- 11h15-13h: fin des exercices en assembleur.
3 Compilation et sémantique
-
Mercredi 16 octobre, 9h--10h30: l'idée de la compilation, exemples de
compilation de programmes simples de C vers l'assembleur x86 [cours] Transparents: ps pdf.
- Lundi 21 octobre
-
9h30-10h45: langages de haut niveau et leurs sémantiques
(opérationnelles), illustration sur les langages fonctionnels,
mini-Caml; le problème de la sémantique des fonctions [cours]
Transparents: ps pdf.
- 11h-12h30: exercices sur la sémantique [TD] Transparents: ps pdf.
- Mercredi 23 octobre, 9h--10h30: la sémantique dénotationnelle: une
fausse bonne idée? résolution de l'équation D @ [D ®
D], modèle Pw de Plotkin [cours] Transparents: ps pdf.
- Lundi 28 octobre
-
9h30--10h45: compilation de mini-Caml via sa sémantique
opérationnelle [cours] Transparents: ps pdf.
- 11h--13h: exercices de sémantique, suite [TD]
- Mercredi 30 octobre, 9h--10h30. Interlude: tables de hachage
(utilisation et codage), optionnel: gestion mémoire (malloc, free,
``garbage collection'') [cours]
- Lundi 04 novembre
-
9h30--10h45: optimisation, ou comment améliorer un programme en
préservant sa sémantique? un échantillon des techniques [cours] Transparents: ps pdf.
- 11h--13h: exercices de sémantique, suite [TD]
- Mercredi 06 novembre, 9h--10h30: logique de Hoare, sémantique des
``weakest preconditions'' de Dijkstra; théorème du point fixe de Tarski.
[cours] Transparents: ps pdf.
- Mercredi 13 novembre, 9h--10h30: weakest preconditions, Tarksi [TD]
4 Partiel
Devoir à la maison, distribué le mercredi 13 novembre,
10h30 (aussi en version PostScript). À rendre au plus
tard le mercredi 20 novembre, soit dans ma case courrier au LSV soit par mail
(goubault@lsv.ens-cachan.fr).
Suite du cours à partir du lundi 18 novembre, avec Delia Kesner.
5 Examen
Examen du 13 février 2003, partie 1, avec correction (aussi en version PostScript).
This document was translated from LATEX by
HEVEA.