もっと詳しく

このページは最後に更新されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

last mod. 2008-05-11 (日) 16:49:37

OCamlとは

Objective Caml(略してオキャムル/オーキャムル)は、フランスのINRIA国立研究所で開発されているプログラミング言語です。プログラミング言語理論の成果を取り入れた言語で、信頼性・開発効率を高める次のような特徴を持っています。

高信頼性

強い静的型付け

強い静的型付けにより、スペルミスやデータの取り違え等に起因するバグをコンパイル時に必ず発見できます。CやJavaのような強制的な型キャストも存在しないため、実行時に型の不一致の例外が発生することはありません。

自動的なメモリ管理 (ガーベージコレクション)

メモリ管理は自動的に行われるため、メモリの確保・解放に関するバグがなくなります。しかもOCamlのガベージコレクタは速度に定評があります。

高い開発効率

代数的データ型

OCamlで新しく型を作る場合には、代数的データ型と呼ばれる方法を利用します。これは、C言語の 共用体(union)と列挙型(enum) を組み合わせたようなデータの記述方法で、非常に簡潔でありながらリッチなデータ構造の記述が可能になります。

パターンマッチング

代数的データ型の値へのアクセスには、switch文を強力にしたような構文(パターンマッチングと呼ばれます)を利用します。これにより多くの場面でかなりの記述量を削減できる上に、パターンに漏れがある場合にはコンパイラが警告を出してくれるので、同時に信頼性が確保できます。

多相型

多相型は Java 1.5 や C#のジェネリクス、C++言語のテンプレートに相当する機能です。 総称的なプログラムが記述できるため、高い再利用性が期待できます。

型推論

プログラム内の変数や関数には型推論という機能が働くため、型を明示的に記述する必要はありません。このため、いわゆるスクリプト言語に近い記述量で、先進的な言語機能を利用しつつ、コンパイル時の検査で安全性を確認することができます。

関数型指向

定義済みの関数やλ式(匿名関数)といった最も単純な手続き抽象を、第一級のデータとして扱うことができるため、より簡潔にプログラムを記述できます。

高性能なコンパイラ

9種類のアーキテクチャに対応

i386,Sparc,AMD64,IA64,PowerPCなど9種類のネイティブコードを出力可能です。

高速な実行コード

OCamlコンパイラが出力するネイティブコードはかなり高速です。 C言語で記述されたプログラムと同程度か数倍遅い程度と言われています。

その他の先進的な言語機能

強力なモジュール機能 (ファンクターなど)

抽象データ型というスタイルのソフトウェア構成法を強力に支援する言語機能です。 データの内部情報に関する詳細を隠蔽し、インタフェースに基づいたプログラミングが可能です。 オブジェクト指向に頼らずとも、関数指向のスタイルとモジュール機能を用いて、凝集度が高く結合度が低い理想的なソフトウェアを安全に構成できます。さらに、モジュールをパラメータ化するファンクターという機能もあります。

オブジェクト指向

モジュール機能と共に一般的なクラス指向のオブジェクトも利用できます。構造的サブタイピングという部分型を採用しているため、より柔軟な設計が可能になります。

多相バリアント

多相バリアントはML仲間であるStandard MLやHaskellにはない、OCamlの先進的な機能です。 まるでLispのアトムのように、タグ付きのデータをその場で作成することができ、従来のオブジェクト指向や関数型指向にはない拡張性を安全に実現できます。

OCamlの歴史

1987年にINRIAでCamlとして実装されたのが最初です。後にオブジェクト指向を追加したObjective Camlとして1996年にリリースされました。既に20年近い実績のある言語です。 その後は半年に1回程度のペースでバージョンアップが続けられており、その中でラベルや多相バリアント、再帰モジュールといった重要な機能が追加されてきました。

2008年現在は最新バージョンが3.10.2となり、フランスの研究室から飛び出して世界中で利用されています。

新規 編集 添付