2012年3月プログラム157: オブジェクト指向の弊害 (131) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【QBASIC互換!?】FreeBasic【GPL】 (494)
クラス名・変数名に迷ったら書き込むスレ。Part21 (416)
【コボル】COBOL不要論【ただのDSLだよね?】 (327)
おまいら最強の麻雀プログラムしてみろよ Part5 (524)
Google App Engine for java (211)
Visual Basic2005やりたいんだけどアドバイス頼む (206)

オブジェクト指向の弊害


1 :12/01/24
非OOPでコーディングされたソースを見て発狂するアホを生み出したこと
そのくせOOPを十分に理解してないから痛々しい

2 :12/01/24
と天才プログラマー「あい」は申しております。

3 :12/01/24
このスレッドは天才pンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
                  京都大学霊長類研究所

4 :12/01/24
高級言語の普及によって、プログラムの自己書き換えが廃れたように、
実際、「オブジェクト指向」という制限が掛かることによって
実装できなくなったプログラミングイディオムってあるよね。
「闇のデザインパターン」とでも言えばよいのだろうか。
誰か、そういうのをまとめてくれないかな。
出版してくれたら、絶対に買うよ。

5 :12/01/24
>>4
アンチパターンですね。

6 :12/01/25
>>5
アンチパターンは、元々やるべきではないもの。
これは、役に立つけど、諸般の事情で使えなくなったもの。

7 :12/01/25
OOPは保守性が高い

8 :12/01/25
>>6
アンチパターンだから使えなくなったのです。

9 :12/01/25
>>7 きちんとクラスが設計されていれば・・・な

10 :12/01/25
Object Prototype Programming Architect Interface

11 :12/01/25
OOPでよく使われる文法は非OO的機能という現実

12 :12/01/25
Bjarne Stroustrup インタビュー (?)
ttp://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html

13 :12/01/25
アルゴリズム本のページ数が伸びる。
もしくはCで学ばなくてはならない。

14 :12/01/25
>>12
外人のネタコピペも結構レベル高くなってきたな

15 :12/01/25
>更新:1999-08-03

16 :12/01/25
通知を受けるためクラスがあって、そのクラスのインスタンスが
どっかのオブジェクトのメソッドを実行するための何かとか
もう意味不明w

17 :12/01/25
弊害を語るならせめてパターンくらいは身につけろや

18 :12/01/25
OO系のスレは他にもあるのにワザワザ新しいのを立てたんだから
>>1は責任もってネタを出すように
まさかあれで終わりということはあるまいな

19 :12/01/27
>>16
そうだな
OOになびく奴は昔から頭がちょっと弱めが多い

20 :12/01/27
さあ、釣りだ!

21 :12/01/27
>>19
ネタが尽きたら自問自答は定番だよな

22 :12/01/27
PHPを非オブジェクト指向でプログラミングする
それがあるべき理想の姿だな

23 :12/01/28
>>17
パターンは糞。まだ分からんのか。

24 :12/01/28
ほら、これが釣りですよw

25 :12/01/28
Singletonパターンは百害あって一利なし

26 :12/01/28
パターンが糞っていうか、パターンを身につけないと
糞コード化しやすいところが駄目だわ。

27 :12/01/28
>>25
そのように、パターン名に名前がついてるってのは
すごく重要だよな。
もしSingletonパターンという名前が存在しなかったら、
>>25の書き込みを正確に書くことはできるだろうか?

28 :12/01/28
>>27
洗脳されやすいタイプだなw
パターンなんてのが出てくること自体原始的状態だってことだよ。
たらたらとアドホックに追加するだけだろ。10年たったら全部消えてるよ。

29 :12/01/28
>>28
じゃあ10年後にまたおいでw

30 :12/01/28
Singletonパターンの正当な批判・擁護がなされていないのが問題

31 :12/01/28
システムの大半は、データと操作を分離した従来の構造化プログラミングで十分。
オブジェクト指向は動的なポリモーフィズムが必要な一部に局所化して利用するくらいがちょうどいい。

32 :12/01/28
馬鹿がパズルを生成するだけ

33 :12/01/28
馬鹿が作ったパズルくらい解けるようにしとけよ

34 :12/01/28
>>4
手続き型の範囲ではないんじゃない?手続き型プログラムは、クラスをがひとつだけのプログラムか、
staticメソッドだけのプログラムと同じなはずだから。
もちろんアセンブラ的なことは考慮しない。

35 :12/01/28
馬鹿のパズルは論理破綻してるから解けるわけがない

36 :12/01/28
オブジェクト指向プログラミングは間違いだったか?
http://www.infoq.com/jp/news/2010/07/objects-smalltalk-erlang
所謂オブジェクト指向言語はオブジェクト指向してないんじゃないかというなにか
http://d.hatena.ne.jp/Flast/20111206/1323152264

37 :12/01/28
>>34
「・・・ないんじゃない?」って、
「オブジェクト指向言語でも実装できるよ」って意味?
そりゃ当たり前。チューリング等価なんだから。
でもそれは、アンチパターンでいうところの
「抽象化の逆転(Abstraction inversion)」になるね。

38 :12/01/28
闇のデザインパターン()笑は例えばどんなのがあるの?

39 :12/01/28
>>37
うーん、オブジェクト指向の機能を使って(メッセージ送信とか)を使って、
手続き型と同じことをしようとするなら、その「抽象化の逆転」になるだろうけど、
大半のオブジェクト指向言語は、オブジェクト指向の機能を使わなければ
手続き型言語そのものになるからなんとも。
手続き型の範囲に限定したのはそのため。
関数プログラミングだってメソッドひとつのイミュータブルな
オブジェクトを使えば大体同じことができるけど、それはたぶん
「抽象化の逆転」になるんでしょう。

40 :12/01/29
Delphi好きだよDelphi

41 :12/01/29
ooどころか構造化されてるかどうかさえ怪しいHSPだって
一応プログラムは作れる、ooに拘泥するアホはHSP厨以下

42 :12/01/29
などということを本気で言ってるやつを見てニヤニヤするスレです

43 :12/01/29
昔は大きなものも小さなものも C で書いていたが
オブジェクト指向言語は小さなものを作るのに向かないので
今は大きなものを作る言語と小さなものを作る言語
最低 2 つの言語を使えないとプログラマとして使い物にならなくなった

44 :12/01/29
C++ でやればいいんじゃね?

45 :12/01/29
>>38
んー・・・
例を挙げると、lisp や JavaScript の実装で使われている
ポインタへのエンコーディングとか、どう?
あれって、何かそれらしい名前がついていたような気がするのだが、
思い出せない・・・

46 :12/01/29
オブジェクト指向の体現度って↓であってる?
C#>Java>>C++
他の候補:F#、Python、Ruby、Scala

47 :12/01/29
>>46
c++は規格のライブラリが貧弱なだけで、抽象度はライブラリによる
vclは優秀だった。。。
最適化でvcに負けたけど。。。
(mfcには負けてない)

48 :12/01/29
vclはPascalって所が欠点だった。
C++のコードデバッグで辿って行ったら途中でPascalになるんだぜ。
あ、Pascalじゃなかった。Delphiという独自拡張された言語。
気持ち悪いったらありゃしない。

49 :12/01/29
>>46
多分、体現度はsmalltalkが一番
その分、仮装OS的なものが必須だし、>>36の上のurl通り、全体をデバッグしてるんだが。。。
データと手続きが一緒になってるせいで並列化にも向かないって話もある
かえって構造化言語のFortlanの方が超並列ライブラリと言う資産でスパコンで現役だったり
Erlangの中の人がデータと手続きは別のものだ。一緒にするべきじゃない!と言ってたり
(日経ソフトウェア2009年6月号だったと思うけど、matzと結城さんの対談の記事で書いてた)

50 :12/01/29
> Erlangの中の人がデータと手続きは別のものだ。一緒にするべきじゃない!
賛成だね。
データの寿命は長いが、手続きの寿命は小さい。
データベースなんか、データ専用じゃないか。

51 :12/01/29
個人的にはオブジェクト指向言語の生産性はライブラリとジェネリックが肝な気がする
Cでもライブラリ充実させて、ジェネリック(C++ではテンプレート)をサポートすれば、生産性はオブジェクト指向言語と変わらんのじゃ無いか?と言う疑惑は持ってる
(疑惑だけで確証は無いんだが)

52 :12/01/29
OOPLでも手続きの部分はALGOL流のままだ。
smalltalkのように制御構造までオブジェクトという程まで
徹底されてないから手続き型っぽさが抜けない。

53 :12/01/29
>>49
fortlan2003ではオブジェクト指向が導入されたらしい

54 :12/01/29
ずっと気になっているんだが、fortlanじゃなくてfortranじゃね?

55 :12/01/29
>>54
マ板内検索したら、確かにFortranだなw
フォーミュラ何とかランゲッジって覚えてから、lanだと思ったんだが、違ったw

56 :12/01/29
あ、マじゃなくてム板だった

57 :12/01/29
お前ら相変わらず机上の空論ばっかだな

58 :12/01/29
というか、OOもパターンももう終わるし

59 :12/01/29
と言い続けてはや10年。
自分のほうが、この業界から去ってしまいましたとさ。

60 :12/01/29
>>57
オブジェクト指向プログラミングはともかく、オブジェクト指向設計とか、何やねん。って思うよな
クラスベースより、プロトタイプベースの方が再利用できてるじゃねえか。みたいな
クロージャの方が、継承よりも再利用に適してんじゃねぇか。みたいな
どんだけ時間の無駄だったのかと

61 :12/01/29
アスペクト指向ってどうなったの?

62 :12/01/30
プロトタイプベースで再利用ってあまり聞かないな
何の話してるの?

63 :12/01/30
>>1
あるある
んで、決まってOOP以外はソースがダメだダメだみたいな
プログラミングしていくに当たって
設計思考がひとつしかない奴ってどうなの・・・・・・・
確かにOOPは万能で、どんなプログラムもかけるけど、あくまで汎用性が高いだけで
10段階評価で全部7程度なだけ
専門特化した設計思考も選べるなら、そっちでやったほうが効率でるんだよ
そっちは10段階評価でひとつだけ10を取って他を3くらいにするような感じ
そもそも関数型()っていう言葉があるのも、変な話
だって、関数っつったらプログラミングの最小単位だからな・・・?wwwwwwwww
関数のところまで分解して考えられるなら、そこからどんな設計思考だって作れるよ
一々、その設計思考に名前をつける事のほうが変な話、無限のパターンがあるのに
それにも気づけず、OOPしか出来ない奴、思いつかない奴、
かなりマジレスしてみた

64 :12/01/30
いろいろ残念な人のようだ

65 :12/01/30
最小単位が関数型?

66 :12/01/30
>>61
どうもなるはずないよ。
OOP、デザパタ、AOPなどなど、ほんとソフトウェア工学は他で使えない頭の弱い連中が
やりちらかしてきた歴史だな。そろそろ仕分けしろよ。

67 :12/01/30
ほらみて。これが釣りだよ。

68 :12/01/30
ほんとだ、>>67 がきっちり釣れてるね。

69 :12/01/31
oopやデザパタのメリットは低能でも分かった気になる事
関数型ではこうはいかない

70 :12/01/31
>>69
関数型言語の場合、まんま数学で言う特殊から一般へ。と言う手法が使えるから楽だよな

71 :12/01/31
>>70
なるほど。特殊から一般だな。分かった気になったぞw

72 :12/02/06
関数型って要するにSQLみたいなもんだろ、大丈夫、わかるわかる

73 :12/02/06
副問合せが理解できれば関数型も理解できるって寸法か
これで俺もいつ関数型言語の仕事がきても大丈夫だな

74 :12/02/21
ポリュモルピスムス(笑)

75 :12/02/25
モジュラー指向プログラムとオブジェクト指向プログラムの違いがわからん。
とりわけFortranの場合、90でモジュールが導入されて、モジュールの中に
手続きが書けるようになったが、さらに2003で構造体の中にも手続きが
書けるようになった。2通りの手続きを束ねる手段があって、冗長に思える。

76 :12/02/25
>>75
過去のやり方を無かったことにはできないから互換性のために残してんじゃないの。

77 :12/02/25
fortranさわったことないけど
演算子オーバーロードできるなら
オブジェクト指向の使い道はあると思う

78 :12/02/26
>>77
javaは使い道ありませんかそうですか

79 :12/02/29
>>77
 あるよ。さらに利用者定義中置演算子が定義です。ただし、これは2003の
オブジェクト指向の上に載っているのではない。Fortranには伝統的に
「総称名」という概念があって、cos(x)と書くと、xが単精度であれば、
cos(x)[字面が同じで紛らわしいが別のもの]、倍精度であればdcos(x)に
コンパイル時にディスパッチする。
 95これを利用者定義型できる。具体的には、それぞれの型ごとに
同じ形式を持つ手続きをそれぞれ定義して、これらにひとつの総称名を
割り当てるという形をとる。このとき、総称名の代わりに演算子を
割り当てることができる。
>>78
Javaが演算子再定義を持たないのは、これこれで言語仕様を簡潔に保つ
という上で適切な解だと思う。メソッド名が長いのはいとわず、英文で
説明するように処理を記述することを期待しているようなので、演算子
は削ってもいいだろう。

80 :12/02/29
Javaはドカタ用言語なので、演算子オーバーローディングまで出来てしまったら
ドカタが混乱する。
出来ないのが正解。

81 :12/02/29
>>80
演算子オーバーロードをなにか特殊なものだと思ってるの?

82 :12/02/29
>>81
まともなプログラマなら思わないけど、ドカタは思うだろう
…と言う意味では

83 :12/02/29
あぁ、自分でドカタ=混乱する人と定義してるのかw

84 :12/02/29
まあオブジェクト指向は最高ってことですねw
高慢と偏見(1)隣は何をする人ぞ
http://el.jibun.atmarkit.co.jp/pressenter/2010/11/1-828a.html

85 :12/03/02
ぼくのかんがえたすごいオーバーロードが蔓延るのはよくないと考えたからJavaには無いんだろ
どこかの「ぼくがしんかさせたすごい言語」状態のゴミになるのを避けるために

86 :12/03/02
ぼくのかんがえたすごいフレームワークが蔓延るのは防げないのであった。

87 :12/03/02
ぼくのかんがえたすごいメソッドと何が違うのかわかりませんw

88 :12/03/04
オブジェクト指向の弊害は、バグが生じた理由を設計が悪かったの一言ですますこと。
単に力量不足、柔軟な機動力不足だろうと思ったり。
あと、設計に時間とって、UMLみたいなお絵かきを自慢げに出すようになったこと。
そんなの書くのに時間とるやつより、ちょっぱやな動作デモを即効作ってくるタイプと仕事してる方が楽しいのにな。

89 :12/03/04
ダクトテーププログラマが役に立つのは同意だが
オブジェクト指向の弊害云々はオブジェクト指向以外にも当てはまるからいまいち

90 :12/03/04
お絵かきはシステム構造図だとかDFDだとかフローチャートだとか
昔から沢山あるだろ。むしろ昔のほうが多かったぐらい。

91 :12/03/04
> ちょっぱやな動作デモを即効作ってくるタイプ
「動いてるからいいじゃん」タイプか。
そういう奴に任せると、後で苦労するぞ。

92 :12/03/04
判断基準が楽しいかどうかだしな
趣味なら別にいいが、仕事では相手にしたくないわ

93 :12/03/04
デモはデモだろ
「金払ってるからいいじゃん」タイプか
そういう奴に仕事もらうと、後で苦労するぞ。
これが問題なんだ

94 :12/03/04
再利用できるコードより、部分てきに切り貼りしたり、あるいは一から書き直しても早くできる人が役に立つでしょう。
他とのインターフェースだけオブジェクト指向とかできれいにしてりゃいいよ。
オブジェクト指向じゃないコードをバカにするわりには、面白いコードもかけない人の方が、
なんだかんだ理由をつけて進捗のボトルネックになることが多いよ。

95 :12/03/04
なんというか、あくまで基礎がある上でのオブジェクト指向だな。
基礎がないのに、オブジェクト指向な人が多いから、混乱するだけど、OOが悪いわけじゃないな。

96 :12/03/04
>>88
> ちょっぱやな動作デモを即効作ってくる
そが即効なのは「後で変更する人たちに工数を押し付けた」結果だったりするからな。
納期直前とかならそういうやり方もありだけど、普通はOOに限らず影響範囲が小さくて済むよう
それなりに設計するもんだ。

97 :12/03/04
>>96
その言い方をするなら、即効で仕上げて、あとで変更する人たち余裕を与えたともいえる。
ある設計が変更に耐えられる確率を定量的にいえるなら設計に時間与えてもいいけど、
いえる人っていないでしょ。
設計に時間与えたのに、あとでバグが生じて、設計が悪かったとかいうのを何度かみたよ。

98 :12/03/07
>>97
> ある設計が変更に耐えられる確率を定量的にいえるなら
結合度とか凝集度がそれにあたるな。
> 設計に時間与えたのに、あとでバグが生じて、設計が悪かったとかいうのを何度かみたよ。
設計が甘かったために、ひとつのバグ修正が2つのバグを産むという例のほうが
よっぽど多いけどなw

99 :12/03/07
一発で設計が上手くいくようなら、ウォータフォールでいいよね
OOPってアジャイルな開発には向いてないの?

100 :12/03/07
>>97
どんな開発モデルでも、後工程に行けば行くほど修正コストは飛躍的に増大する。
> 設計に時間与えたのに、あとでバグが生じて、設計が悪かったとかいうのを何度かみたよ。
そのような経験があるからといって、設計に時間を与えなくとも良いということには
ならないのはわかるよな。

101 :12/03/08
ごくごく自然にに考えよう。
設計とか分析とか工程というのは、
その次の工程を行うためにやる。
つまり、その次の工程の内容を理解していなければ、
使えないものが出来るのは当たり前の話。
たとえば使えない設計書。これができてしまうその原因は
その次の工程を全く知らないからだ。
自分の担当工程だけやって、下流の内容は知らないじゃだめなんだよ。
プログラミングができないSEはクズと言うのは正しいということが分かる。

102 :12/03/08
もっとひどいのになると絶対実現できない機能を仕様書に平然と書いてあるとかね。
基本的な素養がね。ないとダメなんだよね。

103 :12/03/08
いまだにLOC以上の定量的手法ないだろ

104 :12/03/08
ゲームプログラマーやってるとプログラムできないSEとか理解できない。
ゲームでの企画はあくまで雑用とアイデア出しで設計するのはプログラマー。

105 :12/03/09
ゲーム業界での企画がSEって呼ばれてると思えばいい。

106 :12/03/09
普通ぷろぐらまが経験を積んでSEになるんでないの?

107 :12/03/09
大手は最初から上流設計しかやらせないらしい。金かけてクズを育ててるようなもんだが。

108 :12/03/09
興味本位で「絶対実現できない機能」の例を聞いてみたい

109 :12/03/09
2年ぐらいプログラム経験つませることも多いだろ
2年程度なら平均的なプログラマぐらいにはなれる

110 :12/03/09
http://el.jibun.atmarkit.co.jp/pressenter/2011/06/3-1e5b.html

111 :12/03/09
>>109
平均的なプログラマは
プログラミングをするべきだ。

112 :12/03/09
とりあえずワードエクセルが使えて客と会話ができればSEとしての体裁は繕えるしな

113 :12/03/09
平均的なプログラマってのは
クソな仕様書をつき返して問題箇所を指摘したり直させたりできるレベル?

114 :12/03/09
>>108
レーザープリンタで感圧紙の複写印刷が出来ますと客先で宣言されたことがある。

115 :12/03/09
>>84
>高慢と偏見(1)隣は何をする人ぞ
これ見ると反OO派をKOしたとOO派は思うんだろな。
もうそろそろそんなレベルを超えろよ。
OOでもまだシンドイだろ?

116 :12/03/09
grepが効かない!

117 :12/03/10
>>114
なにそれこわい
…プリンタのハード設計をしてるワケじゃないんだよな?
まあそれでもォィォィと思うが

118 :12/03/10
.NETは入れたくない

119 :12/03/10
>>114
プログラミング出来る出来ないは関係ないなw
そいつが根本的に馬鹿なだけだ

120 :12/03/14
プログラム初心者なんだけど、Cで構造体にデータ入れてDBに登録みたいなことをOOP型言語でやろうとしたんよ。
データには大きくわけて社員と役員という二つのタイプがあって、社員のメンバ変数は役員ならば全て持っている場合、
アクセッサー含めて役員の方にも同じメンバ変数をコピーするのは保守性下がるからよくないと思ったから継承させたんよ。
class 社員 {
int 社員番号;
String 氏名;
String 年齢;
int 給与額;
}
class 役員 extends 社員 {
String 役職;
int 役員賞与額;
}
こんな風に。
んで、Object型に格納して、社員と役員で手続きを共通化させたら、簡素で分かりやすいコードになるんじゃと期待していたんだけど、
実際は、Object型インスタンス.役職とかObject型インスタンス.役員賞与額とかいうのは、遅延バインディングにあたり、静的型づけできないから駄目だったw
じゃあ継承させずに同じメンバ変数を異なるクラスにコピーさせていかないといけないんか、とがっかりしたわ
何のための継承だったんかと

121 :12/03/14
だからインターフェースを継承してインターフェースでインスタンスを受けとるんだと思ったんだが違ったっけ?

122 :12/03/14
Objectに入れちゃったら台無しだろw

123 :12/03/14
>>120
Object型に格納するのがダメなだけじゃんw
初心者だと自覚しているのなら、
自分が何か見落としているだけだと
最初に考えような。
何かおかしいなら、それは自分が悪いと考える。
99%間違いないから。

124 :12/03/14
VB系から来た人っぽいな

125 :12/03/15
オブジェクト指向は、Object型指向ではないってことだな。

126 :12/03/15
Object型が役職とか役員賞与額とかプロパティを持っていなかったのが敗因
どこの田舎ライブラリだよ

127 :12/03/15
そもそもなんでObject型に格納しようとしたのか、意味不明。

128 :12/03/15
void* でやりとりするような感覚じゃね。

129 :12/03/19
それがどうかしたか?

130 :12/03/19
voidのような偏屈やろうは使えん

131 :12/03/20
OOP is shit
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【SL4】Windows Phone 7 アプリ開発スレ Part3【XNA】 (415)
Kinect ハック (937)
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part12 (888)
自動巡回ソフトを作りたい。 (371)
【ツール】 フレームワーク作成スレ 【ライブラリ】 (152)
【論理】Prolog【初心者】 (475)
--log9.info------------------
関東でN95以上のマスクを常備しているやつ-2 (688)
○放射線★健康医療ソース記事 (368)
【安全】放射能汚染されていない食べ物78【安心】 (875)
【マイコプラズマ】放射線症・傾向と対策29【湿疹】 (334)
原発事故を全く気にしない家族友人同僚に脱力 13 (756)
青森県放射能スレ (301)
インスペクター系総合 2【Plus,Alert】 (918)
【RD1503】ガイガーカウンターRADEX 5【RD1008】 (509)
体内の放射能を除去する方法を考えるスレ (486)
山形県内の放射能に関するスレ★2 (291)
放射脳を眺めながら放射能について冷静に考えるスレ (749)
岩手県の放射能関連事情 (716)
ぬまゆのブログを語れ (469)
内部被曝に備えて準備しておきたいデトックス剤 (348)
関東から関西に避難してきた人 16 (430)
【無駄レス】原発関連総合6【禁止】 (433)
--log55.com------------------
【MHX/MHXX】チャージアックススレ チャージ61回目
【MHW】特別調査「マム・タロト」をソロでクリアするスレ part2
【MHW】集会所募集スレ【PC版】
【MHW】ヘビィ拡散マン問題 【攻撃的守備】
歴戦王クシャが面白いと感じる奴0人説
【MHW】 ドラケン重ね着 【中身はゆうた】
スラアクがこの先生きのこるには
MHWとMHXX両方やってみた結果