93 lines
3.8 KiB
Plaintext
93 lines
3.8 KiB
Plaintext
|
Points délicats de la programmation objet
|
||
|
=========================================
|
||
|
|
||
|
L'objectivisme
|
||
|
---------------
|
||
|
|
||
|
L'exemple des critiques de Edsger D. Dijkstra face aux objets (1983)
|
||
|
|
||
|
Les difficultés de l'objectivisme dans la programmation raisonnée.
|
||
|
|
||
|
Dans les années 60, les promesses de rédemption des "langages de haut niveau"
|
||
|
ne se sont pas matérialisées.
|
||
|
|
||
|
Les critiques de la lenteur du batch processing et du débugging de la
|
||
|
programmation procédurale ont débouché sur la nécessité de "l'interactive
|
||
|
programming". Cela devait "faciliter la programmation", "augmenter la
|
||
|
lisibilité et la compréhension du code".
|
||
|
|
||
|
Le fait est que une large part de l'histoire de la programmation peut être
|
||
|
écrit en termes de projets à plusieurs millions de dollars qui ont échoué dans
|
||
|
leurs objectifs.
|
||
|
|
||
|
Apparemment la programmation objet ne vient pas "naturellement", car
|
||
|
le desing objet demande beaucoup d'entrainement.
|
||
|
|
||
|
Une approche de la nouveauté consiste à se placer dans une position aussi
|
||
|
neutre que possible par rapport à cette nouveauté, par rapport à sa cohérence
|
||
|
interne. C'est comme d'apprendre une langue étrangère sans essayer de traduire
|
||
|
systématiquement dans sa propre langue. Il faut alors apprendre à "penser"
|
||
|
dans cette nouvelle langue.
|
||
|
|
||
|
La programmation objet est d'une telle nouveauté qu'il faut se libérer des
|
||
|
habitudes d'approcher le sujet en termes d'analogies.
|
||
|
|
||
|
La programmation raisonnée
|
||
|
--------------------------
|
||
|
|
||
|
**En programmation objet l'anthropomorphisme est le pire de tout.**
|
||
|
|
||
|
"And now we have the fad of making all sorts of systems and their components "intelligent"
|
||
|
or "smart". It often boils down to designing a wolly non-machine interface that makes
|
||
|
the machine as unlike a computer as possible."
|
||
|
|
||
|
Edsger D. Dijkstra
|
||
|
|
||
|
Dans le cas de la compréhension d'un programme, nous devrions nous intéresser
|
||
|
au programme dans sa logique propre, en ignorant temporairement le fait même
|
||
|
que le code va être compilé - transformé en code exécutable.
|
||
|
Cette approche est bien connue, elle s'appelle l'approche axiomatique.
|
||
|
|
||
|
Le point important est ici que le système de représentation anthropomorphique, l'utilisation
|
||
|
d'une terminologie antropomorphique érige une barrière à l'application du
|
||
|
programme. L'une des conséquences de l'anthropomorphisme en programmation
|
||
|
est que les manières les plus opérationnelles de programmer et de raisonner
|
||
|
sur les programmes sont alors rejetées comme "contre-intuitives", ou "trop
|
||
|
abstraites".
|
||
|
|
||
|
|
||
|
| "I think anthropomorphism is worst of all. I have now seen programs
|
||
|
| "trying to do things", "wanting to do things", "believing things to be
|
||
|
| true", "knowing things" etc. Don't be so naive as to believe that this use
|
||
|
| of language is harmless. It invites the programmer to identify himself
|
||
|
| with the execution of the program and almost forces upon him the use of
|
||
|
| operational semantics."
|
||
|
|
||
|
Edsger D. Dijkstra
|
||
|
|
||
|
|
||
|
"The anthropomorphic analogy is misleading. A computer program is a formal
|
||
|
system, not a collection of living beings. Forget that at your peril."
|
||
|
loup vaillant (loupvaillant.fr)
|
||
|
|
||
|
Le processus de la programmation raisonnée étant abstrait, sa réalisation est
|
||
|
subsumée à son design.
|
||
|
Dans ces conditions, un programme est comme un poème : on ne peut pas l'écrire
|
||
|
sans d'abord l'écrire. On ne le "conçoit" pas au préalable.
|
||
|
|
||
|
Mais aujourd'hui on parle de la programmation comme d'un processus de
|
||
|
production comme un autre, dont on peut mesurer la productivité.
|
||
|
(nombre de lignes de code produites, etc.)
|
||
|
|
||
|
"The pre-computer object that offers the closest analogy to a well designed
|
||
|
piece of software is an equally well-designed mathematical theory."
|
||
|
Edsger D. Dijkstra
|
||
|
|
||
|
Ceci se répercute dans notre manière d'enseigner la programmation.
|
||
|
Ce qui est appelé aujourd'hui "méthodologie" joue un rôle de plus en plus
|
||
|
important, on privilégie le design au détriment de la conception raisonnée
|
||
|
d'un programme.
|
||
|
|
||
|
|
||
|
|