Zum Inhalt springen

"Considered Harmful": How a Title Change Launched a Meme

Zusammenfassung

Edsger Dijkstra submitted a letter to the Communications of the ACM in 1968 under a different title. Editor Niklaus Wirth changed it to “Go To Statement Considered Harmful” before publication. The letter argued that goto statements made program logic difficult to follow and should be replaced by structured control flow. The title format — “[X] Considered Harmful” — became one of the most widely replicated templates in technical writing, spawning dozens of papers and thousands of blog posts with titles like “Considered Harmful Essays Considered Harmful,” “Null References Considered Harmful,” and “Google Considered Harmful.”

The Argument

In 1968, goto statements were the standard mechanism for control flow in programs. A goto transferred execution to any labeled point in the code. This allowed writing programs where the execution path zigzagged across hundreds of lines in patterns impossible to follow by reading sequentially. Experienced programmers could produce correct goto-heavy code; novice programmers produced spaghetti.

Dijkstra’s argument was precise: the quality of a programmer can be inversely correlated with the density of goto statements in their code. The reason: a program with no gotos has a execution path that corresponds directly to its textual structure — reading top to bottom traces what the computer does. A program with gotos has an execution path that diverges from its textual structure in ways that require mental simulation to follow.

He proposed replacing goto with three structured control flow constructs — sequential execution, conditionals (if/then/else), and iteration (while/for loops) — that had been shown by Böhm and Jacopini in 1966 to be computationally equivalent to arbitrary control flow. Any program with gotos could be rewritten without them. The rewrite would typically be longer but would be easier to reason about.

The Title and Its Author

Dijkstra’s original title is not definitively known; accounts differ. What is clear is that Niklaus Wirth (designer of Pascal, Modula, and Oberon — covered in Niklaus Wirth and Pascal) was then an editor at CACM and made the title change. The new title was more polemical than Dijkstra’s original and more memorable.

Dijkstra was not entirely pleased with the publication. He felt the letter had been treated as a polemic rather than a technical argument and that the title framing encouraged a religious debate rather than an engineering discussion.

The Template It Created

The “[X] Considered Harmful” format proved irresistible. Notable examples:

  • “GOTO Considered Harmful Considered Harmful” (Frank Rubin, 1987) — a direct counter-argument
  • “Considered Harmful Essays Considered Harmful” (multiple authors)
  • “Null References: The Billion Dollar Mistake” — Tony Hoare’s 2009 talk about null pointers
  • “eval() Is Evil” — security advice about JavaScript
  • “Inheritance Considered Harmful” (various authors)

The format migrated to blog posts, conference talks, and Reddit threads. By 2023, “X Considered Harmful” generates millions of search results. The template was effective because it promised a clear verdict — X is harmful — while implying rigorous technical backing, whether or not the backing existed.

Dijkstra himself later wrote that the letter had been somewhat effective but that the goto debate had distracted from more important structural programming questions. The debate about control flow was, to him, a symptom of a deeper problem: that programmers were not treating programming as a mathematical discipline.


📚 Sources