Thursday, July 23, 2009

Second JVM language

So far I've been nearly oblivious to the learn-one-new-programming-language-every-year motto from the Pragmatic Programmer book. I did play to some extent with Groovy and Ruby, but that was only enough to get me through Grails & Rails. With constant releases of so many new technologies and frameworks in the Java world there is hardly any time left for anything else to focus on.

Still, my recent attendance of the Java One conference made me realize it's high time to start applying that advice. There are multiple reasons which all contributed to my decision. First is that I want to learn functional programming. Second is that it seems very attractive and concise to write code in a language that supports closures. And last, but not least, is that I would like to be able to leverage other concurrency paradigms than the Shared State offered by Java.

With all this in mind, the choice of the language was pretty simple: Scala. It satisfies all of the requirements, plus it's not a big leap from Java at all.

When you decide to learn a new programming language you are to some extent making a bet, as you hope that the newly learned language will be in demand some day. From that perspective it is encouraging to learn that James Gosling would use Scala as a second language on JVM and that speculations started around Scala replacing Java in a long run. On the other hand, if you take a look at the TIOBE index, at the time of writing this post Scala holds 32. position with only 0.228% of worldwide programmers actually using it. And if you search for Scala jobs currently you would find only a few across the whole US. However, I believe the bet I am making in this case is rather safe because even if Scala ends up being just a fad, I should benefit immensely from getting exposed to new programming and concurrency paradigms.

So, for a start, I got the "Programming in Scala" book and started a journey. Stay tuned...