お疲れ様です。某エンジニアです。
今までC#, java, C++などでコードを書いていましたが、
オブジェクト指向の理解が怪しすぎるので書籍を読んでここにまとめていきます。
書籍はこちら⬇︎
「オブジェクト指向でなぜつくるのか」著者:平澤章 日経BP社
http://ec.nikkeibp.co.jp/item/books/P81950.html
読んだ人のコメントを調べると「読みやすい」との評価がいっぱいありました。
学生時代、大量のカタカナ語を聞かされて深い理解を諦めた自分にはぴったりかなと…
この本自体読み物的要素が強く、コードを実際に書くことはかなり少ないと思いますが悪しからず。
ということで早速1章を読んだので、まとめます。
第1章:オブジェクト指向はソフトウェア開発を楽にする技術
全体の導入ですね。この章の内容を箇条書きでざっくり書くと、
1. オブジェクト指向はソフトウェア開発の総合技術
2. オブジェクト指向がわかりづらいのはだいたい説明の仕方のせい
という感じでした。
この章は導入なので実際のコードの例はなしです。
下記にそれぞれの詳細と感想を交えて書いていきます。
1.オブジェクト指向はソフトウェア開発の総合技術
自分が前から疑問に思っていたのは、
「結局オブジェクト指向の定義って何?」
ということでした。
「オブジェクト指向」を名乗る言語が多い上、その機能にあんまり一貫性がないような…
「オブジェクト指向」というものがそもそもなんなのかという定義がわからなかったんです。
その理由はオブジェクト指向の発展の流れにあるそうです。
- オブジェクト指向の起源はノルウェーで開発された"Simula67"というプログラミング言語
- この段階でクラス、ポリモーフィズム、継承の仕組みが備わっていた。
- この仕組みが"Smalltalk"に引き継がれ、「オブジェクト指向」というコンセプトとして確立
- 同様の仕組みを備えたプログラミング言語(C++, Objective-C, Java, C#, Rubyなどなど)が開発されて現在に至る
ほぼコピペですけど上記の流れでオブジェクト指向がいろんな方向に拡張された結果、オブジェクト指向を名乗る言語が大量に開発されたとのこと。
共通点は「ソフトウェア開発関連の技術であること」、「それを円滑に進める技術であること」くらい。
ということで「オブジェクト指向を一言で言うと?」と聞かれたら
「難しいソフトウェア開発を楽に行うための総合技術」となるそうです。
「詳しい定義が書いてない」んじゃなくて、「詳しい定義をしようがない」んですね。
やっと納得しました。
2. オブジェクト指向がわかりづらいのはだいたい説明の仕方のせい
オブジェクト指向を始めたばかりのプログラマが混乱する理由は3つあるそうです。
この本の言葉を借りて挙げると、
1. 用語の洪水
2. 比喩の乱用
3. なんでもオブジェクト症候群
3つありますが要するに、
よくわからんカタカナ語が多すぎ(=用語の洪水)、
よくわからん比喩がよく使われ(=比喩の乱用)、
「オブジェクト」の定義が広すぎて、様々な解釈がある(=なんでもオブジェクト症候群)
ということです。
共感できるエンジニアの方も多いのではないでしょうか。
やたら抽象的な説明ばかりが先行して具体的な話が抜けている上、説明する人によって解釈が異なるため、
混乱を招くとのことでした。
まとめ
ということでこれらの混乱を取り除くべく、
1. 紹介する用語や概念は最小限に
2. 比喩による説明は最小限に
3. 「プログラムの仕組み」と「モノ中心で物事をとらえる考え方」は別物として
説明してくれるのがこの本だそうです。
次回は2章をまとめようと思うのでよろしくお願いいたします。