“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 38 — #48
i
i
i
i
i
i
i
i
38
2
• La programmation déclarative
nous pouvons écrire
if N==1 then [1] else L in ... end
qui est à la fois plus courte et plus lisible que la notation complète. D’autres exemples
de sucre syntaxique sont donnés dans la section 2.6.1.
La conception de langages
Les abstractions linguistiques sont un outil de base pour la conception de langages.
Elles ont une place naturelle dans le cycle de vie d’une abstraction. Une abstraction
a trois phases dans sa vie. Quand elle vient d’être définie, elle n’a pas de soutien
linguistique, c’est-à-dire qu’il n’y a pas de syntaxe dans le langage pour faciliter son
utilisation. Si le moment arrive où nous pensons qu’elle est particulièrement utile,
nous pourrons décider de lui donner un soutien linguistique. À cet instant elle devient
une abstraction linguistique. Cette phase est exploratoire : on ne s’engage pas à ce que
l’abstraction linguistique fasse partie du langage un jour. Si l’abstraction linguistique
a du succès, si elle simplifie les programmes et les réflections des programmeurs, alors
elle fera partie du langage.
D’autres approches basées sur la traduction
L’approche du langage noyau est un exemple d’une approche de la sémantique basée
sur la traduction d’un langage vers un autre. La figure 2.5 montre les trois formes de
cette approche qui ont été utilisées pour la définition des langages de programmation :
– L’approche du langage noyau, que nous utilisons, est ciblée pour le programmeur.
Ses concepts correspondent directement aux concepts de programmation.
– L’approche fondamentale est ciblée pour le mathématicien. Quelques exemples
de formalismes fondamentaux sont la machine de Turing, le l calcul (pour la
programmation fonctionnelle), la logique de premier ordre (pour la programmation logique) et le p calcul (pour la programmation concurrente). Comme ces
formalismes sont ciblés pour une utilisation mathématique, ils contiennent le
moins possible de concepts.
– L’approche de la machine abstraite est ciblée pour l’implémenteur. Les programmes sont traduits vers une machine idéalisée, que l’on appelle traditionnellement une machine abstraite ou une machine virtuelle.
3 Il est relativement
facile de traduire le code d’une machine idéalisée vers du code réel.
3. À proprement parler, une machine virtuelle est une émulation d’une machine réelle qui s’exécute sur
la machine réelle et qui est presque aussi efficace que la machine réelle. Elle parvient à cette efficacité en
exécutant la plupart des instructions virtuelles directement sur la machine comme des instructions réelles.
IBM a ouvert la voie à cette approche au début des années 1960 dans le système d’exploitation VM. À
cause du succès de Java, qui utilise le terme « machine virtuelle », l’usage moderne utilise ce terme aussi
dans le sens de machine abstraite.
Précédent

- 53/370

Suivant