Edsger Wybe Dijkstra
He used to begin lectures by writing on the board, in capitals, EDSGER WYBE DIJKSTRA, and then erasing it. The signature was the joke and the introduction.
Born 11 May 1930 in Rotterdam, died 6 August 2002 in Nuenen. Trained as a theoretical physicist, switched to computing in 1955 because, as he wrote in his application for a post at the Mathematical Centre in Amsterdam, "I noticed I was already a programmer." His wife Ria reportedly threatened to leave if he listed "programmer" as his profession on their marriage licence; the Dutch civil registry of 1957 did not yet recognise it as a profession. He won that argument.
At a glance
The shortest-path algorithm, sketched at a café in 1956 in twenty minutes without paper. Still the dominant algorithm in every GPS, every internet router (OSPF, IS-IS), every game pathfinder sixty-five years later.
The 20-minute algorithm
In 1956, at a café in Amsterdam with his fiancée, Dijkstra designed what is now universally called Dijkstra's algorithm: the shortest path from one node to all others in a weighted graph. He worked it out in his head in roughly twenty minutes, looking for a way to demonstrate the new ARMAC computer at a public event. He published it in 1959 in Numerische Mathematik, three pages long.
The algorithm runs every time a GPS computes a route, every time a router chooses an internet path (OSPF, IS-IS), every time a video game's AI navigates a map. Sixty-five years later, it remains the canonical answer to the canonical problem. Most computer scientists publish nothing this durable in a career.
Dijkstra liked to point out he had designed it without paper because pencils were not available, "and as such, I was almost forced to avoid all avoidable complexities."
"Go To Statement Considered Harmful"
In March 1968, Dijkstra published a one-page letter in Communications of the ACM titled "Go To Statement Considered Harmful." The argument: the GOTO jump in then-popular languages (FORTRAN, COBOL, early BASIC) made it impossible to reason locally about program behaviour. Programs littered with GOTOs could only be understood by following execution traces.
The piece was not academically deep; it was a polemic. But it was timed exactly to the rise of structured programming, and it became the single most influential short piece of writing in the history of software engineering. Almost every modern language (with the partial exception of C and a handful of low-level descendants) ships without an unrestricted GOTO. The constructs that replaced it — while, for, recursion, exceptions — owe their universality partly to Dijkstra's letter.
The title was not his. Niklaus Wirth, the CACM editor, changed Dijkstra's original "A Case Against the Go To Statement" to "Considered Harmful," accidentally creating a meme template that has produced thousands of imitators (X Considered Harmful).
The EWDs
From 1959 until shortly before his death in 2002, Dijkstra wrote essays which he numbered and circulated by photocopy: the EWD series. They run from EWD-1 to EWD-1318. Some are short notes on specific algorithms. Some are letters of recommendation. Some are book reviews. Many are essays on the discipline of programming, on language, on academic politics, on Europe.
The EWDs were not published. They were hand-written or typed (in his later years, on a Mont Blanc fountain pen) and mailed to a circle of correspondents who were expected to make copies and circulate them onward. The system worked. By the 1980s the EWDs were one of the most influential informal publication networks in computer science.
The collected EWDs are now archived at the University of Texas at Austin, his last home, and searchable online. They are worth dipping into; the prose is sharp and the typography elegant.
A small selection of famous lines:
- "Computer science is no more about computers than astronomy is about telescopes." (EWD-1036, attributed)
- "Program testing can be used to show the presence of bugs, but never to show their absence."
- "Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better."
- "The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense."
- "BASIC: it is practically impossible to teach good programming to students that have had a prior exposure to BASIC."
He believed what he wrote. He was correct on the underlying point (early exposure to certain languages does shape habits) and overstated for rhetorical effect, which the dead Dijkstra would probably defend in person.
Other contributions
The shortest-path algorithm and the GOTO letter are what he is remembered for. The technical contributions go deeper:
- Semaphores (1965). The synchronisation primitive he invented for the THE multiprogramming system at Eindhoven. Every modern operating system kernel still uses some variant.
- Dining philosophers problem (1965, in EWD-310). A pedagogical formulation of deadlock and resource contention that is taught in every operating-systems course on Earth.
- THE multiprogramming system (1968). Among the first operating systems designed top-down with explicit layering. The discipline of layered design that became the dominant architecture in the 1970s owes much to THE.
- Guarded commands (1975). A non-deterministic programming language designed for program derivation rather than execution. Used as a vehicle for formal program development by concept first principles-style reasoning.
- A Discipline of Programming (1976). The book. Argues that programs should be derived from their specifications by formal manipulation, in the way mathematical proofs are derived. The book lost the war against testing-driven and prototype-driven development, but it influenced everyone who fought on the losing side.
What he got wrong
A fair page names the misses:
- He underestimated the practical value of unit testing, integration testing, and incremental development as alternatives to formal derivation. The empirical track record favours testing over proof for most real systems, contrary to his 1976 argument.
- He was openly contemptuous of certain languages and communities (BASIC, COBOL, much of American academic computer science) in ways that, in retrospect, came across as European-aristocratic and made his ideas harder to receive in the broader programming community than they needed to be.
- He treated software engineering as a branch of applied mathematics. The discipline turned out to have more in common with civil engineering, with its empirical traditions and tolerance of imperfect specifications. The mathematical wing he championed remains a minority position.
None of these damage the durability of his core technical contributions.
Why this has to do with other realms
Dijkstra is a clean test case for the concept bus factor problem in academic fields. He concentrated influence in himself by writing the EWDs as a single channel rather than dispersing his ideas through students and journals. The result is a field which now lacks anyone with comparable rhetorical authority and which, in the absence of his polemic, has drifted in the directions he warned against (complexity for its own sake, language proliferation without semantic deepening).
He overlaps with person feynman in instinct: both were physicists by training who insisted on construction-from-first-principles as the only acceptable form of understanding. Both produced work that taught one to see a domain rather than to memorise it. The styles differ; the underlying epistemics are close.
Dijkstra's insistence on local reasoning anticipates the modern functional-programming community (Haskell, Standard ML, modern Scala) much more than the dominant object-oriented tradition. The half-life of his ideas is still increasing in some corners.
An open question
Was the EWD format a deliberate refusal to scale (control over readership, no academic gatekeeping, no incentive to dilute), or a self-limiting choice that prevented his ideas from reaching the practitioners who most needed them? The answer is probably both, and the lesson for modern essayists circulating writing through Substack, Twitter, and small mailing lists is unresolved.
Key sources
- Dijkstra, E. W. (1959), "A note on two problems in connexion with graphs," Numerische Mathematik 1.
- Dijkstra, E. W. (1968), "Go To Statement Considered Harmful," CACM 11.
- Dijkstra, E. W. (1976), A Discipline of Programming, Prentice Hall.
- The EWD archive at the University of Texas at Austin, fully scanned and searchable online.
Further reading
- Selected Writings on Computing: A Personal Perspective (Dijkstra, 1982) — a curated subset of the EWDs.
- David Gries, The Science of Programming — extends Dijkstra's discipline to a teachable form.
Abhishek's take
I meet Dijkstra when a buyer asks why a recommendation changed after a size-curve file lands. If the tools I wrote cannot trace the path from intake to option count to purchase order, they are not helping the floor; they are only moving confusion faster.
See Also
- concept first principles (the epistemic posture he insisted on)
- concept bus factor (he embodied a high one and a low one simultaneously)
- person feynman (a parallel sensibility in a different field)
- person karpathy (a contemporary heir to "build the smallest end-to-end thing")
- concept information theory (Shannon's framework Dijkstra used to think about programs as constraints)