Dynamic Languages Strike Back — cover art: a small, quick, fearless panda in a nimble stance squaring up to a colossal, cracking grey stone golem inside a grand stone hall. 🔮

2008 · Stevey's Blog Rants · Talk

“I live in Emacs. And Emacs is the world's last Lisp Machine. All the rest of them are at garage sales.”
— From Dynamic Languages Strike Back, May 2008
Read the essay ▶ Watch the talk (68 min)

© 2008 Steve Yegge. Originally published at Stevey's Blog Rants.

Author’s note

This is my own hand-transcription of a live talk I gave at Stanford. It is super long, though roughly the last 1/4 of it is Q&A. But the style is breezy and flows well, so it is a faster read than my other posts of this length.

I was dreading rereading it, but it has some pretty amazing stories, some of which I had completely forgotten. I realized that I also knew a lot more about compilers 20 years ago than I do today.

The AI agents pretty solidly voted this into my Essentials group. Makes me think maybe I should transcribe more of my talks.

AI Notes

Transcript of Steve's 2008 Stanford EE380 talk, self-transcribed from Stanford's hour-long video — a full-throated defence of dynamic languages delivered at a school Steve characterises as believing "C and C++ are the fabric with which God wove the Universe." The thesis: the two standard knocks — dynamic languages are slow, dynamic languages have bad tooling — are not intrinsic and are about to be demolished, because the runtime always has more information than a compiler ever can. Steve walks the machinery that follows: Urs Hölzle's polymorphic inline caching and type-feedback compilation, type inference, and trace trees (which he calls the crown jewels of the talk), all riding the Ajax-era pressure to make JavaScript fast. Two side-arguments anchor it: static type systems have "reached the theoretical bounds of what they can deliver, and it has FAILED"; and language popularity has effectively frozen because the barriers to adoption have grown too high. War stories thread through — Geoworks bankrupt under fifteen million lines of un-optimisable 8086 assembly, the "career-shatteringly bad mistake" of trying to slip Ruby into Google.

The predictions held up: V8, JIT-everywhere, and JavaScript becoming one of the fastest languages on the planet all landed roughly as forecast, and the frozen-popularity thesis largely did too. The static-types-have-failed claim remains Steve's most-argued-over technical position — people are still picking fights with it.

Related listings

  • 2012

    Notes from the Mystery Machine Bus

    The static-versus-dynamic fight is the clearest case of the conservative-liberal axis the Mystery Machine Bus would later name — and Steve lists this very talk as one of his own acts of software liberalism.

  • 2006

    Execution in the Kingdom of Nouns

    Two essays from Steve's running argument with the static-typed world. Kingdom of Nouns takes Java apart from the inside; Dynamic Languages Strike Back is the broader case for the other side of the fence.

  • 2008

    Portrait of a N00b

    Three months apart, and arguing the same corner. Portrait of a N00b's claim — that static types are a kind of comment, and over-relying on them is a beginner's habit — is the same position this talk defends with runtime machinery.

Where it was argued

  • Hacker News May 2008
  • InfoQ May 2008
  • Cédric Beust May 2008 — “Return of the Statically Typed Languages” — the headline rebuttal, and the post that turned the whole exchange into a Star Wars naming game (“I'm happy to be the Luke Skywalker to his Darth Vader”).
  • Ola Bini May 2008 — “A New Hope: Polyglotism” — the JRuby developer answers both Yegge and Beust, arguing the real answer is using the right language for each layer, not picking a winner.
  • Matthew Podwysocki May 2008 — “Static versus Dynamic Languages: Attack of the Clones” — a .NET-side reading of the full Yegge → Beust → Bini exchange.