Edsger Dijkstra
Dutch computer scientist, mathematician, and Turing Award laureate (1972) who founded structured programming, coined Separation of Concerns, created semaphores, and shaped the intellectual foundations of modern software engineering.
Background
Edsger Wybe Dijkstra (11 May 1930 – 6 August 2002) studied mathematics, physics, and theoretical physics at the University of Leiden before becoming the Netherlands’ first officially recognised “programmer” at the Mathematical Centre in Amsterdam in March 1952. He earned his PhD from the University of Amsterdam in 1959. He was Professor of Mathematics at Eindhoven University of Technology (1962–1984), a Research Fellow at Burroughs Corporation (1973–1984), and held the Schlumberger Centennial Chair in Computer Science at the University of Texas at Austin (1984–1999). He was known for avoiding computers late in his career, preferring to write his famous EWD technical reports by hand with a Montblanc fountain pen. He produced nearly 500 such reports between 1962 and 2002.
Key Contributions
- Separation of Concerns — coined the phrase in his 1974 essay “On the role of scientific thought,” articulating the principle that a program should be decomposable into pieces each addressing a distinct concern; this became a foundational principle of software architecture, modular design, and layered systems
- Structured Programming — co-authored the seminal 1972 book Structured Programming with Dahl and Hoare; advocated replacing goto statements with structured control flow (if/then/else, while loops, subroutines), directly influencing the design of C, Pascal, Ada, and all subsequent structured languages
- “Go To Statement Considered Harmful” (1968) — the famous letter to Communications of the ACM that sparked the structured programming movement; one of the most influential short papers in computer science
- Dijkstra’s Algorithm (1956) — the shortest-path algorithm for weighted graphs, ubiquitous in network routing (OSPF), GPS navigation, and logistics optimisation
- Semaphores — invented the semaphore as a synchronisation primitive for concurrent processes in the THE multiprogramming system; the conceptual ancestor of mutexes, monitors, and most concurrency primitives
- THE Multiprogramming System — a pioneering layered operating system design (1968) demonstrating that complex systems can be built from verifiable, hierarchical layers — a direct precursor to layered architecture
- Self-Stabilisation — foundational work on distributed systems that can recover to a correct state after faults, influencing fault-tolerant distributed systems design
- Formal Correctness — advocated for mathematical proofs of program correctness as a discipline, influencing formal methods, pre/post-condition reasoning, and later design-by-contract
Key Works
- A Primer of ALGOL 60 Programming (1962)
- Structured Programming (1972) — with Ole-Johan Dahl and C. A. R. Hoare
- A Discipline of Programming (1976)
- “Go To Statement Considered Harmful” (letter to CACM, 1968)
- “The Humble Programmer” (1972 Turing Award lecture)
- “On the role of scientific thought” (1974) — where Separation of Concerns was named
- EWD reports (1962–2002) — ~500 handwritten technical notes, available online
Influence
Dijkstra’s work defined the intellectual vocabulary of software engineering. Separation of Concerns is implicit in every layered architecture, every module boundary, and every interface abstraction. Structured programming ended the goto era and is the foundation of every modern language’s control flow. His THE system’s layered structure is the direct conceptual ancestor of OSI network layers, MVC, and any architecture that achieves complexity by stacking verified abstractions. His algorithm is one of the most-implemented in computing history. The Dijkstra Prize (PODC Influential Paper Award) was renamed in his honour.
Quotes
“The question of whether Machines Can Think is about as relevant as the question of whether Submarines Can Swim.”
“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 art of programming is the art of organising complexity.”
Related
- Separation of Concerns — coined by Dijkstra in 1974; foundational to modular and layered architecture