Edsger Dijkstra
A brief tribute to the logician who revolutionized programming
by Joe Celko
"In their capacity as a tool, computers will be but a ripple on the surface of our culture. In
their capacity as an intellectual challenge, they are without precedent in the cultural history of
mankind." E. W. Dijkstra, Turing Award acceptance speech
Edsger Wybe Dijkstra died on Aug. 6, 2002 at his home in Nuenen, the Netherlands, after a battle
with cancer. You can read his academic obituary at the ACM Web site
(www.acm.org/announcements/dijkstraACMobit.html).
Dijkstra held the Schlumberger Centennial Chair in Computing Sciences at the University of Texas
from 1984 until he retired as Professor Emeritus in 1999.
When I first moved to Austin, I considered driving over to the university to meet him, but I
never did. Now the best I can do is send a sympathy card to his family. Damn.
Planet GO TO
Younger programmers won't remember how Dijkstra's letter "Go To Statement Considered Harmful"
(reprinted in Ed Yourdon's Classics in Software Engineering) affected our community when it first
appeared as a letter in the 1968 March issue of The Communications of the ACM.
Today's 20-something IT workforce lives, works, and functions in a world defined by that letter
which pretty much abolished GO TO statements from source code but can't possibly conceive of what
things were like before its publication any more than they could imagine a flat earth.
Before Dijkstra, we wrote programs that depended on a particular machine's hardware and made
hit-and-miss attempts at finding the right algorithms for the bad specs we were given. It was
handicraft with, at best, bad tools.
Dijkstra introduced the idea that programming could be built in an orderly fashion using
mathematical logic. Programming thereafter evolved from handicraft, to technique, to engineering,
and finally, to a science.
This idea of formal correctness led to the Structured Programming revolution of the 1970s, which
moved from the academic into the operational world when Datamation magazine devoted an entire issue
to the topic.
Oh yeah, along the way, he added a few basic concepts to computing such as synchronization,
deadly embrace, guarded command, and structured programming and invented an algorithm for the
shortest path in a graph.
I used his guarded command language as a Masters degree project for one of my students when I
taught college in Los Angeles. The basic idea is that each command in a program has a guard set by a
simple predicate: If the guard is open, then the command can be executed; if it's closed, the
command can't be executed. If more than one command is open at the same time, then any of them can
be executed. This concept throws out the idea of deterministic programming, which looks so
fundamental in retrospect.
Perfect Penmanship
Dijkstra wrote more than 1,300 scholarly papers and essays, most of which are short and neatly
handwritten. The University of Texas Computer Science Department has scanned and posted PDFs of many
of his original writings.
You can also find links to the technical reports from the Mathematical Centre (now CWI: Centrum
voor Wiskunde en Informatica), but these appear in their original Dutch. And, in spite of writing
for a Dutch database magazine and speaking at conferences in the Netherlands, I personally don't
speak the language ... well, maybe the names of a few beers.
On May 13, 2000, Dijkstra gave his farewell lecture during the symposium "In Pursuit of
Simplicity" held in honor of his retirement. The title alone gives a quick taste of Dijkstra. What's
so great about these archives is the way they read. They're so simple, clear, and eloquent that you
can sit down and read one as if it were a short story.
I pulled a few short Dijkstra papers from the University of Texas Web site to read for pleasure
over the weekend that I wrote this. I'd recommend you do the same.
Joe Celko [71062.1056@compuserve.com]
is an independent consultant and the author of Joe Celko's SQL Programming
(Morgan Kaufmann Publishers, 1999).