Quelques ponts entre sémantique opérationnelle et modèles dénotationnels des langages de programmation
Résumé
Le fil directeur de ce manuscrit réside dans la volonté de
mathématiser l'activité des chercheurs en programmation. Exactement
comme la définition de groupe a émergé d'une quantité suffisante de
cas particuliers, on y tente d'abstraire et de généraliser certains
résultats et constructions en sémantique des langages de
programmation, avec des motivations concrètes mais relativement
diverses.
En partie 3, on esquisse une approche générale de la
méthode traditionnelle de définition de langages de programmation par
une syntaxe munie d'une relation de réduction modélisant l'exécution.
Relativement élémentaire, cette approche présente deux avantages
importants : d'une part elle rend pleinement compte du processus
d'engendrement du langage à partir d'opérations de base et de règles
de réduction ; d'autre part elle fournit automatiquement une notion de
modèle dénotationnel du langage considéré.
En partie 4, on propose une théorie des calculs
dits « graphiques », une méthode relativement récente de définition de
langages de programmation — et en fait aussi de structures
mathématiques — dans laquelle la syntaxe est remplacée par une
structure voisine des graphes. Dans les bons cas, non seulement cette
approche permet une définition rigoureuse et efficace du calcul
graphique en question, mais elle fournit aussi une notion de modèle
dénotationnel. Ce dernier point découle d'une théorie des
présentations de foncteurs analytiques entre catégories de
préfaisceaux, qui généralisent les foncteurs analytiques de
Joyal.
En partie 5, on propose une version abstraite d'une pratique en
sémantique dénotationnelle, la sémantique dite des jeux. L'approche
décrite a permis d'étendre la sémantique des jeux d'un cadre
strictement séquentiel aux cadres non-déterministe et concurrent.
Elle fournit aussi une explication générale du lien entre sémantique
opérationnelle et modèles de jeux.