26 comments

[ 4.4 ms ] story [ 69.2 ms ] thread
Lovely. My favorite is by Klaus Wirth. One passage:

> Occasionally he used a long “reading pipe”, until once, deep in thought, he bumped it into a door and hurt himself in the throat. Then he switched to cigarettes.

Wirth also did not shrink back from laying out some of his philosophical differences with Dijkstra:

"One of Edsger’s most peculiar idiosyncrasies (after 1970) was his vow never to use a computer."

"Edsger had contributed significantly to a well-founded, rigorous approach to programming, in establishing it as an engineering science. I therefore awaited eagerly the appearance of a textbook, a fundamental guide to programming from his pen. But he had lost his interest in this endeavor, and instead concentrated exclusively on mathematical treatments and theories."

>I therefore awaited eagerly the appearance of a textbook, a fundamental guide to programming from his pen. But he had lost his interest in this endeavor, and instead concentrated exclusively on mathematical treatments and theories.

So Wirth himself decided to write it viz. Systematic Programming: An Introduction.

Very interesting document, and many new photos! Love how Knuth explains how he had to be cautious around Dijkstra. He was truly the Chuck Norris of computing (badass, beard, and from Texas).
From Texas?

He's from Rotterdam, The Netherlands. He worked and lived most of his life in The Netherlands and lived and worked about 15 years in Texas, according to Wikipedia.

Sure! but if you read the texts you'll see that he sort of "adopted" a Texan persona when living there.
Haha, maybe a bit. But he was also very conscious of the different mindsets between Europe and America (and he firmly stood in the European mindset). Read "on the fact that the atlantic has two sides"
Not every Texan has the luxury of being born there.
Who computer scientists of today could, in your opinion, be considered Dijkstra's spiritual successors?
There is mathmeth.com, also Ralph-Johan Back, also to some extent me (search for "foundations for mathematical methodology").
The key insight of Dijkstra is that we should use a kind of substitution calculus to derive programs from invariants.

From Dijkstra's time we've seen partial adoptions and spinoffs from these insights. Using lambda calculus and static types gets you program behavior that looks a lot like refinement calculus and invariants (since types label domains that are equivalent to predicate sets, and lambda calculus computation is the substitution model).

For that reason I would say that the spiritual successor's to Dijsktra are in the functional programming community, particularly Haskell and Scala: Erik Meijer, Richard Bird, Martin Sapolsky, etc.

Carnegie Mellon's Computer Science curriculum is also fairly integrated across the board to use this style of programming and mathematics.

> The key insight of Dijkstra is that we should use a kind of substitution calculus to derive programs from invariants.

It baffles me that the "formal methods" (it really should be called automated methods) crowd not only ignores this lesson, but is completely blind to it. In my direct experience, the ones I've spoken to are so obsessed with verification that the idea of constructing a program that has specified properties apparently isn't even thinkable for them. Perhaps it's a defect in my ability to explain things, but I've never once managed to explain to one of them that construction is a significantly easier task than verification. It's a real shame because they're very intelligent people that I'm certain could contribute greatly to formal program derivation. I suppose it's one of those "professional deformations" Dijkstra occasionally mentions. One of the things I'd like to do when I have copious free time is build an Emacs mode that only allows edits that preserve the given invariants, perhaps using TLA+ or something similar.

Anyone that wants to learn more on the subject of deriving programs should read one or both of A Discipline of Programming[1] and Predicate Calculus and Program Semantics[2]. The former is more approachable for the programmer who isn't as inclined toward formal mathematics. The latter basically takes the same concepts and treats them with much greater mathematical rigor.

[1] https://www.goodreads.com/book/show/2276288.A_Discipline_of_...

[2] https://www.goodreads.com/book/show/3144463-predicate-calcul...

>Anyone that wants to learn more on the subject of deriving programs should read

Two more;

* EWD316 - A Short Introduction to the Art of Programming.

* A Method of Programming - Book co-authored with W.H.J.Feijen. For some reason, this is not well known though it was written as a course textbook. Draft version here: https://www.softwareresearch.net/fileadmin/src/docs/teaching...

Great insight! His idea of the "Weakest Precondition Calculus" is Functional in contrast to "Hoare Triples" which are Relational.
Great article! I always have Edsger Dijkstra on a pedestal. The reason is his uncompromising attitude and biting wit in getting his beliefs across. I believe it is the only way to advance "Scientific Temperament".

As Sherlock Holmes observes; Pshaw, my dear fellow, what do the public, the great unobservant public, who could hardly tell a weaver by his tooth or a compositor by his left thumb, care about the finer shades of analysis and deduction!; we the "great unobservant programming public" when it comes to mathematical underpinnings of Computer Programming need to be taught and frequently reminded of the importance of "logical analysis and proof deduction". :-)

I disagree about the reason. Dijkstra is too often remembered as an insult comic, in the same way that it is too easy to remember Schopenhauer as the guy who said snotty things about Hegel, Schelling, etc.
In my observation the people that remember him as an insult comic have only the most superficial acquaintance with the man and his work.

That said, his non-technical EWDs can be pretty cutting. He didn't suffer those whom he saw as fools gladly. At least in his writings his humor is extremely dry.

Dijkstra has been an intellectual hero of mine as well. His book A Discipline of Programming pretty much completely altered my perspective of programming and reading through the majority of the English language EWDs was a very rewarding experience. I love his proof format. He was one of those rare geniuses who bothered to make his process public. His contempt for what he calls "rabbits"[1] is an expression of that devotion to intellectual honesty.

[1] A rabbit in this context is a result that is a surprise, as if it had been pulled out of a hat.

Dijkstra had a unique format for his undergraduate class where the entire grade basically came down to an interview at the end of the semester. During which he asked you to work out a solution to a problem in front of him one on one. A friend had the most memorable interaction with him during the interview/final exam. Dijkstra explained the problem and they began furiously writing out a solution in pencil getting a few lines into the proof before realizing they had made a mistake and began to erase what was written. Dijkstra responded "tsk tsk tsk, you are a rash mathematician" and advised the student to "Use a pen instead of pencil it will encourage you to spend more time with your thoughts before writing."

A couple years later I saw a quote that reminded me of that interaction and it goes “I 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.”

Dijkstra's ghost haunts us all.

The exam in interview form is called an oral examination (vs written examination) and in my university in the Netherlands they were not that rare, especially for exams in the senior years where class sizes are smaller.
I actually prefers pens than pencils but with different reasons. With pencils you are tempted to erase things. However, it is an illusion; Eraser does not really erase things, ending up in a dirty paper. It also takes much more time. With pens, erasing is effortless and does not require additional decision to make: Just strikethrough it. Then throw it away when you feel you want to start over.
"Edsger said that Brouwer was the most argumentative person he had ever known (these may not have been the exact words but that was the sentiment) which coming from Edsger was a strong statement"
Will programming ever be free from the opinions of elitist hacks like Edsger Dijkstra ?

People with obsessive compulsive disorder, asperger and autism are unhirable in every profession on the planet. Every single profession - without exception. They are worthless as friends, worthless as parents, worthless as teachers. Yet in our field we promote these intellectual midgets.

Edsger Dijkstra is an intellectual midget. The summary of 13000 pages of his work ? Mathematicians are above average, programmers are below average. The whole greatness of "mutual exclusion" is something 2 year olds can come up with. His obssessive compulsive disorder meant that he did not even use computers his entire life, but some fountain pen, everyday. How cool and normal! Edsger Dijkstra did not write 1 usable program in his entire life. 0 operating systems. 0 games. 0 apps. 0 batch processing systems worth a damn. Much like the fake and dysfunctional programmers here in this and in every other forum he hated people who did. If chemists, electronic engineers, mechanical engineers, civil engineers, architects don't need permission from mathematicians and Dijkstra, then programmers don't need it either.

Algol, Dijkstra's brainchild was largely a total and complete failure. 0 usable programs written in algol. ABAP / Cobol is a better language than haskell, lisp, smalltalk and java. Bite me. Don't like it ? Compete in the marketplace. Fund 1000 smalltalk, haskell and lisp startups than ruby startups to make your money, hypocrites. Even after receiving education from the most elitist schools and having VCs who share your grand views on programming, if you still can't run a business with haskell (algol++) and lisp stop wasting everyone else's time, alright ? We are happy with matlab and php.

"GOTO Considered Harmful" Considered Harmful - https://web.archive.org/web/20090320002214/http://www.ecn.pu...