Edsger Wybe Dijkstra quotes

From Motley Bytes Wiki
Jump to: navigation, search

Edsger Wybe Dijkstra. (1930 - 2002). Dutch systems scientist, programmer, software engineer, science essayist, educator, physicist.

Two Kinds of System Designers

“There are two classes of system designers. The first, if given five problems will solve them one at a time. The second will come back and announce that these aren’t the real problems, and will eventually propose a solution to the single problem which underlies the original five. This is the ‘system type’ who is great during the initial stages of a design project. However, you had better get rid of him after the first six months if you want to get a working system.”

Big Machines Big Problems

“As long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.”
  • Source: Edsger Wybe Dijkstra in an article entitled The Humble Programmer. Written by Edsger W. Dijkstra. Published 1972 in Communications of the ACM, volume 15, number 10. DOI: 10.1145/355604.361591.

Humble Programmers

"We shall do a much better programming job, provided that we approach the task with a full appreciation of its tremendous difficulty, provided that we stick to modest and elegant programming languages, provided that we respect the intrinsic limitations of the human mind and approach the task as Very Humble Programmers."
  • Source: Edsger Wybe Dijkstra in an article entitled The Humble Programmer. Written by Edsger W. Dijkstra. Published 1972 in Communications of the ACM, volume 15, number 10. DOI: 10.1145/355604.361591.

Testing Bug Presence

“Testing shows the presence, not the absence of bugs.“
  • Source: Dijkstra (1969) J.N. Buxton and B. Randell, eds, Software Engineering Techniques, April 1970, p. 16. Report on a conference sponsored by the NATO Science Committee, Rome, Italy, 27–31 October 1969.

Black Box Correctness

“A convincing demonstration of correctness being impossible as long as the mechanism is regarded as a black box, our only hope lies in not regarding the mechanism as a black box.”

Art of Programming

“The art of programming is the art of organizing complexity, of mastering multitude and avoiding its bastard chaos as effectively as possible.”

Competent Programmer

“The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.”

Competent Programming

“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.”

Advice

"One moral of the above story is, of course, that we must be very careful when we give advice to younger people; sometimes they follow it!"

Programming Dogmatism

"Please don't fall into the trap of believing that I am terribly dogmatic 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 simple trick, by a simple form of coding discipline!"
  • Source: Dijkstra (1973) in personal communication to Donald Knuth, quoted in Knuth's “Structured Programming with go to Statements”, online at https://pic.plover.com/knuth-GOTO.pdf retrieved 2022.

Powers of Abstraction

“The effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer.”
  • Source: The Humble Programmer (1972), 1972 Turing Award Lecture[1], Communications of the ACM 15 (10), October 1972: pp. 859–866.

Math and Language

“Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.”

Simplicity and Reliability

“Simplicity is prerequisite for reliability.”

Programming is Difficult

“Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians.”

Machines Can Think

“The question of whether Machines Can Think... is about as relevant as the question of whether Submarines Can Swim.”

Simplicity

“Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.”

Lines of Code

“My point today is that, if we wish to count lines of code, we should not regard them as 'lines produced' but as 'lines spent': the current conventional wisdom is so foolish as to book that count on the wrong side of the ledger.”

Formulas

“A picture may be worth a thousand words, a formula is worth a thousand pictures.”

Information Knowledge Understanding Wisdom

“May, in spite of all distractions generated by technology, all of you succeed in turning information into knowledge, knowledge into understanding, and understanding into wisdom.”

Effective Reasoning

“The required techniques of effective reasoning are pretty formal, but as long as programming is done by people that don't master them, the software crisis will remain with us and will be considered an incurable disease. And you know what incurable diseases do: they invite the quacks and charlatans in, who in this case take the form of Software Engineering gurus.”

Society Wants and Needs

“It is not the task of the University to offer what society asks for, but to give what society needs.”

Programming Styles

“There are very different programming styles. I tend to see them as Mozart versus Beethoven. When Mozart started to write, the composition was finished. He wrote the manuscript and it was 'aus einem Guss' (from one cast). In beautiful handwriting, too. Beethoven was a doubter and a struggler who started writing before he finished the composition and then glued corrections onto the page. In one place he did this nine times. When they peeled them, the last version proved identical to the first one.”
  • Source: Dijkstra (2001) Source: Denken als discipline, a program from Dutch public TV broadcaster VPRO from April 10th, 2001 about Dijkstra.

Dijkstra Algorithm

“What is the shortest way to travel from Rotterdam to Groningen, in general: from given city to given city. It is the algorithm for the shortest path, which I designed in about twenty minutes. One morning I was shopping in Amsterdam with my young fiancée, and tired, we sat down on the café terrace to drink a cup of coffee and I was just thinking about whether I could do this, and I then designed the algorithm for the shortest path. As I said, it was a twenty-minute invention. In fact, it was published in ’59, three years late. The publication is still readable, it is, in fact, quite nice. One of the reasons that it is so nice was that I designed it without pencil and paper. I learned later that one of the advantages of designing without pencil and paper is that you are almost forced to avoid all avoidable complexities. Eventually that algorithm became, to my great amazement, one of the cornerstones of my fame.”
  • Source: Dijkstra (2001), in an interview with Philip L. Frana. (OH 330; Communications of the ACM 53(8):41–47)

Software Crisis

“The turning point was the Conference on Software Engineering in Garmisch, October 1968, a conference that created a sensation as there occurred the first open admission of the software crisis.”