オブジェクト指向ってクソじゃね?
■ このスレッドは過去ログ倉庫に格納されています
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。
偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。
一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。
オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。
https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96 >>134
そやな。俺が知ってる唯一の情報がオブジェクト指向はシステムの基本設計が破綻するってだけだからな。 俺が知ってる情報は次の2つだ
1.バカが使うとどんな言語でも破綻する
2.>>133-135はそのバカに属する >>136
問題はそこからやな
バカが使わなければ破錠しないのか、隠蔽のコスパが手続き型や関数型で作るコスパを本当に上回ってんのか オブジェクト指向は複雑な構造を構築するわけだから
別に破綻はしないだろう
むしろ見た目は良い オブジェクト指向の弱点はクラスとクラス間の関係を設計しないといけないこと 小規模ならいいが大規模だと設計必須
とりあえず書き始めると最後に詰まるのがオブジェクト指向
小っちゃいパーツを作ってって最後に組み合わせるとき全然組み合わなかったり
つなぎ目の形が合わないのがオブジェクト指向
普通は小さいパーツが出来てるならある程度楽できるはずなのに逆に苦しくなる
本当におかしい クラスの関係の設計を軽減するためにクラスには最低限の機能しか実装しないようになっていく
インターフェイスを考えた上の設計がないと後で詰まる
当たり前に思ってるけどそれはオブジェクト指向の限界というか弊害 つまりクラス間の関係を排除して、Mix-inだけできるようになればいいのかな >>140
境界定義なんて、モノリシックアプリでも必須なんだが?
その認識もないままオブジェクト指向とかマイクロサービスに手を出すとグダる。
開発チームを苦しめるマイクロサービス(翻訳)
https://techracho.bpsinc.jp/hachi8833/2018_01_29/51135 >>142
限界? 弊害?
>>142のどこに限界や弊害が書いてあるの? >>145
あんまりそこにしっかり書かれていないから語弊ありきで言うんだが
その抽象的間接的に作らなきゃいけないてことやな
作ってもいい、じゃなくて作らなきゃいけないという >>146
そりゃ大規模プログラムをメンテナンス性あげて作ろうとしたら
オブジェクト指向に限らず、考えなきゃいけないことだろな。
でも破綻していいなら、別に抽象的間接的に作らなくていい。
小さなツール程度ならゴットクラスで破綻状態でもなんとかできるだろうさ
そういう点で、オブジェクト指向の限界でも弊害でも何でも無い >>147
いや俺の言う破綻てのは別にオブジェクトオンリーにこだわって
細かいとこをクロージャで逃げたり、その場しのぎ的に小さいオブジェクトで茶を濁すのもダメって意味じゃないんよ
小さいオブジェクトならオブジェクト同士やシステムが密結合になりえないだろうしな
オブジェクト指向の問題や破綻てのはやはし密結合の時にだけ起こるな > オブジェクト指向の問題や破綻てのはやはし密結合の時にだけ起こるな
因果関係が逆
密結合の時・・・問題や破綻が起きる(オブジェクト指向に限らない)
話はこれだけだろう?単純だろうが まあオブジェクト指向は密結合を観察する際の一つの指針にはなるかな。
〜指向全般に言えるけれど、結局は一つの指標みたいなもんで
指標上げることが目的になったらクソになるのは当たり前だよね。 オブジェクト指向に継承って要る?
もともとのオブジェクト指向の発想からすれば、別に無くてもいいっていうか、むしろ邪魔じゃね? >>154
継承でコードを書く量を減らせるってのはあるが、他の仕組みで代わりになるなら無くても良い ああでもルートクラスのメソッドを全部で使えるってのはでかいかなあ >>149
ちゃうねん
複雑で大規模なモノは何で組もうが問題や破綻が起きやすくなる、って話と
オブジェクト指向は複雑で 大規模なモノを作ると破綻する、ってのは意味が違う
何故ならオブジェクト指向そのものが大規模で複雑なモノを作るため”だけ”の物だからよ。話の流れで言うと前者により後者が悪質な形で発動する
ただ当然理想論言えば問題を元々起こさなきゃいいっちゃいい話よ理想を言えば > 何故ならオブジェクト指向そのものが大規模で複雑なモノを作るため”だけ”の物だからよ。
前提が間違っているから話にならん。
まず標準ライブラリの時点ですでに大規模で複雑
それが隠蔽されてるから単純に見えるってことに気づいていない
大規模で複雑なものを作るためだけのものだからというのなら、
ほとんどのものが大規模で複雑なんだから、オブジェクト指向を
使うのは当然ということになる
そして隠蔽されている部分は無視するという話なら、(オブジェクト指向の)
標準ライブラリを使うだけの簡単なコードは作れる
例えば、Rubyでprint "hello world"と書いただけでもオブジェクト指向が使われてる
オブジェクト指向であっても、小規模で単純なものを作れるものである証拠 >>158
オブジェクト指向言語の標準ライブラリとか1番破綻しないオブジェクト指向のパターンじゃないか?
そりゃ全てのオブジェクト指向で作った物が全て破綻することはないだろう
大規模に向いてるオブジェクト指向をあえて小規模なもの作るに都合いいから流用するのはいい事だろう。個人的には自分で作ったクラスを多数のところで使い回してるならそれぞれ小規模でも全体でみたら中、大規模じゃんってなる所はあるけども
とわいえ、それでもやっぱりオブジェクト指向は大規模なものの為”だけ”にあって、そのため”だけ”の機能があって、そのせいで破綻するってのが俺の考えよ >>159
だからオブジェクト指向で小規模なものを作る例あげたじゃん。
馬鹿なの?
大規模なら破綻するのは、オブジェクト指向で無くても同じ
つまりお前の理屈は
オブジェクト指向・・・小規模は作れない、大規模は作れる
???指向・・・小規模は作れる、大規模も作れる
って言ってるだけでしょ
で大規模であれば、破綻するのはどちらも同じなんだから
大規模に置いてはオブジェクト指向も???指向も変わらない
だからオブジェクト指向で、小規模は作れないと言ってるだけだよね?
(実際にはオブジェクト指向で小規模なものが作れる) この原則さえ守れば破綻は回避できる
大体の大きな問題は起きなくなる
@公開インタフェースは可能な限り少なくする
A原則として、よほど適切な理由がないかぎり、可能な限り継承よりコンポジション使う
B下位階層(ここでの階層は>>101>>106の意味)のクラスが上位階層のクラスのインターフェースに絶対に直接アクセスしてはいけない
※ 当然、下位クラスが上位クラスのインターフェースを直接呼びだすようなリフレクションは禁止
C下位階層のインスタンスが非同期で上位のインスタンスに処理を依頼したい状況が発生した場合(可能な限りこんな状況が起きる設計は当然避けるべき)、
処理のやりとりはメッセージキューで行い、可能な限り少ない回数で簡潔なメッセージを用いて簡単に完結できるようにする、複雑なメッセージシーケンスも禁止
(コレは並立するインスタンス間でも同じ)
D同じ階層に並立するインスタンスをムダに乱立させるのは当然禁止
コンポジションとメッセージシーケンス、クラスの階層(ここでの階層は>>101>>106の意味)、インスタンスの生存期間さえ
ドキュメントで適切におさえることができる状態になっていれば
問題やエンハンスが発生しても持続可能対応できる >>160
そりゃ作れないなんて言ってないがな。
「オブジェクト指向は大規模なモノを作る為だけにある」って話であって「オブジェクト指向は小規模なモノは絶対に作れない」とはならんからな
ただオブジェクト指向で小規模なモノ作ったらデータをオブジェクトでラッピングしやすいてのがあるけど
あれ完全に全くの偶然でデータをオブジェクトにまとめるのがオブジェクト指向の本丸じゃないように、オブジェクト指向の本丸ではないサブシステムが運良くそこにハマったってだけで
特にそこもオブジェクト指向は大規模なモノを作る為”だけ”にあるってのは意味は変わってないからな
俺が言ってるのは一般的にモノが複雑になれば破綻しやすいという話ではなくて
、”その上で更に”オブジェクト指向は独特の破綻を招くって話であって >>163
あー、わかったわかった、つまりこういうことだろ?
墜落事故は飛行機特有の問題だ
自動車は飛べないから墜落自体ありえない
自動車で遠くにいくなら時間はかかるし
距離も長いから事故の確率も上がるし大変だが
飛べないから墜落事故は起きないのだ そう主張することで、飛行機の何を否定しているのかわからんのと
どうように、オブジェクト指向の何を否定しているのかわからんがなw おまえら破綻しすぎじゃね?w
どうやったらそんなに破綻を量産できんねんw >>164
オブジェクト指向の話で悪い例え話したら1番イカンやろ。抽象的なもんの取り扱いなんだから。しかも何言ってるかわからんけど多分それは違うしな
>>166
いやまさにそういう事よ。多人数が動く大規模で抽象的な流れは上手くいくはずがないわ。しかも間違い失敗のリカバリーはオブジェクト指向のメリットの規制隠蔽が裏目に出てより悪化する >>167
> オブジェクト指向の話で悪い例え話したら1番イカンやろ。
は?なんで?
反論できない言い訳にもほどがあるわ > しかも間違い失敗のリカバリーはオブジェクト指向のメリットの規制隠蔽が裏目に出てより悪化する
しない。
オブジェクト指向を使わないほうが破綻するし、
破綻した後のリカバリーはオブジェクト指向よりも大変
お前は単に両方とも破綻するが
オブジェクト指向的破綻をするのはオブジェクト指向だけと言ってるだけだろ
破綻する時点で問題なんだよ。オブジェクト指向の方が破綻しない >>169
>オブジェクト指向的破綻をするのはオブジェクト指向だけと
そういう事や。楽をするためにそれをするメリットが上回ってデメリットのが下回らなきゃいけないのはオブジェクト指向の完全必須項目なんだが
大規模複雑はこの完全必須項目がどんどん難易度が上がってくる。
途中の間違い失敗のリカバリのコストは確実にオブジェクト指向のが上
理想論一般論で言えば間違えなくちゃんと作ればいい、どの作り方でも大きいのは大変は大変、以上!て言えばそりゃそうだが
その問題を防ぐための記法が裏目に出て逆効果なら理想論一般論で片付けたらいかんでしょ >>170
ほらな。
> >オブジェクト指向的破綻をするのはオブジェクト指向だけと
> そういう事や。
墜落事故を起すのは飛行機だけだと言ってるのと同じ
だからなの?状態なんだよwww 結局、小規模アプリでも大規模アプリでも
オブジェクト指向のほうが良いって結論なわけだよ。
そして、大規模で破綻するのはオブジェクト指向じゃなくても同じこと バカに限って抽象化とかいって
サルみたいにうれしがって継承するからな
破綻はそこから始まる
しばらくたつと
データ受け渡しするために
無秩序に相互参照しはじめる
こうなったら終わりの始まり 同じものを作る時、オブジェクト指向はオブジェク手と指向破綻をしやすいが
オブジェクト指向じゃないものを使うと、オブジェクト指向じゃない破綻をする
って言ってるだけ。
オブジェクト指向だと大規模なものを作れる。
オブジェクト指向じゃないと大規模なものは作れない オブジェクト指向じゃなくしたから
大規模なシステムを作れるようになった
って話はあまり聞かない ただモジュール境界を明確にしただけなのをオブジェクト指向って言い張ってるだけだろうな。
「オブジェクト指向じゃないと大規模なものは作れない」
この結論ありきで論法を組み立てるとそうなる。 >>171
そのアカン例えを使うなと
事故が多発しないはずのシステムでそのシステム特有の事故が多発したって話やな
まぁ、その、悪い例えにあえて乗っかるなら自動車で事故りそうだから飛行機に乗ったら墜落事故起こしたって、だからなんだよって言ったらそりゃダメだよってなるような話で
いややっぱアカンやろこの例え、設計を抽象的な部分から見直せ まぁオブジェクト指向は「銀の弾丸」じゃないですからね
オブジェクト指向の採用による成功事例は数多く存在する一方で、
オブジェクト指向を採用したにもかかわらず失敗した事例も
少数とはいえ存在するのも事実
たとえば、以下は「一貫性」という設計哲学が無視されてしまったため、
標準ライブラリ設計に失敗した言語の例
http://mevius.2ch.net/test/read.cgi/tech/1491491123/44-45/
http://mevius.2ch.net/test/read.cgi/tech/1530664695/527/
スレタイに沿って返すとすれば:
・あらゆる言語においてオブジェクト指向ってクソじゃね?
=> いいや、そんなことはない
・Pythonにおいてオブジェクト指向ってクソじゃね?
=> たしかに、Pythonではクソかもしれない >>180
とりあえずお前が馬鹿だっていうのはわかった
大規模なものはどちらにしろ問題が発生する。
オブジェクト指向的問題か
非オブジェクト指向的問題かの
どちらかだ。
オブジェクト指向を使わなかったら
今度は非オブジェクト指向問題が発生するだろ >>181
Pythonで大規模アプリ作って失敗したら
Python的問題が発生したということさ
C言語で失敗したらC言語的問題が発生したということさ 仮にオブジェクト指向設計を採用せずに
構造化設計を採用したとしよう。
大規模プログラムで密結合になってると失敗する
そうすると構造化設計特有の問題が発生したということで
それはオブジェクト指向よりもリカバリーが大変 >>182
んなもん当たり前だろ別のやり方すれば別の問題があるに決まってやろ
そんな何にでも通ずる一般論じゃないの
オブジェクト指向がそれ専用なのに逆効果だから色々言ってるの
これは何にでも通ずるフラットな一般論じゃないぞ?何故ならオブジェクト指向はそれ専用なのに逆効果だからな、いわばイレギュラーで根本的な問題 そう。ただの言葉遊びしてるだけだからどうでもいいこと
結局は構造化設計を選んで失敗したから
構造化設計に問題があると言ってるだけなんだから
自分の非を認めたくないからそういことをしてる
あ、オブジェクト指向が使えないんだっけか?w >>186
いつからオブジェクト指向がそれ専用になったんでーすかーw
おかしいですねwww 構造化設計は大規模に向かないのである
構造化設計で大規模をやると
失敗する確率が大幅に上がる
構造化設計+大規模でなんども経験している
そしてオブジェクト指向で設計すると
失敗する確率は大幅に下がるわけだが
それでも失敗してしまったら文句を言おう
オブジェクト指向が問題だったんだー! >>188
>いつからか
そらー最初からやな。そのため”だけ”やしな >>189
おっ?そうだなオブジェクト指向が問題が問題だったんだ。なんだかんだ同意見やったんやな >>189
>そしてオブジェクト指向で設計すると
>失敗する確率は大幅に下がるわけだが
ここは同意しますけど、
>それでも失敗してしまったら文句を言おう
>
>オブジェクト指向が問題だったんだー!
勘弁してください
数ある言語の中でも失敗してるのはPythonだけなんですから(>>181)、
失敗をオブジェクト指向のせいにしようとしても
それに納得するのはPython信者だけですよ
>>183でもご自分で「Python的問題」と語っていますから、矛盾してます >>190
> そらー最初からやな。そのため”だけ”やしな
そのためって、オブジェクト指向は大規模のときに使うってこと?
ってことは、大規模で問題が起きたら、
それはオブジェクト指向が原因ではないってことだね
だって、単に大規模だからオブジェクト指向を使ったってだけで
大規模で失敗するのは構造化であっても同じだから
>>191
皮肉もわからんのかーwww まとめ
構造化・・・大規模に適していない
オブジェクト指向・・・大規模に適している
構造化で小規模・・・失敗しにくい(所詮小規模なので)
オブジェクト指向で小規模・・・失敗しにくい(小規模に使えないとは誰も言ってない)
構造化で大規模・・・適していないので失敗しやすい
オブジェクト指向で大規模・・・適しているので失敗しにくい
構造化で大規模で失敗・・・失敗して当然。構造化に問題があった
オブジェクト指向で大規模で失敗・・・適した道具を使っても失敗した
使ってるやつの能力に問題がある
責任転嫁としてオブジェクト指向使ったから失敗したんやーと叫ぶw Cで書かれたOSはくさるほどある
C++で書かれたOSなんかあんの >>192
もう謎のテンション上げで冷静な会話無理やろ、
1レス目の冷静そうな語り口調急にが帰ってきたらそれはそれでキモイけど、、 >>196
お前の会話が非論理的だからしょうがない。
オブジェクト指向に問題があったんじゃなくて
大規模で密結合にしたから失敗があっただけだろ?
構造化であっても密結合にしたら失敗するんだから
で、構造化使って密結合にして失敗したら構造化のせいにせずに
オブジェクト指向を使って密結合にして失敗したら
オブジェクト指向のせいにしてるんだろ? どちらにしろ
構造化よりもオブジェクト指向のほうが大規模に強いのは変わらん
オブジェクト指向が大規模のために作られたと言っても
小規模で使えないことにもならない
実際に小規模でも使える
オブジェクト指向で失敗するようなら構造化でも失敗する。
能力不足が原因だからな。
で、能力不足を認めたくないから、
オブジェクト指向のせいにしてるんだろ? そもそも破綻している、と言える状態はどんな場合だろうか だいたいわかる
ウンコスクリプトしか使えないような低学歴知恵遅れが
ムダにオブジェクト指向あげしてる 馬鹿「オブジェクト指向で失敗したら、オブジェクト指向特有の・・・」
じゃあ、構造化で失敗したら構造化特有のやり方が原因なんやな?
馬鹿「ぐぬぬ」
↑イマココ で、ウンコスクリプトで
山盛りのウンコをつくる
rubyとpython作ってるような
ウンコスクリプター コイツラの場合
ウンコスクリプトフレームワーク()使っても
破たんさせるほどの特殊能力がある
だいたいこういうの使ってるヤツラは
そういうヤツラだ >>198
皮肉もわからんのかーwwwとか言うやつが急に非論理的だ、とか笑わせに来てんのか貴様は
なんだろうなお前の言い分は都合が悪いと全部一般論にして逃げてる感あるな、大規模なモノが破綻するのはオブジェクト指向に限らずみんな一緒とか。
それを言うならオブジェクト指向使わず手続き型で組んでも破綻しないように組めばいいじゃんってなるんだよな。
その先が見えないわけよな。もはや何の為にオブジェクト指向使ってるんという >>200
オブジェクト指向の破綻はルール守る為に手続き型のコストを超えた時やろな ノータリン言語の開発現場には
ノータリンが集まる
コレは宿命 >>207
上でな、オブジェクト指向は壊れると言ったら壊れないように作ればいいという身も蓋も事を言われたんや
言語はそういう人のために作らないといけないかもしれん >>208
当たり前だろ
どんなものでも壊れるというのは大前提
どれだけ壊れにくいか?という壊れにくさの話をしてるのに、
お前は「オブジェクト指向は銀の弾丸でなければならないが
銀の弾丸でないことが判明したらどうする?」と言ってるだけだろ?
誰もオブジェクト指向が銀の弾丸なんていってない
だが強力な武器なんだよ。 とりあえずオブジェクト指向で作るってことがなんなのかから判別しようか。
例えばlinux kernelはオブジェクト指向でバリバリ作ってると思われてんのかね? ハードが壊れるのと
低学歴知恵遅れのオツムが壊れてるのは
別問題 システムが壊れてるワケじゃない
壊れてるのは低学歴知恵遅れのオツム
オツムが壊れてないヤツが作れば
壊れたシステムはできあがらない
オブジェクト指向はキチガイに刃物
ノータリンにオブジェクト指向を促すこと自体が常軌を逸してる
ノータリンがオブジェクト指向で開発しようとすること自体が銃刀法違反並の重罪 オブジェクト指向って何ですか?
C言語ではオブジェクト指向に従ってプログラムを作ることはできないのですか? X11やMS Windowsもオブジェクト指向で設計されてる
ただ、低学歴知恵遅れでは、C言語でそれを実現することはできない
そしてそれを簡単に実現できる言語を使うと
なにが便利であるか核心的な部分が理解できずに使って
別のろくでもない問題をおこすわけ ハンドラやコンテキストつかって
オブジェクトを操作するのはまさしくオブジェクト指向の便利な部分だからな
UNIXのi/oなんかもハードウェアがうまく抽象化されてる
ファイルディスクリプタ使って簡単に読み書きができるからな >>215
> C言語ではオブジェクト指向に従ってプログラムを作ることはできないのですか?
大変だけどできるよ
作りやすいかどうか、失敗しやすいかどうかだから 結局の所、小規模なものはオブジェクト指向使っても失敗しない
大規模なものは、オブジェクト指向を使うと失敗しにくくなる
って所が重要なんじゃないですかね?
失敗したときにそれがオブジェクト指向的な原因か
構造化的な原因か、なんてことよりよりも 低学歴知恵遅れにオブジェクト指向はまずムリ
日本では、ITドカタは低学歴底辺がなる職業だからな
だいたい程度がしれたヤツラが群がってくる
この板みれば分かるとおり う〜ん、ここ見てるとオブジェクト指向はクソと言いたくなるね。
何らかの問題を解決したい、もっと便利で問題の発生しない手法は無いだろうかというような要望があって、
それを実現するためにオブジェクト指向なるものが発明されたとすれば、
同じ考えでオブジェクト指向を採用するのも良いだろうけど、
最初からオブジェクト指向ありきはダメなんじゃないの?
なんかさ、なんでも右ならえで無理に採用してるような気がするんだよなあ。
オブジェクト指向に限った話じゃ無いけど、特に日本では。 >>222
お前の書き込みは、オブジェクト指向がクソだということが目的になっていて、
その他の何かが、オブジェクト指向よりも優れているという話になってない >>221
優れた人が優れた道具を使う
それに対抗するために、もっと優れた道具ができたとしても
それだって優れた人が使ったほうがもっと効果が高いわけで
優れてない人が、優れてない道具を使って勝つには
人海戦術しかないんだよね ぜんぜん分かってないわ
刃物は道具でもあるし
人を殺すこともできる >>223
いや、オブジェクト指向をクソだなんて思ってないよ。
むしろ好きな方なんで。
でも、肯定派の人ってありきでしょ。
それは違うかなって。 教育コストはものすごいかかるが
手続き型言語でオブジェクト指向をみっちり体験してから
オブジェクト指向の教育に移行したほうがいい
この手順踏んだほうが間違いが少ない
そうでないと
ID:csv6kfNU ← コイツ
みたいに頭悪いのが大量に量産され続ける >>228
バカにコストかけて教育するのもなんだかなー
バカとハサミは使いよう、というけれど、なかなか良い使いようが見つからんね。 オブジェクト指向のメリットって何?
この問いに今だかつて一人も答えてくれた事は無い
どっか他の文献指差して丸投げとか
逃げと食い下がりを駆使して結局答えないとか >>230
困ったことにどっかの文献ですら
ちゃんと理詰めで仕組みを解説してるものは皆無
完全なオカルトテクノロジー >>230
いびつな答え方するんだがそりゃ間違いなくパーツや責任関係の切り分けからーの作りやすくなるってことやろな
俺は嘘だと思う 色んなサイトでオブジェクト指向の説明してるけど説明が下手すぎねえか?
設計図とか野菜や動物に例えるとか理解してんのかと思うわ
雛形作ってからそこに入力規格を統一したデータをぶち込むって例えでいいだろ ■ このスレッドは過去ログ倉庫に格納されています