Monday, January 18, 2010

I'm learning Scala

Being bored, I was browsing Wikipedia, reading about languages that use Java's VM. I was reading the Groovy article, thinking that it looked interesting enough to start learning it. But then I got to the end where Groovy's author, James Strachan, said:
I can honestly say if someone had shown me the Programming in Scala book by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy.
Groovy Criticism
If even Groovy's author thinks there is a better language, I thought I should just skip it and go read up on Scala. So first I read Wikipedia's article on Scala, then I went over to the Scala language site for more. What I read there looked interesting enough and I added the Eclipse update site to my Eclipse installation, downloaded some of the PDFs in the documentation section, and started to play around with it.

Scala is a really strange beast, it's an exciting mix of imperative, functional and object oriented features. While it is a statically typed language, it has great type inference, quite a bit of code looks more like it really is a dynamically typed scripting language. I'm not too sure if like some of its syntactical features, like semicolon insertion and optional parenthesis/braces at seemingly random places. Maybe I just need to learn a bit more about it, and actually write something more involved then the basic examples from the documentation.

What I definitely do not like at all, the freely provided documentation for Scala beginners is absolutely obtuse and extremely technical. To really get started with Scala, you practically have to buy at least one book "Programming in Scala". While most people could probably easily afford it, I can't. Which sucks for me, but it also makes wonder about the language, its authors (who wrote the book) and its ecosystem.

The way I see it, programming languages live and die by its users, how successful they are learning and using it. Even if Scala was the best language ever to be developed and people could be super-awesomely productive and thus earning whopping amounts of money, a programming language still needs to attract new users. One way to do that is to offer the best documentation possible for free. To have to pay for what is effectively the official reference and introduction is just another hurdle for new users. And having to spend money can be a make-or-break factor.

I'm coming from a background of PHP, JavaScript, Python and Java where official documentation is quite good and freely available. It could be that I'm simply spoiled by that, but then again PHP, Python and Java have huge user bases.

Aside from the documentation, I'm really excited about learning Scala and already thinking of interesting applications.

No comments:

Post a Comment