* * *
* *"> *
* * *
Akihito Nagata's Page
|
|
Ocamlとは?rakuda
Ocamlとはプログラミング言語ML(Meta Languageの略)の方言の一つ。MLにオブジェクト指向ができるようにしたもの。

関数型言語

SchemeやLisp,Haskelなどと同じ関数型言語。関数型言語とは全ての部分式が値を持っているような言語。lambda計算に基づくような言語。

静的に強く型付けされた言語

型システムの必要性。

プログラマが定義されていないコードを書いた場合に対処するには、言語はこれらに何かしらの意味をつけるか、もしくは禁止するという2つの選択肢がある。C言語では実装に依存した適当な意味をつけているが、これらはエラーを導きやすいので禁止するのはよい対策の一つである。
プログラム言語は型システムの視点から3種類に分類することができる。
  1. 動的に型付けされた言語。Scheme,Perlなど。
  2. 静的に型付けされた言語。ML,Java?など。
  3. 厳密に型付けされない言語。C.
上の2つは型検査が行われるので安全が保証される。これに対しCは厳密に型が検査されないのでそのプログラムでは検出できなかったセグメンテーションエラーなどのエラーが起こる。
SchemeやPerlは演算を行う直前に引数の型をチェックする。この場合は言語にかかる制約は少ないので自由度が増し非常に書きやすいプログラムとなる。しかし演算が起こるたびに型検査が行われるので実行効率がわるい。
これに対してMLは型検査の大部分をコンパイル時にしてしまう(コンパイル時に全ての型を検査するのは不可能)。こうすることにより実行時の型検査を大幅に減らすことができ実行効率はあがる。しかし、言語にかかる制約は大きくなるためプログラムは書きにくくなる(制約が大きいのでほとんどのバグはコンパイル時に検出できるのでよいという面もある)。
つまりMLはプログラマにプログラムを書くときに苦労させておいて、そのあとは効率よく安全に実行できるというすばらしい言語。
|
前のページはこちら