The Manuscripts of Edsger W. Dijkstra

Natural language programming and AI context

  • One highlighted essay attacks “natural language programming”; commenters note its prescience amid 2025 LLM-based “natural language compilers.”
  • Some argue Dijkstra is still right: programming is about precise specification and proofs, for which informal language is unsuitable.
  • Others think conventional languages underuse natural language and that more English-like keywords could help beginners, though symbols can make structure easier to skim.
  • Several point out that LLMs effectively compile natural language into code, partially contradicting his “doomed to fail” claim while still relying on formal target languages.

Static vs dynamic typing and error tradeoffs

  • A Dijkstra quote about “equating ease of programming with ease of making undetected mistakes” is used to criticize dynamic languages.
  • Dynamic-language advocates emphasize flexibility, polymorphism, and reuse, especially in scientific and numerical Python ecosystems.
  • Static-typing proponents counter that dynamic binding and loosely specified contracts become “bug farms,” particularly at scale and in production.
  • There’s some agreement that richer static systems (e.g., concepts, traits) can capture many flexible patterns while being checkable.

Syntax, logical operators, and readability

  • Debate over symbolic vs word-based operators: &&/|| vs and/or, if (A) B vs if A then B.
  • Some argue words improve approachability; others prefer symbols for visual distinction and to signal semantics like short-circuiting.
  • A few note that tailoring syntax to existing practitioners (C-like familiarity) often dominates over optimizing for novices.

0-based vs 1-based indexing and ordinals

  • Dijkstra’s famous defense of 0-based, half-open intervals is both praised as deeply clarifying and criticized as rhetorically overstated.
  • Supporters say 0-based + [start, end) unifies offsets, iteration (forward/backward), and reduces off-by-one errors.
  • Critics argue 1-based indexes match natural ordinals (“first element”) and can be better for some patterns like backward iteration.
  • Long subthread explores offsets vs ordinal positions, negative indices, hardware history, and whether “zeroth” is a meaningful ordinal.

Dijkstra’s style, influence, and criticism

  • Many describe the archive as a “treasure trove”: clear, opinionated essays on proofs, elegance, threats to CS, and pedagogy that still feel current.
  • Others find his writing pseudo-intellectual, strawman-prone, and closed-minded about alternatives.
  • There’s disagreement over his technical impact: one commenter dismisses him as mostly a stylist, while others list broad foundational contributions in algorithms, operating systems, concurrency, verification, and language design.

Elegance, functional programming, and efficiency

  • Some connect his emphasis on reasoning and beauty to functional programming and calculational styles.
  • Practitioners in embedded and constrained environments push back, arguing most functional languages are too heavy (runtimes, libraries) to meet strict efficiency and portability needs.
  • One thread frames programming cultures as balancing three pulls: hardware efficiency (EE), mathematical proof, and human factors/psychology; an implicit “CAP-like” tradeoff among performance, formal tractability, and ergonomics is suggested.

Education, rigor, and language mastery

  • Several excerpts emphasize his belief that mastery of one’s natural language is essential to good programming, and that CS education has drifted away from intellectual discipline.
  • Commenters see contemporary parallels: curricula eased to pass more students, perceived declines in writing and reasoning skills, and underemphasis on “how to think and design” vs results and tooling.