Send
Close Add comments:
(status displays here)
Got it! This site "robinsnyder.com" uses cookies. You consent to this by clicking on "Got it!" or by continuing to use this website. Note: This appears on each machine/browser from which this site is accessed.
Edsger Dijkstra
1. Edsger Dijkstra
Edsger Dijkstra (computer scientist) made many contributions to the field of computer science.
2. Programming
Dijkstra provides a pragmatic description of the programming process.
I think that the behavior of the efficient programmer can be described as trying to take the easiest decision first, that is, the decision that requires the minimum amount of investigation (trial and error, iterative mutual adjustment etc.) for the maximum justification of the hope that he will not regret it. Edsger Dijkstra (computer scientist)
Dahl, O., Dijkstra, E., & Hoare, C. (1972).
Structured programming. New York: Academic Press., p. 72.
That is, one may be wrong.
3. Simplicity
Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated. Edsger Dijkstra (computer scientist)
4. Mathematics and programming
Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians. Edsger Dijkstra (computer scientist)
Dijkstra, E. (June 18, 1975). "How do we tell truths that hurt?", EWD 498, 1.
A similar remark could be made about engineers who avoid logic and theory.
5. Computer bugs
As I have now said many times and written in many places: program testing can be quite effective for showing the presence of bugs, but is hopelessly inadequate for showing their absence. Edsger Dijkstra (computer scientist)
Dijkstra, E. (1976).
A discipline of programming. Englewood Cliffs, NJ: Prentice-Hall., 20.
6. Unlearning
Perfecting oneself is as much unlearning as it is learning. Edsger Dijkstra (computer scientist)
A common saying that applies here is the following.
Old habits die hard.
7. Program testing
Program testing can be used to show the presence of bugs, but never to show their absence! Edsger Dijkstra (computer scientist)
Dahl, O., Dijkstra, E., & Hoare, C. (1972).
Structured programming. New York: Academic Press., p. 6.
Dijkstra has said that if debugging is the process of removing bugs from a program, then programming must be the process of putting them in.
8. Complexity
The art of programming is the art of organizing complexity. Edsger Dijkstra (computer scientist)
9. Programming and bugs
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 (computer scientist)
10. Tricks
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. Edsger Dijkstra (computer scientist)
Any tricks used require one to remember that trick in the brain. Each such trick takes more effort to remember.
11. Abstraction
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise. Edsger Dijkstra (computer scientist)
12. Lines of code
If we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent." Edsger Dijkstra (computer scientist)
13. God and nature
If in physics there's something you don't understand, you can always hide behind the uncharted depths of nature. You can always blame God. You didn't make it so complex yourself. But if your program doesn't work, there is no one to hide behind. You cannot hide behind an obstinate nature. If it doesn't work, you've messed up. Edsger Dijkstra (computer scientist)
14. Object-oriented programming
Object-oriented programming is an exceptionally bad idea which could only have originated in California. Edsger Dijkstra (computer scientist)
15. Solutions
Are 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 Dijkstra (computer scientist)
16. Excitement about programming
Much of the excitement we get out of our work is that we don't really know what we are doing. Edsger Dijkstra (computer scientist)
17. Astronomy and telescopes
Computer science is no more about computers than astronomy is about telescopes. Edsger Dijkstra (computer scientist)
A similar comparison could be made about music being about musical instruments.
18. Thinking
The question of whether computers can think is like the question of whether submarines can swim. Edsger Dijkstra (computer scientist)
19. Scalability
We tell ourselves that what we can do once, we can also do twice and by induction we fool ourselves into believing that we can do it as many times as needed, but this is just not true! A factor of a thousand is already far beyond our powers of imagination. Edsger Dijkstra (computer scientist)
Dahl, O., Dijkstra, E., & Hoare, C. (1972).
Structured programming. New York: Academic Press., p. 2.
20. Uncomfortable truths
Sometimes we discover unpleasant truths. Whenever we do so, we are in difficulties: suppressing them is scientifically dishonest, so we must tell them, but telling them, however, will fire back on us. [body of letter omitted] If the conjecture "You would rather that I had not disturbed you by sending you this." is correct, you may add it to the list of uncomfortable truths. Dijkstra, E. (June 18, 1975). "How do we tell truths that hurt?", EWD 498.
21. Nontrivial problems
Dijkstra says that a nontrivial problem is nontrivial and complexity is inherent in solving difficult problems.
The moral of the story can only be that a nontrivial algorithm is just nontrivial, and that its final description in a programming language is highly compact compared to the considerations that justify its design. Dijkstra, E. (1976).
A discipline of programming. Englewood Cliffs, NJ: Prentice-Hall., p. xv.
Anything that can make programs easier to understand (and more
declarative) should be a welcome change.
22. Tools and thinking
The tools we use have a profound (and devious!) influence on our thinking habits, and, therefore, on our thinking abilities. Dijkstra, E. (June 18, 1975). "How do we tell truths that hurt?", EWD 498.
We often see what we want to see and find what it is we have determined we are looking for.
23. Development environments
24. Dutch National Flag problem
The
DNF (Dutch National Flag) problem was named by Edsger Dijkstra, who is Dutch, and is the basis for part of his famous quicksort sorting algorithm that is studied and learned in computer science courses and used in many sorting algorithms.
25. Parallel programming using CSP
26. Engineering efficiency
Although mathematics is very important to the computer scientist, there is much more than mathematics to computer science.
Programming is as much a mathematical discipline as an engineering discipline; correctness is as much our concern as, say, efficiency. Dijkstra, E. (1976).
A discipline of programming. Englewood Cliffs, NJ: Prentice-Hall., p. 54-55.
Edsger Dijkstra (computer scientist)
27. Goto controversy
As part of the "
structured programming" movement in programming, Dijkstra started the controversy/war in 1968 that raged for more than 20 years and has not ended to this day. His letter to the editor was entitled
"
Go to statement considered harmful".
28. Computations
A program is never a goal in itself. The purpose of a program is to evoke computations and the purpose of the computations is to establish a desired effect. Edsger Dijkstra (computer scientist)
29. Experiments
In 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. Dijkstra, E. (June 18, 1975). "How do we tell truths that hurt?", EWD 498.
Edsger Dijkstra (computer scientist)
30. Fortran
Fortran -- "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. Dijkstra, E. (June 18, 1975). "How do we tell truths that hurt?", EWD 498.
Edsger Dijkstra (computer scientist)
Comments such as this were not appreciated by the large number of professional programmers whose jobs involved using Fortran on a daily basis.
31. Natural language
Projects promoting programming in "natural language" are intrinsically doomed to fail. Edsger Dijkstra (computer scientist)
32. End of page