Send Close Add comments: (status displays here)
Got it!  This site "creationpie.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
by RS  admin@creationpie.com : 1024 x 640


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

21. Nontrivial problems
Dijkstra says that a nontrivial problem is nontrivial and complexity is inherent in solving difficult problems. 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. One name for this is "confirmation bias".

Information sign More: Confirmation bias

23. Development environments
How might or does your favorite IDE (Integrated Development Environment) effect the way you think and your thinking abilities?

24. Dutch National Flag problem
Dutch flagThe 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.

Information sign More: Dutch National Flag problem

25. Parallel programming using CSP
CSP (Communicating Sequential Processes) is a notation for describing parallel programming.

Information sign More: 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.
Math and engineering
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.

27. Goto controversy
Book: Structured programming 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.

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. 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. Formal Development of Programs and Proofs
Book: Formal Development of Programs and Proofs

33. A Discipline of Programming
Book: A Discipline of Programming

34. End of page

by RS  admin@creationpie.com : 1024 x 640