A Weekend with Scala

As I write this on Sunday night, I’m wrapping up my weekend of poking and prodding at Scala and a few of it’s frameworks. It’s been some time since I’ve really taken up a new language—unless you count a cursory understanding of Objective-C and none of Apple’s libraries—and this has been one of the more pleasurable experiences.

My initial motivation was to learn a language that uses some more of the functional idioms and provides me with a toolbox for higher traffic services. For this, Scala is a good fit. Like my language of choice, Python, Scala contains number of functional elements (though it exceeds Python in count), but does not make them the exclusive method of working. In this way, it gets to have the best of both worlds, imperative when necessary functional when you’re doing the big crunching.

My initial impression of the language is pretty much awe. The entire ecosystem is pretty robust and provides several great ways to grok the language. I went primarily with Twitter’s Scala School but kept my eyes on other topics as they haven’t updated it to the newer versions of Scala. I dug into the sbt docs as well, and found it rather illuminating how they approached the language in the process of defining the build. The last big walk-through I did was the Specs2 testing framework. This one in particular proved useful as I did some simple exercises setup how sbt encourages you (with sane defaults) and using Specs2 for testing.

I don’t think I’m done with this tinkering and fully plan on digging deeper into Akka, Finagle, and the Play Framework. Both look pretty useful (and I’ve been tinkering with Play for the better part of today). In particular I’m looking forward to using Akka’s actor modeling for handling expensive computation and networking.