💻 techConcept0 views3 min read

What Happened to Dijkstra's Crisis: The End of Algol and Beginning of Software Engineering?

Dijkstra's Crisis refers to a pivotal period in the late 1960s and early 1970s, marked by Edsger W. Dijkstra's critiques of the prevalent 'software crisis' and his advocacy for structured programming. This era saw the decline of complex languages like Algol 68 and laid the foundational principles for modern software engineering, emphasizing clarity, maintainability, and logical control flow.

Share:

Quick Answer

Dijkstra's Crisis was a critical turning point in computing history, driven by the 'software crisis' of the 1960s where software projects frequently failed due to complexity and lack of discipline. Edsger W. Dijkstra's influential 'Go To Statement Considered Harmful' (1968) and his promotion of structured programming provided a systematic approach to software development, moving away from unstructured 'spaghetti code' prevalent in languages like early Algol. Today, these foundational principles continue to underpin modern software engineering, with structured constructs being the default in almost all programming languages, even as debates about their absolute application (e.g., `goto` in Go) persist into 2026.

📊Key Facts

Year 'Software Crisis' Coined
1968
NATO Software Engineering Conference
Year 'Go To Statement Considered Harmful' Published
1968
Communications of the ACM
Dijkstra's Turing Award Year
1972
ACM
Algol 60 First Appeared
1960
Wikipedia

📅Complete Timeline13 events

1
1958Major

Algol 58 Developed

The first version of Algorithmic Language (ALGOL) was created by European and American computer scientists, introducing concepts like code blocks and nested functions.

2
January 11, 1960Major

Algol 60 Defined

The ACM/GAMM Committee defined Algol 60, a significant advance in programming languages, introducing block structures and recursive function definitions.

3
1965Major

The 'Software Crisis' Begins

The 'Software Crisis' emerged as software development struggled to keep pace with hardware advancements, leading to project delays, cost overruns, and unreliable systems.

4
March 1968Critical

'Go To Statement Considered Harmful' Published

Edsger W. Dijkstra's influential letter, originally titled 'A Case Against the Goto Statement,' was published in Communications of the ACM, criticizing the `goto` statement and advocating for structured programming.

5
October 1968Critical

First NATO Software Engineering Conference

Held in Garmisch, Germany, this conference formally recognized the 'software crisis' and proposed 'software engineering' as a new discipline to address the challenges of software development.

6
1968Notable

Algol 68 Published

A new version of Algol was published, but its significant complexity and difficult documentation led to criticism and limited adoption compared to Algol 60.

7
1972Critical

Dijkstra Receives ACM Turing Award

Edsger W. Dijkstra was awarded the ACM Turing Award for his fundamental contributions to developing structured programming languages, solidifying his impact on computer science.

8
1972Major

'Notes on Structured Programming' Published

Dijkstra's expanded work, 'Notes on Structured Programming,' further detailed his ideas, triggering the structured programming movement and influencing many programming practices.

9
August 6, 2002Major

Edsger W. Dijkstra Dies

Edsger W. Dijkstra passed away, leaving behind a monumental legacy in computer science, including his work on structured programming, algorithms, and operating systems.

10
November 30, 2024Notable

Modern Software Crisis Debates Continue

Discussions persist about whether a 'modern software crisis' exists, driven by new complexities and expectations, indicating that the foundational challenges identified by Dijkstra remain relevant.

11
February 9, 2025Major

Dijkstra's Legacy in Modern Languages like Go

The debate over the `goto` statement and structured programming continues, with modern languages like Go still including `goto` but strongly discouraging its use, reflecting Dijkstra's enduring influence.

12
April 15, 2025Major

Dijkstra's Ideas Shape Developer Thinking

Dijkstra's letter on `goto` is still recognized for changing how generations of developers think about writing code, emphasizing organized, readable, and logical programming.

13
March 13, 2026Major

Historical Reinterpretation of Dijkstra's Crisis

Academic historians continue to analyze and reinterpret the origins of software engineering, with recent discussions challenging conventional narratives and exploring Dijkstra's specific motivations.

🔍Deep Dive Analysis

The mid-to-late 1960s witnessed a growing 'software crisis,' characterized by software projects that routinely ran over budget, missed deadlines, and delivered unreliable or incomplete systems. This crisis stemmed from the inability of existing ad-hoc programming methods to cope with the increasing complexity and scale of software required for new, powerful hardware. The term 'software engineering' itself was coined at the 1968 NATO Software Engineering Conference in Garmisch, Germany, convened to address these mounting challenges and propose a more disciplined, engineering-like approach to software development.

Edsger W. Dijkstra, a prominent Dutch computer scientist, became a leading voice in this movement. His seminal 1968 letter, 'Go To Statement Considered Harmful,' published in the Communications of the ACM, was a powerful critique of the unrestricted use of the `goto` statement, arguing that it led to 'spaghetti code' that was difficult to read, debug, and maintain. Dijkstra advocated for 'structured programming,' a paradigm that emphasized clear, modular code structures using constructs like sequences, selections (if-then-else), and iterations (loops) to control program flow logically. This approach aimed to make code more provable, understandable, and maintainable.

Algol, particularly Algol 60, played a complex role in this crisis and its resolution. Algol 60 was a pioneering language, introducing block structures, nested functions, and lexical scope, which were key advances towards structured programming. It became a standard for publishing algorithms in scientific articles. However, its successor, Algol 68, was criticized for its extreme complexity and an 'inappropriate documentation' that made it difficult to implement and understand, contributing to its eventual decline in widespread use. Dijkstra himself was critical of Algol 68, seeing it as a move away from the clarity he championed.

The consequences of Dijkstra's crisis were profound. Structured programming became the dominant paradigm, influencing the design of subsequent languages like Pascal, C, and Ada. The focus shifted from merely writing code to designing and managing software projects with engineering discipline. While the 'software crisis' itself is a historical term, its underlying challenges of complexity, budget overruns, and quality issues persist in modern contexts, leading some to argue that aspects of the crisis remain a 'software normality' in 2025. However, the principles championed by Dijkstra—readability, maintainability, and logical structure—remain fundamental to contemporary software development, even in languages like Go that retain a `goto` statement for specific, discouraged uses. Historians like Thomas Haigh have also offered nuanced perspectives, suggesting that the narrative of the 'software crisis' and the birth of software engineering was partly constructed by academics to promote a more mathematical vision of programming.

What If...?

Explore alternate histories. What if Dijkstra's Crisis: The End of Algol and Beginning of Software Engineering made different choices?

Explore Scenarios
Building relationship map...

People Also Ask

What was the 'software crisis'?
The 'software crisis' was a term coined in the late 1960s to describe the widespread difficulties in software development, including projects running over budget and time, delivering unreliable software, and failing to meet user requirements.
What was Dijkstra's main contribution to resolving the software crisis?
Edsger W. Dijkstra's main contribution was his advocacy for structured programming, notably through his 1968 letter 'Go To Statement Considered Harmful.' He promoted writing clear, modular code using logical control flow constructs instead of unrestricted `goto` statements.
How did Algol relate to Dijkstra's Crisis?
Algol 60 was a foundational language that introduced block structures, contributing to structured programming. However, its successor, Algol 68, was overly complex and difficult to implement, leading to its decline and highlighting the need for more disciplined language design.
Is structured programming still relevant today?
Yes, structured programming remains a fundamental paradigm in modern software engineering. Its principles of sequence, selection, and iteration are embedded in virtually all contemporary programming languages and are essential for writing readable, maintainable, and scalable code.
What was the significance of the NATO Software Engineering Conferences?
The NATO Software Engineering Conferences in 1968 and 1969 were crucial in formally recognizing the 'software crisis' and establishing 'software engineering' as a distinct discipline, advocating for systematic and disciplined approaches to software development.