Atlas · Details
The Next Big Thing
Author’s note
Even I get bored reading some of my old language rants, but this one is pretty damning, and worth a read. It shows some real surprises in Java's language design, and uses a lot of colorful storytelling to convince you of why these things matter to programmers who were (at the time) claiming they do not matter.
This article's entire point is to predict that a new language will emerge and sweep everyone off their feet, by highlighting just how terrible Java was. And sure enough, TypeScript, Go, Kotlin, Swift, and Rust all emerged to sweep us off our feet. I was so happy about ALL of them, too. I haven't written a line of Java code in fifteen years.
I made the mistake of predicting the winner from the current crop, right after saying it will not be from the current crop. If I had said Python, we could have let it slide. But it was a whiff. TypeScript and Go were the next wave, which carried us for fifteen years or so. As of 2026, it sure looks like Rust is about to become the default choice for most server-side software for security reasons.
AI Notes
Steve opens with Joel Spolsky's talk on aesthetics at Amazon and runs the argument through Java 5. Generics pay their complexity tax up front with type information thrown away at runtime; enums are an even bigger pile of crap than Java arrays; the much-hyped "smart for-loop" is a band-aid over a missing first-class function — no access to the underlying iterator, no way to delete, no way to detect last iteration, and it took nine years to ship. Language revolutions, Steve argues, come on roughly a decade — C in 1975, C++ in 1985, Java in 1995 — and need two things: pain (which Java now has) and a beautiful alternative (which Java didn't ship in 5). His pick is Ruby. Not Lisp, not Haskell, not OCaml, not Python (already written off by too many programmers). Ruby is concise, mature enough, picking up VMs, getting O'Reilly and Pragmatic backing, and designed by someone who cares about aesthetics.
The pure call ("Ruby becomes the most popular language by 2008") didn't pan out, but the framework underneath did: the decade clock, the pain-plus-alternative test, and the insistence that aesthetics drive adoption. It's an early example of the move Steve repeats for the next twenty years — pick a moment, name the hidden variable everyone is ignoring, call the trajectory.
Related listings
-
2005
Ruby Tour
The detailed follow-up — Steve walks through Ruby feature by feature for working Java programmers.
-
2005
Digging Into Ruby Symbols
Eight months later. The Next Big Thing makes the bet; Symbols is the chapter where Steve writes from inside the language he picked.
-
2006
Execution in the Kingdom of Nouns
A year later — the case against Java sharpened into its most quoted form. Next Big Thing is the friendly prediction; Kingdom of Nouns is the autopsy.
From the peanut gallery
Read the rest of the thread · 3 more
-
Alas, it doesn't look like Rite will be coming out any time soon.
A short while ago, Don Box apparently said something like,
"If I could wave a magic wand, we would all just use Ruby", where "we" presumably means MSFT.
-
Both interesting comments!
Derek, I stand corrected. Fortress looks interesting — I read about half the pdf; I'll look at the rest later this week. It appears to be reasonably well-designed, at first glance. And I'm definitely looking forward to being able to use graphical smileys as variable names.
Remains to be seen whether it "feels" nice when you're using it. OCaml, f'rinstance, is a wonderful language on paper, but makes me feel like a rat running a maze when I try to write anything in it. (For reasons that I think I know how to articulate clearly now — working on another blog about it at some point.)
Anyway, I'd been wondering if having Guy Steele and Richard Gabriel and all those Lisp-y guys at Sun would ever result in anything. I suppose this is it! I'll look at Fortress in more detail ASAP. Thanks for the pointer.
-
I have been playing around with Python. While I like it, the performance bothers me, and what bothers me more is that Python-ers aren't bothered by it! And I'm not talking about holistic performance, one major sore point with me and Python is the performance of method calls. If method calls are slow, well guess what, you're more likely NOT to use them, and we all know where that ends up.
So there is this tacit encouragement in Python not to do proper OO encapsulation. You get better performance by accessing and setting properties directly rather than using method calls. I find this really annoying to me. One other issue I have with Python is lack of field definition. It'd be really nice to have a list of fields defined somewhere so I can know what this object stores. And the idea of having custom instances that have different methods than other instances of the same type kind of bothers me, if only for the debugging problems that spawns.
Now I also attended the Joel on Software presentation. One thing that annoyed me was his suggestion that the iPod is only popular because it's cool and that competing systems are better. In this case it is not true, the iPod become popular against more featureful players because it actually worked, its UI was elegant, clean and easy to use and the integration between computers and the player just worked.
But my greater point is this, while I can imagine many programmers would draw back in revulsion at his suggestion that users don't care about the engine, the 'guts' and only care about the shiny surface. I could imagine a developer saying 'this is why users suck, they just don't realize what is important!'. Deriding users because the user interface isnt nice, even though the engine, the guts are perfect.
Now, I have been using Mac OS X for about 3 years now. I am definitely a mac head now, and it's great. One thing I remark on all the time is just how beautiful fonts look. Now one might say I'm being superficial, but on the other side I do spend something like 8-12 hours of my day looking at the screen, so it damn well better look good. Both pleasing, and easy to see.
As for good user interface, now that the graphical user interface is the primary interface with our computers, wouldn't you want an interface that is clean, expresses clear concepts simply and helps you avoid errors? Isn't that a computer's job in fact, to do work so you don't have to? Having a UI that does exactly what you want, and it anticipates your needs and prevents you from making dumb mistakes is a joy. This is my joy of using OS X :-)
BTW, I really love Boost.Python.
"I doubt Sun will support anything that's not Java."
Yesterday (today?) they released the first public spec for Fortress:
http://research.sun.com/projects/plrg/fortress0618.pdf
The existence of the language doesn't prove anything in and of itself, but if they bothered to publish a puff piece about it in Dr. Dobbs, *somebody* wants to market it...
— Derek U · April 27, 2005 09:47 PM