2017年4月6日

第 (N+1) 次オブジェクト指向問答

「オブジェクト指向とは何か」という話は定期的に俎上に上るけど、むしろ「オブジェクト指向はどう受容されたか」という話の方が重要なんじゃないかなぁ、と思っていたりします。そこにソフトウェア開発の真の課題や、あるいは我々の思考の偏りを解きほぐす際に役立つヒントが隠れているように思うので。 関連する話題として、最後の方にマイクロサービスの話。
9
デブ @osake123

人のコード見てると自分はここまでオブジェクト指向が出来ないなーと思う。 そんなfizzbuzzくらい良いじゃんとか思ってしまう。 確実に雑魚

2017-04-05 13:40:29
デブ @osake123

オブジェクト指向ってなんやろう。

2017-04-05 13:49:32
リンク はてなダイアリー オブジェクト指向の概念の発明者は誰ですか?(改訂版) - Smalltalkのtは小文字です 忙しい人のためのまとめ一般に「オブジェクト指向プログラミング」と呼ばれる考え方には発案者が異なる二.. 409 users 20
リンク ゆびてく オブジェクト指向とは何だったのか? このブログでも何度か取り上げているように、プログラミングにおけるここ数年間のトレンドで最も大きなものは、関数型… 92 users 537
なぎせ ゆうき @nagise

みんながそれをやったから現代の「オブジェクト指向」なる用語がこうなってるんじゃないか :-P twitter.com/yurau75/status…

2017-04-05 17:07:32
イトウ アスカ @itoasuka

Smalltalkも触ったことがない俺だけど、20年オブジェクト指向(C++、Java、Ruby、C#その他)やってきて思うのは、継承は地獄だし、もうクラスにメソッドとかいるの?とか思うけど、多相は欲しいし、さしあたって目の前にあるJavaには死んでほしいってことかな。

2017-04-05 17:10:32
なぎせ ゆうき @nagise

系譜を辿るとC++の「オブジェクト指向」のカプセル化、継承、多態性といった機能性のうち、継承と多態性を用いてコンパイル時の型チェックが発展した結果、この部分については「型システム」と呼ばれるようになったような感じなのかしら

2017-04-05 17:10:51
なぎせ ゆうき @nagise

「型システム」に部分的に移管されたという感じが正しいか。別に型システムがC++から生じたわけでもないし。型クラスやらジェネリクスやらも入り乱れて「型システム」はそれはそれで地獄の様相ではあるが

2017-04-05 17:12:32
なぎせ ゆうき @nagise

その辺の要素が「型システム」で語られるようになると、結局もとに戻って「オブジェクト指向」はインスタンス間のメッセージングによるプログラミングみたいな意味合いに純化されてるんですかねえ。いずれにせよ定義がはっきりしない言葉だからもやっとするな。オブジェクト指向

2017-04-05 17:14:13
なぎせ ゆうき @nagise

「オブジェクト指向」と呼ばれるものがだいたいこの辺、みたいなのはあるが、その境界ははっきりしておらず、狭義と広義のオブジェクト指向の間に人によるさまざまなグレーのオブジェクト指向の世界が広がってるぜ、というあたりでひとつ

2017-04-05 17:15:29
Yasuo Nakanishi @nakanishiyasuo

オブジェクト指向以前にオブジェクトがむずいよね。

2017-04-05 17:11:50
Yasuo Nakanishi @nakanishiyasuo

オブジェクト指向って、要は頭の中でやってることをシステムに適用しようって手法なんだけど、頭の中は無視して説明されるので、ほぼ迷子になる。

2017-04-05 17:12:55
ABAB↑↓BA @ababupdownba

オブジェクト指向ってぶっちゃけ言語に依存するよね 型(class)による分類プログラミングの確立とか、それっぽいことは言えるけど メッセージパッシングスタイルのオブジェクト指向だと 疑問が残るし

2017-04-05 17:16:42
ABAB↑↓BA @ababupdownba

この言語ではこういう風にオブジェクト作れて こういう機能が付随してくるよ としか言えねえ

2017-04-05 17:17:20
ゆらゆう @yurau75

@ababupdownba ちゃうねん、言語中立だったのがいつしか言語の仕組みとごっちゃになっていったねん。 というのが、私の印象

2017-04-05 17:17:33
ABAB↑↓BA @ababupdownba

@yurau75 パラダイムってパラダイムでしかなくって 言語で実現しようとしたら、どこか無理したり妥協したり欲張ったりして 中立なんて夢っぽいですよね(実際夢に終わった。。。) 自分が触り始めた頃には言語毎にオブジェクト指向が確立されてたので、触り始める時代によっても印象違いま

2017-04-05 17:21:14
ABAB↑↓BA @ababupdownba

型システム?読んだ? 型システム自体はオブジェクト指向と直接の関連性は無さそうだけどどうなだろう amazon.co.jp型シス テム入門-−プログラミング言語と型の理論−-Benjamin-C-Pierce/dp/4274069117

2017-04-05 17:19:36
ゆらゆう @yurau75

@nagise もともとオブジェクト指向って型については言及してなかったですよね? オブジェクト指向言語を実装する際の仕組むとして型システムが生まれてきたという認識なんだけど。 そういった本来のオブジェクト指向の要素に、実装上の話がどんどん追加されていった印象がスゴイ有る。

2017-04-05 17:15:37
なぎせ ゆうき @nagise

@yurau75 最初に挙げた d.hatena.ne.jp/sumim/20040525… で解説されていますが、SIMULA67をベースに、アラン・ケイとビアルネ・ストラウストラップがそれぞれ同時期に別解を出してオブジェクト指向と呼ばれるようになったところが混乱の元なのでは

2017-04-05 17:18:10
なぎせ ゆうき @nagise

@yurau75 なのでストラウストラップのC++の「オブジェクト指向」に立つと型システム的なものが入り込んできてしまう。 それを後付で「型システム」側にひっぱりだして純化して「オブジェクト指向」を再定義するのが実用性からすると妥当な感じはするけども

2017-04-05 17:20:42
なぎせ ゆうき @nagise

@yurau75 ……という提案に立てば、Java界隈でオブジェクト指向の話をするとさも当然のように「継承」と「多態」の話が出てきますけど、これはオブジェクト指向というより型システムの話じゃないですかね、ということになるわけですね。

2017-04-05 17:22:05
残りを読む(90)

コメント

Kota Mizushima (on a diet) @kmizu 2017年4月6日
本論とずれるのですが、 https://twitter.com/ababupdownba/status/849543059880726536 型クラスはインタフェースみたいなもの、というのは型クラスの理解を妨げると思います。似ている部分は あるといえばあるのですが、オブジェクト指向言語で説明するなら、明示的に(状態を保たないような)Strategyインタフェースを受け取るようなメソッドを書いて、そっから暗黙的にオブジェクトを渡す、という方向に説明するとすぐわかります。
0
frisky @friskymonpetit 2017年4月6日
オブジェクト指向は(大昔の)バズワード、という結論がまとめに入っていたので良かった。
0
the loyaltouch @theloyaltouch 2017年4月7日
デザインパターンなどもこれと同じくもはや神殿の焼け落ちた信仰の類いだと思ってる
0