“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 110 — #120
i
i
i
i
i
i
i
i
110
3
• Techniques de programmation déclarative
Modèle déclaratif
Descriptive
Programmable
Observationnelle
Programmation
déclarative
Définitionnelle
Programmation fonctionnelle
Programmation logique
Figure 3.3 Une classification de la programmation déclarative.
s : := skip
Instruction vide
| |s 1 s 2
Séquence d’instructions
| local x in s end Création de variable
| |x 1 =x 2
Lien variable-variable
| |x=v
Création de valeur
Tableau 3.1 Le langage noyau déclaratif descriptif.
Il y a deux façons fondamentalement différentes de considérer la déclarativité
programmable :
– Une vue définitionnelle, où la déclarativité est une propriété de l’implémentation
des composants. Par exemple, les programmes écrits dans le modèle déclaratif
sont toujours déclaratifs, à cause des propriétés du modèle.
– Une vue observationnelle, où la déclarativité est une propriété de l’interface des
composants. La vue observationnelle respecte le principe d’abstraction : pour
utiliser un composant il suffit de connaître sa spécification sans connaître son
implémentation. Le composant doit simplement se comporter de façon déclarative, être indépendant, sans mémoire et déterministe, sans nécessairement être
écrit dans un modèle déclaratif.
Ce livre utilise les deux vues, définitionnelle et observationnelle. Quand nous nous
intéressons à l’intérieur d’un composant, nous utilisons la vue définitionnelle. Quand
nous nous intéressons au comportement d’un composant, nous utilisons la vue observationnelle. Il y a deux styles de programmation déclarative définitionnelle qui sont relativement populaires : le style fonctionnel et le style logique. Dans le style fonctionnel,
nous disons qu’un composant défini comme une fonction mathématique est déclaratif.
Les langages fonctionnels tels que Haskell et Standard ML suivent cette approche.
Dans le style logique, nous disons qu’un composant défini comme une relation logique
est déclaratif. Les langages logiques tels que Prolog et Mercury suivent cette approche.
i
i
i
i
i
i
i
i
110
3
• Techniques de programmation déclarative
Modèle déclaratif
Descriptive
Programmable
Observationnelle
Programmation
déclarative
Définitionnelle
Programmation fonctionnelle
Programmation logique
Figure 3.3 Une classification de la programmation déclarative.
s : := skip
Instruction vide
| |s 1 s 2
Séquence d’instructions
| local x in s end Création de variable
| |x 1 =x 2
Lien variable-variable
| |x=v
Création de valeur
Tableau 3.1 Le langage noyau déclaratif descriptif.
Il y a deux façons fondamentalement différentes de considérer la déclarativité
programmable :
– Une vue définitionnelle, où la déclarativité est une propriété de l’implémentation
des composants. Par exemple, les programmes écrits dans le modèle déclaratif
sont toujours déclaratifs, à cause des propriétés du modèle.
– Une vue observationnelle, où la déclarativité est une propriété de l’interface des
composants. La vue observationnelle respecte le principe d’abstraction : pour
utiliser un composant il suffit de connaître sa spécification sans connaître son
implémentation. Le composant doit simplement se comporter de façon déclarative, être indépendant, sans mémoire et déterministe, sans nécessairement être
écrit dans un modèle déclaratif.
Ce livre utilise les deux vues, définitionnelle et observationnelle. Quand nous nous
intéressons à l’intérieur d’un composant, nous utilisons la vue définitionnelle. Quand
nous nous intéressons au comportement d’un composant, nous utilisons la vue observationnelle. Il y a deux styles de programmation déclarative définitionnelle qui sont relativement populaires : le style fonctionnel et le style logique. Dans le style fonctionnel,
nous disons qu’un composant défini comme une fonction mathématique est déclaratif.
Les langages fonctionnels tels que Haskell et Standard ML suivent cette approche.
Dans le style logique, nous disons qu’un composant défini comme une relation logique
est déclaratif. Les langages logiques tels que Prolog et Mercury suivent cette approche.
