最近、仕事が少し落ち着いてきてようやく読書の時間を確保できるようになりました。

こういう時間って大切だな〜と痛感しながら、積ん読状態だった本を片付けています。

読み終えたのは「コーディングを支える技術」です。

数多あるプログラミング言語の成り立ちを追いかけ、なぜそのような言語仕様が生まれたのか、設計されたのかが書かれていておもしろかったです。

なにかひとつでも得意な言語がある人は読む価値がある

いろいろな言語を比較しているのですが、残念ながら自分がメインで使用しているObjective-Cに関する記述は一切なし。ちょっと寂しかったですね。

ただかじった程度のPython、Rubyなどについては結構書かれていてちんぷんかんぷんにはなりませんでした。

読んでいて感じたのは特定の言語のこの文法が「こういうものだ」程度にしか受け止めていなかった場合、この本は非常に価値のあるものになると思います。

同じオブジェクト指向でもC++とSmalltalkでは全く思想が異なることなど、今まで考えたこともありませんでした。オブジェクト指向はオブジェクト指向で概念的なものなので違いはないと思っていたのですが、C++は型と継承を大事にしていて、Smalltalkはメッセージを重視している思想の違いがあり、こうも違うものなのかと。

それからおもしろかったのはクラスの役割を「インスタンス生成器」と「再利用の単位」に分けて解説していた部分です。オブジェクト指向自体が役割を細かく分けて設計・実装することを意識しなければならないのに、オブジェクト指向の大事な概念であるクラスそのものが相反する役割を持っているという。この辺の話はトレイトに関する部分で触れているので読んでみてください。

まとめ

ちょっと最初の方を読んだのが結構前なので読み直してみようと思います。この前「オブジェクト指向でなぜつくるのか」を読んだのですが、その流れこの本を読んでみると色々と見えてくるものがあっておもしろかったです。

特に最近はSwiftも触っているので、こういう特定の言語に依存しない類の読み物は非常に重宝します。特にSwiftがいろいろな言語の良い所取り言語なので、幅広い知識を一冊で見ることができるのはとても良いですね。WE+DB PRESS系の本はなかなか外れがなくていいです。

次はこれまた読みかけの達人プログラマー―システム開発の職人から名匠への道を読もうかと思っているのだけれど、すでに2回くらい読んでいるリーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)を読み返してみるのも悪くない。う〜ん悩ましい。

そんなことをやっていると2014年もあっという間に終わりそうな気がする。