基本情報
概要
OCaml(オーキャムル)とは、オブジェクト指向を取り入れた関数型プログラミング言語です。言語理論研究の成果が取り入れられており、高信頼で簡潔なコードを記述できます。プログラミング言語「ML」から派生しています。
プログラミング言語「ML(Meta Language)」とは
「ML(Meta Language)」は、「静的型チェックを行う型付き言語」でありながら、「Lispのような柔軟なプログラミング」が可能です。「パターンマッチング」「多相型関数」「モジュール」などの特徴があります。
基本説明
OCamlは、「ML」言語をベースとし、オブジェクト指向的要素が追加された関数型言語です。
経緯
OCamlは、フランスのINRIA(フランス国立情報学自動制御研究所)で開発された言語です。
「OCaml」は「Objective Categorical Abstract Machine Language」の略称名です。
かつては「Objective Caml」という名前でしたが、「OCaml」に改名されました。
主な特徴
オブジェクト指向
「関数型」と「オブジェクト指向」の両方の特徴を併せ持ちます。
オブジェクト指向を利用して、破壊的操作を伴うプログラムを容易に書けてしまう一面があります。
高信頼/簡潔コード
型安全な静的型システムを基盤にしているため、バグの少ない高信頼なプログラムを作成できます。
「型推論」「代数的データ型」「モジュールシステム」「多相バリアント」「オブジェクト」「第一級モジュール」「GADT」などのさまざまな機能を利用して、整理された簡潔なコードを記述できます。
高速性
関数型言語としてはかなり高速に動作します。gccでコンパイルされたC言語と同等程度とされています。
コンパイラ
「バッチコンパイラ」はプログラムをコンパイルして実行可能ファイルを生成します。バイトコード変換用コンパイラ「ocamlc」/ネイティブコード変換用コンパイラ「ocamlopt」の2種類が用意されています。
ネイティブコード変換用コンパイラ「ocamlopt」は、x86/x86-64/ARM/PowerPCなど、多数のアーキテクチャのネイティブコードを出力できます。Android/iOS向けのクロスコンパイルも可能です。
「対話式コンパイラ」も利用できます。
高階関数(higher-order function)
「関数を他の関数への引数として渡す」「結果として関数を受け取る」などが可能です。
パターンマッチング(pattern matching)
宣言的なプログラミングサポートを利用できます。
静的型システム(static type system)
型安全性を高めます。
多相型システム(polymorphic type system)
「プログラム中の1つの式に複数の型を割り当てる」ことが可能です。コード再利用性を高めます。
型推論(type inference)
煩雑な型宣言を省略できます。
モジュール・システム(module system)
「分割コンパイル」「抽象データ型によるプログラム部品間の情報隠蔽」「言語に新たな基本データ型を加えるようなプログラミング」が可能です。
パラメータを持つモジュール「ファンクタ(functor)」により、再利用性を高められます。
ガベージコレクション(garbage collection)
自動メモリ管理が行われます。エンジニアがメモリ管理に悩まされることはありません。
同様製品
同様な機能を提供する製品として、次のようなものがあります。
オープンソース製品:「F#」「Scala」「Lisp」など。
導入事例
関数型言語としては比較的多くのアプリケーション開発に利用されています。
プログラミング言語/コンパイラ実装「Haxe」、C言語用プログラム解析フレームワーク「Frama-c」などへの採用実績があります。
ライセンス情報
OCamlのライセンスは「Q Public License」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。
ダウンロード
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。