Haskell勉強会

関数型プログラミングの学習日記

プログラミングの基礎 1.2 使用する言語

今日も関数型プログラミングの学習です。

 

haskell.hatenablog.com

 

1.2 使用する言語

(p.3)

本書で使用する言語は、関数型言語のひとつであるOCamlです。

これで「オーキャムル」と発音します。

 

本書では、OCamlを使ってプログラミングを学習します。

 

OCaml - Wikipedia

OCaml(オーキャムル、オーキャメル)は、フランスの INRIA が開発したプログラミング言語MLの方言とその実装である。

MLの各要素に加え、オブジェクト指向的要素の追加が特長である。

かつては Objective Caml という名前で、その略として OCaml と広く呼ばれていたが、正式に OCaml に改名された。

もとはCamlという名前の、MLの方言の処理系実装、および言語であった。

この名前はcategorical abstract machine languageの頭字語である。

 

ML (プログラミング言語) - Wikipedia

ML(えむえる、Meta-Language)は、関数型言語のひとつである。

現代風の関数型言語としては歴史が古いほうで、型推論機能などを持つが、デフォルトの評価戦略は遅延評価ではなく先行評価で、書き換えが可能なレコード型を持つなど、いわゆる「純粋関数型」でない特徴や機能を持つ。

 

https://caml.inria.fr/ocaml/

f:id:hamamuratakuo:20180820200532j:plain

 

もとは「ML」という言語があって、それにオブジェクト指向の機能を追加して発展させたのがOCamlということみたいです。

 

プログラミング言語について学ぶのであれば、Javaなどのオブジェクト指向言語、あるいはCやPascalといった命令型言語を思い浮かべる方が多いと思います。

それらを使わずに、あえて関数型言語であるOCamlを選ぶのには理由があります。

それはOCamlが「単純、かつ強力である」からです。 

 

そうですね。

最初は、Javaでプログラミングを学習しました。

最初にOCamlから入っていれば、もっと違う道を歩めたかな?

 

単純ということはすなわち簡単ということです。

OCamlでプログラムを作るのは、JavaやCで作るよりもずっと簡単です。

それは、より人間の思考レベルに近い記述ができるからです。

 

もしかして、Javaをディスってる~!?www

まあ確かにJavaは面倒くさいと思うときがあるのでOKですが(・∀・)

OCamlで楽ができるならいいな~www

 

さらに、プログラムの記述量が違います。

OCamlで書いたプログラムと同じことをするプログラムをJavaやCで書こうとすると、ほとんどの場合、コード量にして10倍以上になります。

 

そこまで言うなら、OCamlはやっておいて損はないでしょう!!!

 

将来、JavaやCでプログラムを作ることになった場合にも、ここで学んだことは直接、役に立ちます。

むしろOCamlでプログラミングの基礎を一度おさえておくと、JavaやCでのプログラミングがとても楽になり、加えてできあがるプログラムの信頼性も向上します。

実際、本書にしたがって授業を行うと「Cでのプログラミングがとても楽になった」という声を頻繁に聞くようになります。

 

世界的にも、プログラミングの習得にはわかりやすい関数型言語から始め、その次にオブジェクト指向言語に進むのがよいとされています。

 

プログラミング言語の優劣や好き嫌いを論じると、一種の宗教戦争のようになって、意見が割れますが、TPOに応じてどの言語でも活用できればOKだと思います。

OCaml関数型プログラミングの基本を学び、その他の言語を使う場合でも応用できればそれでOKと。

 

本書で、OCaml関数型プログラミングの基本を学びたいと思います。