Edsger Dijkstra

I found a great video interview with Edsger Wybe Dijkstra. You have probably heard of Dijkstra's algorithm. He invented it.

In the interview professor Edsger talks about his thoughts on software development. He compares two very different styles of programming - Mozart style of programming vs. Beethoven style of programming. When Mozart started to write, the composition was finished. He wrote manuscript in elegant handwriting in one go. Beethoven was a doubter and a struggler. He started writing before he finished the composition and then glued corrections onto the page. In one place he did it nine times. When they peeled them, the last version proved to be identical to the first one.

From the video one can understand that Edsger preferred Mozart's style of programming. Not just programming, but Mozart style of doing things. He says that the most important thing has been the daily discipline of neatly writing down his thoughts.

His daily discipline lead to hundreds of crystal clear scientific papers, which have now been archived in EWD Archive.

You are welcome to watch interview with Edsger Dijkstra:

At the beginning of video Dijkstra criticizes current software release methodology. He says that version 1.0 of should be the finished product. I don't think he's right. It's like Tannenbaum saying Torvalds that Linux is obsolete. Also see "Release Early, Release Often."

Edsger Dijkstra's quotes from video:

  • Computer science is no more about computers than astronomy is about telescopes.
  • The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task in full humility and avoids clever tricks like the plague.
  • We should not introduce errors through sloppiness but systematically keep them out.
  • Program testing can convincingly show the presence of bugs but it is hopelessly inadequate to show their absence.
  • Elegance is not a dispensable luxury but a factor that decides between success and failure.

I found a funny poster of Dijkstra:

Dijkstra - Quick and Dirty

Comments

JasWoods Permalink
November 05, 2008, 22:32

Wow how does that dude come up with all the cool stuff.

Jiff

fuffz Permalink
November 06, 2008, 00:13

Ah Edsger Dijkstra, I have so many mixed feelings about this guy.

I'm Dutch myself (and a programmer for that matter) and really admire his theories and papers on programming. He left a great body of work and much of his ideas are timeless.

But in this interview he seemed to be a bitter, patronizing and disdainful old fart who can do nothing else than speak of the evils in commercial software development.

And goodness, how sour he looks in this video. I probably couldn't stand a day near him.

Lighten up old man, life's too ffing short to be grumpy. Smoke a joint, empty a bottle of whiskey, get laid and write another amazing algorithm or two.

But please stop whining about how everything used to be better and how you alone know it all.

November 06, 2008, 00:18

FYI:

s/Professor Edsger/Professor Dijkstra/
s/Tannenbaum saying Torvalds/Tannenbaum telling Torvalds/

Your readers may also have heard of Dijkstra's essay "Go-To Statement Considered Harmful".
http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF

Phil Runciman Permalink
July 29, 2012, 21:17

The editor gave it that title and it did not reflect what Dijkstra said.

Koudos Permalink
November 06, 2008, 05:36

I am a programmer myself and I wonder how someone as achieved in academia and intelligent as Edsger Dijkstra would cope in a commercial environment with things like ever changing requirements and time constraints, budget constraints etc. Would the "complete" v1.0 ever get out of the door in time to be competitive or meet the clients' deadlines?

John Bach Permalink
September 13, 2010, 18:51

Needless to say, this vision of what computing science is about is not universally applauded. On the contrary, it has met widespread —and sometimes even violent— opposition from all sorts of directions. I mention as examples

(0) the mathematical guild, which would rather continue to believe that the Dream of Leibniz is an unrealistic illusion

(1) the business community, which, having been sold to the idea that computers would make life easier, is mentally unprepared to accept that they only solve the easier problems at the price of creating much harder ones

(2) the subculture of the compulsive programmer, whose ethics prescribe that one silly idea and a month of frantic coding should suffice to make him a life-long millionaire

(3) computer engineering, which would rather continue to act as if it is all only a matter of higher bit rates and more flops per second

(4) the military, who are now totally absorbed in the business of using computers to mutate billion-dollar budgets into the illusion of automatic safety

(5) all soft sciences for which computing now acts as some sort of interdisciplinary haven

(6) the educational business that feels that, if it has to teach formal mathematics to CS students, it may as well close its schools.

rougy Permalink
November 06, 2008, 06:10

A very interesting video.

I disagree that a program should be born perfect as if it sprang from Zeus's forehead. Maybe it works that way for a genius like him, but the rest of us have to bash away at it for a while.

I mean, certainly we make outlines of what we want and how we expect to achieve those ends, but very often we encounter limitation or unexpected enhancements that we could not have conceived of before we started coding.

Chris Khoo Permalink
November 06, 2008, 08:30

I think people here are taking him out of context. When he says a program should be finished at 1.0, he means that it should be bug free, especially as not so long after, he uses the Mozart / Beethoven comparison.

Altogether a very insightful video, I see value in his interview since today's programmers tend to have more of a 'code first, think later' mindset these days, myself included at times.

I don't like his use of the word "elegance" in programming - elegance is very much dependent upon one's personal view of what elegant code is.

November 06, 2008, 08:59

Wow, excellent post. I'm going to read further about this...thanks!

November 06, 2008, 11:28

First of all: I'm biased, I have such a profound admiration for EWD that my judgments will be clouded, so I'm not going to make any of them. ;-) On the other hand, I'd like to help clarify few things.

@Chris Koo

He had a very clear ideas of what elegance is for him. Not only in programming, but in everything involves thinking; this paper should clarify what he meant with elegance, or better, with mathematical elegance:
http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD896.PDF
or http://tinyurl.com/6dhp5y (HTML version)

This one is a bit longer, but even more explicit, still on the topic of mathematical elegance:
http://www.cs.utexas.edu/users/EWD/ewd06xx/EWD619.PDF
or http://tinyurl.com/6g9v5x (HTML version)

@rougy:

More than "spranging from Zeus' head", a metaphor that would describe the way he wrote programs is that he was building up mathematical proofs; in fact, more than a metaphore, it is truth. His research involved deeply axiomatic formal methods of programming. To get a feel of what it involves you can check out this very long paper:
http://www.cs.utexas.edu/users/EWD/ewd03xx/EWD316.PDF
or http://tinyurl.com/6gj2yn (HTML version)

November 06, 2008, 19:19

Nice video.

I have a unix related question. Could not find a relevant post, so just asking it here. Apologies for that.

How can I pass a variable to a child korn-shell? I often do rsh to different servers using their alias.

ex. rsh box1 (where box1 is the alias for the physical hostname xxyyzz123). Now i want the new shell to remember the alias I used to come here (i.e. box1).

Is there a way I can achieve the above? I tried exporting box1, but obviously it didn't work.

Will appreciate any help.

Evan Permalink
November 08, 2008, 20:53

I think the fundamental issue that Dijkstra is bringing to the table with "it is finished before you start" is that to be finished means you grok the problem fully, have solved it, and your solution is 100% correct. For me the crux of this is that our brains are too small to really grok much of anything so extreme elegance is our only path to success. This is very hard, but if we don't solve it then we are stuck launching people into space "on hope".

Thank you for sharing this video with us!

November 10, 2008, 07:02

Lighten up old man, life’s too ffing short to be grumpy. Smoke a joint, empty a bottle of whiskey, get laid and write another amazing algorithm or two.

~ fuffz
http://www.catonmat.net/blog/edsger-dijkstra-discipline-in-thought/#comment-6175

But the whole point of these essays is that, although elusive and intimate, thinking --like sex!-- is a most natural human activity: we all do it (and, as with sex: we all do it as well as we have learned to do it.)

~ Dijkstra
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD619.html

@fuffz: The doctor wrote essays on 'thinking effectively' and how rarely it can be found in practice. Your comments reek of ineffective thought. What a shame. Silence is a virtue.

November 14, 2008, 10:42

For me the crux of this is that our brains are too small to really grok much of anything so extreme elegance is our only path to success.

@Evan: Good point; Dijkstra was very aware of the "limited size of our skull" too, that's why he proposed mathematical rigour (and elegance!) as the only path to deal effectively with complex software creation. More on this on his Turing Award speech:

http://www.cs.utexas.edu/~EWD/ewd03xx/EWD340.PDF
http://tinyurl.com/yqr64u (HTML version)

November 14, 2008, 15:24

nice, really interesting

Jules Permalink
March 27, 2009, 21:29

The video contains an error: the english translation "these are two very different programming styles" should read "You should not give the world what she asks for, but what she needs".

Jules Permalink
March 27, 2009, 21:40

Another error:

The translation of "We mogen niet uit nonchalance fouten in een programma aanbrengen. Dat moeten we systematisch en met zorg doen." is not "We should not introduce errors through sloppiness, but systematically keep them out", but "We should not introduce errors through sploppiness, but systematically and with care.". So it's nearly the opposite.

Phil Runciman Permalink
July 29, 2012, 21:37

Dijkstra did not introduce errors systematically and with care. He did, by structuring his solutions using appropriate levels of abstraction, keep them out.

Compare the T.H.E. OS with Brooks' et al IBM BOS. Brooks' team created lots of debugging practice. 40,000 bugs and climbing when I read about it... all those years ago.

biobio Permalink
January 02, 2011, 18:28

thanks a lot
i just watch this video in january 2011
it's like "I never listen to someone like him"
the concept is great even if it's difficult to acquire
elegance in programming

thanks Peteris for the video

carl wells Permalink
December 06, 2012, 08:04

I just wanted to write briefly about Dijkstra's musical analogy of Mozart and Beethoven. I'm professional classical musician and know nothing at all about programming. I'd like to point out that it is false that Mozart wrote his music "in one go", and that he heard it all in his head and simple had to do the clerical work of writing it down. This is a myth perpetuated for some time even through forged letters in Mozart's name. I highly recommend reading "Talent is Overrated" by Geoff Colvin. He addresses Mozart (and Tiger Woods) and shows how they both were not demi-gods with innate talent, but rather both were trained by parents from an extreme young age, and worked incredibly hard. Of course this doesn't affect Dijkstra ideas, just that he was wrong about Mozart in particular!

Leave a new comment

(why do I need your e-mail?)

(Your twitter name, if you have one. (I'm @pkrumins, btw.))

Type the word "cdrom_102": (just to make sure you're a human)

Please preview the comment before submitting to make sure it's OK.

Advertisements