Morceaux choisis de Dijkstra
Sur le site http://www.cs.utexas.edu/users/EWD
sont regroup\'es beaucoup d'écrits d'Edsger W. Dijkstra.
Ses positions tranchés permettent à tout un chacun de démarrer ses propres réflexions.
Une sélection arbitraire est présentée ci-dessous.
On peut trouver sur la toile quelques traductions en français, trop rares.
Certains extraits ont été reproduits ici ; le numéro de page est celui lu dans xpdf, il vaut un de plus que le repère de l'auteur.
Les lettres 1284 et 1305 semblent de bonnes introductions à la pensée de Dijkstra.
p8 : In our description of an algorithm we have stressed that the primitive
actions should be executable, that they could be done. "Go to the other side
of the square." is perfectly OK, "Go to hell", however, is not an algorithm
but a curse, because it cannot be done.
p11 : ("false" is the technical term for "not true")
p0 : 4) I shall argue that programming will become more and more an activity of mathematical nature.
p2 : The easiest machine applications are the technical/scientific computations.
p3 : About the use of language: it is impossible to sharpen a pencil with a blunt axe. It is equally vain to try to do it with ten blunt axes instead.
p1 : Why do we teach different disciplines at our Universities? Why don't we teach all our students just "knowledge"? The answer is simple: our human skulls are too small and our days are too short.
p8 : I have shown you a small example, specifically manufactured to illustrate the nature of the dilemma. Let me now turn to a more grandiose example that has been provided by "the real world". The original design of the IBM650 had the very special feature that the attempted execution of a special little program loop blew one of the fuses of the machine. Needless to say, this very special feature was not mentioned in the manual, but, programmers being as they are, they not only discovered it, they also used it in at least one organization, where reservations of machine time were extended with the down-time, when the machine broke down during your period of reservation. Programmers who had a one-hour reservation for a debugging session used the little loop when, after ten minutes of testing, they discovered a bug whose patching required some peaceful thinking!
p10 : This in sharp contrast to the majority of the so-called high-level programming languages, the semantics of which are only so loosely indicated that most young programmers have lost the sense of complete control that we used to have. They live in a woolly environment in which the notion that a program is either correct or not is, by definition, not applicable.
p13 : I also feel that many a mathematician could profit from the exposure to programming. I have that feeling because, while studying mathematical texts, I now very often observe as my reaction towards the author "He must be a very poor programmer!" We, as programmers, have, for instance, been so trained to avoid case-analysis like the plague that it is not unusual at all to encounter a mathematical argument, the length of which can be halved, perhaps even be halved a number of times.
While preparing this invited speech I had to guess at what type of audience I would eventually address. The title of the Symposium's subject "Mathematical Foundations of Computing Science" was my only indication. If I have the privilege of addressing a primarily mathematically interested audience, it is clear how my ending note should sound, for in that case I can only urge you, Mathematicians, not to confine with respect to Computing Science your interest to its foundations! The praxis of computer programming needs you as much as you need its challenge, if Mathematics is to remain the Queen of Sciences.
p2 : There is, for instance, the author's view on the proper role of our universities. They include producing the graduates industry and governments ask for. An alternative view is trying to educate the graduates the rest of the world will need in the future, independent of the question to what extent the rest of the world already understands its future needs. This may sound presumptuous, but universities are by definition -if they are any good- presumptuous institutions with targets more far away in the future than most other organizations. I definitely prefer the alternative view, for where, otherwise, is the necessary innovation to take place? The degeneration of our universities into graduate factories is a development I would not encourage, because I consider it to be a threat to our civilization.
p5 : It will take a long time before they will discover that in computing science, elegance is not a dispensable luxury, but a matter of life and death.
p2 : Artificial Intelligentsia
p10 : in programming mathematical elegance is not a dispensable luxury, but a matter of life and death.
p13 : Some problems may defy elegant solutions, but there seems overwhelming evidence that much of what has been done in programming (and in computing science in general) can be simplified drastically. Numerous are the stories of the 30-line solutions concocted by a so-called professional programmer "or even a teacher of programming!" that could be reduced to a program of 4 or 5 lines.)
p3 : It took him a few days to recover and to realize that the distinction between "what one says" and "how one says it" is ultimately untenable.
p2 : it was a very lively illustration of the saying that to someone, whose only tool is a hammer, every problem looks like a nail!
p1 : At an American computer conference a few years ago, the keynote speaker explained that computing science was very important because only computing science would enable the USA to maintain its technological supremacy in the face of the Japanese threat. Some years later, at a computer conference in Tokyo, the keynote speaker explained that computing science was very important, because only computing science could free Japan from the American technological supremacy.
p1 : most people, including mathematicians, are amateur thinkers in the sense that they have not been taught how to think effectively.
The habit of using pictorial aids, like any habit, is very difficult to get rid of. If, however, we take any responsibility for the effectiveness of our thinking habits, we should try to get rid of the habit as quickly as possible, for it is a bad habit, confusing and misleading up to the point of being paralysing.
p11 : The question "What is Mathematics?" is as anavoidable and as unanswerable as the question "What is Life?". In actual fact I think it's almost the same question.
p1 : A competent programmer's most important assets are --perhaps in this order-- an excellent mastery of his native tongue and a considerable mathematical maturity. These facts are well-known and well-understood for more than ten years.
p2 : One further circumstance blurs people's vision. For those who understand what programming is about and agree with Morris Kline's verdict "More than anything else mathematics is a method," it is obvious that programming must be regarded as branch of mathematics, be it a somewhat curious one. Certainly now, but perhaps for ever, programming distinguishes itself from most other branches of mathematics by a different balance between the required knowledge and the required maturity. Programming requires relatively little mathematical knowledge; avoiding unmastered complexity, however, requires a great methodological awareness.
p3 : We are not prescribing the law to anybody, we are not even attempting to propose something for standardization, but have rules for ourselves.
p4 : Ideally, people would understand that in their capacity of tools, computers cause only a ripple on the surface of our culture compared with the influence they will have in their capacity of intellectual challenge without precedent. Ideally, people would understand that, in the decades to come, computing science can be expected to have an influence on mathematics in general at least as profound as the influence physics has had on analysis during the last century. But this is perhaps a bit too much to hope for.
p6 : Recent experience has confirmed what many of us knew already, viz. that programming is even too difficult for the average mathematician.
p5 : As computing scientists we know that in our area, perhaps more than everywhere else, mathematical elegance is not a dispensable luxury but decides between success and failure.
p6 : Hence my urgent advice to all of you to reject the morals of the bestseller society and to find, to start with, your reward in your own fun.
p10 : I recently read a series of articles on the Shuttle on-board software and, though President Reagan has generously offered a teacher a free ride, I tell you I am not available.
p13 : by suppressing the symptoms of impotence they create an illusion of power.
p16 : And also for the American Universities the tide may be turning. Traditionally they have been asked to train the work-force for the American industry, while the question of educating the industry so as to be worthy of their graduates was left untouched.
p13 : I expect formal techniques to have in the next century a most profound influence on mathematics in general.
p2 : one expects a more subtle opinion that recognizes the circumstances in which computerization is nothing but transistorized snake oil.
p2 : Let me conclude this address by one disturbing thought, viz. that society tolerates the computing profession because of its incompetence. It is our incompetence that makes us, though expensive, relatively harmless: were we as competent as we would like to be, we could offer the perfect implementation of the complete police state. We would be the darlings of any dictatorship.
What the world needs most, but never asks for, is improvement of its ways of doing things. But you know how the world is: of course it is greatly in favour of improvement, but on closer inspection it insists on improvement without change. [Such is, in particular, the greatest ideal of all managers.]
p3 : We might in this light reconsider how happy or unhappy we are with some of our grants and to what extent the attached strings are shackles. Quite a few grants could very well turn out to be curses in disguise. (I am not a historian of science but sometimes ponder about possible explanations of the in general sorry state of American computing science; "too many grants" is one of them.)
p9 : Just when the computing science community has agreed that simplicity is an essential ingredient of reliability, the DoD adopts Ada! What more can I say? When the late Andrei Ershov from Novosibirsk asked my opinion about Ada, I told him that I shuddered at the thought that Western security would depend on it and that I would feel much better if I knew that the Red Army had adopted Ada as well. Andrei smiled and said "Don't worry."
p7 : By now we all know that programming is as hard or as easy as proving, and that if programming a procedure corresponds to proving a theorem, designing a digital system corresponds to building a mathematical theory. The tasks are isomorphic.
p6 : Finally, let me end with a quotation:
Dijkstra: I would like to comment on the distinction that has been made between practical and theoretical people. I must stress that I feel this distinction to be obsolete, worn out, inadequate and fruitless. It is just no good, if you want to do anything reasonable, to think that you can work with such simple notions. Its inadequacy, amongst other things, is shown by the fact that I absolutely refuse to regard myself as either impractical or not theoretical.
That this quotation dates from 1969 is a sobering thought.
p6 : in the near future we shall have to live with the superstition that also programming is "so easy that even a Republican can do it".
p8 : In the next fifty years, Mathematics will emerge as The Art and Science of Effective Formal Reasoning, and we shall derive our intellectual excitement from learning How to Let the Symbols Do the Work.
À lire en premier
p21 : (For those who have wondered: I don't think object-oriented programming is a structuring paradigm that meets my standards of elegance.)
p25 : we do not know how to reach simplicity in a systematic manner.
p1 : in Tony's case they were Quicksort and the remark that "there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies".
p7 : ALGOL 60's fifth novelty was its machine independence. FORTRAN's purpose had been to ease programming for the IBM 709, while now it became the computer's task to execute ALGOL programs, and this was a major paradigm shift. We saw in the difficulty of implementing ALGOL 60 on IBM machines a confirming symptom of their poor design; Alan Perlis, however, judged ALGOL 60 "an inefficient language".
p8 : (i) When exhaustive testing is impossible —i.e., almost always— our trust can only be based on proof (be it mechanized or not).
(ii) A program for which it is not clear why we should trust it, is of dubious value.
(iii) A program should be structured in such a way that the argument for its correctness is feasible and not unnecessarily laborious.
(iv) Given the proof, deriving a program justified by it, is much easier than, given the program, constructing a proof justifying it.
p1 : "The price of reliability is the pursuit of the utmost simplicity.
It is a price which the very rich find most hard to pay."
Sir Antony Hoare, 1980
À lire en deuxième