個人的には、やっぱりGUIのためっていうのが、正解なのかなー。
- オブジェクト指向神話
http://d.hatena.ne.jp/yaneurao/20051230
- 最上の日記 1月15日
http://homepage3.nifty.com/mogami/diary/d0601.html#15t1
やねうらおさんの議論をみて思い出したんだけど、オブジェクト指向って言うのはGUIでもっとも生きる方法論だよね。オブジェクト指向は(要するにSmalltalk上の)GUIと共に育ち、GUIの構築の時にもっとも力を発揮するものだと思う。 GUI widgetやその背後のモデルの挙動をオブジェクト指向でなく書くのは難しい。それにGUIならクラスに任せてしまえばコードをほとんどかかなくて良くなる、つまりコード再利用なわけだけど、ここからコード再利用神話が生まれたんじゃないかと思う。
反対にいうとGUI以外の世界ではそれほど大した利得はないと思う。よくてコード量が半分になるていど。悪いとオブジェクト指向を使わないほうが短くなる。あのナップザック問題なんかはその例だよね。
かなりはやい段階(Cfrontのころから)多重継承に対応したC++だけど、「C++の設計と進化」にも、Stroustrupは、多重継承をウィンドウシステムをソースを効率的にする最初の例としていたし、標準iostreamの実装で、主に利用したと書いている。逆にそれ以外のケースではほとんど利用しなかったが、多重継承を使わないと、不要にソースコードが拡大するケースが多数存在したため、C++では多重継承に対応したと記述されている。あと、多重継承を不要だという議論は言語議論よりもさらにくだらないと断言しているところを見ると、やっぱり、GUIというか多くのインターフェースに関わるかどうかっていうのが多重継承を容認する人と、いらないと思う人の差なのかもなー。
Mix-inと多重継承の違いが分からないっていう人はMix-in評論家まつもとゆきひろ[訂正(汗)]のこの記事を読めー。いっぱつでわかるから。正直、俺も知らなかったw
- Matzにっき: Mix-in