"There are two ways to write error-free programs; only the third one works"
About this Quote
Perlis lands the punchline with a programmer's deadpan: yes, there are "two ways" to write bug-free code, and no, you don't get to use either. The line is structured like a tidy little theorem, then it detonates itself. That self-canceling logic is the point. It mocks the fantasy that software can be made spotless through purity, discipline, or some magic methodology. You can almost hear the implied options: write a trivial program, or never run it. Both produce perfection; both are useless. The only method that "works" is the messy, third way: ship imperfect code, observe failure, iterate, and keep paying the tax of complexity.
The subtext is a warning about engineering culture. People crave certainty, especially in domains where systems are opaque and failures are humiliating. Perlis punctures that craving by treating "error-free" as a category error, not a realistic target. His joke is also an argument about scale: the moment a program becomes interesting enough to matter, its state space explodes beyond what any human can fully anticipate. Bugs aren't moral lapses; they're statistical inevitabilities.
Context matters here. Perlis wrote during the rise of high-level languages and increasingly ambitious systems, when computing was shifting from controlled lab conditions to sprawling, real-world infrastructure. The quote reads like an early antidote to techno-optimism: progress in software isn't the elimination of mistakes, it's building practices and tools that make mistakes survivable.
The subtext is a warning about engineering culture. People crave certainty, especially in domains where systems are opaque and failures are humiliating. Perlis punctures that craving by treating "error-free" as a category error, not a realistic target. His joke is also an argument about scale: the moment a program becomes interesting enough to matter, its state space explodes beyond what any human can fully anticipate. Bugs aren't moral lapses; they're statistical inevitabilities.
Context matters here. Perlis wrote during the rise of high-level languages and increasingly ambitious systems, when computing was shifting from controlled lab conditions to sprawling, real-world infrastructure. The quote reads like an early antidote to techno-optimism: progress in software isn't the elimination of mistakes, it's building practices and tools that make mistakes survivable.
Quote Details
| Topic | Coding & Programming |
|---|
More Quotes by Alan
Add to List




