オブジェクト指向はオワコン

■ このスレッドは過去ログ倉庫に格納されています
2023/08/26(土) 22:00:53.85ID:H4l7y46b
最近の言語には採用されないことが増えている
2023/09/03(日) 13:25:41.46ID:TVj/CYl9
動物の例も批判されがちだけど
あれもねえ
例えは例えなんだから
そのあとは自力で応用しようよ?
コツだけうまく受け取ろうよ? って思うわ

実装に対するインタフェースだとか
継承時のポリモーフィズムだとか
そこだけ例から読み取って
あとはうまく応用しろよって思うわ

具体例からエッセンスだけを取り出して
うまいこと抽象化してくのは必須よね
2023/09/03(日) 16:55:38.75ID:tRta3c8j
>>42
Nimは知らんがRustは構造体あるだろ。
俺はRustはオブジェクト指向で書けると思ってるよ。

俺の考えるオブジェクト指向の中では継承は必須でも何でもないので。
2023/09/04(月) 04:29:08.08ID:xgTXgyct
アプリレイヤを記述する際、継承は確かに百害あって一利くらいしかなかったけど
オブジェクト指向の本質的な問題点にちゃんと気が付いている人は
とても少ない
2023/09/04(月) 06:10:55.97ID:xHCSfiKY
ワンワン
にゃ~
47デフォルトの名無しさん
垢版 |
2023/09/04(月) 06:56:31.16ID:CodZWLif
向き不向きがあると思う
GUIとかゲーム開発には向いているからスマホアプリ開発やwindowsアプリ開発には向いている

サーバサイドには全く向いていない

GUI、ゲーム開発は動物、犬に当てはめやすいから向いてるけど、サーバサイドは向いてないのよね
48デフォルトの名無しさん
垢版 |
2023/09/04(月) 14:21:39.02ID:pTWW8n2s
>>45
そもそも問題は無い
はい論破です
49デフォルトの名無しさん
垢版 |
2023/09/04(月) 17:33:01.25ID:/cuaDPpR
>>37
> 全部辞書型か?
そうなる
型の安全性と引き換えに柔軟性を得るっていうのがデータ指向の考え方

オブジェクトに状態をもたせるオブジェクト指向も使い所によってはあり
人間の場合はたとえば明日人間の機能が変わりますなんてことないし機能が安定しているのよね

オブジェクト指向はスタックやリストといったデータ構造とも相性が良い
一方で仕様がころころ変わる業務要件とはあまり相性が良くない
50デフォルトの名無しさん
垢版 |
2023/09/04(月) 18:33:09.57ID:UIsGravq
JSONω最強ですねωω判りますωωω
2023/09/04(月) 19:55:21.97ID:rfWjSjrk
> オブジェクト指向の本質的な問題点

それは一体なに?
2023/09/04(月) 20:10:24.18ID:dI7wGXXb
オワコン
2023/09/05(火) 07:02:20.12ID:/8UA8cLZ
オブシコはむしろ来年あたりから再注目されるよ
2023/09/05(火) 08:43:02.70ID:ATQD7eXq
モダンオブジェクト指向入門
2023/09/05(火) 09:59:39.00ID:bvW9yjd2
関数型言語最強
やっててよかったC言語
2023/09/05(火) 12:42:39.14ID:cCymHTD2
オワリ際に遅刻して処理されるコンストラクタ
2023/09/05(火) 19:24:17.95ID:sZBFZ5KB
帯び文
やっぱりみんなオブジェクト指向に帰ってくる
58デフォルトの名無しさん
垢版 |
2023/09/05(火) 19:45:31.82ID:vQrCTIpk
そもそもオブジェクト指向にとって代われると思うこと自体勘違い甚だしい
2023/09/05(火) 20:09:35.92ID:HAOsJdAK
>>58
方法の一つでしか無いものにとって代わるって何言ってんの
コピペでしかプログラムできないバカ消えろ
2023/09/05(火) 20:58:49.75ID:MTbz99Up
>>55
まさかCが関数型言語とか言わんよね?
61デフォルトの名無しさん
垢版 |
2023/09/06(水) 00:09:58.68ID:H9m3TOIp
>>59
オブジェクト指向こそが至高
2023/09/06(水) 14:31:43.33ID:y4HhiiDL
static関数をすこれ
2023/09/06(水) 22:40:02.86ID:HGpQ4Jna
なんや、それ
2023/09/07(木) 01:21:20.89ID:gnShnq85
デザパタ用語ではシングルトンパターン(笑)
2023/09/07(木) 02:39:23.32ID:ASBmJNcr
全然違うぞw
66デフォルトの名無しさん
垢版 |
2023/09/07(木) 23:31:22.59ID:mdRVL8hl
関数型言語ではライブラリどう扱うん?
2023/09/08(金) 00:27:59.13ID:+kl4ffGL
こういうつまんねぇ話は2003年頃に済ませておけよ
68デフォルトの名無しさん
垢版 |
2023/09/08(金) 01:09:06.66ID:pIxFIjjS
>>48
http://asahi.5ch.net/test/read.cgi/newsplus/1694055825/
2023/09/08(金) 03:00:17.98ID:Wdg5/Ojr
OOP信者の方はC#の拡張メソッドのことどう思ってるんですかw
2023/09/08(金) 09:05:25.14ID:5xCGhqQr
>>69
あって当然の仕組み
71デフォルトの名無しさん
垢版 |
2023/09/08(金) 09:56:43.98ID:U3VyfYkU
>>67
おじいちゃん、ここは若者のスレッドなの老害はでしゃばらないでね
2023/09/08(金) 13:33:28.64ID:xvdxrsKm
既存フレームワークはオブジェクト指向かもしれんけど
俺はその書き方では使ってない
これが答えだ
2023/09/08(金) 14:16:55.80ID:9xaMduSN
何の答えだよw
2023/09/08(金) 17:25:44.02ID:LnB50oKq
>>71
5chで若者とか笑わせなくていいからハロワ行けよ
75デフォルトの名無しさん
垢版 |
2023/09/08(金) 17:39:09.54ID:xhNNQs6H
オブジェクト指向こそ至高だろ?
オブジェクト指向のコード読めなくて負い目感じてるよね?
2023/09/09(土) 00:20:38.75ID:57t0AUvC
>>75
お前の書くコードはくちゃくちゃで眺めると目がつぶれそうだよ
2023/09/09(土) 06:42:18.63ID:L8RTgt6O
>>75
オブジェクト指向の最大の長所は可読性の高さだが、お前はオブジェクト指向の基本からまるで分ってないな
78デフォルトの名無しさん
垢版 |
2023/09/09(土) 08:47:48.10ID:qG0K3jtD
オブジェクト指向の最大の長所が可読性って、そんなに言われているかな? うまいことブラックボックス化ができたたきにゴチャっとしたコードをクラス内部に閉じ込められる効果はあるけれども、オブジェクト同士の相互関係は、基本的にはオブジェクトの海と言われるスパゲティじゃない?
79デフォルトの名無しさん
垢版 |
2023/09/09(土) 09:31:35.89ID:5dSlQ8VJ
>>78
スパゲッティの定義次第だからその定義を共有しないと話が噛み合わない。
同じコードをオブジェクト指向以外で書いたらスパゲッティじゃなくなるのか、と。
「私が読みにくいと感じるからスパゲッティ」ならどうとでもなる。
2023/09/09(土) 09:33:25.46ID:Cz8dAb+H
OOPのメリットが何なのか未だに分からん
Smalltalkみたいに実行環境からオブジェクトをいろいろいじれるやつのときは
オブジェクトってもんがもっと動的に、マウスで触れるような存在で
なんかそういういじくりやすさ含めて親しみ持ってるんだろうけど
2023/09/09(土) 09:34:20.74ID:e7UzJXmD
書き込むのは好きにしたらいいが板違いのスレだからsageてくれよ
82デフォルトの名無しさん
垢版 |
2023/09/09(土) 09:45:59.55ID:N/e+EbWm
>>81
自治アスペ😂
2023/09/09(土) 12:37:22.79ID:+xOF5xX7
>>80
メリットもなにもコード書いてたら普通にオブジェクト指向型になるものじゃね
「Hello World」をわざわざオブジェクト指向にするようなバカならともかく
クラスや継承を作れとか強制するような宗教でもない
84デフォルトの名無しさん
垢版 |
2023/09/09(土) 13:35:46.45ID:maTjrzau
>>80
オブジェクト指向のメリットはプログラムを管理しやすいことだと思う

たとえば

・DBからデータを取得する
・データを元にExcelファイルを作成する
・Excelファイルをメールで送信する
・作業完了のメッセージをSlackにPOSTする

という一連の処理がある場合に

・DBにアクセスするオブジェクト
・Excelファイルを作成するオブジェクト
・メールを送信するオブジェクト
・Slackにアクセスオブジェクト

があればそれらを組み合わせることでプログラムを作れるじゃん
そして世の中にはすでにたくさんのオブジェクトがライブラリという形で用意されている
プログラマはそれを利用することでさまざまなことが行えるようになるんだ
既存のライブラリで要件をみたせなければ自分で作ることもできる
便利だよね
85デフォルトの名無しさん
垢版 |
2023/09/09(土) 13:42:59.05ID:maTjrzau
オブジェクト指向のデメリットはオブジェクトを自由に定義できるがゆえに
簡単な処理さえも抽象化してスパゲティになることがありがちってことかな
Hello World Enterprise Editionはきれいに設計されてはいるけど

System.out.println("Hello, World!");

でいいじゃんみたいな

Hello World Enterprise Edition
https://gist.github.com/lolzballs/2152bc0f31ee0286b722

そして世の中には簡単なの処理なのにオブジェクトがたくさんあって
きれいに設計されてるわけでもなくプログラマがそのときの思いつきだけで
作ったんじゃないかと思われるような正気を疑うようなオブジェクトがたくさんあるんだ
どうだい楽しいだろう
86デフォルトの名無しさん
垢版 |
2023/09/09(土) 13:54:42.10ID:DPFW/FPV
Rustは面倒
87デフォルトの名無しさん
垢版 |
2023/09/09(土) 14:25:39.31ID:maTjrzau
DBやExcelなどのようにドメインがはっきりとわかれている場合には
これはDBにしか関与しないデータだからDBオブジェクトの中に閉じ込めるみたいに
考えてオブジェクトを作ればいんだろうけどね

業務のドメインは流動的だからね

・この概念とこの概念は違っていてこのようにわけられる
・でもやっぱりこういう橋渡しは認めておいたがいいからこれは例外
・ユーザからこれができなくて困ってるといわれたからなんとかしてもらいたい
・あの概念とあの概念はじつはこういう切り口でみたときには繋がりがあってそれを計算してほしい

みたいなことが業務ドメインの日常だからね
どこが変わるかを予測して多少流動しても設計を変えなくてすむように作り込んだら
あっというまにHello World Enterprise Editionのできあがり

オブジェクトは固体だけれども業務は液体みたいなところがある
オブジェクトの前段階いわばスライムみたいな状態にあえてとどめておくことで
適応力を高められるんじゃないかと思う

計算によって人間の認知能力が生まれ
人間の認知能力によってオブジェクトが生まれるとするならば
関数はオブジェクトよりも次元の高い抽象化のように思われる

関数はスライムの可能性がある
2023/09/09(土) 14:57:10.51ID:xoF7Cm8V
オブジェクト指向もモジュール化の1つの(かなり優秀な)手法だと思うよ。オブジェクトの内部はブラックボックス化され、外部からはオブジェクトのインターフェイスだけを相手にすればよいので、同時に考えなければいけないことが減り、プログラムの見通しが良くなる。
問題は、モジュールとしてのオブジェクトを機能させるためには、「これをオブジェクトとして扱う」というモジュール境界の決定が必要になるところ、オブジェクトの粒度が大きくなると、コードを書いた人の恣意的な決定の要素が増えるために、コードを読む人の理解・把握が難しくなっていくことかな。文字列オブジェクの方がcsv_readerオブジェクトよりできることを把握・イメージするのは簡単だし、より抽象度の高いオブジェクトになると、さらに理解は難しくなる。
オブジェクト指向によって得られる見通しの良さは、ゴチャっとしたコードをブラックボックスの中に閉じ込めることによって得られるものなので、オブジェクトの中に取り込まれないコード(オブジェクト同士の相互関係)の複雑性はそのまま残る。これがオブジェクトの海と呼ばれる問題。
オブジェクト指向は重要な進歩だし、今さらそのメリットを捨てることは難しいと思うけど、オブジェクトの「外」の問題については別の手法による対処が必要になる。
2023/09/09(土) 15:55:43.01ID:8RnWRRq5
コード書けない奴が抽象的な御託つらつら並べるのはどこのスレでも出てくるんだよな
バカをさらして何が楽しいのやら
2023/09/09(土) 16:36:21.41ID:MNKqZUR3
俺は抽象化自体はどうでもよくてifを減らすために使ってるわ
いくらわかりやすい名前をつけても結局全部読むなら大差ないからな
2023/09/09(土) 18:04:29.66ID:LlED4Hp3
> Hello World Enterprise Edition

全部は読んでないけどニヤニヤしながら読んだわ
ただし

> if(code.getStatusCode() != 0){



> if(code.getStatusCode() != IStatusCode.OK) {

とかしてインタフェース側に定義された定数使うほうがオツやと思ったわ
2023/09/09(土) 18:21:08.83ID:LlED4Hp3
OOPのメリットとして感じてるのは結局は
モジュール化のメリットなんよね
これはOOPのメリットを矮小化させるものじゃないけど

適度に分割して整理して
それらを適度に組み合わせて使うってことは

まぁそこにOOPLならではのことに焦点を当てるなら
継承っていう軸が発生することにより
クラスライブラリや自前のクラス群を説明するとき
継承関係っていうものでもって説明できる場面が出てくる
2023/09/09(土) 18:40:22.54ID:GTFNmrLV
OOPでは演算子を型と関数の間の関係として自然に定義できるけど、Cみたいな手続き型とか関数型ではどうやってるんですか?
94デフォルトの名無しさん
垢版 |
2023/09/09(土) 21:58:47.70ID:2wCSKfyD
おうおうPの良いところだけを継承したモダンな仕組みを作ればいいんじゃないかな
2023/09/09(土) 22:52:32.96ID:XsT3u1d6
>>92
>OOPのメリットとして感じてるのは結局はモジュール化のメリットなんよね
8割方同意する
>>84に列挙されてる「〜するオブジェクト」も「〜するモジュール」にすべて置き換えてもなんら支障がないから

>まぁそこにOOPLならではのことに焦点を当てるなら継承っていう軸が発生する
これには同意しない
オブジェクト指向の根幹は継承じゃなくて
データと振る舞いをオブジェクトという基本構成単位にまとめることにある
関数型のモジュールでは代替できない
また継承のうちインターフェース定義とその実装のような関係は
Haskellのtypeclassをはじめ関数型言語でも広く存在するものなのでOOPLならではのことではない

つまりデータと振る舞いをオブジェクトという基本構成単位にまとめられていることによるメリットというのがOOPLならではのメリットということになる
じゃそれは何なのか?
2023/09/09(土) 22:55:57.73ID:EGvOTcBg
ずばりオワコン
97デフォルトの名無しさん
垢版 |
2023/09/09(土) 23:03:34.74ID:LlED4Hp3
>>95
> オブジェクト指向の根幹は継承じゃなくて

根幹とまでは言ってないし思ってもないよw

> また継承のうちインターフェース定義とその実装のような関係は

インタフェースと実装の関係を継承とは言ってないつもり
あくまで
インタフェース間の継承であったり
もっと広義には単に型の継承

ごめんね今相当酒飲んでるから取りこぼしてたり誤解してたりするかもだけど

> つまりデータと振る舞いをオブジェクトという基本構成単位にまとめられていることによる
> メリットというのがOOPLならではのメリットということになる

このへんについてはなんとなく同意
カプセル化だの継承だのお題目色々あるけども
結局はオブジェクトって単位だよね
ってとこに着目すんのはわりと同意できる

要点を外してるレスになっちゃってたらすまぬ
98デフォルトの名無しさん
垢版 |
2023/09/09(土) 23:19:27.60ID:maTjrzau
>>95
> つまりデータと振る舞いをオブジェクトという基本構成単位にまとめられていることによるメリットというのがOOPLならではのメリットということになる
じゃそれは何なのか?

状態だと思う
2023/09/09(土) 23:31:29.55ID:LlED4Hp3
ほどよいフィット感だと思う
データと関数まとめる?
まとめたい?
まとめましたけどどうですか?



ええやんええやん の感
100デフォルトの名無しさん
垢版 |
2023/09/09(土) 23:46:40.67ID:maTjrzau
ミュータブルなオブジェクトを簡単に作れるっていうのがオブジェクト指向言語の利点な気がする
Haskellだとモナドを使わないといけないからね
2023/09/10(日) 08:52:36.11ID:tviBJXty
オブジェクト指向は何かってのはWikipediaでも見ればいい。読んで理解してもプログラム技術は変わらないが
オブジェクト指向のメリットは何かって言うのは「どの部分もオブジェクト指向とは言えない」形に自分のコード書きなおしてみればわかる。逆にすべての部分をオブジェクト指向の形にするのはアホな上にキチガイだが
これだけのことを技術板でグダグダ語ってるのはアホ
102デフォルトの名無しさん
垢版 |
2023/09/10(日) 09:38:36.81ID:yM7j2B0I
>逆にすべての部分をオブジェクト指向の形にするのはアホな上にキチガイ
Rustですね判ります
2023/09/10(日) 13:05:53.86ID:rXl4Y+bN
よく知らないが、Smalltalkとか? 「アホな上にキチガイ」かどうかは意見が分かれそうだが。
2023/09/10(日) 15:45:22.64ID:lSoYWiHB
1バイトのデータを1バイトのオブジェクトとして表現でない
スタック上に確保できない

そんな言語は全部ゴミ
105デフォルトの名無しさん
垢版 |
2023/09/12(火) 19:43:42.93ID:oyXayNX+
クリントン大統領にどんな強大な権限が有っても、自らのチンポがしこしこしてしまうのは止められない!

class チンポ extends クリントン{
     super.不適切な関係;
}

クリントンの再定義、クリントンの拡張された人格ということだ!
2023/09/14(木) 02:27:32.48ID:Zxfr95Lh
またお前か
https://th.bing.com/th?id=ORMS.90df8de52f3a781560cc2be44612929c&pid=Wdp&w=240&h=129&qlt=90&c=1&rs=1&dpr=1&p=0
107デフォルトの名無しさん
垢版 |
2023/09/14(木) 22:02:34.97ID:vfXwhook
関数型より遥かに便利だわ
2023/09/14(木) 23:23:53.05ID:Md4RDTr0
オワコン
2023/09/15(金) 03:29:59.91ID:rTOM1AgR
>>107
あれは知性が要るからな…

つまりこの仕事向いていないってことだよ
2023/09/15(金) 08:47:47.02ID:L1OUTakd
>>107
パイプライン演算子は取り入れてほしいかな
setXXXX系メソッドをそのままつなげられたらと思う
2023/09/15(金) 09:35:06.90ID:PpQe4ASW
そりゃAPI設計が悪い
112デフォルトの名無しさん
垢版 |
2023/09/15(金) 10:30:38.51ID:EIF5vDwi
>>109
それはただのエンジニアの自己満オナニーだよしょうもないw
2023/09/15(金) 11:40:09.91ID:Cosi/Xnz
そりゃ君の頭が悪い
114デフォルトの名無しさん
垢版 |
2023/09/15(金) 12:15:45.69ID:EIF5vDwi
いくら頭良くても5chでくだまいてたら意味無いですよね
目糞鼻糞ですよね
2023/09/15(金) 22:35:34.78ID:h2Dum8zW
本物の糞が何えらそうに
116あぼーん
垢版 |
NGNG
あぼーん
117デフォルトの名無しさん
垢版 |
2023/09/16(土) 09:57:06.22ID:ZJLR+eYH
>>115
とクソが申しております
2023/09/16(土) 10:28:53.10ID:FZJflFW6
>>116
もう1.5万入手してる
2023/09/16(土) 12:06:46.11ID:ohMs/cws
>>114
こんなところで自己紹介してる暇があったらハロワ行けばいいのに
120デフォルトの名無しさん
垢版 |
2023/09/16(土) 12:13:33.72ID:ZJLR+eYH
>>119
とハロワおじさんが申しております
121デフォルトの名無しさん
垢版 |
2023/09/16(土) 12:20:55.48ID:RATZO/gi
おじ同士チンポを舐め合うスレ
122デフォルトの名無しさん
垢版 |
2023/09/16(土) 12:28:42.66ID:ZJLR+eYH
>>121
毎日5chでチンポ舐め書き込み続けるゴミ人生でした
オブジェクト指向興味無いやつ来んなよ
暇かよ
2023/09/16(土) 14:55:49.89ID:LU1R8AA0
>>116
これ他のタスクだけで1000円くらい簡単に稼げるよな。
2023/09/16(土) 15:59:01.04ID:LYX0tJpe
決定的にオワコン
2023/09/16(土) 15:59:49.73ID:mWv9MPGX
でも便利
2023/09/16(土) 23:51:17.00ID:0ao3waxq
そしてあちこち依存が絡んだスパゲティーコードを量産
他人が解読するは難しく
時間がたつと自分でもメンテできない
2023/09/16(土) 23:52:08.95ID:0ao3waxq
ID:ZJLR+eYH
顔真っ赤w
128デフォルトの名無しさん
垢版 |
2023/09/17(日) 06:56:06.28ID:gR/F5lVJ
>>127
と顔真っ赤おじさんが申しております
2023/09/17(日) 07:02:54.80ID:5YRchEc3
必死にスレ何度も上げてるけどそんな構ってほしいのかよ
130デフォルトの名無しさん
垢版 |
2023/09/17(日) 07:04:57.07ID:gR/F5lVJ
関数型ならスパゲッティコードにならないというのはどういう理屈?
2023/09/17(日) 09:36:51.67ID:oKDM309U
ここまでのまとめ

オワコンとなったのは「クラス」
オワコンとなった理由は「クラスは継承に基づくため」
オワコンとなった証拠は「最近のプログラミング言語Go、Rust、Nimなどは全てクラスを持たない」

以上
つまりオワコンとなったのは「クラスとその継承」
もっと広い意味の「オブジェクト指向」は有効
2023/09/17(日) 10:48:22.09ID:Z711Flgk
新手のクソが現れた
133デフォルトの名無しさん
垢版 |
2023/09/17(日) 11:27:29.99ID:gR/F5lVJ
>>131
いや、クラスもオワコンじゃない
以上
2023/09/17(日) 11:48:42.16ID:otEgQUqp
GoにしろRustにしろNimにしろ継承が不要になったわけじゃない
言語機能として直接サポートされないためにより面倒でより暗黙的な方法で継承が行われている
上辺だけ見てる人にはそれがわからない
135デフォルトの名無しさん
垢版 |
2023/09/17(日) 11:56:48.45ID:JheNutwI
>>131
概ね同意
2023/09/17(日) 12:10:38.80ID:A/afT8Dp
クラスや継承は高水準な機能だから
低水準を目的とする言語には向いてない
2023/09/17(日) 12:19:05.22ID:cSUabsmI
>>133
クラスの本質は継承にあり
クラスは不要

クラスを必要だと思い込んでいる人はクラスと関係ない部分を必要としている
例えばクラスのメンバー変数はGo、Rust、Nimなどでは構造体のメンバー変数
クラスのメソッドはGo、Rust、Nimなどでは構造体のメソッド
つまりそれらはクラスとは関係なくクラスより小さい概念である構造体でも持っている
一方でクラスの本質は継承である

>>134
継承は害悪であり不要
継承しか知らない人だけが継承に固執している
138デフォルトの名無しさん
垢版 |
2023/09/17(日) 12:28:37.74ID:gR/F5lVJ
>>137
クラスを使ってもいい。
以上
害悪ではない
以上
2023/09/17(日) 12:32:35.53ID:YoGswVKv
ID:gR/F5lVJ
プログラム書けない上にどこに行っても相手してもらえないから板違いのスレで吠えるしかないんだな
140デフォルトの名無しさん
垢版 |
2023/09/17(日) 13:01:40.88ID:gR/F5lVJ
何故自分は相手してもらえると思うんや
おまえの相手して誰が得するんや
オブジェクト指向興味無いなら来んなよ暇人
2023/09/17(日) 13:05:43.12ID:cSUabsmI
オブジェクト指向は非常に重要
しかしクラスは不要
これはプログラミング言語界で結論が出ている
だから最近のプログラミング言語Go、Rust、Nimなどはいずれもクラスを持たない
2023/09/17(日) 13:21:52.64ID:Tq9Zm9TM
これまでオブジェクト指向分析に触れているコメント0
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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