Entry

本日もため息 - OOP の犬猫は変数の箱より極悪

2009年02月20日

先日の話で,hiboma さんに犬猫の話を思い出させてもらったので,ちと書いときます。ま,いろんなところで言われてるんだけど。

hiboma hiboma OOの犬やら猫やらの問題みたいな 2009/02/19 CommentsAdd Star

はてなブックマーク - qune: 本日のため息 - 最初に変数を「箱」に喩えたやつ誰だ

よくある話だけれど,これは変数を「箱」に喩えるより極悪な喩えだと思う。かなり前に聞いた話だけれども,業界某企業に勤めることになった研修中の知人が何をやってるか聞いたところ,「人」クラスを作って,「太郎」インスタンスやら「花子」オブジェクトやらを走らせたり笑わせたりしてたらしい。本人は嬉々として「プログラミング楽しい!」とか言ってたけど,こんな意味のないことにお金を払う企業ってのは,ずいぶん余裕のあるトコだなぁと思う。

OOP は多義的なもんで,説明の仕方はいろいろあっていいとは思うんですけれど,少なくともプログラミングの文脈では,「プログラムモジュール」の考え方に沿ったもんである必要があるはずです。モジュールというのは,つまるところ,プログラムの一部ないし全部を,部品として取り扱うということ。

じゃ「部品」ってなんだよ,という話になるんだけれども,これは実際に部品化する必要を感じないと,なかなか実感できなかったりするし,手法もたくさんあったりします。OOP はそういう文脈の中で説明されないと,実際の実装には生かされないんじゃないだろうか。この点,年配(といっても一般的に見たら若い方)のベテランプログラマさんなんかには,長年 POA(Process Oriented Approach; プロセス指向アプローチ)に親しんでいて,「OOP のありがたみが分からない」とか言う人もいます。けど,彼がプログラムを部品化していないかというと,そういうわけではありません。ある程度の規模のプログラムを作るには,どうしたってプログラムを部品化しなくちゃいけないからです。彼は OOP とは別のやり方で部品化してきたし,OOA のオーバーヘッドと部品化する際の利便性を秤にかけて,あえて POA を選び取っていたりする。

この点,犬猫クラスや人クラスなんつもんは,「オブジェクト」の直訳にひきづられた下手な喩えで,少なくともプログラミングの説明としてはまったく意味がない。ここまでこき下ろすのもアレだとは思うけど……。世の中でよく使う Command オブジェクトや Factory オブジェクトは走ったり吠えたりしないけど,大丈夫だろうかと思う。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN