オブジェクト指向ってクソかよPart5
■ このスレッドは過去ログ倉庫に格納されています
無理やりオブジェクト指向にしたから出てきた問題を解決して凄い凄い言ってるだけ。
単なるマッチポンプ。
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。
偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。
一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。
オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。
https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96
前前前前スレ
オブジェクト指向ってクソじゃね?
https://mevius.5ch.net/test/read.cgi/tech/1535085129/
前前前スレ
オブジェクト指向ってクソじゃねぇよ? Part2
https://mevius.5ch.net/test/read.cgi/tech/1539872441/
前前スレ
オブジェクト指向ってクソじゃねぇかよPart3
https://mevius.5ch.net/test/read.cgi/tech/1542884872/
前スレ
オブジェクト指向ってクソじゃねぇかよPart4
https://mevius.5ch.net/test/read.cgi/tech/1556462315/ カプセルかってのは何やんのよ。
細かい解釈の違いは、頼むから横においておいてよ。
1) 型クラス
2) メンバのアクセス制限修飾
こきらまでは旧来のCもできましたよと。いいよね。
3) アクセスmethodを設け、calssまたはインスタンススコープを持たす
そして「動的な」が好きな人は
4) 動的インスタンスの生成・消滅
⇒エクステントはレキシカルとは結びつかず独自に管理せなあかん >>168
> だってそれお前の感想止まりじゃん
俺の感想じゃなくて世界の感想だってw >>188
スコープダイナミックって言うことは、外から見える変数ばっかりで
プログラムがちょっと大きくなっただけで、局面局面で意識・管理せにゃならん
変数や状態が増大しくみ合わさって入り組んで見えたり、
あるいは実行時に呼ばれる順が変わると変数の内容が変わったり
管理不能になる
昔はそういう言語しかなかった
CやShemeがlexical scoprやextentを導入して革命がおきた >>191
なんなら、関数型と手続き型と比較してみますか?
データ出してみてください。 C#とnode.js使いだけど、ダウンロードできるオープンソースでオブジェクト指向じゃないコードを落とした経験がまったくない。
たぶん、業種によるんだろうな。
オブジェクト指向と無縁の業種とは無縁だから具体的に何かは知らないけど。 そうでしょっていうのは、お前が関数型と手続き型の
データを持ってくるってことね。
自分で検証しなくていいのよ。お前がやりましょうってこと。 困ったな
俺はメンバ変数全部publicだし
お前らの組み方だと組むときになって
アレ?このメンバ変数privateだ!
オラ、びっくらこいたーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー!!!!!!!!
設計を根本から見直さなきゃ!
ってシーンがないとダメなんだろ
俺、そういうことねーし >>194 あたりまえやんけ、そんなこと。
そえはさておき >>189 がカプセル化の概要であるとして、
どのような弱点をもたらすか
1つはスコープの問題
メンバにアクセス修飾制限するのは一見いいことのように見える。
複合体型に基づくclassやインスタンスのメンバごとのスコープは
フレームワーク的な中間レイヤの局所では一貫して明確に決めやすいけど
上位の複合的な機能のアプリレイヤに近づくと、型も色々持ち込んだ複合的な
ものになるわけだし、動的に生成したインスタンスを動的なエクステントで使いまわす
ので、メンバへのアクセス制限は局所局所で融通が利かず一貫性を維持しにくくなって
結局多くのメンバをアクセサを用意するはめに陥る。
これは、グローバルなscope、動的ななextentを持つ(名前階層を持った)
多数の変数でプログラムを組むことと同じ複雑さをもたらすでしょ。
そのなかでエクステントの管理もやっていくと、、、(弱点2)
どMかよ>
では >>183 と組み合わさって、さらにどのような弱点をもたらすか… なぜ変数やメソッド(メンバ関数)をprivateにするか?
少なからずの場合それらが試行的もしくは暫定的。
例えばシグネーチャがまだ流動的な場合とか。
自分も含めて勝手に使って欲しくない、少なくとも使われる箇所を完璧に把握しておきたいような場合。 >>187
>これが抽象的過ぎてわからん。
>なんで、毎回曖昧な表現使うかな...。
928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは
チンポ.オシッコを出す
チンポ.オシッコを止める
さっきトイレでやってきた。
929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。
×
俺.オシッコを止める 俺.オシッコを出す
○
俺.チンポに力を入れる 俺.チンポから力を抜く オブジェクト指向のもたらした依存爆発へのカプセル化の関与
多態はmin, max、abs くらいに制限しまずは捨てましょう。
継承はソースの合成レベルで大いなる依存を持ちむので、
特にアプリレイヤでの活用はホント色々問題あるんだけれど、
カプセル化はというと、
1つはdynamic なextentが好まれる点ね。
どっかで作られるインスタンス・メンバが、見通しやすいnest したlexicalなscopeを離れて
浮遊し、どっかで参照、更新されると。。。。
動的にだぞ?お前がやっているような小さいプログラムは何とでもなるかもしれないけどさ、
どうやって追っかけんだよ
二つ目はデータ構造間の依存、三つ目はデータ構造に対するメンバとmethodの依存
たとえば委譲した動的階層化データ構造の中の、ある局面で一見みえないメンバがどこか遠くで
定義され参照され更新され、、、、orz
あるいは複合型クラスのインスタンスとメンバを多階層の継承と組み合わせた場合、、、、、
まぁ言わずもがな経験者は分かるだろう
管理不能なスパゲティ−の出来上がりだわな
こうやってカプセル化した動的な型構造は依存を中継するハブ見たいな役割を果たしてしまうんだよ
このたわけめ
ここまで1から10まで説明させるとは、金取るぞホントに これがネットのどこにも落ちてない口伝でのみ伝えられるという奥義(゚A゚;)ゴクリ
( ゚д゚)ホントニハヤットンノカイ? 入門者とえせ講師を中心に日本中で絶賛大流行中だぜ。
もう新興宗教かめ威信か、比科学的もいいところ >>199
> ので、メンバへのアクセス制限は局所局所で融通が利かず一貫性を維持しにくくなって
> 結局多くのメンバをアクセサを用意するはめに陥る。
なんでアクセサを用意したらダメなんて思ってんの?
それが外部から触るなら、インターフェース化(≒仕様化)するってだけでしょ >>202
> 動的にだぞ?
動的ってどういうこと?
参考コード書いてよ >>202
> の、ある局面で一見みえないメンバがどこか遠くで
> 定義され参照され更新され、、、、orz
参考コード書いてよ なんだろう、OOPってこんなに難しい話ではないと思ったのだが...
着目点が違うのだろうか。
OOPに関係のない概念まで出てきているような...。
誰か、理解、できた、人、いる?
いや、static/lexical scope、dynamic scope、extent、依存、複合型クラス、インスタンス
これらの用語が全然スッと頭に入ってこないのはなぜだろう。 >>202
> あるいは複合型クラスのインスタンスとメンバを多階層の継承と組み合わせた場合、、、、、
> まぁ言わずもがな経験者は分かるだろう
ちゃんと書けよ >>209
着眼点がおかしくて、たぶん問題を解決するためにオブジェクト指向を使うんじゃなくて
オブジェクト指向の問題点を見つけるためにコードを書いてるんだと思うよw >>206
せっかく内側に入れて隠そうとしたものが、
実は外からアクセスする必要にあるものでしたテヘペロというのは
設計のミスだったり複合型化すべきではないものだったりするじゃない。
それにプログラムが実行中にある局面から見える変数や環境、
あるいは関数は数が多くなっ足り独自のextentを持っていると
急激に人間には複雑に見えてくるでしょ
だからアクセサを多数用意するのh簡単だけどそうした段階で、その後の管理苦労はもう目にみえているわけ
本とここは子供相談室かよ 機能一覧
→各機能の処理一覧
→それに対応する関数一覧
を作ってた昔のほうがシンプルだよ
これ以上シンプルなモノがないのに
余計なことしてわざわざ難しくしてる >>213
> せっかく内側に入れて隠そうとしたものが、
> 実は外からアクセスする必要にあるものでしたテヘペロというのは
> 設計のミスだったり複合型化すべきではないものだったりするじゃない。
お前の設計のミスでオブジェクト指向の問題じゃない >>217
おれはそんなことやんないって、何勘違いしてんだたわけが
>> 206 になぜよくないか言っただけ >>213
だから具体的なコードを書けと。
あと複雑さをゼロにするものだって思ってないか?
お前がオブジェクト指向に過剰に期待して、
オブジェクト指向はダメだって言ってるだけ。
例えて言うのなら
お前「エアバッグは自動車事故を完璧に防ぐものだ」
お前「でもエアバッグでは自動車事故は完璧に防げない」
お前「だからエアバッグはだめなんだ」
このセリフを一人で言ってるだけ。 >>217
もうオブジェクト指向方法論にずらさないで
重箱の隅はどうでもいいので えっ、私だけ不勉強なの?
どなたか、解説をしていただけないだろうか。
カプセル化がstatic scopeとextent管理に問題を及ぼす解説らしいのですが...。 >>218
俺もオブジェクト指向で、そんな設計ミスしたりしない。
お前の中の想像の人間の話でもしてんのか? >>219
複雑さを増大させるとかいたらすげー極論が出てきたな
論理的なものの考え方が苦手な人がよくブジェクト指向にはまる >>1214
オブジェクト指向が解決するのは、
> 機能一覧
> →各機能の処理一覧
> →それに対応する関数一覧
これらを組み合わせる時の問題 >>221
直訳すると
テメーの態度が気に入らない
ということになる >>223
俺が言ったことが極論でもなんでも良いから、
何か言い返せよw >>221
そういうのを論理の飛躍という
根拠なく利点と結びつける >>224
いらないよ
普通に関数一覧の関数作ったら終わりやで
入出力も明確や
いいからさっさと作れ >>226
子供だな。
>お前「エアバッグは自動車事故を完璧に防ぐものだ」
>お前「でもエアバッグでは自動車事故は完璧に防げない」
>お前「だからエアバッグはだめなんだ」 エアバッグの性能を厳密に測定しないとわからないよね >>228
じゃあ、その関数一覧でさ、
アルゴリズムが、例えば
AES暗号を使ったモジュール
TDES暗号を使ったモジュール
2TDES暗号を使ったモジュール
3TDES暗号を使ったモジュール
みたいに複数あって、
それらを交換可能にするときはどうするのさ?
てんでバラバラの関数一覧があるだけではダメってのがわかるだろ?
それらの関数一覧に対する共通の仕様(=インターフェース)が
定義されれてないとダメ。
それに関する問題を解決するのがオブジェクト指向なんだが そう言う問題以前に
誰も言っていないことを、お前は言ったとか
妄想か池沼かガキの言い分か 何を言ってるのかわからないけど、間違いなく3vnN9KRUはオブジェクト指向を有効活用しようとしたことがないのは分かった。 >>232
そんなもの昔からあるパラダイムで十分実現可能だし
Cなどでそう実装されている >>235
それを発展させて汎用化したものがオブジェクト指向。
関数があるだけでは、それらを組み合わせる時の問題に対処できない。 >>234
分からないんじゃしょうがないだろ
分からないからこそオブジェクト指向の沼にはまってんだろ >>237
> Cなどでそう実装されている
C言語でオブジェクト指向が実装されてるからなんだっていうのか?
オブジェクト指向とオブジェクト指向言語の違いぐらい理解しろよ。 >>239
お前がオブジェクト指向の沼にハマってるだけだろw
それともまた、「お前の考える想像上の人物」の話でもすんのか?w スコープダイナミック!www
ギャバンダイナミック!wwwww >>239
ええ!?
わからないのにあれだけ長々オブジェクト指向の批判してたの!? >>240
C言語を使ってオブジェクト指向のようなコードは(回りくどくなるが)記述しよとすればできるが、
C言語にはオブジェクト指向の機能は実装されていない。
他の言語も同様。
基地外だったか… >>243
やはりオブジェクト指向は一子相伝・・・ >>244
オブジェクト指向の機能が実装されて無くても、
オブジェクト指向は出来るんだよ。 オブジェクト指向の批判として捉えようとしたからダメだったのかな...。
うーん、もう一度読み直してみます。 > >>239
> ええ!?
> わからないのにあれだけ長々オブジェクト指向の批判してたの!?
>>234
> 何を言ってるのかわからないけど、
分からないといったのはお前さんID:BlSgSv0Gだよ >>248
いやもう、オレんとこにきた新人の派遣さんだったら
ホワイトボードに書いて教育してあげんだがな… >>249
いや、理解してないのは お ま え。
オブジェクト指向のコードまともに書いたことねぇだろ。 まあ、オブジェクト指向は難しいからな
俺が気に入らない奴は全員わかってないことにしてぶっ叩いてやる >>250
うちも新人の派遣さんに、オブジェクト指向の教育をしてるよw 当たり前だが、新人でない社員は、全員オブジェクト指向を理解しているw >>254
オブジェクト指向の教育をしてるから、
殆どのフレームワークの設計を理解できるよw
ほぼすべてのフレームワークはオブジェクト指向だからね。 お前もお前もお前も全員
オブジェクト指向について素人臭くって見てらんない
唯一俺だけが理解してるし
俺以外のはオブジェクト指向じゃないからね
いいね 嘘だろ、w
少なくともお前は理解している気になっている新興宗教宣教師のスパゲティー製造機だろw
白状しろw >>254
いや、お前の新人も可哀想だわ。
staticおじさんの子供を製造しているとか恐ろしいな。 >>256
うそこけ、numpyとか山のようにあるだろ
馬脚をあらわしたなw 少なくともオブジェクト指向が世の中の多くを締めてるんだから
それを教えないのは愚の骨頂だよね。
オブジェクト指向を知らなければ、オブジェクト指向を批判することも出来ない。
(デファクトスタンダードの)オブジェクト指向がわかりませんっていう人間が出来てしまう。 なんか、加速やべえ。
オブジェクト指向がクソだと思う人は使わない。
オブジェクト指向にメリットが見いだせる人は使う。
もう、それでいいと思うよ。 >>262
では、オブジェクト指向を無視してよかった事例、どうぞ。 https://docs.scipy.org/doc/numpy-1.13.0/user/whatisnumpy.html
> NumPy fully supports an object-oriented approach,
NumPyを使うときも困るだろうなw >>262
使っているよ。
役に立つところにところではね。害のあるところでは使わない。
Java案件は使わざるを得ないかな注意して使うけど、周りかだどんどん汚いものが入ってくる >>264
なんで俺にオブジェクト指向を無視してよかった事例を聞くの?
オブジェクト指向を批判する人は、オブジェクト指向を理解してないとダメだが、
オブジェクト指向を理解したからと言って、オブジェクト指向を批判する必要はないしw >>265
中で使っているんだよ。それをアプリレイヤでは演算子で使う。
なのでOOP的な書き方とは一線を画している >>268
急に「NumPyはオブジェクト指向を中で使われてる。」と
オブジェクト指向は使われてることをアピールしてどうしたの?w NumPyのIFは手続きと演算子でOOPSが隠されているからさ。 >>270
でもNumPyの内部に踏み込むと
オブジェクト指向なんでしょう?w
オブジェクト指向教えないと、使えない人間になっちゃうよ? >>268
突っ込みどころ
1.それってオブジェクト指向をクソだと言えないのでは?
2.むしろアプリ層ほど、オブジェクト指向って重要だと思うのですが(フレームワーク的に)。
2.は何の開発をしているのかにもよるだろうけど。 「NumPy グラフ描画ライブラリ」でググると
一番目に出てくるのがmatplotlib
https://ja.wikipedia.org/wiki/Matplotlib
> Matplotlibは、プログラミング言語Pythonおよびその科学計算用ライブラリ
> NumPyのためのグラフ描画ライブラリである。
> オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。
なので、どちらにしろオブジェクト指向は必須なんだわ
オブジェクト指向が嫌いなら嫌いでいいが、オブジェクト指向を教えないのは愚の骨頂 >>272
ここに書いているだろ。
>>266
> >>262
> 使っているよ。
> 役に立つところにところではね。害のあるところでは使わない。
> Java案件は使わざるを得ないかな注意して使うけど、周りかだどんどん汚いものが入ってくる
その上で問題があり害のある使われ方がしていると
いっているんだが。
前スレではどういう場合に使うか書いたんだけれど、また長々書くのは嫌だわ なんで言語の問題じゃなくて、
「俺の周りの人間がクズなんだ」って話にすり替えるんだろうかw
類は友を呼ぶって言葉知ってる?
周りがクズなら、お前もクズだっていってるようなもんなんだよ。 >>273
matplotlibが必要があってOOPSにしたか、あるいはなんでも良かったのかは不明だから
使っているから、必要があると決め付ける。
こういうのをミスリーディングという。
>> 219 でも気になったけど
誰も言っていないのに
>例えて言うのなら
>お前「エアバッグは自動車事故を完璧に防ぐものだ」
>お前「でもエアバッグでは自動車事故は完璧に防げない」
>お前「だからエアバッグはだめなんだ」
>このセリフを一人で言ってるだけ。
と妄想して決め付ける、揚げ足取りのをミスリーディングが多くて
まじめに議論する相手としてふさわしくないな >>276
> 使っているから、必要があると決め付ける。
使ってるんだから、matplotlib使うコード書くときは必要じゃん?
オブジェクト指向が必要なフレームワークをたくさん上げればいいの?
NumPyだけで仕事できるわけじゃあるまいし
あんたが、何を言いたいのかわからん。 >>275
また決め付けた
>「俺の周りの人間がクズなんだ」って話にすり替えるんだろうかw
>類は友を呼ぶって言葉知ってる?
>周りがクズなら、お前もクズだっていってるようなもんなんだよ。
オレがそんなこと書いてないのに、答える必要はなさそうだな
どうもお前さんとは話がかみ合わないな >>276
あと、日本語が理解できてないよ。
誰も言ってないって、
「俺が例えとしてだした」んだから
誰も言ってないので当たり前じゃん。
なんで俺が言った(例えによる)説明を
他の人が言ってるはずだ。って思っちゃったのさ?w >>277
日本語苦手?
matplotlib は必要があってOOPS IFを採用したかは不明だと書いているんだよ >>278
> オレがそんなこと書いてないのに
↓書いてるじゃんw
> 周りかだどんどん汚いものが入ってくる >>279
誰も言ってないことを 人が言ったことのように書くなよ >>280
> matplotlib は必要があってOOPS IFを採用したかは不明だと書いているんだよ
え?なに?その理屈でいいなら、
NumPyは必要があってOOPSを採用してないかは不明だといえばいいの?w >>281
やっぱ日本語苦手そうだな
周りとは周辺の既存コードとかインスタンスや依存からだよ。 >>278
まずあなたは>>171のメリット説明で軽く流してましたが、あなたはOOPのメリットを理解しているのですか? >>282
人が言ったことだと思ったのは
お前のミスであって、
俺は最初から、自分の意見しか言ってない ■ このスレッドは過去ログ倉庫に格納されています