是非に及ばず

プログラミングに関する話題などを書いていきます(主にRailsやAndroidアプリ開発について)

オブジェクト指向を理解したければRubyを使え!

普通の構造化プログラマーがオブジェクト指向の存在意義を理解するコツ
を読んで脊髄反射してみる。
自分自身がRuby信者(笑)なので、Rubyをおすすめするわけなんだけども、中途半端にオブジェクト指向機能が入っている言語で学習したところで構造化プログラミングから抜け出せないんじゃないかなと思う。
環境が人を作るという事もあるので、まずは全てがオブジェクトであるRubyでしばらくプログラムしていれば、オブジェクトの世界で自分がどう歩くべきか自然と分かるんじゃないかな。
なにしろ、Rubyの世界にはオブジェクトしかないわけで、int型とかなくて1とか2とかの数字は実はFixnumクラスのインスタンスだったりする。だから、1.to_sだとか、1.absなんてのが実行できるし、1.methodsで1が持つメソッド一覧を取得できたりする。
なにそれ、すげー!と感じたら、あなたは分かっている、または分かりかけている人です。
プログラムって論理的なイメージがあるけど、かなり感覚的だと思う。
人間のやる事だし。

例えば、構造化プログラミングだと、1という数字の絶対値を求める処理は、

abs(1);  # 絶対値を求める関数に1を引数として渡して、結果を返してもらう

という感じだけど、オブジェクト指向なら

1.abs  # 1に対して、絶対値を聞く(教えてもらう)

だろ?
という感じなんだけど、この感覚をなるほど!と思えるかどうか。
それがオブジェクトを理解しているかどうかなんだろうな。
オブジェクトの事はオブジェクトに聞けという事でね。
1に関する情報は、1が知ってるだろ?
だから1の絶対値を求める処理(メソッド)は1の方に実装するんだって感じ。

文章力がないため、うまく説明できないが、とりあえず自分の中ではこういう感じなのだ。