If debugging is the process of removing software bugs, then programming must be the process of putting them in.— Edsger Dijkstra
The most authentic Edsger Dijkstra quotes to discover and learn by heart
The question of whether computers can think is like the question of whether submarines can swim.
Programming is one of the most difficult branches of applied mathematics;
the poorer mathematicians had better remain pure mathematicians.
Computer science is no more about computers than astronomy is about telescopes.
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.
Program testing can be used to show the presence of bugs, but never to show their absence!
Elegance is not a dispensable luxury but a factor that decides between success and failure.
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.
Simplicity is prerequisite for reliability.
Don't compete with me: firstly, I have more experience, and secondly, I have chosen the weapons.
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.
Too few people recognize that the high technology so celebrated today is essentially a mathematical technology.
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.
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.
Object-oriented programming is an exceptionally bad idea which could only have originated in California.
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.
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.
Beware of "the real world". A speaker's apeal to it is always an invitation not to challenge his tacit assumptions.
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.
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?
When building sand castles on the beach, we can ignore the waves but should watch the tide.
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.
Programming in Basic causes brain damage.
[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.
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.
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.
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.
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!
Teaching to unsuspecting youngsters the effective use of formal methods is one of the joys of life because it is so extremely rewarding.
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.
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.
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
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.
Production speed is severely slowed down if one works with half-time people who have other obligations as well. This is at least a factor of four; probably it is worse.
I don't need to waste my time with a computer just because I am a computer scientist.
Don't blame me for the fact that competent programming, as I view it as an intellectual possibility, will be too difficult for the average programmer, you must not fall into the trap of rejecting a surgical technique because it is beyond the capabilities of the barber in his shop around the corner.
A programming language is a tool that has profound influence on our thinking habits.
I would therefore like to posit that computing's central challenge, how not to make a mess of it, has not yet been met.
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.
The tools we use have a profound and devious influence on our thinking habits, and therefore on our thinking abilities.
Many mathematicians derive part of their self-esteem by feeling themselves the proud heirs of a long tradition of rational thinking; I am afraid they idealize their cultural ancestors.
The effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer.
Aim for brevity while avoiding jargon.
I mentioned the non-competitive spirit explicitly, because these days, excellence is a fashionable concept. But excellence is a competitive notion, and that is not what we are heading for: we are heading for perfection.
We shall do a much better programming job, provided that we approach the task with a full appreciation of its tremendous difficulty, provided that we stick to modest and elegant programming languages, provided that we respect the intrinsic limitations of the human mind and approach the task as Very Humble Programmers.
... as a slow-witted human being I have a very small head and I had better learn to live with it and to respect my limitations and give them full credit, rather than to try to ignore them, for the latter vain effort will be punished by failure.
I think of the company advertising "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.
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.