Fantom (プログラミング言語)
パラダイム | マルチパラダイム |
---|---|
登場時期 | 2007年 |
開発者 | Brian Frank, Andy Frank |
最新リリース | 1.0.80/ 2024年4月23日[1] |
型付け | 静的型付け, 動的型付け |
影響を受けた言語 | C#, Java, Scala, Ruby, Erlang |
ウェブサイト | www.fantom.org |
Fantomとは汎用のオブジェクト指向言語であり、Java仮想マシン、Microsoft .NET 共通言語ランタイム、JavaScript 処理系で動作する。Fantom言語はクロージャーによって関数型プログラミングをサポートし、アクターモデルによって並行コンピューティングをサポートする。Fantom言語の型システムは静的型付けと動的型付けの両方の特徴を兼ね備えている。構文はC#言語やJava言語と似た中括弧を使うものになっている。
型システム
[編集]Fantom言語の型システムは簡素に設計されている。全ての変数は、C#言語やJava言語と同様に、静的に型付けされている。複雑さを避けるため、Fantom言語では汎用プログラミング機構は採用されていない。その代わり、汎用のデータ型が組み込まれている (List
、Map
、Func
)。また、Fantom言語には、動的なメソッド呼び出しの仕組みと、自動的な型キャストの仕組みがあるため、動的片付けの言語のような雰囲気のプログラムができる。Fantom言語には使いやすいリフレクションのAPIがあり、メタプログラミングも可能である。
ポッド
[編集]Fantom言語では、開発の単位を「ポッド」と呼ぶ。ポッドは名前空間やパッケージやモジュールなどと同じものである。個々のポッドは「〜.pod
」のファイルに保存する。このファイルは、「FCode」と呼ばれるFantomのバイトコードや、関連する文書のファイルや、プログラムの実行に必要なファイルが、ZIP形式でまとめられたものである。ポッドには、他のライブラリーやアプリケーションで使われるデータ型の定義をいくつでも含めることができる。データ型の名前はそれが含まれるポッドの名前によって完全修飾される。例えば、「fwt::Widget
」という型は「webapp::Widget
」という型とは異なるものとして区別される。また、ポッドに「Main
」という名前の型が含まれていれば、「fan <podName>
」というコマンドでそれを実行することができる。
Fantom Widget Toolkit
[編集]Fantom言語の処理系には、「Fantom Widget Toolkit」(または、「FWT」)と呼ばれる標準のウィジェット・ツールキットが同梱されている。FWTはいくつかのプラットホームで使えるように設計されている。現在のところ、FWTの実装としては、Java仮想マシンで動作するSWT用のものとJavaScript処理系で動作するcanvas用のものと、JavaFX用のものがあり、ウェブブラウザーでもFWTのアプリケーションを使うことができる。また、Microsoft .NET 共通言語ランタイムで動作する Windows Forms 用の実装を作成する計画もある。
例
[編集]Fantom言語による Hello, World! プログラムは以下のようになる。[2]
class Hello
{
static Void main() { echo("Hello, World!") }
}
言語の名前
[編集]この言語はもともと「Fan」という名前だった。この言語の作者が住んでいる米国バージニア州リッチモンドの住所にちなんでつけられたからである。しかしその後、この言語の知名度が上がるに伴い、この言語のコミュニティーのメンバーたちが、この言語の名前のSEO対策について問題視するようになった。そして、2009年9月に、この言語の名前は公式に「Fan」から「Fantom」へと変更された。[3]
関連項目
[編集]脚注
[編集]- ^ “Build 1.0.80 - FANTOM”. Brian Frank,Andy Frank. 2024年5月9日閲覧。
- ^ http://fantom.org/doc/docIntro/HelloWorld.html
- ^ 「Fan is officially now Fantom」
外部リンク
[編集]- 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」