「関数型プログラミングに目覚めた!」を読んだ.
関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日 読みました.
この本を支持します
通して読んでみてツラいところは確かに沢山あったのですが,結果的には関数型プログラミングの知識がついたし,「なぜ今,関数型プログラミング」なのかについても理解できた.
ただ,続いて記述しているように評価できないところもあります.
Amazonレビューの酷評について
この書籍,Amazonのレビューで酷評が多いです. 残念なことですが,しょうがないことなのかもしれません.
実はこの本は最初の方の章がネットで公開されていたようで,それを読んだ人で購入した人が多いように感じます. ここは実は僕も同じような感じで,書店で冒頭部分を立ち読みして購入したのです. 冒頭部分は確かに秀逸な関数型プログラミングの内容なのです.
この本は,最近流行りの?先生と生徒の会話調(書籍帯によるとラノベ)で話が進みます.先生役は高校コンピュータ部の先輩の美少女で生徒は彼女を憧れる少年です.ラノベw
なんだけど,
この本は話の割合が,
1 / 5 が関数型プログラミングの話
3 / 5 が論理についての哲学の話
1 / 5 がAmazonのLambdaとFacebookのReactのFRPの話.
実に6割が哲学の話!!!
ソクラテスにはじまり,プラトン,デカルト,スピノザ,,,これはラノベだと思って読むには重すぎなのですね.(それでもわかりやすかったですが.)
そして,「関数型プログラミング」と「哲学」が関係あるの?,という疑問が沸き起こります.そう,そう思うのは当然.少なくとも書籍タイトルには入れるべきだったでしょう.
僕もちょっとそこがツラかったです.もっと割合を少なくし,書籍自体も薄くすべきだったと思うです.
関数型プログラミング
本題ですが,なにぶん哲学の話が多いので書けません.
わかったことを軽く書きます.
関数型プログラミングでは以下を分離して考える
- 論理 (ぶっちゃけ,関数)
- 物質 (ぶっちゃけ,データ(INPUT,OUTPUT))
関数とは,問題を解決する論理
問題とは,入力データ(パラメータ)
解決されたものとは,出力データ(結果)
論理世界
- 論理世界でないものは,物質世界
宣言型プログラミング
- 「まとまり」という論理構造をまるごと操作する宣言型のコード
- フローはない
- コードは静止
immutable = 不変であること
- 参照透過である = 関数に渡したパラメータは不変である
対象するのは,命令型プログラミング
- 処理フローは不要
- 状態変数は不要
- 破壊的代入
- 計算処理(関数でラップする)
- 計算処理は,コンソール出力処理などを含む
JavaScriptはなくならないけど...
JavaScriptは関数型プログラミング専用の言語ではない.プログラミングされているものの多くがオブジェクト指向を意識したものだし,ES6では完全にclassが導入される.
この本を間に受けると,ES6は,ES5までで書かれたオブジェクト指向なコードの後方互換ではないか?と思う. 正直言ってクッションとしか言えなくなった. でもJavaScriptは永遠になくならない.Webが壊れてしまうからだ.
読む価値
オライリーの「JavaScriptによる関数型プログラミング」を再読し始めた.
以前読んだ時が如何に読んだだけだったことがよくわかった;
「関数型プログラミングの需要」があることと,「なぜ今」なのかを知ったことで違った読み方になっている. これらに疑問を持つ人なら読む価値は十分にあると思う.