X



オブジェクト指向ってクソじゃねぇかよPart3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/11/22(木) 20:07:52.47ID:OdN2A7JT
無理やりオブジェクト指向にしたから出てきた問題を解決して凄い凄い言ってるだけ。
単なるマッチポンプ。


カプセル化(英語: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/
0306デフォルトの名無しさん
垢版 |
2018/12/24(月) 20:06:44.29ID:NHngvZDq
>>304
争いは同じレベルのものでしか発生しないから
※賢かったらそうそう争いに発展せず、平和的な言葉のやり取りで完結する
0310デフォルトの名無しさん
垢版 |
2018/12/24(月) 21:58:18.71ID:l5wcxkvf
アメリカと争いになってる北朝鮮はアメリカレベル!凄い!大国!
0313デフォルトの名無しさん
垢版 |
2018/12/25(火) 00:11:46.38ID:ufEprh7r
> は?じゃあ客から見たらテメーを使うメリットは欠片もないなw

「早く作れる」のがメリットでは???
0314デフォルトの名無しさん
垢版 |
2018/12/25(火) 09:38:46.20ID:wH59ARy4
コーディングが早いか遅いかなんて誰も気にしとらんのですけど
0317デフォルトの名無しさん
垢版 |
2018/12/25(火) 12:13:26.21ID:wH59ARy4
なにか言い返したいのやろうけどおしてもコーダー目線から離れられないおまえら可愛いすぎw
0318デフォルトの名無しさん
垢版 |
2018/12/25(火) 12:48:45.02ID:A3ehQdCM
OSがOOPと無縁?

エクスプローラがビヨンビヨン動いたりするのはOOで設計、コーディングしたことの現れなんだが
0319デフォルトの名無しさん
垢版 |
2018/12/25(火) 12:48:54.51ID:Ad0rKeqk
「お、俺のほうが安く出来るし!」
行き着く先は餓死か一家心中か
0320デフォルトの名無しさん
垢版 |
2018/12/25(火) 12:51:52.98ID:A3ehQdCM
人月見積の業務屋こそOOとは無縁

OOPの言語的な進歩によるメリットをありがたく享受しとけや
0321デフォルトの名無しさん
垢版 |
2018/12/25(火) 14:23:34.81ID:wH59ARy4
なんやこのバカw
0324デフォルトの名無しさん
垢版 |
2018/12/26(水) 03:15:48.77ID:HYNUYL9X
            チ
           ン
          ポ
         が
        シ
       コ
      シ
     コ
    す
   る
  ぜ
 !


  チ ン ポ が シ コ シ コ す る ぜ ! !


 ン
  ポ
   が
    シ
     コ
      シ
       コ
        す
         る
          ぜ
           !
            !
0325デフォルトの名無しさん
垢版 |
2018/12/26(水) 11:58:06.03ID:SYluapyD
シコシコするのはチンボだと何度言わせるつもりかね?キミ
0329デフォルトの名無しさん
垢版 |
2019/01/02(水) 13:36:19.93ID:flk+4EOf
元号変わっても無いだろうなw
0332デフォルトの名無しさん
垢版 |
2019/01/03(木) 08:38:49.21ID:C2GX+pp4
オブジェクト指向信者は bash なんかより PowerShell 使うんやろなあ
0334デフォルトの名無しさん
垢版 |
2019/01/03(木) 09:33:21.39ID:MUpMksOg
一人でオブジェクト指向のプログラムソフト作ったことあるやつなら、オブジェクト指向は凄いってなる
でもオブジェクト指向の恩恵を受けられなかったおじさん達は何も恩恵を受けられなかった
boostはオブジェクト指向!
0337デフォルトの名無しさん
垢版 |
2019/01/04(金) 00:53:37.04ID:ihBPygyi
ビルド時間と実行時間の総和のトレードオフで、
別にビルド時間が72時間とか掛かってもいいんじゃねえの

出来たバイナリを数百万人とか数億人が使うんだろ
全世界で節約できる実行時間総和は桁違いじゃん
0338デフォルトの名無しさん
垢版 |
2019/01/04(金) 00:57:59.57ID:/sRNc3NC
ビルドとテストに1分以上かかると集中力切れてやる気なくなる
昔はビルドに1日かかることもあったと爺さんが言ってたが正気の沙汰じゃない
0339デフォルトの名無しさん
垢版 |
2019/01/04(金) 01:09:43.10ID:ihBPygyi
じゃあ指向は関係なしで開発方針の問題じゃねえの

爺さんの時代はコーディングシートやらフローチャートやらだろ
ビルドにミスは無いんだよ
だから一日掛かってもいい
ビルド以前にテストが終わってる時代だろ
0341デフォルトの名無しさん
垢版 |
2019/01/04(金) 12:18:18.33ID:/sRNc3NC
エンティティにサービスを注入するのって有り?無し?
DDDだと無しってことになってるけど現実的に厳しくねえか?
0342デフォルトの名無しさん
垢版 |
2019/01/09(水) 07:12:25.14ID:7yddR1St
>>338
いいぞ、のんびりで
午前中→ハイ、ポチッとな→ネットサーフィン
午後→(#・∀・)オイ!新人(俺)、バグってるじゃねーか!→(*゚∀゚)フヒヒ、サーセン→修正→ハイ、ポチッとな
→じゃあ、今日は○○くん(俺)のせいでテストできないので帰宅で
0344デフォルトの名無しさん
垢版 |
2019/01/09(水) 09:54:20.72ID:tctCfOa0
「私がオブジェクト指向と言い出しましたがC++なんて知りません。クラスベースなんて知りません」
0345デフォルトの名無しさん
垢版 |
2019/01/09(水) 10:05:54.22ID:j7vnxTir
クラスを使うことはまあいいんだよ(必要ならオブジェクトでシミュレートすればいい)
ただ、抽象データ型みたいにプロシージャやデータ構造をどうするかに拘泥して消耗したなくない

アラン・ケイが考えるオブジェクト指向プログラミング
http://d.hatena.ne.jp/katzchang/20080807/p2

いずれにせよ、クラス指向(つまり、クラスを使って抽象データ型を実践するアイデアの)オブジェクト指向
http://www.stroustrup.com/whatis.pdf

と、メッセージングを介して「決定の遅延」を実践するオブジェクト指向は分けて考えた方が混乱がない
http://metatoys.org/oxymoron/oxymoron.html
0346デフォルトの名無しさん
垢版 |
2019/01/09(水) 10:59:13.90ID:Gc8meU57
ウンコ言語Smalltalkの影響を色濃く受けたDart 1.0は
Googleの力をもってしてもウンコ過ぎて全く普及しなくて
方向転換を余儀なくされたし、
やっぱりSmalltalkのやり方は間違ってるんじゃね
0347デフォルトの名無しさん
垢版 |
2019/01/09(水) 11:07:59.02ID:tctCfOa0
Smalltalkと同じダイナミックバインディングのJavascriptは?良い悪いはともかく圧倒的普及率だが
0350デフォルトの名無しさん
垢版 |
2019/01/10(木) 04:45:08.36ID:FYQAgPhD
>「決定の遅延」
に書いて有るのは単純にアプリケーションを作るにはそれで良いと思うけど
何時も土方系のデータ処理アプリケーションを作るのに
それは適用出来るのだろうか?
という疑問が何時も有る
端的にデータ処理系は対象外とか例外とかになっているのかねぇ?
そういう事なら納得し易いんだけど
これはsmalltalkだけじゃなくてオブジェクト指向的に作る場合何かも感じるんだけど?
どうなんだうろか?

guiなんかだとかなり適合度が高い感じで考えやすく作り易いけど
どうもデータ処理
という視点で考えた時に上手い方法を思いつかない
途中で処理を変えてしまうと後半に影響が出てしまう様な気がするんだけど
それを上手く影響し無い様に作れる物なのだろうか?
ウォーターフォール的に考えて作って
変更する時はテストで流して確認する
これしか無い様な気がして成らないんだけど
余りこの手の分野でのやり方を自分は聞かない
誰か聞いたこととかやってたりとかしないですかねぇ?
smalltalkの場合動的にやるのはいいけど
テストもせずにいきなりやる物なのだろうかという疑問が消えない
ファロみたいに試行錯誤する場合や互いの影響度が低い場合は良いと思うんだけど
データフローが有る様な物に適用出来るのだろうか?
0351デフォルトの名無しさん
垢版 |
2019/01/10(木) 07:41:21.29ID:QLcoin/6
>>350
「遅延」させるべき「決定」事項が一切ない決まりきった処理なら
(メッセージングの)オブジェクト指向でやる意味はないんじゃない?
程度によってはソフトウェアである必要すらないわけでハードウェアで組んでしまえという話にもなる

という話ではなく?

何か小さな具体的な例を出してくれると実際のコードを示しつつ議論しやすいかと
0352デフォルトの名無しさん
垢版 |
2019/01/10(木) 11:36:56.93ID:C3UGp7jd
Smalltalkはウンコ過ぎるから別の言語に乗り換えた方が良い、って決定を遅延し続けた結果
時代に取り残されてるのがSmalltalker
0353デフォルトの名無しさん
垢版 |
2019/01/10(木) 18:00:14.55ID:3kN+h5hG
>>350
そのデータ処理の内容を分析してモデル化するだけでは?
データ処理だとダメという感覚が全くわからん
0354デフォルトの名無しさん
垢版 |
2019/01/10(木) 18:33:55.69ID:Q3mhk3sM
乗り換えるも何も誰も乗ってない件
0355デフォルトの名無しさん
垢版 |
2019/01/10(木) 21:38:51.03ID:FYQAgPhD
>>351
何て言うのか
smalltalkについては殆ど知らないんだけど
見た感じ手続き型とは随分違う感じで書いている様に見えるんだけど
メッセージパッシングで遅延する場合はそういう手法で良い様な気がするんだけど
従来型の手続き的に書く場合はsmalltalkではどう書くのだろうか?
という疑問が有る
って事なんだけど
特に具体例って言われても無かったりする
c++だと手続き的にもオブジェクト指向的にも書けるけど
smalltalkだと手続き的に書けない?様に見えるから
遅延しない手続き的な処理が必要な時はどうしているんだろうか?
という疑問
って事
>>353
具体例が無いからアレなんだけど
その
分析してモデリング化する
これをどうやっているのだろうか?
所謂バッチ処理みたいな感じの時にどうやって分けているんだろうか?
という疑問って言えば良いかなぁ?
guiみたいなのだと処理がバラバラに発生するからイメージ出来るんだけど
バッチってズラッと流れるからどう分けるのかイメージ出来ない
そんな感じ何ですよねぇ
0356デフォルトの名無しさん
垢版 |
2019/01/11(金) 08:11:31.95ID:YAW8qxGH
バッチ処理もウェブもドメインモデルは同じ
外部インターフェイスとアダプタが異なるだけ
バッチ処理だから急にモデルが崩壊するということはありえない
0357デフォルトの名無しさん
垢版 |
2019/01/11(金) 09:23:47.25ID:mSFYbYu0
>>355
馬鹿かお前。
手続き型の反対は宣言型。SQLやPrologやXML、HTMLみたいなのを言うの。
ほか大抵の言語は手続き型。
当然smalltalkも純然たる手続き型。
いい歳して知ったかぶり恥ずかしいよ。
手続き型言語で宣言「的」に書く、書けるというのとは全然別。
それはナポリタン(ナポリと関係ない)トルコライス(トルコと関係ない)みたいなもん。
0358デフォルトの名無しさん
垢版 |
2019/01/12(土) 12:16:48.26ID:GHU4ZnZa
smalltalk知らないから
その遅延とやらをどう活用するか聞いてるのに

>いい歳して知ったかぶり恥ずかしいよ。

殆ど知らない
って書いて有るのに
知ったかとか
何言ってってんだよ
アホだなおまえ
0359デフォルトの名無しさん
垢版 |
2019/01/12(土) 14:54:55.70ID:SPgNECNz
>>358
357はSmalltalkについては一般論として語っているだけで
ケイの言わんとする「決定の遅延」についてはあまり実感ない(つまりうまく説明できない)んじゃないかな…

SmalltalkはSmalltalk-72というごく初期のバージョンでは(非同期でないながらも)実際に
メッセージを送ることをしていたのだけれども、結局当時のマシンではパワー不足で
その後のSmalltalk-76以降、普段は現在主流のメソッドの動的呼び出しをメッセージに見立てて
メッセージに対応するメソッドがないときだけメッセージをハンドリングできる機構だけ足された
よく言えば省コスト、悪く言えばナンチャッテな実装に落ち着いていて、PharoやVisualWorksといった
今あるSmalltalk処理系でもそれは変わっていません。

なので、通常の言語(たとえばJavaとか)と同じ程度には手続き的な記述は普通に可能です。
あと念のため、ここでいう「遅延」というのはあくまでも設計の指針であって、動的メソッド呼び出し以上の
特別な「遅延機能」というものがあるわけではありません。

強いて言えば、システムを動かしながらでもコードの変更が可能(というか、Smalltalkは
システムを動かしながらしかコードの変更はできません)というのが、他の、ちょうど例に挙がった
Javaのように静的型チェックのある早期結合を好む言語とは決定的に違うところで、
この特徴は件の「決定の遅延」の実践(たとえばデバッグのやり方など)に大いに役に立っています。
0360デフォルトの名無しさん
垢版 |
2019/01/12(土) 15:53:51.66ID:xa1AucJl
>>358
顔真っ赤だぞ。新しい単語覚えられてよかったな。これからは知らない単語思い込みで安易に使わないようにしようなww
0361デフォルトの名無しさん
垢版 |
2019/01/20(日) 13:23:57.80ID:k7Xn9dKz
エンティティが複雑で巨大なグラフ構造を形成していてしかも集合として調和が取れていなければならないという要件に対してオブジェクト指向は激弱
しかし多くの業務ではまさにこのような集合としての調和が重視すべき要件になりやすい

この事実に対してオブジェクト指向信者の人々はどういう答えをだしたの?
俺としては業務ロジックをSQLで表現する2層アーキテクチャの他に現実的な答えはないと思うのだが
0362デフォルトの名無しさん
垢版 |
2019/01/20(日) 15:39:03.46ID:rQnmTQ2B
ストアドプロシージャで処理できる程度のことを
ORMでわざわざオブジェクト指向に落とし込む意味が分からん
とかそういう話?
0364デフォルトの名無しさん
垢版 |
2019/01/22(火) 01:11:48.41ID:lJMvwG24
日本企業でオブジェクト指向が受け入れられない理由がわかった
ビジネスルールそのものが曖昧で矛盾してるから堅牢なオブジェクトモデルを構築できないんだ
だからカプセル化を解除して不変条件を排除して矛盾を受け入れるしかない
0365 ◆QZaw55cn4c
垢版 |
2019/01/22(火) 01:20:22.79ID:zFHfz07h
>>364
>ビジネスルール

ビジネス・スルー力
かと空耳してしまいました…ほ・し・い・ぃ
0366デフォルトの名無しさん
垢版 |
2019/01/22(火) 04:46:37.14ID:ZV+qljkB
とにかく全て、再利用だ!カプセル化だ!
たとえ今は使い捨てでも将来的に使う可能性はゼロではないから予め全てに備えておくのがオブジェクト指向だ!
無駄に手を広げてからのドキュメント整備、日本流オブジェクト指向は疲れる
0368デフォルトの名無しさん
垢版 |
2019/01/22(火) 19:58:32.27ID:cwsWIZIV
「再利用できる部品を大量にストックする」という理念のΣプロジェクトがあったので方向性は何一つも間違ってない
0369デフォルトの名無しさん
垢版 |
2019/01/22(火) 21:47:28.77ID:omWGXlHy
高卒てマジにここまでバカなん?>>367が特別にバカなんか?
0371デフォルトの名無しさん
垢版 |
2019/01/22(火) 22:07:10.37ID:XoIF472X
インタフェースって作る意味あるの?
どうせインタフェースを改良したら実装のもうも変えなきゃいけないし
二重メンテにならんのかね?
0372デフォルトの名無しさん
垢版 |
2019/01/22(火) 22:12:03.17ID:omWGXlHy
インターフェースの改良て何なん?高卒て時々突拍子もないこと考えるよなw
0374デフォルトの名無しさん
垢版 |
2019/01/22(火) 23:15:39.68ID:XoIF472X
>>372
プロパティ追加が必要になったらインタフェースにも実装のほうにも追加するじゃん?
0375デフォルトの名無しさん
垢版 |
2019/01/23(水) 03:19:48.14ID:LxDaMVzI
>>371
インターフェースを作る意味は、
同じようだけど少し違う処理がたくさんある時に条件分岐よりバグが少なく実装できる
ってところかと

それに二重メンテになるのはインターフェースを使っても使わなくても同じだろ
0377デフォルトの名無しさん
垢版 |
2019/01/23(水) 07:13:59.05ID:WSkWV4TJ
オブジェクト指向はクズだ無能

じゃあどんな設計方法が良いの

そんな事も知らんのか自分で調べろ高卒糞無能

エントリポイントに一本グソ開発しました

これやこれ 読みやすい

だいたいこういう流れになる
0378デフォルトの名無しさん
垢版 |
2019/01/23(水) 15:49:49.57ID:CxtGDflE
じゃあどの言語が良いの

オブジェクト指向のアレだよアレ後は自分で調べろ
0379デフォルトの名無しさん
垢版 |
2019/01/23(水) 16:18:11.15ID:CxtGDflE
言語名を確定させないことによりシュレーディンガーのSmalltalkを延命させる仕組み
0380デフォルトの名無しさん
垢版 |
2019/01/23(水) 17:30:54.46ID:x96ZzLYO
rubyやjsはインタフェースないじゃん
でも困らない
0381デフォルトの名無しさん
垢版 |
2019/01/23(水) 17:38:41.98ID:yPNynzM6
オブジェクト指向の対の概念を定める

エントリポイント一本グソ指向

以上の定義を前提に語ってくれたまえ
諸君
0382デフォルトの名無しさん
垢版 |
2019/01/23(水) 18:20:24.77ID:OFN8YGgg
藁人形論法に逃げるオブジェクト脳()w
0384デフォルトの名無しさん
垢版 |
2019/01/25(金) 23:49:30.75ID:RvW1/G3E
  チ チ チ チ チ
  ン ン ン ン ン
  ポ ポ ポ ポ ポ
  が が が が が
  シ シ シ シ シ
  コ コ コ コ コ
  シ シ シ シ シ
  コ コ コ コ コ
  す す す す す
  る る る る る
  ぜ ぜ ぜ ぜ ぜ
  ! ! ! ! !
0386デフォルトの名無しさん
垢版 |
2019/01/26(土) 12:21:49.01ID:y1lrLd7a
A〜Dのオブジェクトがあったとして、Aの処理からDの処理させれば早いのに、オブジェクト指向的にとかいって、A→B→C→Dってやっていくプログラムが許せない
0390デフォルトの名無しさん
垢版 |
2019/01/26(土) 16:32:47.97ID:WSFNrCYQ
>>386
依存関係があるから
あとDIパターン

D「俺のケツの穴はCしか受け付けない!」
C「俺のケツの穴はBしか受け付けない!」
B「Aよ、お前は俺にだけ可愛がられろ」
0393デフォルトの名無しさん
垢版 |
2019/01/26(土) 17:43:51.95ID:ZAhNOg9P
戦後冷戦下での社会構造(レジーム)がそのまま思考方法にも反映されている
基本的には階級とか階層とかレイヤーとかで、「物事には順序がある」「親子関係がある」「上下関係がある」との基本的認識から始まっている
基本的認識ってのが一番怪しくて、そもそもが上下関係とか親子関係とかはハッキリいって古臭い物事の考え方になる

全部がフラットで並置されていて平等だ、との考え方は比較的新しい思想だ

階層がある上下がある身分がある……は幻想なので、幻想をそのまんまモデリングした思考方法は破綻する
「継承していて欲しい」とする社会的要請から始まったスムーズな連想である継承という機能はオブジェクト指向最大の癌になっている
理想の階級社会では継承は万全に働くものの、それを実装したプログラムは機能不全に陥る

なのでオブジェクト指向と言うときは暗黙のうちに階級の存在を認めている
物事や人間の上下関係(マウンティング)を意識すらもしないうちに認めている
だからJavaは企業ユースが多い
日本的なピラミッド型の組織、上意下達の組織構造では、その組織構造をそのまま反映したプログラミング言語が選定されやすい

また現代はダーウィンの進化論後の世界でもあるので、やはり思想的に「継承」という理念は分かりやすい
(実際は進化したら部位が複雑になる)
つまりオブジェクト指向≒Javaは20世紀後半の思想をそのまんま代弁しているし、逆にそれなしではJavaは後世では理解できない
0394デフォルトの名無しさん
垢版 |
2019/01/26(土) 18:06:46.83ID:MaEquCGy
その時点で継承が最も適したモデルだったら継承を使う
知識が増えて不適切になったと判断したら継承を解消してモデルを作り直す

重要なポイントは「不適切になった」ことを判断できるかどうか
それをするには今の理解を完全に反映したモデルが必要
モデルがないと新しい知識が古いモデルに与える影響すら判断もできん
0395デフォルトの名無しさん
垢版 |
2019/02/18(月) 18:41:20.14ID:LH3hC1Z0
デザパタって建築業界元ネタらしいね。もちろんそのままは
適用できんけど。
0396デフォルトの名無しさん
垢版 |
2019/02/18(月) 18:44:13.69ID:1FoQC5sv
何を今さら。GoF本読んでないのか。
0397デフォルトの名無しさん
垢版 |
2019/02/18(月) 19:32:06.55ID:uH1HH/Sx
>>368
Σプロジェクトは大失敗だったわけだが。
0399デフォルトの名無しさん
垢版 |
2019/02/18(月) 19:59:54.95ID:VEN+XHuA
業界関係者だけを一ヶ所に集めると暴走してしまう。
それが教訓だろう。Σは知らんけど。
0401デフォルトの名無しさん
垢版 |
2019/02/18(月) 23:21:47.15ID:2WtBa+vu
>>400
そういう思い込みが膨らむだけだからこうなる。
構造的にひとつの事業のリーチ範囲が広すぎて
ありうる結果の可能性の組み合わせが多すぎる。
だから共通認識を形成しようと思うと原始的か
考えられ得るすべての可能性を潰してからじゃ
ないとここまでいかないんだよ。
0402デフォルトの名無しさん
垢版 |
2019/02/18(月) 23:32:10.27ID:2WtBa+vu
枠決めて枠の中で動くのを基本にしてりゃよかったのに
インターネットの可能性は無限、とかプログラマーは
抽象的考えが得意だ説、を額面通り取りすぎたんだよ。
それぞれベースがないから身動き取れないだけだろ。
0403デフォルトの名無しさん
垢版 |
2019/02/19(火) 07:11:56.37ID:tDwPKErh
Σは偉い人だけが集まって”さ、もらえるお金の配分の話しようね”だけしか興味なかったので
0404デフォルトの名無しさん
垢版 |
2019/02/19(火) 07:21:52.06ID:MQsrM9Ld
IT産業なんてソフト事業の最たるもんだからあらゆる可能性に
対処しようとしてオブジェクトとかお金とか抽象概念をやたら
求めたがる。職業病の性癖だよ。たとえば使いみち挙げられる?
■ このスレッドは過去ログ倉庫に格納されています