HN
Today

The foolishness of "natural language programming" (1978)

E.W. Dijkstra, in this prescient 1978 essay, passionately argues against the "foolishness" of natural language programming, asserting that the rigor of formal languages is a necessary and privileged aspect of computing. He contends that this precision isn't a limitation to be overcome, but rather a vital tool for preventing ambiguity and nonsense. This timeless philosophical deep dive continues to resonate, illuminating the fundamental complexities of human-computer interaction.

9
Score
4
Comments
#3
Highest Rank
8h
on Front Page
First Seen
Oct 23, 1:00 AM
Last Seen
Oct 23, 8:00 AM
Rank Over Time
53212113976

The Lowdown

In his seminal 1978 essay, E.W. Dijkstra dissects and dismisses the then-prevalent notion of "natural language programming," arguing forcefully that the perceived shortcomings of formal languages are, in fact, their greatest strengths. He traces the historical development of programming from machine code to high-level languages, highlighting the persistent desire to make machines more 'sensible' and less demanding of human precision. Dijkstra posits that this desire fundamentally misunderstands the nature of effective communication with machines and the profound benefits of formal symbolism.

  • Dijkstra observes that early programmers lamented the strict, literal obedience of computers, which executed instructions precisely, even if flawed.
  • The move from machine code to high-level languages aimed to reduce errors, converting them into error messages rather than incorrect results, but still required formal precision.
  • The idea of instructing computers in "native tongues" was proposed to shift the burden to the machine, making programming supposedly easier for humans.
  • Dijkstra counters that changing interfaces is not merely a redistribution of labor; it often increases the work involved for both sides, advocating for "narrow interfaces."
  • He draws parallels from the history of mathematics, noting that Greek mathematics and Moslem "algebra" stalled due to reliance on verbal or rhetorical styles, while modern progress emerged from carefully designed formal symbolisms by figures like Vieta, Descartes, and Leibniz.
  • The virtue of formal texts, he argues, lies in their simple manipulation rules, which are an "amazingly effective tool for ruling out all sorts of nonsense" that is almost impossible to avoid in natural language.
  • Dijkstra considers the obligation to use formal symbols not a burden, but a "privilege," enabling ordinary people to achieve what once required genius.
  • He speculates that if computing had started with natural language input, society would have spent millennia trying to bootstrap to a sufficiently well-defined formal system.
  • A concluding remark highlights "The New Illiteracy"—a decline in effective native language use—as further evidence against the feasibility of natural language programming.

Ultimately, Dijkstra's essay is a profound defense of rigor and formality in computing, asserting that the perceived difficulty of formal languages is a necessary price for clarity, precision, and the avoidance of inherent ambiguities that plague natural human communication. He concludes with a powerful, almost prophetic, gut feeling: machines programmable in natural language would be "as damned difficult to make as they would be to use."