バグですか?仕様ですか?筋肉です💪

筋肉とプログラミング、その他アウトプットをしていきます。

オブジェクト指向でなぜつくるのか?いや、、そもそもオブジェクト指向って?

オブジェクト指向でなぜつくるのか」という本についてのアウトプットをしていきます。

 

 

オブジェクト指向でなぜつくるのか 第2版

オブジェクト指向でなぜつくるのか 第2版

 

 

この本を読むと


オブジェクト指向とは、何者なのかがわかる。

オブジェクト指向でなぜつくるのかという問いに答えられるようになる。

 

プログラミング言語の進化の歴史


まず、オブジェクト指向とは一体何者なのか?

それを理解するために、この本ではまずプログラミング言語の進化の歴史について解説をしています。

 

f:id:takuma521:20190715210300j:plain

このように、プログラミング言語の進化の歴史は、今まで使っていたものの欠点を改善することで新しい言語が生み出されてきました。

 

最初は機械語で0と1の羅列だったのが、人間が読めるような英文っぽくなり、混乱しないように処理が行われる順番が確立、似たようなコードは1つにまとめるように進化しました。

 

そこで、たどり着いたのが構造化言語でしたが、大きな欠点がまだ2つありました。

 

グローバル変数の存在

・サブルーチンしか共通化できない。 

 

 なぜこれが欠点なのかというと、

まずグローバル変数はプログラムのどこからでも書き換えることができます。そうすると、変数に不正な値が入って直さないといけない場合にプログラム全体を見直す必要があります。もしプログラムが何千、何万行だとしたら骨の折れる作業ですよね。

 

 また、サブルーチンしか共通化できないということも、大規模なアプリケーションからするとまだまだ足りないものだったそうです。

 

 そこで、オブジェクト指向の登場です!!

f:id:takuma521:20190715210228j:plain

 簡単に説明すると、クラスでインスタンス変数という変数が生まれました。これはグローバル変数とローカル変数(サブルーチン内でしか使えない)のいいとこ取りです。

またそのクラスはサブルーチンとインスタンス変数をまとめることで、サブルーチンではできなかったロジックの共通化ができるようになりました!!

 

結果、フレームワークやライブラリなどの大規模な再利用が可能になりました。

いま私たちがrailsを触れるのもオブジェクト指向のおかげですね!

 

最初に戻りますが、じゃあオブジェクト指向

・一体何者なのか?

・なぜ使うのか?

について、本にも書かれていますが、自分なりにまとめます。

 

・一体何者なのか?

コードを整理整頓し、共通なところは1箇所にまとめ再利用しやすくし、制約をつけて事前に間違いを防ぐというプログラミングの考え方

 

・なぜ使うのか?

コードが見やすくまとまっていて、書き方のルールで事前に間違いを防いでくれることで、楽にプログラミングできるようになるから。

また、共通なコードが1箇所にまとまっていることで楽に修正を行えるから。

そして、作ったものを再利用できるので、プログラミングがまた楽になるから。

 

最後に

 

今日お話ししたのは、この本の一部ですが他にもプログラミングから派生した応用技術やオブジェクト指向の次の開発技術である関数型言語についても書かれていますので、ぜひ読んでみてください!(ちなみに私はまだ全部読んでません!笑)