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

A stand-up set as much as a lecture. Steve opens by accusing his Stanford hosts of believing C++ is holy writ, notes that a co-inventor of Scala is speaking down the hall, and assumes everyone likely to be offended has already walked over there. The rambling is structural: he warns up front that he argues in "continuation-passing style," a train of thought leaving the station two or three times before it arrives, and the war stories carry it — an ant trying to walk a straight line across a garage floor (fifteen million lines of 8086 assembly, in miniature), a title bar redrawn 140 times per screen refresh, and a hallway ambush of a Google VP over Lisp whose last line stays untold here.

The Q&A, roughly the final quarter, is where he goes furthest off script: threads leave him refusing to continue ("I'll start crying"), an APL partisan objects from the floor, and Steve defends the genuinely heretical preference for a runtime error over a compile error. As a prediction the talk split down the middle. Fast JavaScript arrived on schedule (V8 shipped within months, and Andreas Gal's trace trees went into Firefox), while the verdict on static typing ran head-first into the TypeScript decade. The strange part is that the winning future is already in the room: asked about hybrid systems, Steve calls optional types layered onto a dynamic language "a great idea" that hasn't caught on yet, which came closer to what actually happened than the rant it's appended to.

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.