“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 224 — #234
i
i
i
i
i
i
i
i
224
5
• La programmation avec état explicite
@ donne accès au contenu actuel et := met un nouveau contenu. Si SumCount n’est
pas utilisée, cette version de SumList ne pourra pas être distinguée de la version
précédente : on l’appelle de la même façon et elle donne les mêmes résultats.
2
La possibilité d’utiliser l’état explicite est très importante. Elle supprime les limites
de la programmation déclarative (voir section 4.4). Avec l’état explicite, les abstractions de données augmentent énormément en modularité parce qu’il est possible
d’encapsuler un état à l’intérieur. L’accès à l’état est limité selon les opérations de
l’abstraction de données. Cette idée est au cœur de la programmation orientée objet,
un style de programmation puissant qui est élaboré dans le chapitre 6.
5.2 L’ÉTAT ET LA CONSTRUCTION DE SYSTÈMES
Le principe d’abstraction
À notre connaissance, le principe de construction de systèmes le plus puissant pour des
êtres intelligents avec des capacités limitées de réflection, comme les êtres humains,
est le principe d’abstraction. Prenez un système quelconque. On peut considérer
qu’il a deux parties : une spécification et une implémentation. La spécification est
un contrat, dans le sens mathématique qui est plus fort que le sens légal. Le contrat
définit comment le système doit se comporter. On dit qu’un système est correct si son
comportement effectif est en accord avec le contrat. S’il se comporte autrement, on
dira qu’il échoue.
La spécification définit comment le reste du monde interagit avec le système, vu
de l’extérieur. L’implémentation est la construction du système, vu de l’intérieur. La
propriété miraculeuse de la distinction spécification/implémentation est que la spécification est généralement bien plus simple à comprendre que l’implémentation. On
ne doit pas savoir comment construire une montre pour lire l’heure. Pour paraphraser
l’évolutionniste Richard Dawkins, que l’horloger soit aveugle ou non, l’important est
que la montre fonctionne.
La conséquence est qu’il est possible de construire un système comme une série de
couches. On peut procéder pas à pas, en construisant couche sur couche. À chaque
couche, il suffit pour l’implémentation d’utiliser la couche juste en dessous pour
fournir la couche juste au-dessus. Il n’est pas nécessaire de comprendre tout à la fois.
Les systèmes qui grandissent
Comment cette approche est-elle soutenue par la programmation déclarative ? Avec le
modèle déclaratif du chapitre 2, tout ce que le système « sait » est à l’extérieur, sauf
2. Les seules différences sont un petit ralentissement et une petite augmentation d’utilisation de mémoire.
Dans presque tous les cas pratiques, ces différences peuvent être ignorées.
Précédent

- 239/370

Suivant