Oh 脳《106》「クラスに頼らない OOP」を体験すると…

記事一覧|Oh 脳: after ZERO《其之佰陸》
「クラスに頼らない OOP」を体験すると…

《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2009/03/30

セミナーの枕で紹介した小ネタ集です。息抜きや話題作りにどうぞ (^.^)

セミナー通信:受講者のみなさんへ

差出人: 	sketch@par.odn.ne.jp
件名: 	《セミナー通信》受講者のみなさんへ@2009/03/30
日時: 	2009年03月30日 22:00:57:JST

------------------------------(きりとれません)------------------------------
この内容は、過去のセミナー受講者のみなさんにも、同時に配布しています。


「クラスに頼らない OOP」を体験したことで、OOP の本質に迫るとともに、その醍醐味を堪能できるヒントが得られたら幸いです。クラスを使ってコードを記述できるからと言って「OOP を理解している」とは限らない。それを疑ってみるだけの価値があることを、お分かりいただけたでしょうか。

Java/C#オブジェクト指向プログラミング(OOP)を学び始めると「クラス」の存在に目を奪われて、ともすると、OOP の本質である「オブジェクト」の存在が蔑ろにされがちです。実際に、クラスを前提に記述したコードの断片には手を加えずに、そのまま「クラスに頼らない OOP」でも実行できることから「クラスは必須でない」ことを体感できたかと思います。あくまでも「オブジェクト指向」であって「クラス指向」ではないのですから。

正解に至る道もひとつとは限らないので「クラスに頼らない OOP」を実現する方法も様々です。時間の都合で割愛した、クロージャー/高階関数の事例も記事にしたので、OOP の本質を理解するのにお役立てください。

Python à la carte《12》クラスに頼らない OOP(6)
http://d.hatena.ne.jp/kotsubu-chan/20090217


... zap ...
「新たな言語仕様に漂うメタボリック症候群の不吉な匂い」でも紹介したように…
http://d.hatena.ne.jp/kotsubu-chan/20070623

はてなキーワードの「高階関数」の末項に、Ruby の事例があったので、Python の事例を加えておきました。冒頭にある数学の定義との「乖離」に着目するのも一興です。システムの設計と同様に、言語仕様の設計も大切です。後で新機能を追加するのは仕方ないにしても、それと引き換えに言語仕様が複雑になるのは困ったものです。Java/C# などがその典型で「反面教師」にすると良いでしょう。

Python では、関数をクロージャー/高階関数として利用するときも、同じフレームワークに従います。そのため、構文規則を拡張したり、新たな予約語を追加する必要もありません。言語仕様の背景に「統一された概念モデル」があれば、Ruby の事例のように冗長な表現は不要です。関数か/クロージャーか/高階関数か…の違いを意識する必要はありません。統一された概念モデルに沿って「洗練された」コードを記述するだけです。


... zap ...
タケコプターと Ruby」でも紹介したように…
http://d.hatena.ne.jp/kotsubu-chan/20071027

たとえば「ドラ焼き」にしても、いまどきの子供たちはドラえもんの好物だから「ドラ焼きだよ」との声も珍しくありません。漢字変換すると「銅鑼焼き」なのですが、そもそも「銅鑼」の音を聞いたこともないのですから、無理もないのでしょう。

WBC とは、World Baseball Classic の略ですが、その classic には「古典的な」という意味とは別に「一流の/最高水準の」という意味が込められています。雛鳥は、初めて目にした動くものを、自分の親と信じて疑わないとされます。同様に、初めて目にしたプログラミング言語との「初恋病」に陥らないように、ご用心ください。同じ機能が「古典的 classic とされる」他の「一流 classic の」プログラミング言語では、より洗練された形で、とうに実現されていたりするので、それを調べてみるのも一興です。すると、輝いて見えた「新機能」でさえ、色褪せた「未来の思い出」になるかもしれませんよ。(^^)