"コーディングを支える技術" を読んで

"コーディングを支える技術" を読みを終えたので、感想を記してみたいと思います。

きっかけ

本書を読むきっかけとなったのは小飼弾さんのブログ記事、言語を支えるコンセプト - 書評 - コーディングを支える技術を読んだことでした。

今までいろいろなプログラミング言語をつまみ食いして、プログラミングの世界によく出てくるキーワード 「継承、型、Mix-in」などなどをわかった気 (?) になっていましたが、「一度振り返りの意味も込めて読んでみよう」と思い、本屋さんで手に取りました。

感想

本書は色々なプログラミングに取り入れられている仕様、仕組み、概念が『なぜこうなっているのか』を学ぶための本だと思います。if 文や for 文などの基本的な制御構文から始まり、コンテナやクラスなどのよく使う機能を「他の言語との比較」や「歴史からの経緯」の二つの観点から解説されています。私としてはこの二つの観点から言語の仕組みを解説されているのが、「とても論理的でかつ面白い!」と思いました。

本書の中では色々なキーワードについて、比較と歴史から解説されていますが私が特に勉強になったことを以下に上げてみます。

当たり前の仕組みの「なぜ」を学ぶ

プログラミングをしていると当たり前のように if 文や for 文、クラスや型を使い、それがあるのが当たり前のように思っていましたが、本書ではそれがどういった経緯で作られたのかが解説されており、とても新鮮で面白かったです。ほとんどのものは何かを楽にするために作られた、というのが主な目的でしたが、それがなかった時との比較がきちんとされていて理解し易かったです。

言語によっての解決方法の違い

プログラミング言語によっての解決方法の違いが、きちんとコードを使って解説されていてとてもわかり易かったです。例えばある機能を再利用したい場合、Java では継承や委譲を使い、Ruby では Mix-in を使う、などそれがコード付きで解説されていたのが良かったです。(すいません、例が微妙かもしれません...)

クラスが持つ複数の役割

3 つ目はクラスがもつ役割の複数の役割についてです。ある言語では主に「振る舞いの仕様」としてクラスを使っていたり、また、ある言語では「コードの再利用の単位」としてクラスを使っていたりと、一言にクラスと言っても複数の役割があるということを意識させられました。また、クラスという概念が複数の役割をもつ事によって、どのような問題があるのか、またそれを解決するためのアプローチが書かれており、面白かったです。

まとめ

あまり長々と書いても疲れるだけなので、上ではなるべく短く書きましたが、言語の色々な仕組みについて書かれていてとても面白く、かつ抽象的な説明と具体的な説明のバランスが良く分かりやすい本だと思います。本書でプログラミングに関することを再勉強、再確認ができたと思います。

何より良かったのはプログラミング言語の概念の「なぜ」を考える意識が、少なからずですが自身のなかにできたことだと思います。是非ご一読されることをおすすめします!