A Letter from Dijkstra on APL (1982)

· coding · Source ↗

TLDR

  • Roger Hui publishes Dijkstra’s 1982 letter criticizing APL’s dependency on terminals, then rebuts it with formal derivations showing APL works as a mathematical notation.

Key Takeaways

  • Dijkstra argued APL devotees couldn’t teach or discuss the language without a physical APL terminal, unlike pen-and-paper languages.
  • He framed the tool-shapes-user argument: APL’s influence on its practitioners repelled outsiders more than any interface friction.
  • Hui counters that Iverson invented APL notation as a communication medium years before any computer implementation existed.
  • Hui demonstrates APL’s formal utility with two derivations: Ackermann’s function proof by induction and an inverted-table index-of algorithm in Dyalog APL.
  • The inverted-table derivation replaces expensive vert operations with column-wise integer encoding (x⍳¨y), a concrete efficiency gain from formal manipulation.

Hacker News Comment Review

  • Commenters split on whether Dijkstra’s objection was ever valid: Unicode availability removes the terminal-dependency argument, but his deeper dislike was APL’s high abstraction level, not the character set.
  • Several commenters noted APL pioneered bulk-array operators that prefigured functional programming, but its unconventional syntax caused adoption to collapse against lower-friction alternatives like Perl and later Python.
  • There is mild consensus that executability is an asset even in formal-methods courses, echoing Hui’s point, though some see APL’s write-only density as a practical ceiling.

Notable Comments

  • @garyrob: wrote production APL in 1978-79 and calls it “write-only” even without deliberate obfuscation, a practitioner limit Hui’s paper does not address.
  • @gatestone: points to Russ Cox using Rob Pike’s APL-like Ivy for Advent of Code 2021 as evidence array-language thinking persists inside Go/Bell Labs lineage.

Original | Discuss on HN