TOPシステム開発> 【新・言語進化論】次にくる!新登場言語> 第3回:オブジェクト指向と関数型を兼ね備えた「Scala」 (1/3)

【新・言語進化論】次にくる!新登場言語

【新・言語進化論】次にくる!新登場言語

第3回:オブジェクト指向と関数型を兼ね備えた「Scala」

著者: ether

公開日:2007/11/19(月)

Scalaについて

Scala(http://www.scala-lang.org/)はスイスのローザンヌ工科大学で開発されている静的型付けのプログラミング言語で、開発開始が2003年からと非常に若い言語だ。JavaVM上で動作し、オブジェクト指向(命令型)と関数型の両方を取り込んだマルチパラダイム言語である。

オブジェクト指向については、Javaの代替として申し分ないだけのクラスベースの機能を備えているほか、mix-in compositionも提供される。さらに関数型プログラミングからは、クロージャやカリー化、代数データ型、パターンマッチ、型推論といった関数型言語らしい機能を取り込んでいる。

関数型とオブジェクト指向を融合した代表的な言語としてScala以外にOCamlがある。OCamlではオブジェクト指向はあまり使われていないが、それに比べてScalaは双方の特徴をちょうどいいところで混ぜ合わせている。

またクロージャや型推論などがJavaに取り込まれつつあることを考えると、Scalaは未来のJavaを先取りしているといえるのかもしれない。



またScalaの特徴として、文法の拡張性の高さがあげられる。この拡張性はRubyで内部DSLを作る場合に近いといえる。その一例として標準ライブラリに含まれるActorライブラリがあり、これはScalaでErlang風の並列プログラミングを行うものだ。

これを使ってみるとあたかもActor用の文法が言語に組み込まれているかのようにみえるのだが、実際にはすべてライブラリレベルで拡張されている。

Scalaを使ったプロジェクト

Scalaは大学産の若い言語だが、すでに「lift web framework
http://liftweb.net/)」のような実践的なプロジェクトが登場している。作者のDavid PollakはRuby on Rails(以下、RoR)の経験を持つ開発者で、liftはRoRの思想をScalaで実現したという意欲的なものだ。

Scalaの入手とインストール

Scalaを動作させるにはJRE 1.4以上がインストールされていることが前提となる(.NET版も存在するが、2007年11月現在公式リリースは止まっている)。Scala Downloads(http://www.scala-lang.org/downloads/index.html)のページからScalaの処理系が入手できる(原稿執筆時点での最新版は2.6.0-final)。

本記事ではWindowsを前提として解説を行う。ZIP版をダウンロードして適当な場所に展開し、その中のbinフォルダにある「scala.bat」を実行するとScalaインタプリタが起動する。後はどこからでも起動できるようPATHをbinに通しておこう。 次のページ




ether
著者プロフィール
著者: ether
プログラミングを嗜む普通の社会人。はじめてのプログラミングは「Hello World」ではなく、N88-BASICで画面上に円を描いたこと。「外国語のよいところはそれをいくつ学ぼうと構わないことだ」という或る言語学者の言葉はプログラミング言語にも当てはまると最近感じ始めている。
http://blog.so-net.ne.jp/rainyday/


INDEX
第3回:オブジェクト指向と関数型を兼ね備えた「Scala」
Scalaについて
  Scalaのプログラミング
  RubyとScalaの比較