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? Edsger Dijkstra More Quotes by Edsger Dijkstra More Quotes From Edsger Dijkstra 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. Edsger Dijkstra debugging waste want If we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent." Edsger Dijkstra lines learning wish Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. Edsger Dijkstra mastery tongue learning Yes, I share your concern: how to program well -though a teachable topic- is hardly taught. The situation is similar to that in mathematics, where the explicit curriculum is confined to mathematical results; how to do mathematics is something the student must absorb by osmosis, so to speak. One reason for preferring symbol-manipulating, calculating arguments is that their design is much better teachable than the design of verbal/pictorial arguments. Large-scale introduction of courses on such calculational methodology, however, would encounter unsurmoutable political problems. Edsger Dijkstra osmosis design learning When building sand castles on the beach, we can ignore the waves but should watch the tide. Edsger Dijkstra castles watches beach 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. Edsger Dijkstra telescopes tools use Beware of "the real world". A speaker's apeal to it is always an invitation not to challenge his tacit assumptions. Edsger Dijkstra real challenges world 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. Edsger Dijkstra intelligent numbers thinking It used to be the program's purpose to instruct our computers; it became the computer's purpose to execute our programs. Edsger Dijkstra program computer purpose 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. Edsger Dijkstra views average fall 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. Edsger Dijkstra half-time four people 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. Edsger Dijkstra axes stupid trying [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. Edsger Dijkstra discipline views discovery 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. Edsger Dijkstra argument mistake thinking 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! Edsger Dijkstra simple believe fall 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. Edsger Dijkstra exercise giving long Mathematicians are like managers - they want improvement without change. Edsger Dijkstra mathematician improvement want Thanks to the greatly improved possibility of communication, we overrate its importance. Even stronger, we underrate the importance of isolation. Edsger Dijkstra thanks stronger communication The effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer. Edsger Dijkstra exploitation activity programmers 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. Edsger Dijkstra ingredients appreciate steps