結局のところ関数型プログラミングってなんなのさ
Scalaに興味を持ち始め、はや2週間ほど経ちました (タスク等で全然勉強する時間取れてないけど...)
そもそもScalaとは
オブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語である。 名前の「Scala」は英語の「scalable language」に由来するものである。
...scalable language
すごくクールじゃないか
...ん?
そもそも関数型言語ってなんだ...?
これはまずい、ということで調べました
関数型プログラミングとは
にもあるように「永続データプログラミング」であると定義されています。
永続データプログラミングとは、永続データすなわち破壊できないデータ(再代入不可)を駆使してプログラミングを行うという手法です( ˘ω˘) 簡単に言ってしまうと一度定義した変数に再度値を代入しないようにプログラムを組んでいくという方法ですね。
今まで命令型プログラミングしたことない自分にとってはにわかに信じがたかったです((((´ʘ‿ʘ`))))
関数型プログラミングのメリット
- 厳密な型検査により高いエラー検出率を誇る。特にScalaのような静的型付け言語は徹底的な型検査がコンパイル時に行われるため効果は更に高い(おのずとテスト駆動になる)
- 関数プログラミングの組み立ては基本的にバグが少ない小さな関数を組み合わせて大きな関数を作っていくため、そのため小さな部品を組み合わせて一つの完成体を作るようなプログラミングが可能
- プログラムを式のみで構成するという規律を学んだり、副作用がある関数とない関数を意識して分けるようになるためプログラミングがうまくなる
まだ関数型プログラミングについての理解はなんとなくですが、今回調べることによって少しイメージがついてきました( ˘ω˘)
次はコード例も示しつつ解説していけたらな、と思っております(๑´ڡ`๑)