Edsger W. Dijkstra
- I think of the company advertizing "Thought Processors" or the college pretending that learning BASIC suffices or at least helps, whereas the teaching of BASIC should be rated as a criminal offence: it mutilates the mind beyond recovery.
- Testing shows the presence, not the absence of bugs
- Source: J.N. Buxton and B. Randell, eds, Software Engineering Techniques, April 1970, p. 21. Report on a conference sponsored by the NATO Science Committee, Rome, Italy, 27–31 October 1969. Possibly the earliest documented use of the famous quote.
- Program testing can be used to show the presence of bugs, but never to show their absence!
- Source: Notes On Structured Programming, 1972, at the end of section 3, On The Reliability of Mechanisms. EWD249 (1970).
- Program testing can be a very effective way to show the presence of bugs, but is hopelessly inadequate for showing their absence.
- Source: The Humble Programmer (EWD340). Same quote as above, but worded differently, and from another writing.
- There are many different styles of composition. I characterize them always as Mozart versus Beethoven. When Mozart began to write at that time he had the composition ready in his mind. He wrote the manuscript and it was 'aus einem Guss' (casted as one). And it was also written very beautiful. Beethoven was an indecisive and a tinkerer and wrote down before he had the composition ready and plastered parts over to change them. There was a certain place where he plastered over nine times and one did remove that carefully to see what happened and it turned out the last version was the same as the first one.
- The question of whether Machines Can Think... is about as relevant as the question of whether Submarines Can Swim.
- The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.
- Source: EWD340
- Elegance is not a dispensable luxury but a quality that decides between success and failure.
- Source: EWD1284
- How do we convince people that in programming simplicity and clarity —in short: what mathematicians call "elegance"— are not a dispensable luxury, but a crucial matter that decides between success and failure?
- Source: EWD648
- Write a paper promising salvation, make it a 'structured' something or a 'virtual' something, or 'abstract', 'distributed' or 'higher-order' or 'applicative' and you can almost be certain of having started a new cult.
- For me, the first challenge for computing science is to discover how to maintain order in a finite, but very large, discrete universe that is intricately intertwined. And a second, but not less important challenge is how to mould what you have achieved in solving the first problem, into a teachable discipline: it does not suffice to hone your own intellect (that will join you in your grave), you must teach others how to hone theirs. The more you concentrate on these two challenges, the clearer you will see that they are only two sides of the same coin: teaching yourself is discovering what is teachable.
- When we had no computers, we had no programming problem either. When we had a few computers, we had a mild programming problem. Confronted with machines a million times as powerful, we are faced with a gigantic programming problem.
- The required techniques of effective reasoning are pretty formal, but as long as programming is done by people that don't master them, the software crisis will remain with us and will be considered an incurable disease. And you know what incurable diseases do: they invite the quacks and charlatans in, who in this case take the form of Software Engineering gurus.
- Probably I am very naive, but I also think I prefer to remain so, at least for the time being and perhaps for the rest of my life.
- When I came back from Munich, it was September, and I was Professor of Mathematics at the Eindhoven University of Technology. Later I learned that I had been the Department's third choice, after two numerical analysts had turned the invitation down; the decision to invite me had not been an easy one, on the one hand because I had not really studied mathematics, and on the other hand because of my sandals, my beard and my "arrogance" (whatever that may be).
- Source: EWD 1166: "From my Life"
- I mean, if 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say to yourself "Dijkstra would not have liked this", well, that would be enough immortality for me.
- On Our Inability To Do Much.
- Source: Chapter title in "Structured Programming", O.J. Dahl, E.W. Dijkstra, and C.A.R. Hoare. Academic Press, 1972 ISBN 0122005503
- Thank goodness we don't have only serious problems, but ridiculous ones as well.
- Source: EWD475, "A Letter to My Old Friend Jonathan"; p. 101 in Dijkstra, Edsger (1982). Selected Writings on Computing, Berlin: Springer-Verlag.
How do we tell truths that might hurt?
How do we tell truths that might hurt? (numbered EWD498, written 1975) was written as a series of aphorisms, and is the source of several popular quotations. It was also published in Selected Writings on Computing:A Personal Perspective.
- The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
- APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.
- FORTRAN, 'the infantile disorder', by now nearly 20 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use.
- In the good old days physicists repeated each other's experiments, just to be sure. Today they stick to FORTRAN, so that they can share each other's programs, bugs included.
- It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
- Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.
- Simplicity is prerequisite for reliability.
- Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians.
- We can found no scientific discipline, nor a hearty profession, on the technical mistakes of the Department of Defense and, mainly, one computer manufacturer.
- Computer Science is no more about computers than astronomy is about telescopes.
- Do only what only you can do.
- Object-oriented programming is an exceptionally bad idea which could only have originated in California.
- The prisoner falls in love with his chains.
- If in physics there's something you don't understand, you can always hide behind the uncharted depths of nature. You can always blame God. You didn't make it so complex yourself. But if your program doesn't work, there is no one to hide behind. You cannot hide behind an obstinate nature. If it doesn't work, you've messed up.
- Why has elegance found so little following? Elegance has the disadvantage that hard work is needed to achieve it and a good education to appreciate it.
- You must not give the world what it asks for, but what it needs.
- We must not put mistakes into programs because of sloppiness, we have to do it systematically and with care.
- I realized that my prior projects were just finger warm-ups. Now I have to tackle complexity itself. But it took long, before I had assembled the courage to do so.
- Something very similar appears in EWD 1166.
- Are you quite sure that all those bells and whistles, all those wonderful facilities of your so called powerful programming languages, belong to the solution set rather than the problem set?
- This is from Dijkstra, A Discipline of Programming, Prentice-Hall, 1976, p. xiv.
- Go To statement considered harmful
- Source: From the title to a letter in CACM 11, 3 (March, 1968). However The original title of "A Case against the GO TO Statement" (EWD215, PDF here, ACM has its own copy online) was changed by the editor Niklaus Wirth, to speed up publication. Dijkstra explains it himself in EWD1308 (see near the end of the article).