Sorry for the title, I’m not really serious. But Bill de hÓra has put up an interesting post regarding Scala:
Yes, I know you can run Django in the JVM via Jython, I know there’s Clojure, and Groovy too. This is just about the theme of Ned’s post, which is the type system. And Scala has a better one than Java.
I’m still somewhat undecided yet, but I’m starting to believe that if any language has the chance to become Java’s successor, it will be Scala. It simply doesn’t require - or at least it doesn’t seem to require - the same amount of mind change for typical Java programmers. (You know, it has classes, and curly braces, and it’s taken seriously by the Java posse.) I’m not exactly enthusiastic about the language’s design (XML literals? WTF?), and in fact strongly prefer Clojure as a JVM language. But given the choice between Java and Scala, I won’t hesitate for a second - Scala is a way, way better language than Java, with its type inference, case classes, and support for functional programming.
So my position on programming languages as of November 2009 is this: For pragmatic reasons, as well as for the fun in programming, there’s still nothing that beats Ruby or JRuby on Rails for DB-backed Web applications.
From a language design standpoint, I believe that nothing beats Clojure. It’s my absolute favorite programming language at the moment. So for domains other than mere Web development, I consider Clojure an excellent choice. (I know about Compojure, and it’s neat, but the community is probably about 0.01% of the size of the Rails community.)
But if the forces that decide things will neither accept Clojure nor Ruby, I’ll suggest Scala, feeling sure that there’s simply no reasonable technical argument left to prefer Java instead. Which is somewhat satisfying.