8 April 2009

Twitter moving to Scala, language wars reignited

Language wars can be fun. I learn much from the pompous-yet-informed missiles that get launched during a good language war, and Twitter's announcement [ via Slashdot ] of their move from Ruby to Scala is no exception. (Also see Joel Spolsky's absurdist attacks on Ruby for being untested while at the same time praising his own company's home-grown language.)

The Slashdot summary links to several good reports/interviews on the change and the comment thread includes further insights. Twitter's homegrown message queue, Starling, is brought up as an embarrassingly flawed implementation. I'd read about Starling around the time it came out and was intrigued that it was written in Ruby. Perhaps I shouldn't have been. Another link suggests that (1) the Twitter devs are blaming Ruby for their own bad code and (2) the Twitter architect is coming out with a book on Scala, so his opinion is suspect. Regarding (1), you should always assume the worst covering-their-ass intentions when a developer starts griping about a technology. Technology-blamers are usually notoriously poor workmen. Regarding (2), well that's just specious logic. Someone who's done detailed research on a language would have greater authority to recommend it, so if he was interested enough to write a book it's likely he found reason to use the language in a large-scale project. Also, he's going to be eating his own dog food, so increased book sales (on a fringe language) would be poor compensation for having to manage an unwieldy code base.

Whatever the outcome, academic theories on GC and nullable objects are merely interesting once the language is put to the test on a system that has the traffic that Twitter does. Should be interesting to watch the battles that continue.