いものやま。

雑多な知識の寄せ集め

『オブジェクト脳への一歩』というLTをしてみた。

株式会社ラクスさんの主催する勉強会で「リーダブルコード LT会 - vol.3」というのがあったので、LT登壇してみた。

話したのは『オブジェクト脳への一歩』というLT。

オブジェクト指向の本はいろいろあるけど、一番の入り口である「処理から考え始めるんじゃなくて、データから考え始める」という部分に自覚的な本って見た記憶がないよなというのがモチベーション。 といっても、自分もこれに気がついたのは最近で、意識することなくいつのまにかオブジェクト指向的な考え方に慣れていたというのが実際のところ。 でも、ここに自覚的になれると、オブジェクト指向でプログラミングするってこういうことだったんだと一気に視界が開けるんじゃないかなと思う。

オブジェクト指向の本の話

ちなみに、「オブジェクト脳」という言葉を使ってる本といえば、コレ:

評判悪くない本なんだけど、自分が読んだときの感想は、たぶんこれ読んでもオブジェクト指向できるようにはならないよなぁというもの。

あと、オブジェクト指向に関する有名な本といえば、コレ:

この本も割と残念というか、別にオブジェクト指向に限った話じゃないことをさもオブジェクト指向のおかげであるかのように話してたり、視野の狭さが気になった。

いずれにしても、処理を中心に考えるんじゃなくて、データを中心に考えるんだという発想の転換が示されてないので、オブジェクト指向的な考え方に至らないんよね。

良さげな本で頭に浮かんだのはオライリーのHead Firstシリーズの『オブジェクト指向分析設計』だけど、今見返すと、うーん、ちょっと余分な情報が多くて読みづらいかも。絶版だし、Javaのコードも古くなっちゃってるからなぁ。

ただ、ユースケースをどう書いたらいいのかとか、そこからどう設計に落とし込んでいくかなど、学べることは多いと思う。 同じHead Firstシリーズの『デザインパターン』の本も悪くない(ただしこれも絶版だし古い)。

なんかいい本があるといいんだけど。 (自分で書くしかない?)

関数型とオブジェクト指向

ちなみに、最近はオブジェクト指向なんか古くて今は関数型だよ、という人がいるけど、それは全然オブジェクト指向を理解できてない。

関数型と対比されるべきなのは手続き型で、これらは計算モデルが違っていて、関数型はラムダ計算を基礎に持ち、一方で手続き型はチューリングマシンによる計算を基礎に持つ。

対するオブジェクト指向というのは、関数型、手続き型の両方の上位にある考え方で、関数型とぶつかるものじゃない。

実際、関数型言語であるErlangの開発者の一人であるアームストロング氏は、最初オブジェクト指向を批判したものの、のちに「Erlangこそオブジェクト指向である」と言っていたりする。

結局、いい設計になってるかどうかが肝心で、オブジェクト指向言語で書いていてもオブジェクト指向的でないゴミのような設計になってれば、当然分かりにくい。 それをオブジェクト指向のせいにしないでほしいなぁ。

今日はここまで!