Atlas · Details
Lisp Wins (I think)
Author’s note
This one is better-written than many of my other posts trying to say exactly the same thing. From a personal standpoint, I think the most interesting bit is the biographical timeline of programming languages I'd used, starting in 1986.
It's easy to forget that we have a huge selection of really awesome languages today, that I didn't have access to back in 2005. Today we have Rust, Go, TypeScript, Kotlin, Dart, and Swift to name just a few. Back then the options were really bad, and it was frustrating as hell.
AI Notes
Steve opens with a confession: after seven years and half a million lines of Java, he's spent a year quietly hunting for a replacement. The core of the essay is a small comparative study — print the squares of 1 through 5, separated by spaces. Perl does it in two lines, Ruby in one, Python in one, Java in roughly twenty; the Java 5 cleanup with autoboxing and the "smart" for-loop saves almost nothing. The verbosity is a symptom; the disease is that Java offers no way to make your own shortcuts. Without macros, without templates, without a way to lift recurring patterns into the language itself, the boilerplate accumulates forever. From there Steve walks the metaprogramming landscape — C++ templates, AspectJ, and operator overloading (each a partial answer, too verbose for the power), Ruby and Python's MetaObject Protocols (semantics only, not syntax), Smalltalk, OCaml's macro system — and lands on Common Lisp as the only language where syntax is genuinely up for negotiation, "the gold standard" where good programming is refactoring via macros.
The closing caveat — appended after the essay went up — is the most-quoted bit: Lisp may win on language, but Java still wins on platform, and Steve is, at the moment, uncommitted. The piece is Steve's most candid statement of the choice he was wrestling with in 2004, written in the gap between two careers' worth of Java code and the decade of writing about why something better was still possible.
Related listings
-
2005
A Little Anti-Anti-Hype
Same year — the marketing-side counterpart. Lisp Wins is the merit argument; Anti-Anti-Hype is the rueful acknowledgement that merit does not actually decide these things.
-
2006
Lisp is Not an Acceptable Lisp
A year later — the Common Lisp tooling and library essay that this piece's optimism eventually crashes into. The two together are Steve's full position on the language.
-
2005
The Emacs Problem
Same year — the architectural piece that argues text wants to be tree-structured. Lisp Wins is the language argument; The Emacs Problem is the data argument; the two are halves of one essay.