X



オブジェクト指向ってクソかよPart5

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


カプセル化(英語: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/
0507デフォルトの名無しさん
垢版 |
2019/10/14(月) 00:01:58.08ID:SgqiekNw
>>505
https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53

このサイト読むと
何十年もの間、Smalltalk、最後に.NETとJavaと、オブジェクト指向言語でプログラミングを行って
継承、カプセル化、および多態性の利点を活用するために熱心っだったけど、だまされていたって
懇々と唱えてきて、ホント気の毒

俺から言わせてもらえば、そんなに年月をかける前に
これは変だと気がつけばよかったのにね
0508デフォルトの名無しさん
垢版 |
2019/10/14(月) 00:07:39.42ID:SgqiekNw
The problem with object-oriented languages is they’ve got all this implicit environment
that they carry around with them. You wanted a banana but what you got was a gorilla
holding the banana and the entire jungle.

もう爆笑w
0510デフォルトの名無しさん
垢版 |
2019/10/14(月) 00:12:26.09ID:SgqiekNw
まぁ、bBavR94N のような奴はOOPが廃れたら、
また別の流行見つけてそのカルト信者になるんだろうね
それはあんたの人生の選択だし、どんなに頓珍漢な迷信であっても
回りに迷惑かけない範囲で好きにしてくれ
0516デフォルトの名無しさん
垢版 |
2019/10/14(月) 09:17:14.83ID:DJigOeDn
>>512
普通に組むんだ

機能一覧
→各機能の処理一覧
→それに対応する関数一覧

と作成して関数一覧ができたら設計は終了なのさ
それ以上はプログラマ側では何もすることがない

これでプロジェクトがうまく行かないならそれは仕様の決定段階ですでにおかしいのであって
もし、自分が改善したいと思うならば積極的に仕様の決定まで口を出さなければならない
0517デフォルトの名無しさん
垢版 |
2019/10/14(月) 10:11:53.94ID:HLISTn9N
>>516
なんでオブジェクト指向は、それらの関数を
組み合わせて使う時の問題を解決するものという
レスを無視するの?
0519デフォルトの名無しさん
垢版 |
2019/10/14(月) 11:03:45.34ID:CmkGXuzV
>>516
複数の機能から使う共通のデータや状態、それらの制約や整合性をどう維持するか
という部分が単純な機能分解ではカバーしにくいところ
その問題を考慮したのがDOAやOOAD

A形式のファイルをB形式に変換するとか
Aというシグナルが来たらBの状態をB'に変更するとか
そういう段階まで分解してくれた仕様だけ考慮すればいいなら
単純な機能分解が適してる
0523デフォルトの名無しさん
垢版 |
2019/10/14(月) 15:34:52.40ID:DJigOeDn
>>519
いらないいらない
関数一覧の関数は全部独立してるものと仮定して組んでもいいのよ
っていうかそれで動くんだから余計なことすんなよクソ虫
0525デフォルトの名無しさん
垢版 |
2019/10/14(月) 17:08:32.29ID:DJigOeDn
>>524
書いてるやつもここのとどっこいだぞ
なぜなら万人が認めるオブジェクト指向はこれですって言える資料がこの世にないので

しかしこの業界なんでこんなんになっちゃったかなぁと

プログラミングとは目標を実現するための1つの手段という位置付けに留めて置いたほうが
結果的に実力は付くよ
プログラマはこのクソ宗教のせいで多くのやつが視野狭窄過ぎて参考にならない
0526デフォルトの名無しさん
垢版 |
2019/10/14(月) 17:44:53.07ID:/SENrUVD
別に、機能別にライブラリにして行けばいいのさ。
かしこまってOOPだなんだとギスギスする必要は無い。
0527デフォルトの名無しさん
垢版 |
2019/10/14(月) 18:24:41.16ID:g1sRqVTr
>>522
小さいプログラムならそうだけど
GUIアプリとかウェブアプリでそんないきあたりばったりな
コード書いてるとすぐに破綻する。
設計が必要。
0529デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:07:01.22ID:YKkFW8bb
>>527
違うな
どんなデカイプログラムも分割すれば小さい単位になる
そしてなってしまえば後の作り方はおんなじや
違うのはヘタクソだからや
0530デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:09:08.49ID:YKkFW8bb
俺に反論するなら

じゃあ、デカイプログラム特有の仕組みは具体的に何があるの?

って聞くぞ
調べてから書き込めよ
0531デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:24:13.94ID:ZHVtioYP
>>529
その理屈だとどんなでかい建築物でも分割すれば
小さな家となる。そうなってしまえば、
高層ビルでも犬小屋でも作り方は同じってことになってしまうぞw
0532デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:25:26.99ID:ZHVtioYP
>>530
> デカイプログラム特有の仕組みは具体的に何があるの?

小さな単位を組み合わせる仕組み。
例えば、モジュールをプラグイン化し、
本体に手を入れずに拡張する仕組みとかね
0533デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:27:29.74ID:ZHVtioYP
WindowsとかLinuxとかのOSはでかいプログラムの代表例だが、
コアの部分は小さくして、ドライバにより多くのハードウェアに対応してる。
こういうところにオブジェクト指向による設計が使われてる。

C++を批判してるLinusでも
https://cpplover.blogspot.com/2013/05/linus-torvalsc.html
> Cでオブジェクト指向コード(ファイルシステムとかだと有用)を書くのは可能だし、

Cでオブジェクト指向はファイルシステムなどで有用と言っている。
0540デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:38:23.47ID:nTxvlnlQ
C以外糞って言うならならPythonもゴミじゃん。
Pythonしか書けない奴はどうなるの?
0541デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:47:03.67ID:1VJg7cxR
糞に集る蠅
0543デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:50:13.94ID:ZHVtioYP
× オブジェクト指向は組み込みとすこぶる相性が悪い
○ オブジェクト指向言語は組み込みとすこぶる相性が悪い

オブジェクト指向であれば組み込みでも使われてる。
0544デフォルトの名無しさん
垢版 |
2019/10/15(火) 00:07:06.97ID:ntxaWRsX
オブジェクト指向とΣ計画はセット
資本主義社会じゃ無理
言語製作者陣の理念と現状にズレがあるので、オブジェクト指向が使いにくくなっているだけ
カネと労道の壁を突破してありとあらゆるオブジェクトを集積するセンターがあれば完璧になる
0546デフォルトの名無しさん
垢版 |
2019/10/15(火) 01:10:43.04ID:t7KPnDkH
>>533 印象操作しないで ちゃんと引用しろ

> Cでオブジェクト指向コード(ファイルシステムとかだと有用)を書くのは可能だし、
> しかもC++のような余計なクソがついてこない。
0547デフォルトの名無しさん
垢版 |
2019/10/15(火) 01:14:09.75ID:t7KPnDkH
>>533

> Cでオブジェクト指向コード(ファイルシステムとかだと有用)を書くのは可能

これどういうコードを指すのか分かっているのか?
教えてクン卒業して一回見てみろ
0548デフォルトの名無しさん
垢版 |
2019/10/15(火) 05:23:15.21ID:f1lycctY
Linuxのファイルシステムのコードを見れば
(C言語によるオブジェクト指向コード)がわかるのでは?
0550デフォルトの名無しさん
垢版 |
2019/10/15(火) 10:59:27.07ID:HKs4cE0e
何かを作り上げるのは向いてないな
作ったものを綺麗にディスプレイするのには使える
まあ 数学の公式みたいに絶対に変更しないって
条件では使える ただそうなることは無いw
0551デフォルトの名無しさん
垢版 |
2019/10/15(火) 11:07:07.56ID:m0jqn6iG
>>531
プログラムには重力掛からないから、どんなに大きなプログラムでも大きい事で特別何か対策しなきゃならないって事は無いよ。
まあ、大規模なプロジェクトでは人間同士のコミュニケーション不足やトラブルはあるけどなw
0552デフォルトの名無しさん
垢版 |
2019/10/15(火) 11:12:45.75ID:m0jqn6iG
まあよくある話、
AはBの理由や懸念があるからDの方法は不適切なのでCの作りとする
なんてルールがいつのまにかAはCの作り方にするってだけ伝わって、
なんでAがCみたいな面倒くさい作りにするんだよ、Dの方が簡潔で分かりやすいだろ。なんて勝手に解釈変えられて
結果的に機能を満たさないものになるなんて事はよくある。
0554デフォルトの名無しさん
垢版 |
2019/10/15(火) 13:21:00.59ID:f1lycctY
>>551
> どんなに大きなプログラムでも大きい事で特別何か対策しなきゃならないって事は無いよ。

大きいプログラムは、小さく分けるという対策をしなきゃならんよ。
小さく分けるということは、組み合わさなければ動かなくなる。
つまり組み合わせるコードが必要になるんだよ
0555デフォルトの名無しさん
垢版 |
2019/10/15(火) 13:24:45.65ID:v+D129jp
>>554
>大きいプログラムは、小さく分けるという対策をしなきゃならんよ。

チンポは独立した生き物であり、チンポはチンポ独自の知能回路を実装しておかないとな!
0556デフォルトの名無しさん
垢版 |
2019/10/15(火) 14:42:57.70ID:8vI99k17
UNIXが、あれはあれで一つの大規模なシステムと考えても差し支え無いものだったよな。
ひとつもオブジェクト指向になってないんだけど、簡潔なルールのもとに各自必要な処理を追加していた。
0557デフォルトの名無しさん
垢版 |
2019/10/15(火) 15:04:03.47ID:f1lycctY
UNIXがオブジェクト指向でないと考えるのは、
C言語がオブジェクト指向言語じゃないからというだけ?
0558デフォルトの名無しさん
垢版 |
2019/10/15(火) 20:43:44.62ID:8zb4FDAz
人が作ったものを使うだけならすごく便利
ただ作り直そうとするときつい
pythonのライブラリとかよくわからんまま
使う分には便利
0560デフォルトの名無しさん
垢版 |
2019/10/16(水) 14:59:34.80ID:br88Hn4r
オブジェクト指向なんてホントは主目的じゃないけどね
クラスを幾段も連結できるオブジェクト演算子ができてから
それの使い方の総称になっただけ
0561デフォルトの名無しさん
垢版 |
2019/10/16(水) 15:47:24.74ID:0fRYOcFI
小説で言う「起承転結」のようなもの
大まかにそういう考えにしましょう。という設計で
それに従わなくても良いものが作れないことはないが、
だいたいは従ったほうが良いというものだよ
0563デフォルトの名無しさん
垢版 |
2019/10/16(水) 16:11:23.80ID:R4S9h347
おまえら頭悪いんだから、いっぺんにまとめて考えないで
なるべく小さな単位にして分けて考えろやって話だからな
その分け方の方法のひとつがオブジェクト指向ってだけ。
0564デフォルトの名無しさん
垢版 |
2019/10/16(水) 16:47:56.58ID:K40FZLRW
オブジェクトのメリットは単純に
補完が効くとこだな 設計思想云々は
どうでもいいがこれは便利 
0565デフォルトの名無しさん
垢版 |
2019/10/16(水) 19:40:52.15ID:WNhbUC2h
受け身でコーティングできるのがいいんだろ?thisポインタ受け取ってさ

それ以上の意味はないよ

イベント駆動とGUIと人間の汎化の理解がマッチすると気持ちいいくらい

マイクロソフトでさえ糞クラス設計するのに、専門卒Fラン大卒が何を言っても無駄
0566デフォルトの名無しさん
垢版 |
2019/10/16(水) 21:47:12.81ID:DLS4a0j4
Unixはコマンドをパイプでつなげて処理をするところがオブジェクト指向っぽい
コマンドとコマンドは標準入出力によってつながるわけだけれども
そのことは重大な事実を示唆していてオブジェクトとオブジェクトを
つなげるインターフェースはシンプルな程よいってこと
0567デフォルトの名無しさん
垢版 |
2019/10/16(水) 22:05:44.03ID:DLS4a0j4
C言語で書かれたプログラムでオブジェクト指向っぽいと思ったのはqmail
ファイルが細かく別れていてファイル内でしか参照できない変数や関数が全体の半分を占める
ファイルごとにテストできそうだなーって思った
qmailはバグが少なくて信頼性が高いことに定評がある
オブジェクト指向をうまく使うとそういうことも可能ではあるけれども

業務システムではなかなか難しいところがあって
業務要件はころころ変わるけれども既存のプログラムはできるだけ変えないって
圧力がかかって継ぎ接ぎだらけのハウルの動く城みたいなうごめくオブジェクトの塊ができあがる

既存のプログラムを変えない圧力から逃れるためにテスト駆動開発などで
テストを整備して継続的インテグレーションで自動化するみたいなことが流行ったんだろうね

テスト容易性でオブジェクト指向の良し悪しを判断するのはありだと思うなど
0568デフォルトの名無しさん
垢版 |
2019/10/16(水) 23:06:35.43ID:L32RXjAf
>>566
そうでもないよ。

パイプでつなげるとデータの区切りをどうするか?って問題が出てくる。
たいていは1行1データでいいんだけど、データの中に改行が入る場合
どうするか?って問題が出てくる

改行コード以外の文字を使うという方法もあるが、じゃあその文字が
データの中に含まれていたら?という話に変わるだけ
0569デフォルトの名無しさん
垢版 |
2019/10/16(水) 23:10:30.46ID:PIk7Byrk
>>566
パイプは関数型を想起させる代表例だと思うんだが

テキストという共通のデータフォーマットを入出力に使って
処理のパイプラインにデータを流していってる

シェルスクリプトの場合は
汎用的なテキストフォーマットで型がないから
各処理の内部で毎回パースが必要になったりもするし
コマンド間の依存性を下げて疎結合にするのはかなり難しい
0571デフォルトの名無しさん
垢版 |
2019/10/17(木) 14:19:37.41ID:Yq4xgtdT
Unixはパイプを多用するからオブジェクト指向とは真逆っていうのは俺もそう思う
だからjqみたいなむりくりなツールが必要になる
0572デフォルトの名無しさん
垢版 |
2019/10/17(木) 14:43:14.13ID:huR1Dm0j
パイプを多用すること自体は関係ないよ。
オブジェクト指向でもパイプを使うことは出来る。
0573デフォルトの名無しさん
垢版 |
2019/10/17(木) 18:58:47.19ID:yPX5iNuE
使うことが目的ですか。
まるで分かってないね。
0576デフォルトの名無しさん
垢版 |
2019/10/17(木) 23:08:33.94ID:ZLbPJS7B
Windowsの場合、システム管理にWMIオブジェクト使うのでPowerShellのパイプがオブジェクトを通すのは理にかなってる
0579デフォルトの名無しさん
垢版 |
2019/11/04(月) 11:52:51.77ID:PrFaR+H+
Class A a, Class B b, Class C c があって
c = a + b #共通コード
と書いた場合、C言語の
c = 1.0 + 2
みたいな暗黙の型変換をしてくれる場合はコードの共通化がスムースに行けると思う
実際は...
Class A a,b,c #or Class B a,b,c
c = a + b
こんな感じで '+' の定義があれば行ける

たぶんClass の階層構造とタイプしたコードの振舞いここら辺の認識に錯乱が起きて
秩序なき構造を待つClass が記述できる結果オブジェクト指向の概念の考え方に混乱が起きている

CもC++も副作用に対する制限が弱めなので
挙動もプログラムの構造も発狂混乱混沌を含んだものが容易に出来上がる

解決策は、〜〜ツクールで定義したものをC++等のコードで吐き出して
必要に応じ手を入れるじゃないかな
アセンブラで複雑なプログラム何て書かないよね、同じちゃう?
0580◆QZaw55cn4c
垢版 |
2019/11/04(月) 15:53:17.69ID:fwURXfb5
>>579
java みたいに演算子のオーバーロードを許さない!というポリシーはいかがでしょうか?
0581デフォルトの名無しさん
垢版 |
2019/11/04(月) 20:22:08.57ID:PrFaR+H+
>>580
java の演算子 + - * / 等算術演算子
ググって調べました(汗

C++ は演算子の再定義が可能で + - * / も出来る様だね
演算子の再定義は計算式の意図や意味の直観的認識を保障している
a = b + c で
int a, b, c であっても
Class XY a, b, c #2次元座標
であっても+ - * / が座標の移動や拡大縮小(スケーリング)な事を直観的に理解させることになる

ぶっちゃけ演算子のオーバーロードは習慣的な慣れ親しんだ記述でコードを読み書き抽象化したいそれだけの事
java の許さない!なポリシーは、アルゴリズム=コード を抽象化共通化したい場合
記号で書くな正式なメソッド名を決めてタイプしろって事

偉そうに書きこしてるけどjavaもJavaScriptもTypeScriptも厳密には確認してないからな

で、C,C++のバグの原因はアセンブラに近い危険なコーディングが出来ること以外に変数スコープの関係で
もしかすると単純なタイプミスでグローバル変数が壊せたり
自己責任な処理系なので当たり前に検出困難なバグが入る
0585デフォルトの名無しさん
垢版 |
2019/11/11(月) 23:35:07.89ID:MquajfZd
コアダンプは吐くものでも無くて吐かれるものだからな
喰わせたモノが余程ヒドい時の嘔吐物だから
0587デフォルトの名無しさん
垢版 |
2019/11/12(火) 04:24:25.01ID:dtyPEbD0
吐くっていうのは人間がやることに対して使うんですよ!
人間じゃないのに、人間がやるような言葉を使ってはいけません!
0591デフォルトの名無しさん
垢版 |
2019/11/12(火) 18:29:30.35ID:m7v6pKzu
つまりオブジェクト指向とは、俺の股間に付いているモノなのである!

                                             
 .              ,                   ャ  ィE5!..             
 ..           ,,.e;〆            .、   w===|====!.     π .e、x&             
 ..          ^~ !      ``=    π     ,, カ. _    _ ̄オ⌒|! `ヘ                  
 .         fラ⌒ ̄l「~~~^.        ,.タ.     .ル .ll ~\_   〃 〃.  ^..                  
 .             .オ..      ,...__,xf~.      ^  f!  、               
 .            '^´         ̄ ̄..                                         
          ..                   l|..       r=キ'⌒..           
 .         `!、        ~~~~~~⌒...    l}                        
           ⌒heィ~.     .+s_、_e.     .^+--w=f   `ヲse、._ _、...     ′     

チンポは独立した生き物であり、本人の意思とは無関係に、自らの意思で勃起してシコシコする!
0592デフォルトの名無しさん
垢版 |
2019/11/13(水) 00:56:45.07ID:CvcI+Aq3
>>589
2ちゃんねるって何でもかんでも話題逸れていくの昔から不思議でたまらなかった
オブジェクト指向の解釈が二十年以上収斂しないなんておかしい
0595デフォルトの名無しさん
垢版 |
2019/11/13(水) 15:26:30.70ID:H06se09Y
何冊か本読んだけど、結局、「オブジェクト指向には明確な定義が無い」
ってことが分かっただけ。
当然だよな。
プログラミング構造としては、アセンブラでもマクロ組めば同じことができる。

結局は、単なるコードの可読性やメンテナンス性の向上が、
新しい「質の変化」として宣伝されただけのシロモノ。
0596デフォルトの名無しさん
垢版 |
2019/11/13(水) 15:34:48.16ID:EBbfjM6A
>>595
>何冊か本読んだけど、結局、「オブジェクト指向には明確な定義が無い」ってことが分かっただけ。

ならば「チンポがシコシコする」という日本語表現は、文法的に正しいのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
0598デフォルトの名無しさん
垢版 |
2019/11/13(水) 15:38:45.74ID:EBbfjM6A
ちんぽがしこしこ、そんな言語表現あるのか?

クリントンの「不適切な関係」
https://eigo-kobako.blog.so-net.ne.jp/2008-06-21

不適切な関係、そんな言語表現あるのか?

ちんぽがしこしこしてしまったのが、不適切な関係なのか?
0600デフォルトの名無しさん
垢版 |
2019/11/13(水) 16:44:53.22ID:MUcE97Pa
>>595
ウィナー&ピンソン本にあるよ
0602デフォルトの名無しさん
垢版 |
2019/11/13(水) 23:39:42.53ID:Q6d1lfHy
やたらエロ広告あるのは、フィルタリングさせるためか
青少年はアクセスできない
0603デフォルトの名無しさん
垢版 |
2019/11/13(水) 23:49:10.62ID:H06se09Y
>>596
>>600
自分のようなアホに返信ありがとうございます。
胸は異常を自覚症状として脳に伝達できるが、チンポは常に受身。
教えていただいた著者も読ませてもらいます。
0604デフォルトの名無しさん
垢版 |
2019/11/14(木) 01:42:13.43ID:Nj0oVq+6
クルマに例えてくれ
0605デフォルトの名無しさん
垢版 |
2019/11/14(木) 14:05:11.71ID:yrxcIVFv
>>604
>クルマに例えてくれ

この車、タイヤがパンクしてるぜ!
この俺、チンポがシコシコしてるぜ!
0606デフォルトの名無しさん
垢版 |
2019/11/19(火) 15:28:02.12ID:3bkVS4Z1
「オブジェクト指向」とは、デジタル土方に仕事をさせるための知恵です。
例えば、「この変数は読み出し専用と仕様書に書いただろうが。勝手に
書き換えるな」と土方に言っても仕方ありません。読み出し可能だが、
何をやっても書き換えることを不可能にすることで、土方を働かせる。
そのために「オブジェクト指向」があるのです。
■ このスレッドは過去ログ倉庫に格納されています

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