関数型プログラミングを実践する決意表明
決意表明
当ブログでも何度か関数型プログラミングについて書いたことはあるけれど,残念ながらその何度かはいずれも失敗の結果となってしまっている.
今度こそはと,腰を据えて,学習・習得・実践をするためにあらためての決意表明です.
FP
エントリタイトルの「FP」は「Functional Programming」です. 以降は,「FP」,「Functional Programming」,「関数型プログラミング」,「関数プログラミング」と言ったりすると思います.(これは困ったものです...)
目的
関数型プログラミングについて,誤解を恐れず,過ちを含んでいるのを承知で,短絡的に述べてしまうと,
- 純粋性がある
- 不変性がある
- 並列性がある
- テストが容易である
が,エッセンスであること,です. 故に,
- バグが減る
- デバッグが楽になる
と思っています.
自分が目指しているのは,「関数型プログラミング」であると言えます. 現行の業務では,「関数型プログラミング言語」による純粋な関数プログラミングはありえません.(たぶん)
業務では主にJavaを使っています. Javaはあくまでオブジェクト指向言語(OOP: Object Oriented Programming)です.Java8で関数型プログラミングへも注力しましたが,OOPの側面が色濃く,自分の現状では関数型プログラミングのエッセンスをうまく活かせていません.
そもそも,関数型とオブジェクト指向が相容れないのではないか,という疑問も長く持っていましたが,そうでもないようです.(まだうまく説明できません;)
そこで,いっそのこと,「関数型プログラミング言語を学んでみよう」と思い立ちました.ネット上では「関数型言語は関数型プログラミングをする矯正ギプスだ」という内容も見られます.なるほどと思いました.
というのが経緯です.