“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 211 — #221
i
i
i
i
i
i
i
i
4.4 Les principales limitations de la programmation déclarative
211
Maintenant nous instrumentons SC. Dans l’approche déclarative (à gauche), il faut
ajouter un accumulateur à chaque procédure sur le chemin de Main à P1. Dans
l’approche à état (à droite), les seuls changements sont l’opération supplémentaire
Count et le corps de P1. Dans les deux cas, les changements sont montrés avec des
lignes épaisses. Comparons les deux approches :
– L’approche déclarative n’est pas modulaire par rapport à l’instrumentation de P1,
parce que chaque définition et appel de procédure sur le chemin de Main à P1 a
besoin de deux arguments supplémentaires. Les interfaces à P1, P2 et P3 sont
toutes changées. Les autres composants qui appellent SC doivent donc aussi être
changés.
– L’approche à état est modulaire parce que la cellule est mentionnée uniquement
où on en a besoin, dans l’initialisation de SC et dans P1. En particulier, les
interfaces à P1, P2 et P3 sont inchangées. Comme l’opération supplémentaire
Count peut être ignorée, les autres composants qui appellent SC ne doivent pas
être modifiés.
– L’approche déclarative est plus lente parce qu’elle fait beaucoup de passages
d’argument supplémentaires. Toutes les procédures sont ralenties à cause d’une
seule. L’approche à état est efficace ; elle ne dépense du temps que lorsque c’est
nécessaire pour incrémenter le compteur.
Quelle approche est la plus simple : la première ou la deuxième ? La première a un
modèle plus simple mais un programme plus compliqué. La deuxième a un modèle
plus compliqué mais un programme plus simple. De notre point de vue, l’approche
déclarative n’est pas naturelle. L’approche à état, parce qu’elle est modulaire, est
clairement la plus simple dans l’ensemble.
Le faux raisonnement du préprocesseur
Peut-être existe-t-il un moyen d’avoir les deux. Définissons un préprocesseur qui
ajoute les arguments à notre place. Un préprocesseur est un programme qui prend
le code source d’un autre programme comme entrée, le transforme selon certaines
règles et renvoie le résultat. Nous définissons un préprocesseur qui prend la syntaxe
de l’approche à état comme entrée et qui la transforme pour ressembler à l’approche
déclarative. Voilà ! Il semble que nous pouvons maintenant programmer avec l’état
dans le modèle déclaratif. Nous avons surmonté une limitation du modèle déclaratif.
Mais l’avons-nous vraiment fait ? En réalité tout ce que nous avons réussi est de
construire une implémentation inefficace d’un modèle avec état. Voici pourquoi :
– Avec le préprocesseur, nous ne voyons que les programmes qui ressemblent à
l’approche à état, donc des programmes à état. Cela nous oblige à raisonner dans
un modèle avec état. Nous avons donc de ce fait étendu le modèle déclaratif avec
l’état explicite.
© Dunod – La photocopie non autorisée est un délit
Précédent

- 226/370

Suivant