2 notes

Stop letting me shoot myself in the foot

Oh fun, someone has told the Department of Crusty just what it wants to hear again: Scala is unsuitable for Serious Business!

We are thusly forced to imagine a continuum of software development, from Flippant to Consequential, with languages being acceptable within particular ranges. It’s an interesting theory, but is Seriousness really a primary axis of language suitability? Has anyone ever suggested this, except to elevate or demote a language in an unquantifiable fashion?

Of the many factors that determine language suitability, one of the larger and more obvious must be programmers themselves. You might have noticed, for example, that enthusiasm for unit tests that exercise every statement of code is higher among those that like dynamic languages.

But here we find that Seriousness has caught its own tail: programmers who are most Serious about testing are more likely to prefer languages widely perceived as less Serious. How can this be—is it that Seriousness is cumulative, and one shouldn’t overdo it?

Or maybe it’s that Seriousness is a subjective and ridiculous characterization, and we should stick to descriptions that do not reek of moral judgment. Maybe we should just try to understand the dimensions of platform stability.

Some people admire Java for its stability, while others revile it for its lethargic evolution. Some people demand both, and should really make up their minds about what they want in their computing lives. That’s not to say that you couldn’t have it both ways. In some universe you can, but in this one we have choices like Java and choices like Scala. Others like C# are somewhere in the middle, but the platforms that advance the most quickly are not the ones that are considered the most stable.

To make things even thornier, the possibilities for platform progress are not equally expensive. A tightly controlled evolution, with a review process for every new feature and procedures to test it in every conceivable configuration before an official release, does not come for free. Java-style stability just isn’t feasible or desirable for most other languages.

If Scala had been more timid it wouldn’t be where it is today: a language with a stable and widely used version—2.7.7—that is years ahead of even development builds of Java. It has a solid assortment of libraries and tools, and a community of people that love it. As for the next version, it doesn’t exist. Its characteristics, quality, and date of release can only be guessed.

Stability, like everything in this open-sourced world, is DIY.

}