An effective way to test code is to exercise it at its natural boundaries.
Controlling complexity is the essence of computer programming.
Each new user of a new system uncovers a new class of bugs.
Believe the terrain, not the map.
90% of the functionality delivered now is better than 100% delivered never.
The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.
Mechanical rules are never a substitute for clarity of thought.
As we said in the preface to the first edition, C “wears well as one’s experience with it grows.” With a decade more experience, we still feel that way.
If you had done something twice, you are likely to do it again.
Trying to outsmart a compiler defeats much of the purpose of using one.
C is a razor-sharp tool, with which one can create an elegant and efficient program or a bloody mess.
Get the weirdnesses into the data where you can manipulate them easily, and the regularity into the code because regular code is a lot easier to work with.
If you’re as clever as you can be when you write it, how will you ever debug it?
Don’t document bad code – rewrite it.
Trivia rarely affect efficiency. Are all the machinations worth it, when their primary effect is to make the code less readable?
C is not a big language, and it is not well served by a big book.
Nevertheless, C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
The word bit is a contraction of binary digit that was coined by the statistician John Tukey in the mid 1940s.
First is the sheer joy of making things. Second is the pleasure of making things that are useful to other people. Deep within, we want others to use our work and to find it helpful.
Programming is learned by writing programs.