“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 221 — #231
i
i
i
i
i
i
i
i
5
• La programmation avec état explicite
221
soit comme un ensemble de commandes pour évaluer ces fonctions (le « comment »). Les commandes seront exécutées dans un ordre particulier qui est défini
par le langage. Les deux ordres les plus populaires sont l’évaluation immédiate
(« eager evaluation ») et l’évaluation paresseuse (« lazy evaluation »). Quand
l’ordre est connu, la définition mathématique peut être exécutée sur un ordinateur.
En pratique, la lecture déclarative d’un programme logique ou fonctionnel peut perdre
de son aspect « quoi » parce que le programmeur doit expliciter le « comment » (voir
l’épigraphe d’O’Keefe à la tête du chapitre 3). Par exemple, une définition déclarative d’une recherche dans un arbre doit donner presque autant de commandes qu’une
définition impérative. Cependant, la programmation déclarative a toujours trois avantages capitaux. Premièrement, il est plus facile de construire des abstractions dans un
contexte déclaratif, parce que les opérations déclaratives sont de nature compositionnelles. Deuxièmement, les programmes déclaratifs sont plus faciles à tester, parce que
l’on peut tester chaque partie (donner les arguments et vérifier les résultats) indépendamment des autres. Tester les programmes avec état est plus difficile parce qu’il faut
tester des séquences d’appels (à cause de l’histoire interne). Troisièmement, le raisonnement est plus facile avec la programmation déclarative qu’avec la programmation
impérative (par exemple, le raisonnement algébrique est possible).
La structure du chapitre
Ce chapitre présente les idées et techniques de base pour l’utilisation de l’état dans la
conception de programmes.
– Dans les trois premières sections, nous introduisons et définissons le concept
d’état explicite.
• La section 5.1 introduit l’état explicite : elle définit la notion générale d’état,
qui est indépendant de tout modèle de calcul, et montre les différentes manières
dont les modèles de calcul implémentent cette notion.
• La section 5.2 explique les principes de base de la conception de systèmes et
pourquoi l’état en est une partie essentielle. Elle donne aussi les premières définitions de la programmation par composants et de la programmation orientée
objet.
• La section 5.3 donne une définition précise du modèle de calcul avec état.
– Dans la section 5.4 nous expliquons les différentes manières de construire les
abstractions de données, avec et sans état explicite. Nous expliquons également
les deux principaux styles de construction des abstractions de données, le style
ADT et le style objet.
– La section 5.5 concerne le polymorphisme, un des concepts les plus importants
pour les abstractions de données. Le polymorphisme permet à un programme
© Dunod – La photocopie non autorisée est un délit
i
i
i
i
i
i
i
i
5
• La programmation avec état explicite
221
soit comme un ensemble de commandes pour évaluer ces fonctions (le « comment »). Les commandes seront exécutées dans un ordre particulier qui est défini
par le langage. Les deux ordres les plus populaires sont l’évaluation immédiate
(« eager evaluation ») et l’évaluation paresseuse (« lazy evaluation »). Quand
l’ordre est connu, la définition mathématique peut être exécutée sur un ordinateur.
En pratique, la lecture déclarative d’un programme logique ou fonctionnel peut perdre
de son aspect « quoi » parce que le programmeur doit expliciter le « comment » (voir
l’épigraphe d’O’Keefe à la tête du chapitre 3). Par exemple, une définition déclarative d’une recherche dans un arbre doit donner presque autant de commandes qu’une
définition impérative. Cependant, la programmation déclarative a toujours trois avantages capitaux. Premièrement, il est plus facile de construire des abstractions dans un
contexte déclaratif, parce que les opérations déclaratives sont de nature compositionnelles. Deuxièmement, les programmes déclaratifs sont plus faciles à tester, parce que
l’on peut tester chaque partie (donner les arguments et vérifier les résultats) indépendamment des autres. Tester les programmes avec état est plus difficile parce qu’il faut
tester des séquences d’appels (à cause de l’histoire interne). Troisièmement, le raisonnement est plus facile avec la programmation déclarative qu’avec la programmation
impérative (par exemple, le raisonnement algébrique est possible).
La structure du chapitre
Ce chapitre présente les idées et techniques de base pour l’utilisation de l’état dans la
conception de programmes.
– Dans les trois premières sections, nous introduisons et définissons le concept
d’état explicite.
• La section 5.1 introduit l’état explicite : elle définit la notion générale d’état,
qui est indépendant de tout modèle de calcul, et montre les différentes manières
dont les modèles de calcul implémentent cette notion.
• La section 5.2 explique les principes de base de la conception de systèmes et
pourquoi l’état en est une partie essentielle. Elle donne aussi les premières définitions de la programmation par composants et de la programmation orientée
objet.
• La section 5.3 donne une définition précise du modèle de calcul avec état.
– Dans la section 5.4 nous expliquons les différentes manières de construire les
abstractions de données, avec et sans état explicite. Nous expliquons également
les deux principaux styles de construction des abstractions de données, le style
ADT et le style objet.
– La section 5.5 concerne le polymorphisme, un des concepts les plus importants
pour les abstractions de données. Le polymorphisme permet à un programme
© Dunod – La photocopie non autorisée est un délit
