X



オブジェクト指向ってクソじゃね?
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/08/24(金) 13:32:09.36ID:ifygL6bT
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。

偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。

一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。

オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96
0600デフォルトの名無しさん
垢版 |
2018/10/08(月) 01:59:16.72ID:5FzXpRZO
お前さんは重度だぞw
0601デフォルトの名無しさん
垢版 |
2018/10/08(月) 02:00:38.48ID:5FzXpRZO
つーかいい子だからもうオナニーでもしてネナヨ
おじさんは忙しいんだから
0602デフォルトの名無しさん
垢版 |
2018/10/08(月) 02:04:10.21ID:5FzXpRZO
オナニー中らしいですww
0604デフォルトの名無しさん
垢版 |
2018/10/08(月) 08:00:16.00ID:s8MF6MAn
クラス単体のプログラムが出来るのは利点だと思う。
そのクラス同士のまとめが難しい
0605デフォルトの名無しさん
垢版 |
2018/10/08(月) 08:22:40.86ID://kQ6Yzy
ID:5FzXpRZO大発狂しちゃってるやん…
応酬見てると半角のほうがまだまともに見えてくる件w

>>574
みたいに人種に原因を求めるのは実は面白いと思う
本人たちが従ってる働き方に既に問題があって
そこに疑問を持たないしどうしようとも考えない
足並みそろえて稲植えてたら収穫できるって発想

たがいの独立性や多様性をベースとした協調
直交性のあるもんを組み合わせるという日常
ってのはやっぱあちらさんに向いてるんだろうね
0606デフォルトの名無しさん
垢版 |
2018/10/08(月) 09:15:06.72ID:r/3VlGF9
自由で独立した人間は因果関係に縛られないんだぜ
原因はこれだから結果は必ずこうなるとか思ってない
0608デフォルトの名無しさん
垢版 |
2018/10/08(月) 09:54:42.20ID:r/3VlGF9
思い込みではなく分類
因果関係に逆らえないのはモノや動物のように扱われる
それ以外が人間
0609デフォルトの名無しさん
垢版 |
2018/10/08(月) 10:16:09.72ID:rY7QFOOR
思い込みではなく分類というのは話が噛み合ってない
そういう分類があるという思い込みなんだから

思い込み or 根拠がある という話なんだから、
思い込みじゃないなら根拠を示すべき
0611デフォルトの名無しさん
垢版 |
2018/10/08(月) 10:34:48.33ID:r/3VlGF9
いや、こういうのでいいんだよ
分類に根拠がないという意見と、OOPに根拠がないという意見は似ている
0613デフォルトの名無しさん
垢版 |
2018/10/08(月) 11:23:00.34ID:rY7QFOOR
>>611
だから分類の話はしてない。

> 自由で独立した人間は因果関係に縛られないんだぜ
> 原因はこれだから結果は必ずこうなるとか思ってない

↑これが思い込みだって話をしている
0616デフォルトの名無しさん
垢版 |
2018/10/08(月) 13:57:02.86ID:HrAB4JNP
GUIみたいに誰もが抽象化のイメージがわきやすいクラスと、Webフレームワークのような、使う人が継承して使えばなんとなく便利なクラスでは、抽象化のやりかたそのものが学問になりそうだよな

一般人はおとなしく継承したクラスの中に、業務ロジックを構造化プログラミングしてなさいってこった
0618デフォルトの名無しさん
垢版 |
2018/10/08(月) 15:37:04.77ID:aKFx8hdA
>>617
GUIの座標とか描画とか、共通関数にするよりもスーパークラスに持たせた方が共通処理と分岐処理が別れて、分岐判断の引数とか減るだろ?

別にオブジェクト志向言語じゃなくても構造体でも出来るし、事実、WindowsだってCで書かれてるけどな
0620デフォルトの名無しさん
垢版 |
2018/10/08(月) 16:12:29.55ID:HqDSWn9/
>>618
WindowsはC++では?
0624デフォルトの名無しさん
垢版 |
2018/10/08(月) 17:20:09.48ID:kgyl4Ui4
>>623
いや、テメーで勝手に分岐が必要なブッサイクなクラス作っておいて
それはないなと
それにクラス構造で分岐しないでくんない?
読み辛い
はっきり言ってクソ
仕様書にどんな条件で分岐してるのか書きにくい
控えめに言って死ね
0626デフォルトの名無しさん
垢版 |
2018/10/08(月) 17:28:45.60ID:SHTmPUE+
windowsでは普通にイベント分岐処理でもswitch文使う
それを隠蔽化するために仮想関数にして実現するどうかは作るヤツのセンスで決まる
0627デフォルトの名無しさん
垢版 |
2018/10/08(月) 17:30:28.51ID:kgyl4Ui4
>>626
それすげーやめてほしい
こっちはテメーが作ったただでさえうんこみたいな設計書に
そう書いてあるから見に行ったのに
そのとおり作ってないとか設計書ゴミ箱に捨てんぞ糞が
0628デフォルトの名無しさん
垢版 |
2018/10/08(月) 17:43:41.49ID:YlFF3Gbm
いや、実際にWM_xxxxに対するcase文てんこ盛りだけど。Windowsの低レベルプログラムは。
0629デフォルトの名無しさん
垢版 |
2018/10/08(月) 17:45:55.46ID:IMi/szTI
>>628
> いや、実際にWM_xxxxに対するcase文てんこ盛りだけど。

オブジェクト指向で作らないからそうなる
0631デフォルトの名無しさん
垢版 |
2018/10/08(月) 17:54:08.00ID:YlFF3Gbm
MFCが出てくる前は、Cでゴリゴリ書いてたのよ
MFCが曲者っつー話はさておき、
Cでクライアントプログラムを書くわけだが、Windows自体はOOそのものの思想で作られていて、ウインドウクラスの登録から始まる
0632 ◆QZaw55cn4c
垢版 |
2018/10/08(月) 18:53:59.21ID:Vh0J6/Nb
>>626
>windowsでは普通にイベント分岐処理でもswitch文使う
pedzold では終始一貫して switch なのは、ちょっとどうかな、と当時でさえ思っていました

>それを隠蔽化するために仮想関数にして実現するどうかは作るヤツのセンスで決まる
今思うに、これは悪手なのではないかと
0633 ◆QZaw55cn4c
垢版 |
2018/10/08(月) 18:58:32.67ID:Vh0J6/Nb
>>631
>Windows自体はOOそのものの思想で作られていて、ウインドウクラスの登録から始まる
それ、今でもよくわからないですね
::RegisterClass() ってコンストラクタに該当するのですか?なぜ ::CreateWindow() とは別に定義したのでしょうか?私はこの二つはラッピングしちゃってます…
0634デフォルトの名無しさん
垢版 |
2018/10/08(月) 19:22:15.46ID:Tqf3ZL+v
WindowsをCで書くわけにはいまさら中々いかないだろう。
かといってgcのある言語やインタプリタのようにアプリ寄りの言語で書くのは不可能だろ。
そうやってnative codeを出せかつOSの記述も(苦労するが何とか)記述可能な言語は
消去法でC++しかなくなる。DとかRustじゃ無理。

また、Windowsと言う位だから、上位には何らかのOOP GUI IFを提供しなければならない。
別にC++のOOP機能が優れていたからWindowsがC++が記述されたわけではない。
ここ勘違いしないように。
0635デフォルトの名無しさん
垢版 |
2018/10/08(月) 19:25:35.43ID:lYyho1IC
WindowsがOOそのものの思想、と言うのはハンドルまみれなAPI群があるので素直に同意できないけど、ウィンドウ周りは多少は頑張った感あるよね。
>>633
ウィンドウクラスとウィンドウを別管理にすることで、同じウィンドウクラスを使い回す時にメモリが節約できるというメリットがあるかと。
0637デフォルトの名無しさん
垢版 |
2018/10/08(月) 20:24:37.00ID:Z6PD3tJ3
>>526さんへ

示された所じゃなくて
その下に有ったリンク先を読んで解った事が有った
https://qiita.com/hiruberuto/items/26a813ab2b188ca39019
読んでいて何が自分に難しいのか?

関数型の場合
処理対象全域を考えて関数で並ぶように作らないといけない
副作用やその他の物を一時に頭に入れて整理し無いといけない
(リンク先にはそうではないと書かれているが自分にはそう見える)

けどオブジェクト指向の場合
対象となる処理を分割して個々に作っていく
分割して個々に作っていった物を連携させて
最終的にはその集合体が出来上がれば機能する
という方が自分に向いている

頭が悪い人間と言うのは広く色んな要素が一編に出て来る物の状態を正確に把握して
それを組み立てる
というのが苦手なのよ

関数型プログラミングは間違いなく
使える人が限られる
そういう物になるだろあなぁ

でもc++なんかでも標準ライブラリーに既にそれっぽいのが有るから
使える程度には理解しないといけなくなるんだろうねぇ
その程度ならなんとかなるかなぁ(笑)

何にしても参考になりました
0638デフォルトの名無しさん
垢版 |
2018/10/08(月) 20:28:18.73ID:kgyl4Ui4
>>637
バカじゃん
テメー以外の奴が作ったときに
privateにされたらそれでしめーだろーが

そういう当たり前の想像力が欠落してるからテメーは何考えても
ダメダメのうんこちゃんなんだよ
0639デフォルトの名無しさん
垢版 |
2018/10/08(月) 20:31:49.61ID:kgyl4Ui4
メソッド呼ぶたびにクソクラスの内部のウンコがどうなってるのか
ケツアナほじって掻き出さなきゃいけねーんだよ
0641 ◆QZaw55cn4c
垢版 |
2018/10/08(月) 20:52:27.06ID:Vh0J6/Nb
>>635
>ウィンドウクラスとウィンドウを別管理にすることで、同じウィンドウクラスを使い回す時に
同じウィンドウクラスを使いまわすっていうのが、そういうことをやる機会があるかどうか、という点でいまいち、なんです
つまり現状のウインドウクラスにてウィンドウプロシージャを設定する、というのが疑問でして、ウィンドウプロシージャが ::CreateWindow() の引数だったら、使いまわす、ってことも検討したかもしれませんが
0642デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:30:56.46ID:811LgONL
>>637
foreach, map, reduce, filter などを使うことによって、
for ループやif分岐や一時変数を使う助長で古典的な書き方から脱却し
リストの要素間の多対応・変換を宣言的に記述し切っていく、
既存言語に拡張されつつある関数プログラミングパラダイムの
限定的でも美味しいとこ取り的な使い方からはじめても全然いいんジャマイカ
0643デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:35:43.59ID:811LgONL
あと、詳しく書くと長くなるので一言ずつ書くと
繰り返しではなく末尾再帰を使えるところでは活用する
クラスを設けて多様性をあらわすのではなく、クロージャーや部分適用で簡潔に表現する
遅延評価や関数変換を使って有効なところで使う
とか
0644デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:36:52.15ID:IMi/szTI
関数型とオブジェクト指向は実は相性がよくて、
オブジェクト指向でオブジェクトとしての構造を
そしてオブジェクト指向の中で使う関数は関数型と
組み合わせて使うのが最強なんだ
0645デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:39:02.72ID:811LgONL
>>644
だからそれはレイヤやグレインの観点から上手くいかないんじゃないかって
上で書いたのに。
上手くいく方法があったら披露してよ
0646デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:43:02.58ID:IMi/szTI
末尾再帰の話が出てきたから、知識の浅い人に説明しておくと

関数型は再帰で実装するから手続き型のループを使う方法よりも遅いという常識を
特定の条件を満たしている場合にループに変換することで、遅くならない
というもの。決してループよりも速くなるわけではない
0647デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:45:21.28ID:IMi/szTI
>>645
何ができたらうまくいくってことになるんだ?

俺にとっては開発が楽になることがうまくいくことだ
楽になってるのでうまくいっている
0648デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:45:58.21ID:811LgONL
>>644
あとcontinuationとかyieldとか使うと幸せになることがたまにあるぜよ
0650デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:47:17.86ID:811LgONL
>>647
何の言語で何をどう作ってんだか知らないが
上手く言っているなら方法論を披露プリーズ
0651デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:48:12.08ID:811LgONL
>>649
methodの中つまり関数の中でだろ
0652デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:50:45.37ID:811LgONL
明日出勤なので寝るぜ
あばよはげどもノシ
0653デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:51:32.33ID:IMi/szTI
>>650
方法論ってなにがほしいのか知らんが、
関数型言語で作ったライブラリは状態を持たないから
汎用的な関数ライブラリになる。
それを便利にオブジェクトで使用する
0654デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:53:09.64ID:kgyl4Ui4
オブジェクト指向のメリットは説明できたかい?

定期的に貼らないと関係ないこと主張する奴がわくからな
これが説明できないならクソ
0655デフォルトの名無しさん
垢版 |
2018/10/08(月) 21:56:30.02ID:IMi/szTI
オブジェクト指向のメリットは状態を
簡潔にわかりやすく持たせることができる

アルゴリズムならともかくシステムから
状態をなくすのは不可能なので
それをどれだけ直感的に扱うか不可欠になる

それが関数型に対するオブジェクト指向のメリット
0656デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:00:12.76ID:811LgONL
>>655
直感ですか…
0657デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:01:29.15ID:r/3VlGF9
OOPのメリットを教えてくれる奴なんていくらでもいたよな
それでOOPが普及して
ふと気付いたらメリットが何だったのか思い出せない

ここでまたメリットを教えられても無限にループするだけだ
0658デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:05:17.61ID:IMi/szTI
>>656
そう。3歳の子供でも、リンゴとミカンの色や形
犬や猫の鳴き声の違いぐらいわかるだろう。
それぐれいオブジェクト指向は人間の思考と一致している
0659デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:05:31.32ID:811LgONL
型クラス、クラスscope、オブジェクトscope,
同じ名前の多態(振る舞いの違い)、
継承によるあっちこっちに無難格納したソースファイルの
似たmethon部分の短冊のような共有による依存性のジャングル

これらについて理論的、科学的に有効性を述べないとだめだよ
0660デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:11:45.44ID:811LgONL
そう、そしてそれらがある程度規模の大きく複雑な
アプリケーションレイヤのソフトウエアの構造表現として
どう有効なのか理論的、科学的に述べないと…
0661デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:19:30.00ID:r/3VlGF9
確実にメリットがあるなら人には教えないで独占する
それが理論的で合理的

確実ではないギャンブルなら人に教える
0662デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:28:08.41ID:811LgONL
>>661
つまりメリットは無いとw
0663デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:33:36.33ID:811LgONL
オブジェクト指向は低学歴にはムリ
それはあってる

オマエも含めてな
0666デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:37:03.95ID:811LgONL
低学歴知恵遅れが自分を大きくみせようと
必死なのはわかる
0667デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:38:24.97ID:811LgONL
だいたいわかる

ウンコスクリプトしか使えないような低学歴知恵遅れが
ムダにオブジェクト指向あげしてる
0669デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:51:37.06ID:811LgONL
節子それfake
0670デフォルトの名無しさん
垢版 |
2018/10/08(月) 23:13:05.52ID:r/3VlGF9
1bit思考の中で最悪なのは、需要と供給
買う方が100%自己責任と思ってるから売ってる側は罪悪感0
0671デフォルトの名無しさん
垢版 |
2018/10/08(月) 23:18:57.76ID:811LgONL
その論点から起こしてだね、
オブジェクト指向の有効性を非論理的、寝技的に布教しようとするのは
いくらなんでももう、無理があるよ
0672デフォルトの名無しさん
垢版 |
2018/10/08(月) 23:40:30.66ID:C02Vpegg
ここの議論でもそうだけどカプセル化とかインターフェイスに対するプログラミングとか
ここの要素について話すのは意味があるが
「オブジェクト指向」って言葉でまとめると途端にクソ議論になる。
その意味ではやっぱり失敗だろう。
0673デフォルトの名無しさん
垢版 |
2018/10/09(火) 02:31:35.79ID:GxJd+3a3
>>672
その辺はポジティブな意味合いが強いからな
ただメリットがあるからってデメリットがどうなるかは別問題として
0674デフォルトの名無しさん
垢版 |
2018/10/09(火) 06:16:50.45ID:1H6kld1Z
カプセル化とかは「学習コスト」だから100%ネガティブ
コストを消費する代わりに何かメリットがないとポジティブどころか中立にもならねえ
0675デフォルトの名無しさん
垢版 |
2018/10/09(火) 06:53:21.12ID:Fv2MSo0/
今になって思うのは、オブジェクト指向にまつわる説明で特徴的な何々は何々であるだから何々があるはずだ的な事は製作者側の考え方の根本だったんだろうな。
ここに共感してないから触ってても疑問がつきまとう。
それでもってこういう考え方をする奴は布教的な奴が多い。こういう奴らは本当本当に嫌いだわ。人のその後に対する考えなんてみじんも無い。
例えばウェブ上で人気の言語的なランキングで上位に入ってる言語と周りを見渡して実際触られる言語の食い違いがひどい。
他の奴の意見見てると大体同じ感覚で変な笑いがでる。
0676デフォルトの名無しさん
垢版 |
2018/10/09(火) 07:05:27.74ID:xcSr1k5g
振り返ると、信仰宗教みたいな流行だった
0677デフォルトの名無しさん
垢版 |
2018/10/09(火) 10:12:33.99ID:hleJLyKe
オブジェクト指向の宗教的側面と、Rubyの宗教的側面がかけ合わさって
ドン引きするレベルの狂信者が出現した

もはや言語は死につつあるのに狂信者は毎日板を荒らし回ってる
0678デフォルトの名無しさん
垢版 |
2018/10/09(火) 10:58:21.87ID:MhhKJFZu
>>674
学習コストはなんにでも適用できる
一般的すぎて無視できる

プログラムを作るにはカロリーを消費すると
言うようなもの、そらそうだで終わり
0679デフォルトの名無しさん
垢版 |
2018/10/09(火) 11:01:37.61ID:MhhKJFZu
カプセル化してしてデータを閉じ込めることこそ
オブジェクト指向の真髄、データに対する責務を
集約する事でプログラムを作りやすく堅牢で
メンテナンスしやすくできる
0680デフォルトの名無しさん
垢版 |
2018/10/09(火) 11:40:52.35ID:1H6kld1Z
>>678
コストがあるから見返りにメリットが必要だったんだが
コストを無視するならもうメリットがあってもなくてもいいぞ
0683デフォルトの名無しさん
垢版 |
2018/10/09(火) 12:05:55.31ID:MhhKJFZu
オブジェクト指向テクニックを使うと外から壊されにくい
堅牢なデータ構造を作ることができてプログラムの
完全性を保証できる、オブジェクトを組み合わせて
より大きなプログラムを作れるっていうのが
オブジェクト指向のメリット
0684デフォルトの名無しさん
垢版 |
2018/10/09(火) 12:11:49.02ID:1H6kld1Z
当たり前すぎるってあれだよな
反証不可能ってやつ
反証したい勢力と対立煽りするくらいがちょうどいいんだよな
0685デフォルトの名無しさん
垢版 |
2018/10/09(火) 12:12:29.16ID:MhhKJFZu
データ隠蔽が有害っていうのは嘘だ
データは隠してなんぼ、オブジェクトを使う側に
データの存在を意識させないようにする事で堅牢な
プログラムを構築できる
0686デフォルトの名無しさん
垢版 |
2018/10/09(火) 12:44:03.73ID:3cHmJpwL
大規模開発はオブジェクト志向が、
とか喧伝する低偏差値信者もおとなしくなり、
一歩下がって、そんなに良いものだったっけ?と振り帰られる雰囲気がでてきたのは良いこと

いつまでも熱狂信者の思惑通りにはいかないよ
時がたてば、本当にコストペイするものだけが生き残る
0687デフォルトの名無しさん
垢版 |
2018/10/09(火) 15:34:08.86ID:s6lFROtd
>>685
テストもできないのが不味い
結局使用する側が状態を意識しなくてもいい造りなら問題はおきない

でもinitメソッド連発で呼ばれると死ぬだろ現実
initメソッド呼んだんだからどんな状態であれ初期状態に移行しろよ
ってのが呼ぶ側の主張
0690デフォルトの名無しさん
垢版 |
2018/10/09(火) 17:11:39.56ID:UgeI4/Dm
>>687
> でもinitメソッド連発で呼ばれると死ぬだろ現実
> initメソッド呼んだんだからどんな状態であれ初期状態に移行しろよ

どんな場合でも初期状態に移行すればいいだけでは?
0694デフォルトの名無しさん
垢版 |
2018/10/09(火) 18:17:11.30ID:o83bbsRF
>>690
でも実際はハードに近い部分のinitだったりするとそうはいかないケースがあるよね?
って可能性が想定できないなら君は設計を語るレベルにないんじゃない?
0697デフォルトの名無しさん
垢版 |
2018/10/09(火) 18:50:57.71ID:UgeI4/Dm
>>696
じゃあそういうケース以外には当てはまらないってことでいいよね
例外中の例外なんてどうでもいいわ
0699デフォルトの名無しさん
垢版 |
2018/10/09(火) 18:52:15.46ID:jSAcVkU7
メソッド呼ぶほうが呼び出し順にナーバスな設計というのが糞
内部を隠蔽できてねーやんというだけのこと
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況