Jun's Blog

Output, activities, memo and etc.

A programing langurage to fit to parallel processing: Scala

Slashdot.jpの2009年04月10日の記事によると、Twitterが、機能の一部を Ruby on Rails (Ruby)から、Scalaという言語に置き換え、他の機能も徐々にScalaに置き換えているようです。


ScalaJava(や.NET)の上で動く言語です。
Rubyのような純粋なオブジェクト指向言語です。
Javaなのでコンパイル必要です。
クラスの作成は、Rubyのように楽だそうです。シンプルなことはシンプルにやろうというポリシーの言語なんでしょうかね。
Rubyのコーディングを楽にするルール(変数名でインスタンス、クラス変数、定数を判定。アクセサー設定が楽。)が、Scalaにもあると嬉しいのですが。

Twitter ではフロントエンド、バックエンド共に Ruby on Rails が使われていたが、最近では大量のメッセージを処理できず「Fail Whale」出現の原因となったりしていた。

http://slashdot.jp/developers/article.pl?sid=09/04/10/0421223

とのことです。
Scala導入の目的は並列処理が得意な言語ということで、まずはメッセージ処理機能をScalaに置き換えたようです。
Rubyは並列処理が苦手なんでしょうかね。
Ruby1.9で改善されるんでしょうかね。

スイス連邦工科大学ローザンヌ校の Martin Odersky 氏によって開発された比較的新しいプログラミング言語である Scala は並列プロセスの処理に長けている点が Twitter に向いており、また言語としてのフレキシビリティも開発にとっては魅力

http://slashdot.jp/developers/article.pl?sid=09/04/10/0421223

Twitterのメッセージをキューに書きこむ機能のような)スケーラブルに並列処理をするような用途の場合に使えそうですね。

Martin Oderskyによると、Scala開発の動機は2つの仮説による。

1. 汎用言語はスケーラブルでなくてはならない。同じ概念で、小さいプログラムも大きなプログラムも記述できるべきである。
2. スケーラビリティは関数型言語オブジェクト指向言語の2つのプログラミングの概念を統合し、一般化することにより実現できる。

http://ja.wikipedia.org/wiki/Scala

オバマ演説のときも安定して動いていたようですね。

For example, at Twitter, the social networking service, Robey Pointer moved their core message queue from Ruby to Scala. This change was driven by the companies need to reliably scale their operation to meet fast growing Tweet rates, already reaching 5000 per minute during the Obama Inauguration.

http://www.scala-lang.org/node/25

コンパイル必要な時点で少し躊躇してしまいますが、結構注目な言語です。
バッチ処理は良いとして、WEBアプリケーションはよいフレームワークがあるといいなぁ。

と思ったら、lift という Railsににたフレームワークがあるようです。
http://liftweb.net/