We’ve all seen the demos: a user types a few vague sentences into an LLM, and boom—a working app appears. We call it 'natural language programming' or 'vibe coding,' and it feels like magic. But if you travel back to 1978, you'll find a legendary computer scientist who already called this a disaster. Edsger W. Dijkstra didn't just disagree with the idea; he called it 'foolish.'
The Precision Gap
In his essay On the foolishness of "natural language programming", Dijkstra argued that the 'shortcoming' of programming isn't that it's hard, but that it requires formal symbolism. He believed that the care and accuracy needed for coding are not bugs, but features. Natural language is designed for human flexibility and nuance, which makes it inherently ambiguous. When you ask a machine to execute a task, ambiguity is the enemy of reliability.
The Danger of 'The New Illiteracy'
Dijkstra warned of a phenomenon he called 'The New Illiteracy.' He feared that people who lacked technical insight would be seduced by the illusion of ease, unable to predict the failure of systems they didn't actually understand. In the age of GitHub Copilot and ChatGPT, this feels prophetic. When we stop thinking in formal logic and start 'vibing' with a prompt, we outsource the precision of the architecture to a probabilistic model that doesn't actually 'know' the rules—it just predicts the next token.
Logic Over Magic
While LLMs have undeniably boosted productivity, Dijkstra’s warning remains a vital sanity check. Formal symbolism forces the programmer to be precise about what they actually want. Without that rigor, we aren't programming; we're just hoping the machine guesses our intentions correctly.
Sources
Media



