If debugging is the process of removing software bugs, then programming must be the process of putting them in.
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.
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. The first method is far more difficult.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Beware of bugs in the above code; I have only proved it correct, not tried it.
Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.
There are two ways to write error-free programs; only the third one works.
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.
Premature optimization is the root of all evil in programming.
Controlling complexity is the essence of computer programming.
The trouble with programmers is that you can never tell what a programmer is doing until it's too late.
Most of the good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.
As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
A programming language is low level when its programs require attention to the irrelevant.
If Java had true garbage collection, most programs would delete themselves upon execution.
Good code is its own best documentation.
Programs must be written for people to read, and only incidentally for machines to execute.
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
On two occasions I have been asked, 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
or simply: