Is Scala or Clojure poised for stardom?

2
Is Scala, which was designed only a short while ago (comparatively speaking, that is) poised for stardom? Or will Clojure achieve greatness instead? There are a number of complementary aspects that seem to indicate for the time being that Scala might; however, what remains to be seen is if Scala can stand above recent newcomer Clojure. Both languages often show up together, especially when the topic of conversation is concurrency; nevertheless, each language is distinctly different. What’s interesting is how each language is starting to show up in various hip places.

First, a recent CIO.com article entitled “6 Scripting Languages Your Developers Wish You’d Let Them Use” listed both Scala and Clojure. While the article doesn’t necessarily give evidence for why Scala or Clojure made the list (all the author does is quote a few developers who use each language), this dovetails nicely with the ongoing results of a recent unscientific poll, entitled “which language is better suited for JVM concurrency?” which has Scala in the clear lead (36% of the vote as compared to Clojure’s 23%).

Second, both languages have books coming out in the near future– because it’s his bag, my friend Venkat Subramaniam is currently writing “Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine” for The Pragmatic Programmers and in the aforementioned CIO.com article, one of the developers mentioned, Dean Wampler, appears to be co-authoring a Scala book for O’Reilly. Not to be outdone, however, my friend Stuart Halloway is currently writing “Programming Clojure” for The Pragmatic Programmers as well. It wouldn’t surprise me in the least if there are other books currently in writing regarding each of these languages too.

Scala might have a slight edge on Clojure when it comes to articles, however. For instance, everyone’s friend Ted Neward has a series of articles on Scala on IBM’s developerWorks. Moreover, I’ve had the pleasure of attending a few different presentations on Scala at various conferences. This edge held by Scala might only be related to the fact that the language is simply older than Clojure and I suspect that we’ll start to see, at a minimum, Stuart start to speak about Clojure at various conferences in 2009.

What’s interesting is that both languages lack a killer application– yet, they are already on the map. Ruby, which has been around for ages, was a reference to a jewel for a majority of the IT community until Rails came along. For the most part, the same could be said of Groovy. From what I can tell, the appeal for the majority of Java developers adopting Groovy is Grails. What appears to be propelling each language into the veritable limelight and which might give them a close-to-killer-application-like fame is concurrency

. That is, the growing concern that new chip designs are building more and more processor cores coupled with, and I quote from CIO.com’s “Multicore Boom Needs New Developer Skills

a worldwide shortage of people experienced in parallel computing

And as duly pointed out in the comments related to the previously mentioned poll, Java is suited to handle this challenge (and as pointed out in SDTimes’Guest View: Java + multicore = good news” future versions will also facilitate concurrency); however, both Scala and Clojure claim to make the job of addressing concurrency easier. And they offer this promise now (as opposed to a future copasetic version of Java).

While each language appears to be running neck and neck, where they differ drastically is in syntax. They both are functional in nature, but Clojure is a Lisp-like language, which can be quite intimidating to the neophyte developer with a Java background. Of course, well articulated books, articles, and tutorials will only help in obviating any apprehensiveness; nevertheless, Scala’s syntax is more closely aligned with Java’s. What’s more, Scala can also run on the CLR, which means it might (just might, that is, baby) find a following with .NET developers (should they find F# unpalatable).

Is Scala or Clojure poised for stardom? Can two languages co-exist as stars or does one invariably outshine the other? If history is any indication, then I’d venture to guess that the answer is that both can’t be stars– just like both Groovy and JRuby aren’t stars. They co-exist and, in truth, divide the market and have followers with strong opinions on both sides. Thus, if I had to guess right now, I’d say that Scala has the edge with some good momentum.

Yet, as pointed out earlier, if concurrency is the concern that’ll give each language the killer application-like fame, then they’ve got more time to mature and thus educate the market on how they may address concurrency concerns more appropriately than that of Java. What remains to be seen is if they can compellingly convince the Java market to learn their way of programming rather than leveraging what’s home (i.e. the Java language) for the majority of their respective target audiences. Can you dig it, man?

You can follow thediscoblog on Twitter now!