Sémantique des langages de programmation
Cours : Pierre Lescanne (Pierre.Lescanne)
TP : Etienne Lozes (Etienne.Lozes)
Cours de base (30 h de cours, 30h de TD)
Présentation
Le but du cours est d'introduire les techniques classiques de
modélisation sémantique des langages de programmation, en liaison
avec les autres cours de Master, notamment ceux de Programmation et de
Compilation. Ce cours ne nécessite pas de connaissances mathématiques
préalables; il s'adresse à toute personne curieuse de comprendre
la structure des langages de programmation et les bases conceptuelles
de la compilation et de la vérification tout en ayant le désir
d'abstraire certain concept appréhendé jusque là seulement de leur point de
vue pragmatique.
Dans ce cours, on souhaite montrer qu'il est possible de donner une
description mathématique rigoureuse de concepts introduits souvent
informellement dans les cours de programmation:
les programmes sont des objets
mathématiques comme les autres.
Les outils mathématiques nécessaires à cette description seront
présentés au début du cours dans un cas restreint et complété au fur et
à mesure des besoins.
Plan indicatif
L'objet de la sémantique est fondamentalement d'associer du sens
à des composants d'un langage. Pour nous ce seront les
différents éléments d'un programme. Le sens est un objet
mathématique à définir, sur lequel on peut faire des manipulations
formelles et des preuves.
Dans la première partie de ce cours, nous étudierons les concepts de la
sémantique sur un langage impératif de type Pascal à savoir
- Sémantique opérationnelle :
- on associe à un
programme la suite des états d'une machine (abstraite) qui l'exécute;
- Sémantique dénotationnelle:
- on associe à un programme la fonction
mathématique qu'il calcule;
- Sémantique axiomatique:
- on associe à un programme l'ensemble des
assertions logiques reliant ses sorties et ses entrées.
Ensuite nous aborderons les concepts fondamentaux de la sémantique sur
le lambda-calcul où les problèmes apparaissent sur leur jours
mathématique le plus pur. Ensuite, nous étudierons les calculs pour la
mobilité et la communications, notamment le p-calcul. Nous nous
inspirerons essentiellement des deux premiers livres
Bibliographie
- G. Winskel, The formal semantics of programming languages: an
introduction. MIT Press, 1993.
- Robin Milner. Communicating and Mobile Systems: the pi-Calculus,
Cambridge University Press, May 1999.
- Roberto Amadio and Pierre-Louis Curien. Domains and
Lambda-Calculi, Cambridge Tracts in Theoretical Computer Science,
n° 46, Cambridge University Press, 1998.
- M. Hennessy, The semantics of programming languages: an
elementary introduction using structural operational semantics.
Wiley, 1990.
- M. J. Gordon, The denotational description of programming
languages, 1979.
- B.A. Davey and H.A. Priestley. Introduction to Lattices and Order.
Cambridge Math. Textbooks, 1990.
- C. Livercy. Théorie des Programmes (schémas, preuves,
sémantique). Dunod, 1978.
http://www.ens-lyon.fr/ plescann/Livercy