Donald Knuth Quotes

computer scientist and Professor Emeritus at Stanford University.

If you optimize everything, you will always be unhappy. The book Dynamic Programming by Richard Bellman is an important, pioneering work in which a group of problems is collected together at the end of some chapters under the heading 'Exercises and Research Problems,' with extremely trivial questions appearing in the midst of deep, unsolved problems. It is rumored that someone once asked Dr. Bellman how to tell the exercises apart from the research problems, and he replied: 'If you can solve it, it is an exercise; otherwise it's a research problem.' The best theory is inspired by practice. The best practice is inspired by theory. Computers are good at following instructions, but not at reading your mind. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3% We should continually be striving to transform every art into a science: in the process, we advance the art. The sun comes up just about as often as it goes down, in the long run, but this doesn't make its motion random. Random numbers should not be generated with a method chosen at random People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird. How can you own [...] numbers? Numbers belong to the world. Email is a wonderful thing for people whose role in life is to be on top of things. But not for me; my role is to be on the bottom of things. What I do takes long hours of studying and uninterruptible concentration. I can't go to a restaurant and order food because I keep looking at the fonts on the menu. I define UNIX as 30 definitions of regular expressions living under one roof. The whole thing that makes a mathematician's life worthwhile is that he gets the grudging admiration of three or four colleagues. The important thing, once you have enough to eat and a nice house, is what you can do for others, what you can contribute to the enterprise as a whole. The psychological profiling [of a programmer] is mostly the ability to shift levels of abstraction, from low level to high level. To see something in the small and to see something in the large. Science is knowledge which we understand so well that we can teach it to a computer; and if we don't fully understand something, it is an art to deal with it. Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better. Always remember, however, that there's usually a simpler and better way to do something than the first way that pops into your head. By understanding a machine-oriented language, the programmer will tend to use a much more efficient method; it is much closer to reality. Premature optimization is the root of all evil. For his major contributions to the analysis of algorithms and the design of programming languages, and in particular for his contributions to the 'art of computer programming' through his well-known books in a continuous series by this title. Trees sprout up just about everywhere in computer science... If you find that you're spending almost all your time on theory, start turning some attention to practical things; it will improve your theories. If you find that you're spending almost all your time on practice, start turning some attention to theoretical things; it will improve your practice. In fact, my main conclusion after spending ten years of my life working on the T E X project is that software is hard. It's harder than anything else I've ever had to do. I can't be as confident about computer science as I can about biology. Biology easily has 500 years of exciting problems to work on. It's at that level. I have a hunch that the unknown sequences of DNA will decode into copyright notices and patent protections. Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%. The manuals we got from IBM would show examples of programs and I knew I could do a heck of a lot better than that. So I thought I might have some talent.

Page 2 of 3, showing 31 to 60 of 77 results