OCamlの特徴

とりあえず、がーっと使ってみての第一印象。「再帰が書きやすい」「なんだ整数は32/64ビットまでか」「Linked Listが純粋だ」「起動が速い実行が速い」「型チェックが厳しい」「日本語使えない・・・」。

  • 再帰が書きやすいというのは、どの関数型言語でも当てはまるかもしれません。QuickSortもC言語で書かれたものよりも、読んで理解しやすいです。もちろん、標準でLinkedListのサポートがあったりするのも理由の一つですが。
  • 整数は32ビットもしくは64ビットで表現できるところまで。これはC言語と同じです。PythonMatlabの「整数のビット長は実質無制限」に慣れてしまったので、ちょっと不自由かも。でも、マシン・ネイティブなコードを生成するという意味では合理的か。
  • ひとつのLinkedListには同一の型を持つ値しか入れることができません(すでに整数が入っているリストには整数しか入れられません)。Pythonではリストに整数やら文字列やらクラス・インスタンスやらを何でもぼんぼん放り込めたので、ちょっとカルチャー・ショック。ただ、使い方によってはより分かりやすいプログラムが書けるかも。
  • 起動も実行も速いです。これはかなり得した気分。コンパイラも付いているし、グラフィックスも使えるし、これは良い感じです。
  • 整数と浮動小数点実数を厳密に区別していて、自動的に型変換を行いません。自動型変換はC言語Javaでバグの元になりやすいところだったので、僕としては歓迎です。ただ、型の変換を行いたいときには毎回キャストを明示してやらないといけないのはちょっとめんどくさい。

PythonやCやJavaとは考え方を変えないといけませんね。オブジェクト指向だし、(非純粋な)関数型だし、ネイティブ・コードを吐くための工夫があるし、すごく和洋折衷な雰囲気が漂っています。とにかく実用性を求めて関数型言語をアレンジしていたらこんなんできちゃいました、というかんじ。ドキュメントが少ないのが大変かも。あと、日本語はほとんど通りません。一応コンバータは誰かが作ったのがあるみたいだけど、文字カウントとかをやらせるとダメです。Pythonも2.4から日本語にある程度対応してきたけど、まだまだ日本語使うんだったらRubyとかJavaなんだよねー。