Fantom (プログラミング言語)

とは汎用のオブジェクト指向言語であり、Java仮想マシン、Microsoft .NET 共通言語ランタイム、JavaScript 処理系で動作する。言語はクロージャーによって関数型プログラミングをサポートし、アクターモデルによって並行コンピューティングをサポートする。言語の型システムは静的型付けと動的型付けの両方の特徴を兼ね備えている。構文はC#言語やJava言語と似た中括弧を使うものになっている。

型システム
言語の型システムは簡素に設計されている。全ての変数は、C#言語やJava言語と同様に、静的に型付けされている。複雑さを避けるため、言語では汎用プログラミング機構は採用されていない。その代わり、汎用のデータ型が組み込まれている (List、Map、Func)。また、言語には、動的なメソッド呼び出しの仕組みと、自動的な型キャストの仕組みがあるため、動的片付けの言語のような雰囲気のプログラムができる。言語には使いやすいリフレクションのAPIがあり、メタプログラミングも可能である。

ポッド
言語では、開発の単位を「ポッド」と呼ぶ。ポッドは名前空間やパッケージやモジュールなどと同じものである。個々のポッドは「〜.pod」のファイルに保存する。このファイルは、「」と呼ばれるのバイトコードや、関連する文書のファイルや、プログラムの実行に必要なファイルが、ZIP形式でまとめられたものである。ポッドには、他のライブラリーやアプリケーションで使われるデータ型の定義をいくつでも含めることができる。データ型の名前はそれが含まれるポッドの名前によって完全修飾される。例えば、「fwt::Widget」という型は「webapp::Widget」という型とは異なるものとして区別される。また、ポッドに「Main」という名前の型が含まれていれば、「fan <podName>」というコマンドでそれを実行することができる。

言語の処理系には、「」(または、「」)と呼ばれる標準のウィジェット・ツールキットが同梱されている。はいくつかのプラットホームで使えるように設計されている。現在のところ、の実装としては、Java仮想マシンで動作するSWT用のものとJavaScript処理系で動作するcanvas用のものと、JavaFX用のものがあり、ウェブブラウザーでものアプリケーションを使うことができる。また、Microsoft .NET 共通言語ランタイムで動作する Windows Forms 用の実装を作成する計画もある。

例
言語による Hello, World! プログラムは以下のようになる。

class Hello
  {
  static Void main() { echo("Hello, World!") }
  }

言語の名前
この言語はもともと「」という名前だった。この言語の作者が住んでいる米国バージニア州リッチモンドの住所にちなんでつけられたからである。しかしその後、この言語の知名度が上がるに伴い、この言語のコミュニティーのメンバーたちが、この言語の名前のSEO対策について問題視するようになった。そして、2009年9月に、この言語の名前は公式に「」から「」へと変更された。

関連項目
Boo
C#
Scala
Ruby
Erlang
プログラミング言語

脚注

外部リンク
Fantom言語 公式ウェブサイト
Why Fantom
「Re: Fan Programming Language」 (jvm-languages@googlegroups.com メーリングリスト)
「Not a Fan of Scala? An Evolutionary Approach | Ajaxonomy」
「The Fan Programming Language | Javalobby」

プログラミング言語