Program testing can be used to show the presence of bugs, but never to show their absence!
Teaching COBOL ought to be regarded as a criminal act.
Computer science is no more about computers than astronomy is about telescopes.
Besides a mathematical inclination, an exceptionally good mastery of one’s native tongue is the most vital asset of a competent programmer.
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
Much of the excitement we get out of our work is that we don’t really know what we are doing.
Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians.
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.
Simplicity is prerequisite for reliability.
Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.
Mathematicians are like managers – they want improvement without change.
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?
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.
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.
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.
It used to be the program’s purpose to instruct our computers; it became the computer’s purpose to execute our programs.
Testing shows the presence, not the absence of bugs.
I don’t need to waste my time with a computer just because I am a computer scientist.
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 problems of the real world are primarily those you are left with when you refuse to apply their effective solutions.