Sémantique des langages de programmation

Sémantique des langages de programmation

En informatique théorique, la sémantique formelle (des langages de programmation) est létude de la signification des programmes informatiques vus en tant quobjets mathématiques.

Sommaire

Lien avec la linguistique

Comme en linguistique, ici la sémantique désigne le lien entre un signifiant, le programme, et un signifié, objet mathématique qui dépendra des propriétés que lon souhaite connaître du programme.

On appellera aussi sémantique le lien entre le langage signifiant (le langage de programmation) et le langage signifié (logique de Hoare, automates, ou autre).

Sémantiques usuelles dun langage de programmation

Les sémantiques les plus couramment utilisées pour donner du sens à un langage de programmation sont la sémantique opérationnelle, la sémantique dénotationnelle et la sémantique axiomatique.

La sémantique opérationnelle

En sémantique opérationnelle, la signification dun programme est la suite des états de la machine qui exécute le programme. Autrement dit un programme est considéré comme la description dun système de transition d'états. Dans cette sémantique, les programmes :

a=1; b=0

et

a=1;
b=0

sont équivalents (ont la même signification), mais le programme :

b=0; a=1

ne leur est pas équivalent (même si au final le résultat est le même, les actions nont pas lieu dans le même ordre).

On peut abstraire cette sémantique en nobservant quune partie de la mémoire de la machine, ou par exemple en nobservant que les sorties à lécran (la trace du programme).

La sémantique dénotationnelle

Initiée par Christopher Strachey, la sémantique dénotationnelle est une approche dans laquelle une fonction mathématique appelée dénotation est associée à chaque programme, et représente en quelque sorte son effet, sa signification. Cette fonction prend par exemple pour argument létat de la mémoire avant exécution, et a pour résultat létat après exécution.

Dans cette sémantique, tous les exemples donnés ci-dessus pour la sémantique opérationnelle sont équivalents, mais le programme :

a=1;
b=1;

ne leur est pas équivalent.

Il existe plusieurs variantes de la sémantique dénotationnelle, dont lune des plus célèbres est la sémantique dénotationnelle par continuation qui, au lieu dassocier à un programme une fonction qui transforme la mémoire, lui associe une fonction qui transforme la continuation (le futur) de la machine après exécution du programme en la continuation avant exécution du programme.

Un des aspects importants de la sémantique dénotationnelle est la propriété de compositionnalité : la dénotation d'un programme est obtenue par combinaison des dénotations de ses constituants.

La sémantique axiomatique

En sémantique axiomatique, le programme nest plus quun transformateur de propriétés logiques sur létat de la mémoire : si on a p vrai avant exécution, alors on a q vrai après. On ne sintéresse plus à létat précis de la mémoire tant que lon sait dire si la propriété tient.

Si la propriété qui nous intéresse, cest de savoir si a et b sont positifs après exécution du programme, alors tous les exemples précédents sont équivalents au sens quel que soit létat de la machine avant exécution du programme, la propriété en sortie tient. Ce que lon note en logique de Hoare :

\{{\mathop vrai}\}a=1; b=0\{a\geq 0 \and b\geq 0\}

Rapport entre les différentes sémantiques

Ces trois sémantiques, comme le suggèrent les exemples, ne sont pas complètement indépendantes les unes des autres, en effet :

  • deux programmes syntaxiquement équivalents le sont opérationnellement ;
  • deux programmes opérationnellement équivalents le sont dénotationnellement ;
  • et deux programmes dénotationnellement équivalents le sont axiomatiquement.

Mais les réciproques sont fausses.

Ainsi on peut hiérarchiser les sémantiques en disant quune sémantique est labstraction dune autre si et seulement si deux programmes équivalents dans la dernière le sont aussi dans la première. Ces relations ont été formalisées par la théorie de linterprétation abstraite.

On peut compléter cette hiérarchie (ordre partiel) sur les équivalences sémantiques, en plaçant au sommet lidentité (deux programmes sont identiques si et seulement si, ils sont la même suite de caractères), et tout en bas, labstraction la plus grossière que lon appelle le chaos, tout programme est équivalent à tout autre programme.


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Sémantique des langages de programmation de Wikipédia en français (auteurs)

Игры ⚽ Нужна курсовая?

Regardez d'autres dictionnaires:

  • Semantique des langages de programmation — Sémantique des langages de programmation En informatique théorique, la sémantique formelle (des langages de programmation) est l’étude de la signification des programmes informatiques vus en tant qu’objets mathématiques. Sommaire 1 Lien avec la… …   Wikipédia en Français

  • Histoire des langages de programmation — ██████████75  …   Wikipédia en Français

  • Langages de programmation — Langage de programmation Un langage de programmation est un langage informatique, permettant à un être humain d écrire un code source qui sera analysé par une machine, généralement un ordinateur. Le code source subit ensuite une transformation ou …   Wikipédia en Français

  • Theorie des langages — Théorie des langages La théorie des langages a pour objectif de comprendre le fonctionnement des langages, vus comme moyen de communication, d un point de vue mathématique. Un langage est un ensemble de mots. Un mot (ou lexème) est une… …   Wikipédia en Français

  • Théorie des langages et automates — Théorie des langages La théorie des langages a pour objectif de comprendre le fonctionnement des langages, vus comme moyen de communication, d un point de vue mathématique. Un langage est un ensemble de mots. Un mot (ou lexème) est une… …   Wikipédia en Français

  • Semantique — Sémantique Linguistique Disciplines : Phonétique Phonologie Morphologie Syntaxe Lexicologie …   Wikipédia en Français

  • Semantique axiomatique — Sémantique axiomatique La sémantique axiomatique est une approche basée sur la logique mathématique qui sert à prouver qu un programme informatique est correct. Sommaire 1 L idée 2 Le langage : la logique de Hoare 3 Preuves …   Wikipédia en Français

  • Semantique denotationnelle — Sémantique dénotationnelle En informatique, la sémantique dénotationnelle est une des approches permettant de formaliser la signification d un programme en utilisant les mathématiques. Parmi les autres approches, on trouve la sémantique… …   Wikipédia en Français

  • Semantique operationnelle — Sémantique opérationnelle En informatique, la sémantique opérationnelle est l une des approches qui servent à donner une signification aux programmes informatiques d une manière rigoureuse, mathématiquement parlant (voir Sémantique des langages… …   Wikipédia en Français

  • Sémantique opérationnelle — En informatique, la sémantique opérationnelle est l une des approches qui servent à donner une signification aux programmes informatiques d une manière rigoureuse, mathématiquement parlant (voir Sémantique des langages de programmation). Une… …   Wikipédia en Français

Share the article and excerpts

Direct link
https://fr-academic.com/dic.nsf/frwiki/1594301 Do a right-click on the link above
and select “Copy Link”