1.
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
Edsger Dijkstra
2.
The question of whether computers can think is like the question of whether submarines can swim.
Edsger Dijkstra
3.
Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians.
Edsger Dijkstra
4.
The lurking suspicion that something could be simplified is the world's richest source of rewarding challenges.
Edsger Dijkstra
5.
Computer science is no more about computers than astronomy is about telescopes.
Edsger Dijkstra
6.
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
Edsger Dijkstra
7.
Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.
Edsger Dijkstra
8.
Program testing can be used to show the presence of bugs, but never to show their absence!
Edsger Dijkstra
9.
Teaching COBOL ought to be regarded as a criminal act.
Edsger Dijkstra
10.
Elegance is not a dispensable luxury but a factor that decides between success and failure.
Edsger Dijkstra
11.
Raise your quality standards as high as you can live with, avoid wasting your time on routine problems, and always try to work as closely as possible at the boundary of your abilities. Do this, because it is the only way of discovering how that boundary should be moved forward.
Edsger Dijkstra
12.
Simplicity is prerequisite for reliability.
Edsger Dijkstra
13.
Perfecting oneself is as much unlearning as it is learning.
Edsger Dijkstra
14.
Too few people recognize that the high technology so celebrated today is essentially a mathematical technology.
Edsger Dijkstra
15.
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.
Edsger Dijkstra
16.
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.
Edsger Dijkstra
17.
Don't compete with me: firstly, I have more experience, and secondly, I have chosen the weapons.
Edsger Dijkstra
18.
Computer science is no more about computers than astronomy is about telescopes, biology is about microscopes or chemistry is about beakers and test tubes. Science is not about tools. It is about how we use them, and what we find out when we do.
Edsger Dijkstra
19.
If we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent."
Edsger Dijkstra
20.
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?
Edsger Dijkstra
21.
Object-oriented programming is an exceptionally bad idea which could only have originated in California.
Edsger Dijkstra
22.
We must be very careful when we give advice to younger people; sometimes they follow it!
Edsger Dijkstra
23.
In the wake of the Cultural Revolution and now of the recession I observe a mounting pressure to co-operate and to promote "teamwork." For its anti-individualistic streak, such a drive is of course highly suspect; some people may not be so sensitive to it, but having seen the Hitlerjugend in action suffices for the rest of your life to be very wary of "team spirit." Very.
Edsger Dijkstra
24.
...Simplifications have had a much greater long-range scientific impact than individual feats of ingenuity. The opportunity for simplification is very encouraging, because in all examples that come to mind the simple and elegant systems tend to be easier and faster to design and get right, more efficient in execution, and much more reliable than the more contrived contraptions that have to be debugged into some degree of acceptability....Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.
Edsger Dijkstra
25.
Yes, I share your concern: how to program well -though a teachable topic- is hardly taught. The situation is similar to that in mathematics, where the explicit curriculum is confined to mathematical results; how to do mathematics is something the student must absorb by osmosis, so to speak. One reason for preferring symbol-manipulating, calculating arguments is that their design is much better teachable than the design of verbal/pictorial arguments. Large-scale introduction of courses on such calculational methodology, however, would encounter unsurmoutable political problems.
Edsger Dijkstra
26.
Beware of "the real world". A speaker's apeal to it is always an invitation not to challenge his tacit assumptions.
Edsger Dijkstra
27.
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.
Edsger Dijkstra
28.
The traditional mathematician recognizes and appreciates mathematical elegance when he sees it. I propose to go one step further, and to consider elegance an essential ingredient of mathematics: if it is clumsy, it is not mathematics.
Edsger Dijkstra
29.
LISP has jokingly been described as "the most intelligent way to misuse a computer." I think that description is a great compliment because it transmits the full flavour of liberation: it has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts.
Edsger Dijkstra
30.
Programming in Basic causes brain damage.
Edsger Dijkstra
31.
Mathematicians are like managers - they want improvement without change.
Edsger Dijkstra
32.
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.
Edsger Dijkstra
33.
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?
Edsger Dijkstra
34.
It is a mistake to think that programmers wares are programs. Programmers have to produce trustworthy solutions and present it in the form of cogent arguments. Programs source code is just the accompanying material to which these arguments are to be applied to.
Edsger Dijkstra
35.
When building sand castles on the beach, we can ignore the waves but should watch the tide.
Edsger Dijkstra
36.
If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to start with.
Edsger Dijkstra
37.
[Though computer science is a fairly new discipline, it is predominantly based on the Cartesian world view. As Edsgar W. Dijkstra has pointed out] A scientific discipline emerges with the - usually rather slow! - discovery of which aspects can be meaningfully 'studied' in isolation for the sake of their own consistency.
Edsger Dijkstra
38.
Why has elegance found so little following? That is the reality of it. Elegance has the disadvantage, if that's what it is, that hard work is needed to achieve it and a good education to appreciate it.
Edsger Dijkstra
39.
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
Edsger Dijkstra
40.
I now have had my foggy crystal ball for quite a long time. Its predictions are invariably gloomy and usually correct, but I am quite used to that and they won't keep me from giving you a few suggestions, even if it is merely an exercise in futility whose only effect is to make you feel guilty.
Edsger Dijkstra
41.
Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.
Edsger Dijkstra
42.
Testing shows the presence, not the absence of bugs.
Edsger Dijkstra
43.
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.
Edsger Dijkstra
44.
Please don't fall into the trap of believing that I am terribly dogmatical about the go to statement. I have the uncomfortable feeling that others are making a religion out of it, as if the conceptual problems of programming could be solved by a single trick, by a simple form of coding discipline!
Edsger Dijkstra
45.
John von Neumann draws attention to what seemed to him a contrast. He remarked that for simple mechanisms, it is often easier to describe how they work than what they do, while for more complicated mechanisms, it is usually the other way around.
Edsger Dijkstra
46.
Thanks to the greatly improved possibility of communication, we overrate its importance. Even stronger, we underrate the importance of isolation.
Edsger Dijkstra
47.
Teaching to unsuspecting youngsters the effective use of formal methods is one of the joys of life because it is so extremely rewarding.
Edsger Dijkstra
48.
It used to be the program's purpose to instruct our computers; it became the computer's purpose to execute our programs.
Edsger Dijkstra
49.
… what society overwhelmingly asks for is snake oil. Of course, the snake oil has the most impressive names — otherwise you would be selling nothing — like “Structured Analysis and Design”, “Software Engineering”, “Maturity Models”, “Management Information Systems”, “Integrated Project Support Environments” “Object Orientation” and “Business Process Re-engineering”.
Edsger Dijkstra
50.
So-called "natural language" is wonderful for the purposes it was created for, such as to be rude in, to tell jokes in, to cheat or to make love in (and Theorists of Literary Criticism can even be content-free in it), but it is hopelessly inadequate when we have to deal unambiguously with situations of great intricacy, situations which unavoidably arise in such activities as legislation, arbitration, mathematics or programming.
Edsger Dijkstra