プログラミング言語
(Programming Languages)
ここでは、言語化すると自分の理解も明確になるという考えの下に、主として関数プログラミング及びその言語を趣味的に論じたり、翻訳を載せています。
ですので、内容の正確さは必ずしも保証できません。
プログラミング言語の
基礎概念
Programming Language Concepts
関数型言語を理解するのに知っておいた方がよいプログラミング言語の基本概念を説明しています。ただ、かなり基本的なことも説明しているので、通常の言語の基礎概念集でもあります。
Rubyで
関数プログラミング
Introduction to
FP in Ruby
Rubyは、命令型的オブジェクト指向言語ですが、関数プログラミングを行うのに必要ないくつかの機能を備えていますし、動的型付きの言語で、明示的型宣言を必要しない上に、基本的にインタプリタ言語であり、入門用には適切なので、Rubyを使って、関数プログラミング入門を示してみたいと思います。
純粋関数型言語
コンカレント クリーン
Purely functional language
Concurrent Clean
日本では余り知られていませんが、非常に優れた純粋関数型言語Concurrent Cleanの使い方、チュートリアル・言語リポートの翻訳を載せています。一応ここだけ見れば、Cleanの基本は分かるようにしているつもりです。純粋関数型という最先端の言語でありながら、統合開発環境を持ち、GUI作成のライブラリも豊富な、そして、効率的なexeファイルを出力するコンパイラです。インタプリタではありません。
やはり言っておくべきなのでしょうが、ここにある内容は、基本的に、明示的型宣言を行う命令型言語及びオブジェクト指向言語(具体的には、C/C++、Java、C#、Pascal等)をやった人でないと分からないような内容が多いかもしれません。
ただ、Rubyの所は、Rubyだけ分かっていれば分かる内容だと思います。
個人的な意見ですが、関数型言語それ自体は命令型言語を勉強しないままでも入って行けると思います。しかし、やはり書籍等を見ても、命令型が圧倒的に主流なので(というか、日本語の書籍は全くと言っていいほど無い。売れないのと、書ける(翻訳できる)人が余りいないというのが理由でしょう。)、そちらの方が教材が豊富だというのが現実です。英語の文献等はウェブ上に沢山あるので、英語がそれなりにできれば何ら問題ありませんが、そうでない場合にはアクセス手段が学校の授業とかその程度しかないということになろうかと思います。従って、まずは命令型でプログラミング一般の基本をやってから関数型言語を勉強すると、より良いかもしれません(というか、英語を勉強して貰った方が望ましいです)。ただ繰り返しますが、関数型言語はプログラミングの教育には向いているとされている言語ですので、やってみればあまり難しくないと思います。アルゴリズムの記述に関しては関数型の方が明らかに楽です。関数プログラミング言語というと、全体的に理論先行で、それを実装してみるということは全体的に少なく、あっても実用的でないという印象を持つ人が多いと思います。実際そういえることも多く、それは関数プログラミングにとっての不幸だと思います。ところが、最近では、単に趣味・教育・研究用というだけではなく、実用的でシリアスなプログラミングに耐え得る開発環境も登場してきています(CleanIDEがその最も優れたものの1つです)ので、是非関数プログラミング言語を使用されることをお勧めします。