Blogger's Block #4 — cover art: a tidy Edwardian bookshop's programming-language shelf, a red gem-stoned Ruby book pushing in alongside a row of yellow Python books while a small mouse keeps the inventory. 🤓

2006 · Stevey's Blog Rants · Medley

“I like OCaml, for instance, but I don't use it. I don't like Java, but I do use it. Liking and using are mostly orthogonal dimensions, and if you like the language you're using even a little bit, you're lucky.”
— From Blogger's Block #4: Ruby and Java and Stuff, September 2006
Read the essay

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

Author’s note

Solid piece, but dated and (as is oft the case) 20% too long.

Pretty much only interesting reading if you are a hardcore language geek.

AI Notes

The series finale is mislabeled as a medley: the Ruby item wraps up in about a page, and then "Bloguette #2" quietly grows into a full-length essay on Java's biggest failing — the near-total absence of literal syntax. In Java you can write down a string or an int, but not a hashtable, a list, a function, or an object of a class you defined; everything gets assembled with constructors and method calls, Swing-style, which Steve argues is the real reason Java programmers keep so much of their data in XML. Along the way he grades the standard library piece by piece (java.util.concurrent gets a love letter, backed by a Python-to-Java port that went from an hour to under a minute; JNDI gets asked what the "L" in LDAP was supposed to stand for), and confesses that he finds Ruby nearly impossible to blog about, because the language keeps vanishing into whatever problem he's using it on.

The literals complaint holds one of the better prediction records in the archive. The imaginary signature syntax Steve sketches — (int, int) -> String — is close to character-for-character what Java 8 lambdas would look like eight years later, and the binary number literals he wants arrived in Java 7. The map literal never came: Map.of() is a library method doing exactly the helper-function workaround this post complains about. The worst-aged line is the aside thanking God that Sun bundled Rhino instead of Groovy; Groovy went on to power Gradle, and Rhino was eventually thrown out of the JDK entirely. The sign-off is a small structural joke that restates the whole Java argument in four lines of code, and it still lands.

Related listings

  • 2006

    Blogger's Block #3: Dreaming in Browser Swamp

    The same week's #3, on JavaScript as the most important language in the world. The two posts sit together as the latter half of the four-part bloguette medley.

  • 2007

    The Next Big Language

    Five months later, Steve sketches the language he wishes existed and which Java/Ruby/Python are each only half of. Read together: this post is the diagnosis, NBL is the prescription.

  • 2005

    Choosing Languages

    The earlier, longer version of the same conversation Steve has with himself here about which language to use and why. The Drunken-blog form is the deeper essay; this one is the bookshop sketch.