"Every program has two purposes: The one for which it was written and another for which it wasn't"
About this Quote
A line like this lands because it refuses the comforting myth that software is a sealed object with a single, author-approved meaning. Perlis, a computer scientist with a talent for aphorism, is pointing at the core mismatch between intention and reality in programming: once code exists, it becomes a tool in a world that improvises.
The first purpose is the brochure version: requirements, specs, the tidy story we tell managers and ourselves about what the program is for. The second purpose is the one that actually drives much of computing history: repurposing, misuse, and emergent behavior. Spreadsheets become databases. Game engines become architectural visualization. A simple script becomes the backbone of a business because it "works" and no one wants to touch it. The joke has teeth because the "another" isn’t a rare edge case; it’s the default lifecycle of successful software.
Subtextually, Perlis is also taking aim at programmer ego. We like to imagine authorship: that our design intent governs. But users, adversaries, and even future maintainers will read your code like a found object. That second purpose can be benign (creative adaptation) or catastrophic (security exploits, privacy leakage, brittle dependencies), and Perlis’s deadpan symmetry treats both as structurally inevitable.
Context matters: Perlis came out of an era when software engineering was trying to professionalize, to make programming behave like traditional engineering. This aphorism is a sly reminder that computation isn’t just constructed; it’s interpreted, and interpretation always escapes the builder.
The first purpose is the brochure version: requirements, specs, the tidy story we tell managers and ourselves about what the program is for. The second purpose is the one that actually drives much of computing history: repurposing, misuse, and emergent behavior. Spreadsheets become databases. Game engines become architectural visualization. A simple script becomes the backbone of a business because it "works" and no one wants to touch it. The joke has teeth because the "another" isn’t a rare edge case; it’s the default lifecycle of successful software.
Subtextually, Perlis is also taking aim at programmer ego. We like to imagine authorship: that our design intent governs. But users, adversaries, and even future maintainers will read your code like a found object. That second purpose can be benign (creative adaptation) or catastrophic (security exploits, privacy leakage, brittle dependencies), and Perlis’s deadpan symmetry treats both as structurally inevitable.
Context matters: Perlis came out of an era when software engineering was trying to professionalize, to make programming behave like traditional engineering. This aphorism is a sly reminder that computation isn’t just constructed; it’s interpreted, and interpretation always escapes the builder.
Quote Details
| Topic | Coding & Programming |
|---|
More Quotes by Alan
Add to List





