OPiCitations
informatique
Computer science is no more about computers than astronomy is about telescopes.
L’informatique n’est pas plus à propos des ordinateurs que l’astronomie n’est à propos des télescopes.
informatique
In other words, we should regard programmer’s activity not so much as "producing programs", but rather as "designing a large class of computations".
En d’autres termes, nous devrions considérer l’activité du programmeur non pas tant comme "la production de programmes", mais plutôt comme "la conception d’une grande classe de calculs".
outil
It has to do with the influence of the tool we are trying to use upon our own thinking habits. I observe a cultural tradition, which in all probability has its roots in the Renaissance, to ignore this influence, to regard the human mind as the supreme and autonomous master of its artefacts. But if I start to analyse the thinking habits of myself and of my fellow human beings, I come, whether I like it or not, to a completely different conclusion, viz. that the tools we are trying to use and the language or notation we are using to express or record our thoughts, are the major factors determining what we can think or express at all! The analysis of the influence that programming languages have on the thinking habits of its users, and the recognition that, by now, brainpower is by far our scarcest resource, they together give us a new collection of yardsticks for comparing the relative merits of various programming languages. The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.
[…]
I do not know of any other technology covering a ratio of 1010 or more: the computer, by virtue of its fantastic speed, seems to be the first to provide us with an environment where highly hierarchical artefacts are both possible and necessary. This challenge, viz. the confrontation with the programming task, is so unique that this novel experience can teach us a lot about ourselves. It should deepen our understanding of the processes of design and creation, it should give us better control over the task of organizing our thoughts. If it did not do so, to my taste we should not deserve the computer at all!
[…]
I do not know of any other technology covering a ratio of 1010 or more: the computer, by virtue of its fantastic speed, seems to be the first to provide us with an environment where highly hierarchical artefacts are both possible and necessary. This challenge, viz. the confrontation with the programming task, is so unique that this novel experience can teach us a lot about ourselves. It should deepen our understanding of the processes of design and creation, it should give us better control over the task of organizing our thoughts. If it did not do so, to my taste we should not deserve the computer at all!
Il a à voir avec l’influence des outils que nous essayons d’utiliser sur nos habitudes de penser. Je constate l’existence d’une tradition culturelle, dont les racines remontent sans doute à la Renaissance, d’ignorer cette influence, de considérer l’esprit humain comme le maître suprême et autonome de ses artefacts. Mais si je commence à analyser mon mode de penser et celui de compagnons humains, j’arrive, que cela me plaise ou non, à une conclusion totalement différente, à savoir que les outils que nous tentons d’utiliser et le langage ou la notation que nous utilisons pour exprimer ou enregistrer nos pensées sont les facteurs majeurs déterminant tout simplement ce que nous pouvons penser ou exprimer ! L’analyse de l’influence qu’ont les langages de programmation sur les modes de penser de leurs utilisateurs et la reconnaissance qu’aujourd’hui, la matière grise est de loin notre ressource la plus rare, ensemble, nous donne une nouvelle série de repères pour comparer les mérites relatifs de différents langages de programmation. Le programmeur compétent est pleinement conscient de la taille strictement limitée de son crâne ; il approche donc la tâche de la programmation en toute modestie, et, entre autres choses, il évite les astuces ingénieuses comme la peste.
[…]
Je n’ai pas connaissance d’une autre technologie couvrant un ratio de 1010 ou plus : l’ordinateur, en raison de son extraordinaire rapidité, semble pour la première fois nous fournir un environnement où des artefacts hautement hiérarchisés sont à la fois possibles et nécessaires. Ce défi, à savoir la confrontation avec le travail de la programmation, est si unique que cette nouvelle expérience peut nous apprendre beaucoup sur nous-mêmes. Elle devrait approfondir notre compréhension du processus de conception et de création, elle devrait nous donner un meilleur contrôle sur l’organisation de nos pensées. Si ça n’est pas le cas, à mon avis nous ne méritons absolument pas l’ordinateur !
[…]
Je n’ai pas connaissance d’une autre technologie couvrant un ratio de 1010 ou plus : l’ordinateur, en raison de son extraordinaire rapidité, semble pour la première fois nous fournir un environnement où des artefacts hautement hiérarchisés sont à la fois possibles et nécessaires. Ce défi, à savoir la confrontation avec le travail de la programmation, est si unique que cette nouvelle expérience peut nous apprendre beaucoup sur nous-mêmes. Elle devrait approfondir notre compréhension du processus de conception et de création, elle devrait nous donner un meilleur contrôle sur l’organisation de nos pensées. Si ça n’est pas le cas, à mon avis nous ne méritons absolument pas l’ordinateur !
informatique
Let me start with a well-established fact: by and large the programming community displays a very ambivalent attitude towards the problem of program correctness. A major part of the average programmer’s activity is devoted to debugging, and from this observation we may conclude that the correctness of his programs –or should we say: their patent incorrectness?– is for him a matter of considerable concern. I claim that a programmer has only done a decent job when his program is flawless and not when his program is functioning properly only most of the time. But I have had plenty of opportunity to observe that this suggestion is repulsive to many professional programmers: they object to it violently! Apparently, many programmers derive the major part of their intellectual satisfaction and professional excitement from not quite understanding what they are doing. In this streamlined age, one of our most under-nourished psychological needs is the craving for Black Magic, and apparently the automatic computer can satisfy this need for the professional software engineers, who are secretly enthralled by the gigantic risks they take in their daring irresponsibility. They revel in the puzzles posed by the task of debugging. They defend –by appealing to all sorts of supposed Laws of Nature– the right of existence of their program bugs, because they are so attached to them: without the bugs, they feel, programming would no longer be what is used to be! (In the latter feeling I think –if I may say so– that they are quite correct.)
Permettez-moi de commencer par un fait bien établi : dans l’ensemble, le milieu de la programmation a une attitude très ambivalente à l’égard du problème de la correction des programmes. Une grande partie de l’activité du programmeur moyen est consacrée au débogage, et de cette observation nous pouvons conclure que l’exactitude de ses programmes – ou devrais-je dire : leur inexactitude patente – est pour lui un sujet de préoccupation considérable. Je prétends qu’un programmeur n’a fait un travail décent que lorsque son programme est impeccable et non lorsque son programme ne fonctionne correctement que la plupart du temps. Mais j’ai eu l’occasion de constater que cette suggestion est répugnante pour de nombreux programmeurs professionnels : ils s’y opposent violemment ! Apparemment, de nombreux programmeurs tirent la majeure partie de leur satisfaction intellectuelle et de leur excitation professionnelle d’une mauvaise compréhension de ce qu’ils font. En cette époque de rationalisation, l’un de nos besoins psychologiques les plus sous-alimentés est le besoin de Magie Noire, et apparemment l’ordinateur automatique peut satisfaire ce besoin pour les ingénieurs logiciels professionnels, qui sont secrètement fascinés par les risques gigantesques qu’ils prennent dans leur audace irresponsable. Ils se délectent des énigmes posées par la tâche de débogage. Ils défendent – en faisant appel à toutes sortes de lois supposées de la nature – le droit à l’existence de leurs bogues de programme, parce qu’ils y sont tellement attachés : sans les bogues, ils estiment que la programmation ne serait plus ce qu’elle était ! (Dans ce dernier sentiment, je pense – si je puis dire – qu’ils ont tout à fait raison.)
informatique
The first moral of this story is that program testing can be used very efficiently to show the presence of bugs, but never to show their absence.
La première morale de cette histoire est que les tests de programme peuvent être utilisés très efficacement pour montrer la présence de bogues, mais jamais pour montrer leur absence.
informatique
We all know that the only mental tool by means of which a very finite piece of reasoning can cover a myriad cases is called "abstraction"; as a result the effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer. In this connection it might be worth-while to point out that the purpose of abstracting is not to be vague, but to create a new semantic level in which one can be absolutely precise.
Nous savons tous que le seul outil mental par lequel un raisonnement très fini peut couvrir une myriade de cas est appelé "abstraction" ; par conséquent, l’exploitation efficace de son pouvoir d’abstraction doit être considérée comme l’une des activités les plus vitales d’un programmeur compétent. À cet égard, il peut être utile de rappeler que le but de l’abstraction n’est pas d’être vague, mais de créer un nouveau niveau sémantique dans lequel on peut être absolument précis.