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.
Edsger DijkstraIf there is one 'scientific' discovery I am proud of, it is the discovery of the habit of writing without publication in mind.
Edsger DijkstraElegance is not a dispensable luxury but a factor that decides between success and failure.
Edsger DijkstraWrite a paper promising salvation, make it a "structured" something or a "virtual" something, or "abstract," "distributed" or "higher-order" or "applicative" and you can almost be certain of having started a new cult.
Edsger Dijkstra... as a slow-witted human being I have a very small head and I had better learn to live with it and to respect my limitations and give them full credit, rather than to try to ignore them, for the latter vain effort will be punished by failure.
Edsger DijkstraAbout 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 DijkstraThe computing scientist's main challenge is not to get confused by the complexities of his own making.
Edsger DijkstraProduction 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 DijkstraAre you quite sure that all those bells and whistles, all those wonderful facilities of your so called powerful programming languages, belong to the solution set rather than the problem set?
Edsger DijkstraProgress is possible only if we train ourselves to think about programs without thinking of them as pieces of executable code.
Edsger DijkstraComputer science has as much to do with computers as astronomy has to do with telescopes.
Edsger DijkstraIn the software business there are many enterprises for which it is not clear that science can help them; that science should try is not clear either.
Edsger DijkstraIf debugging is the process of removing software bugs, then programming must be the process of putting them in.
Edsger DijkstraOur intellectual powers are rather geared to master static relations and that our powers to visualize processes evolving in time are relatively poorly developed. For that reason we should do (as wise programmers aware of our limitations) our utmost to shorten the conceptual gap between the static program and the dynamic process, to make the correspondence between the program (spread out in text space) and the process (spread out in time) as trivial as possible.
Edsger Dijkstra...Simplifications have had a much greater long-range scientific impact than individual feats of ingenuity. The opportunity for simplification is very encouraging, because in all examples that come to mind the simple and elegant systems tend to be easier and faster to design and get right, more efficient in execution, and much more reliable than the more contrived contraptions that have to be debugged into some degree of acceptability....Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.
Edsger DijkstraI 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 DijkstraLISP 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 DijkstraI mean, if 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say to yourself "Dijkstra would not have liked this," well, that would be enough immortality for me.
Edsger DijkstraWe are all shaped by the tools we use, in particular: the formalisms we use shape our thinking habits, for better or for worse, and that means that we have to be very careful in the choice of what we learn and teach, for unlearning is not really possible.
Edsger Dijkstra… what society overwhelmingly asks for is snake oil. Of course, the snake oil has the most impressive names — otherwise you would be selling nothing — like “Structured Analysis and Design”, “Software Engineering”, “Maturity Models”, “Management Information Systems”, “Integrated Project Support Environments” “Object Orientation” and “Business Process Re-engineering”.
Edsger DijkstraPlease 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 DijkstraThe use of anthropomorphic terminology forces you linguistically to adopt an operational view. And it makes it practically impossible to argue about programs independently of their being executed.
Edsger DijkstraIn the good old days physicists repeated each other's experiments, just to be sure. Today they stick to FORTRAN, so that they can share each other's programs, bugs included.
Edsger DijkstraFORTRAN, the infantile disorder, by now nearly 20 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use.
Edsger DijkstraDon't compete with me: firstly, I have more experience, and secondly, I have chosen the weapons.
Edsger DijkstraSome consider the puzzles that are created by their omissions as spicy challenges, without which their texts would be boring; others shun clarity lest their work is considered trivial.
Edsger DijkstraBeware of "the real world". A speaker's apeal to it is always an invitation not to challenge his tacit assumptions.
Edsger DijkstraIn their capacity as a tool, computers will be but a ripple on the surface of our culture. In their capacity as intellectual challenge, they are without precedent in the cultural history of mankind.
Edsger DijkstraIt used to be the program's purpose to instruct our computers; it became the computer's purpose to execute our programs.
Edsger DijkstraThe use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
Edsger DijkstraI don't need to waste my time with a computer just because I am a computer scientist.
Edsger DijkstraMuch of the excitement we get out of our work is that we don't really know what we are doing.
Edsger DijkstraIn this respect a program is like a poem: you cannot write a poem without writing it. Yet people talk about programming as if it were a production process and measure "programmer productivity" in terms of "number of lines of code produced". In so doing they book that number on the wrong side of the ledger: we should always refer to "the number of lines of code spent".
Edsger DijkstraThe purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
Edsger DijkstraThe effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer.
Edsger DijkstraIt 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 DijkstraA most important, but also most elusive, aspect of any tool is its influence on the habits of those who train themselves in its use. If the tool is a programming language this influence is, whether we like it or not, an influence on our thinking habits.... A programming language is a tool that has profound influence on our thinking habits.
Edsger DijkstraThe question of whether computers can think is like the question of whether submarines can swim.
Edsger DijkstraI would therefore like to posit that computing's central challenge, how not to make a mess of it, has not yet been met.
Edsger DijkstraThere is very little point in trying to urge the world to mend its ways as long as that world is still convinced that its ways are perfectly adequate.
Edsger Dijkstra