なぜ関数型言語は普及しないか (2)

前回の記事の続編。色々反響があったみたいだが、最も気になったのは、「手続き型と関数型はパラダイムが違うのに、なぜ1対1に対応させる必要があるのか」ということ。


私の考え方をもう少し補足説明。私も手続き型と関数型を1対1に対応させるのが正解とは思っていない。しかし、プログラムは動いてナンボだと思うので、まずは動くコードが書けなければならない。手続き型に慣れた人間は、関数型に1対1に対応させる知識があれば、とりあえず動くプログラムを書ける。それが第一ステップ。


動くコードがかけるようになったら、次は、より関数型言語の考え方に合った書き方に部分的に変えていく。例えば、(必ずしも当てはまらないが)if文で書いていたところをパターンマッチに変えたりなど。


そもそも、関数型言語の初心者が、いきなり関数型のパラダイムを理解して書ける訳がない。これは、オブジェクト指向初心者が、いきなり良いクラスの設計をできなかったり、オブジェクト指向の考え方を間違って理解していたりするのと同じ事。オブジェクト指向の考え方を勉強して、試行錯誤してプログラムを書いてみて、やっと理解できるのが普通。


なので、私の考えとしては、以下のステップで関数型言語を勉強してはどうかということ。

ステップ1)まずは動くコードを書ける
ステップ2)徐々に関数型の考え方を取り入れていく