Why Programming Needs Precision: Dijkstra’s Case Against Natural Language


Edsger Wybe Dijkstra
Edsger Wybe Dijkstra

Edsger Dijkstra’s essay "On the foolishness of 'natural language programming" makes a very strong and clear argument. In simple terms, here’s what he meant:

1. Programming requires precision - natural language is too vague.

Dijkstra believed that natural languages (like English or Swahili) are too ambiguous and messy for programming. When you program a computer, you have to be precise and logical - because computers do exactly what you tell them, even if it makes no sense.

2. Programming in natural language is a bad idea.

Some people hoped we could just "talk" to computers like we do with humans - using everyday language. Dijkstra thought that was a dangerous fantasy, because:

  • It would make the computer incredibly complex.
  • It would still be hard for humans, just in different (and maybe worse) ways.
  • It would lead to more mistakes, not fewer.

3. Formal languages are actually a benefit, not a burden.

Dijkstra argued that using formal symbols and rules in programming isn't a pain, it’s actually a huge advantage. Reason?

  • Formal languages make nonsense easier to detect.
  • They let people with average intelligence write powerful programs - not just geniuses.
  • They make it clear what you mean - no ambiguity, which is not always the case in natural language.

4. He uses history as a warning.

He pointed to history, case in point when Math was too verbose and vague (like in ancient Greece or medieval times), progress stalled. Only when we moved to formal symbolic math, like algebra and logic, did science and technology really take off.

5. People are already losing precision in their own language.

He ends with a warning: people are getting worse at even using their own native language well, what he calls "The New Illiteracy". So trusting sloppy language to write correct software? Not a good bet.

Bottom line:

Trying to program in natural language is like trying to do math with poetry - it sounds nice, but it just doesn’t work.

Comments

Popular posts from this blog

Revisiting Dijkstra in the Age of Copilot and ChatGPT