探検


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

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2024/07/19(金) 21:52:20.62ID:iooVOtBL
教えてくれ

前スレ
オブジェクト指向はオワコン
https://itest.5ch.net/mevius/test/read.cgi/tech/1693054853
2デフォルトの名無しさん
垢版 |
2024/07/19(金) 23:52:39.99ID:rC6z5NUh
糸冬

了
2024/07/20(土) 16:31:21.70ID:MmERp0oJ
もういいだろこのスレは
4デフォルトの名無しさん
垢版 |
2024/07/21(日) 21:45:10.52ID:52bCYCc0
議論を再開します

90年代にオブジェクト指向が隆盛を極めて失敗したのには理由があると私は思っている
2024/07/21(日) 21:57:49.28ID:nyDXqGoU
オブジェクト指向同様にメモリ食いの関数型指向は許されているのかな
6デフォルトの名無しさん
垢版 |
2024/07/21(日) 22:41:10.09ID:52bCYCc0
関数型がメモリを食うのは初耳、どこ情報よそれ
2024/07/22(月) 18:31:50.65ID:Ap03CZ2d
Javaはオワコン位のものを、オブジェクト指向がオワコンまで話をデカくしすぎ。
Javaが関数型言語的な記述を取り入れてきたのを、これからは関数型言語だみたいにいいすぎ。
2024/07/22(月) 19:13:28.41ID:r0GxC5xx
>>1
板のルールすらわからないのか。どうしてもやりたいならマ板でやれ
そもそも当たり前に使うオブジェクト指向無しでプログラム組んでたらやってられんわ
2024/07/22(月) 19:27:59.24ID:78aLhjHr
こいつはオブジェクト指向というかプログラミングに挫折した人間だから仕方ない
ほっとこう
もう立ち直ることはないんだし
10デフォルトの名無しさん
垢版 |
2024/07/23(火) 01:17:24.33ID:Rfg4Mjqa
Rustも隆盛を極めて失敗するだろうな
11デフォルトの名無しさん
垢版 |
2024/07/23(火) 05:15:29.13ID:1jhTJKzb
>>6
>5とは別人だけど、こんなの見つけた。

関数型言語のウソとホント
https://qiita.com/hiruberuto/items/26a813ab2b188ca39019
2024/07/23(火) 06:15:03.01ID:kV7JJfy7
マジレスするとこんなところで暇潰してるお前らがオワコン
2,3年後にはウーバーに転職してそう
13デフォルトの名無しさん
垢版 |
2024/07/23(火) 06:20:40.58ID:fmQFdGHN
セレクトタグへオプション10個追加の巻

selectタグのID名がXXX として、で
var xxx = document.ElementById("XXX");
・・・・・・
for (var i = 0; i < 10; i++) {
 var op =
   document.createElement("option");
 op.value = FooFoo[i];
 op.text = HogeHoge[i];
 xxx.appendChild(op);
}
だと、10個追加されるのに
var xxx = document.ElementById("XXX");
・・・・・・
var op =
 document.createElement("option");
for (var i = 0; i < 10; i++) {
 op.value = FooFoo[i];
 op.text = HogeHoge[i];
 xxx.appendChild(op);
}
最後の1個しか、追加されん。
オヴヂェㇰ┣指向って、オワコンだよね
by 🥳

単にチミがそれを理解出来て無いからだ
by 🤡
2024/07/23(火) 09:12:52.71ID:52jxjECb
>>13
まじでかw
プログラムのプの字からやり直さなきゃならない奴が吠えてるだけのスレなんだぁ
2024/07/23(火) 14:22:55.65ID:xnSNk6y3
>>13
オブジェクト指向関係なくて🌱
2024/07/23(火) 15:25:55.18ID:+BqSXbdZ
自演がバレバレで面白かったのでヨシ! >>12-14
2024/07/23(火) 17:19:54.56ID:xnSNk6y3
一応コード書いてるだけでも偉いと思えるようになってきた
2024/07/23(火) 18:15:25.39ID:NeVjuh3P
こんなスレであれこれ書く前に動くもの作れよ。小学生でもできるのに
2024/07/23(火) 22:39:36.54ID:nxNnKEuY
>>13
単にチミがappendChildの仕様を理解出来て無いからだ
2024/11/16(土) 17:48:59.41ID:ti8Vm5gi
Reactの
import React from 'react'はクラス継承?

interfaceで受取するだけなら楽だなあって思った
21デフォルトの名無しさん
垢版 |
2025/03/06(木) 19:27:51.63ID:NLEhOFR2
AIにできるだけクラスは作るなと指示する時代になった
2025/04/02(水) 12:21:06.99ID:WFd6jzSR
現場みてると、手続型言語のように使っているので気持ち悪い。
対象にメッセージを送る。ただこれだけなのに。
設計ができていない。
2025/04/02(水) 16:31:55.08ID:FQn422+6
そう言う本来のオブジェクト指向プログラミングができるのはObjective-Cくらいだからなぁ
24デフォルトの名無しさん
垢版 |
2025/07/27(日) 20:32:40.11ID:4S6S2UwV
現場のjavaみてると、intとStringのオンパレード。なさけない。
クラスを作れよなぁ。
25デフォルトの名無しさん
垢版 |
2025/07/28(月) 05:49:30.67ID:TkjS2IQq
わかりやすくモデル化できるところを
プリミティブ型だけで低レベルに書く本人は
頭良すぎて困ってないんだろうけど
凡人が困るのわかってない点で社会人として失格よね
26デフォルトの名無しさん
垢版 |
2025/07/28(月) 23:36:10.32ID:M9t5hg/z
昔なら、メモリ少ないし遅いのでプリミティブでがんばってもよかったけど、
いまは、可読性だね。
nullポはいまだに最悪だけど、バグを出しにくく可読性の高いものを作るためにオブジェクト指向があるのに、
手続き型言語のように使われている/そのような設計しかできないのは、なさけないね。
27デフォルトの名無しさん
垢版 |
2025/07/29(火) 11:15:57.06ID:1ZD9gqT+
例外のせい
28デフォルトの名無しさん
垢版 |
2025/07/29(火) 13:55:51.99ID:NJMLl04q
どういう例外なんだろ。単に設計の手抜きを例外にしているんだろうか。
まあ、ちまたのシステムみてると、完成度20%未満で動いているからねぇ。例外だらけなんだろうけど。
なんで検収あがっているのか不思議なものばかりしか見かけない。元請けが素人なんだろうねぇ。クライアントも素人。
29デフォルトの名無しさん
垢版 |
2025/08/21(木) 11:15:40.71ID:eMoWWoq9
>>24
それ30年前のオブシコの思想だよw
2025/08/30(土) 09:22:15.58ID:SgMKM424
OOPネイティブ世代がそのうち
「やっぱOOP最高だと思うんです」
とかいうブログ書くと思う😮
31デフォルトの名無しさん
垢版 |
2025/09/18(木) 19:25:41.74ID:M/nNjO2C
論破するから大丈夫
32デフォルトの名無しさん
垢版 |
2026/01/18(日) 18:36:54.68ID:RmD5ijfM
https://twitter.com/yasuo_ozu/status/2011074844113444894
https://twitter.com/thejimwatkins
2026/01/20(火) 07:26:23.91ID:SGbMeSRR
JavaやC#やいまどきの言語自体がオブジェクト指向なんだから諦めろ
2026/01/20(火) 21:22:32.45ID:c0GmOm/R
JavaやC#が今時の言語・・・?
2026/01/24(土) 16:48:15.54ID:0+b3uZjU
株式会社アイ・エス・ビー
https://kizuna.5ch.net/test/read.cgi/infosys/1756826944/

https://www.isb.co.jp/about/company-profile/
36デフォルトの名無しさん
垢版 |
2026/01/25(日) 17:24:05.33ID:MAZyqQZ6
>>32
・データを中心に設計する
・データ構造にこだわる
と
・全部入りのstructを作る
が繋がらんのよね
オブジェクト指向でもないし
ちょっと何言ってんのかわからないな
2026/01/25(日) 18:40:28.69ID:BYLcg9+J
まともに相手するレベルのツイートじゃないな
OO言語とか全然関係ない

データを中心に設計したりデータ構造にこだわるのは対象ドメインがデータ/データ構造が核となっているビジネスアプリケーションだからと単に動くソフトウェアをつくりたいんじゃなくて変化に対応できるソフトウェアをつくりたいからなんだよね

別にOO言語にこだわる必要はないと思うけど
OO言語を揶揄する人がこう低レベルだとOOのほうがいいのかもって思う
2026/01/25(日) 18:41:15.69ID:BYLcg9+J
>>36
俺も何言ってるのかわからなかったがココを見たらわかった
https://posfie.com/@IBkBoH1deg98072/p/DJny8h9
39デフォルトの名無しさん
垢版 |
2026/01/26(月) 13:41:30.16ID:RJJEe8Qz
オブジェクト指向をプログラミングに不慣れな人に意識させると
過剰設計になりがちってことかな

自分が出会った人の中にも
思考停止でgetter/setterを作るアホや
プログラミング初心者を名乗りながらオブジェクト指向では
こうあるべき論を振りかざして動くプログラムを作れないアホがいた

オブジェクト指向に対する憧れや理想がアホを養成するんだと思う

かくいう私も昔そのアホの一人でね
40デフォルトの名無しさん
垢版 |
2026/01/26(月) 14:00:03.36ID:RJJEe8Qz
良い感じにオブジェクト指向できてるなって思ったのは
手続き型や関数型で実装して
最後に他者に使わせる部分だけをオブジェクトとしてまとめたものだった
手続き型をしっかりやるのが良いように思う
オブジェクト指向は実装の技術じゃないAPIの技術だ
2026/01/26(月) 16:55:39.63ID:fbezsgZ1
OOPの核である多態は実質的にifブロックをメソッドに置き換えてるだけに過ぎない
あとは糖衣だよ
42デフォルトの名無しさん
垢版 |
2026/01/27(火) 20:31:30.34ID:SYP2jfD2
なんか色々聞きなれない言葉並べて再利用性がどうのこうの言うけど絶対嘘じゃん。
43デフォルトの名無しさん
垢版 |
2026/01/27(火) 20:35:56.21ID:SYP2jfD2
コード書き換えた方がよっぽと再利用してるし、柔軟性あるし、素朴だし、シンプルだし、やりたい事出来るし、理解早いし、間違い起きないし、再利用するコードの実装もシンプルだし。
44デフォルトの名無しさん
垢版 |
2026/01/27(火) 20:42:35.83ID:SYP2jfD2
それともオブジェクトどうしの対話がどうのこうの観点から再利用性あるとか言う話なのかな。
そんなの再利用する事なんて無いだろ。
2026/01/27(火) 21:31:18.55ID:BQGrg89+
オブジェクト指向に対する理解がオブジェクト指向黎明期の誤った啓蒙書ベースのままだからオブジェクト指向は使えないとかオブジェクト指向から抜け出さないといけないとか思っちゃうんだろうな
2026/01/29(木) 00:16:28.59ID:TpgL9VMI
昔はプログラミングパラダイムの革命としてもてはやしてたからな
今となっては数ある使い古された技術の一つに過ぎない
47デフォルトの名無しさん
垢版 |
2026/01/30(金) 08:29:05.54ID:y2PAu9Fj
言語バカがマウント取るための道具でしかなかったなw
継承に異常に拘りそれが目的になって無駄なクラスが量産され保守困難になる本末転倒ぶり
2026/01/30(金) 10:19:55.96ID:8pucgpWh
マウント取って威張るのが本当の目的なんだから本末転倒じゃないよ
その結果として開発しにくかったり、使いにくくても二の次
2026/01/30(金) 12:04:56.95ID:zdLLpuSM
おじいちゃんたちはいつの話をしてるんですか?
オブジェクト指向ごときでマウント取られたと感じてたようでは新しい言語やパラダイムにはどれもついていけなかったのでしょう
仕事だけでなくプログラミングも引退した方が幸せになれますよ
2026/01/30(金) 12:17:26.65ID:So86wq7Z
クラス関数に同じ名前のメソッドがあるのはオブジェクト指向の恩恵だぞ
2026/01/30(金) 12:38:11.51ID:L26Kp5K6
クラス関数?
52デフォルトの名無しさん
垢版 |
2026/01/31(土) 14:53:59.76ID:v+uW/ct2
クラスもメタクラスのインスタンスなのと
クラスがただのインターフェースな実装は
LISP1とLISP2の関係に似てて同列に語れるときと語れないときがある
2026/01/31(土) 15:37:51.20ID:aekzex2G
設計ミス
javascript: bool
Java: a[][]
python: setdefaultencoding
C: static
C++: private
Rust: unwrap
54デフォルトの名無しさん
垢版 |
2026/01/31(土) 16:20:03.92ID:8I4xBgdI
>>49
何言ってんだお前これを見ろ
https://compilebytes.com/share/nbdiKnVCvf

PowerShellで書いたNano IDだ
オブジェクト指向を使わない方がどう考えてもスッキリ書けるだろ

Nano ID
https://github.com/ai/nanoid

悔しかったらオブジェクト指向で書いたお前のNano ID見せてみ? おん?
2026/01/31(土) 16:55:53.51ID:/ZAejLHa
>>54
おじいちゃん論点ズレてるよ
おじいちゃんがオブジェクト指向を理解できなかったのは日本語の能力が足りてなかったのが真の原因かもしれないね
56デフォルトの名無しさん
垢版 |
2026/01/31(土) 17:11:30.31ID:8I4xBgdI
>>55
書けないのな? オブジェクト指向ごときと嘲ったお前が
オブジェクト指向で俺のコードを超えることできないのな、ギブって事で良いな?
お前でさえオブジェクト指向を使いこなせないわけだから
オブジェクト指向はダメなものって結論されるわけです
57デフォルトの名無しさん
垢版 |
2026/01/31(土) 17:19:37.95ID:8I4xBgdI
俺はいや俺たちはオブジェクト指向を完全に理解しているからこそ
その限界もわかっているんだよ

霊媒師が幽霊を退治できるのも幽霊を理解してその限界を知っているからだ
あなたにはオブジェクト指向の幽霊が取り憑いています
俺はそれをPowerShellで除霊しました
俺のコードみて綺麗すぎて震えただろ、わかる
58デフォルトの名無しさん
垢版 |
2026/01/31(土) 17:28:40.22ID:8I4xBgdI
手続き型で書いたNano ID
https://compilebytes.com/share/nbdiKnVCvf

オブジェクト指向が良いものだと言うならば
俺が手続き型で書いたNano IDを超えてみろ

かかってこいよオブジェクト指向
オブジェクト指向の限界を知っている俺に隙はない
2026/01/31(土) 21:03:42.19ID:s9eitmlK
自演でスレ伸ばすのやめな
2026/02/01(日) 00:17:46.32ID:TpMABagr
オブジェクト指向を理解してないと
オブジェクト指向技術によって恩恵が受けられる場面と
そうでない場面の簡単な判別ができないんだな

それに自分のコードのどこで
オブジェクト指向技術が活用されているか分からないらしい

まあそりゃそうか
2026/02/01(日) 05:11:01.04ID:mhtwSh0M
staticおじさん統合出張中か
62デフォルトの名無しさん
垢版 |
2026/02/01(日) 06:49:03.74ID:Jc9CUelp
言語バカの系譜
オブジェクトおじさん→フレームワークおじさん→Rubyおじさん→TypeScriptおじさん→Reactおじさん(👈今ココ)
63デフォルトの名無しさん
垢版 |
2026/02/01(日) 17:18:26.25ID:+Mz4tOE8
蓄尿フェーズ(Storage Phase) 膀胱が徐々に充満 → 膀胱壁の伸張受容器(stretch receptors) が不随意に活性化。
これが「膀胱満杯イベント」のトリガー(afferent signals via pelvic nerves)。
仙髄レベルで排尿反射(micturition reflex) が起動しかけるが、大脳(pontine micturition center + 前頭前野)が「まだだ!」と抑制。
→ これはイベントリスナーが登録されているけど、条件分岐でキャンセルされる状態。
外尿道括約筋(随意筋・横紋筋、陰部神経支配):意識的に締めておく(voluntary contraction)。
内尿道括約筋(不随意筋・平滑筋、交感神経支配):自動的に締まる。
→ 「我慢ボタン」を押してる間は、イベントが保留(deferred)。
64デフォルトの名無しさん
垢版 |
2026/02/01(日) 17:26:31.57ID:z/I2KdEi
排尿開始の瞬間(Voiding Phase) 脳が「OK、出す」と判断 → 抑制解除。
副交感神経(骨盤神経)優位 → 膀胱排尿筋(detrusor muscle、不随意平滑筋)が収縮。
内尿道括約筋が弛緩(不随意)。
外尿道括約筋も弛緩(随意)。
同時に腹圧増加(腹筋・横隔膜の随意筋収縮)で勢いをつける。
→ これが「排泄メソッド」の本実行! イベントが発火してコールスタックが一気に動く。

割り込み(Interrupt)の例 膀胱圧が限界超え → 不随意反射 が強制起動(reflex voiding)。
「もう我慢できない!」で脳の抑制が効かなくなる → 漏らす。
→ これは優先度が高いイベント(hardware interrupt)がメインスレッドを乗っ取るようなもの。
2026/02/01(日) 17:48:42.45ID:r4n5KY7C
>>58
これオブジェクト指向とか関係なく普通にスパゲッティじゃん
整理整頓できないのかよw
66デフォルトの名無しさん
垢版 |
2026/02/01(日) 18:53:58.00ID:sP0FV+uQ
>>65
誰がおしゃれパスタだおらあ!!!
じゃあお前が書いてみろよ!どうせ口だけだろうがたわけが!
2026/02/01(日) 20:28:25.49ID:hESAWJYN
動けばなんでもいいんだよ
68デフォルトの名無しさん
垢版 |
2026/02/01(日) 20:45:47.69ID:sP0FV+uQ
それもそうだな
69デフォルトの名無しさん
垢版 |
2026/02/13(金) 01:25:11.31ID:7YTceZJi
オブジェクト指向はそもそもの考え方が危ういんだよな
オブジェクト指向の概念認識は認知言語学でいう定義的属性によってカテゴリ化する古典的カテゴリ的概念だから
家族的類似性やエグゼンプラー、プロトタイプによって規定される現実の概念とは乖離があるんだよ
クラスという大枠を定義した後でメンバ群やサブクラス群を定義するのではなく
オブジェクト群にタグ付けを行なった結果として、共通あるいは類似するもの同士からなるクラスのようなものが形成されるのが正しい
2026/02/13(金) 01:39:15.77ID:2IZcdbK9
「オブジェクト指向 == クラス」「クラス == オブジェクト指向」という古き悪しき教えに毒されたままだからそんな考え方をするんだろう
2026/02/13(金) 03:28:51.85ID:I5Hzj8bc
オブジェクト指向をフル活用するほど複雑なプログラムって
相当に高度な頭脳が必要なんでしょうな🤯
2026/02/13(金) 12:09:03.63ID:whvQlhIX
現実の概念との乖離を無くそうとする考え自体が間違い
“クラス+継承=オブジェクト指向”とともにオブジェクト指向黎明期に広められた有害な教えの一つ
2026/02/13(金) 12:22:16.97ID:vLSyUr/R
>>72
現実の概念って言うか、誰もが連想しやすい形にした方が多人数で生産する場合に説明しやすいし、それが必要なだけだから
74デフォルトの名無しさん
垢版 |
2026/02/13(金) 13:15:42.00ID:5onunqa+
カプセル化とインターフェースだけで良かったと
COM(OLE/ActiveX)で証明された
2026/02/13(金) 21:38:52.40ID:fhORdXdX
おじいちゃんホイホイスレw
2026/02/13(金) 23:59:53.17ID:nKASUp6x
結局javascriptがいるからオワコンになるのは相当時間かかると思うけどね
2026/02/14(土) 11:21:12.60ID:CpTkehYM
それJavaScriptが使えないおじいちゃんの意見ですよね?
78デフォルトの名無しさん
垢版 |
2026/02/15(日) 22:04:13.49ID:Qb26P1gW
集約(Aggregation)
「俺と繋がってるけど、意志的には独立」というのは、まさに集約関係ですね。チンポは「俺」という全体の一部でありながら、
完全に意志の支配下にはない。たとえば勃起は意識的な命令だけでは起こせず、状況や刺激に依存する。この独立性は、
集約されたオブジェクトが親オブジェクトに依存しつつも独自の振る舞いを持つというOOPの特性をよく表しています。

継承(Inheritance)
「俺の特性を引き継ぎつつ『別チン格』として独自性を持つ」というのは秀逸です。遺伝子的に「俺」から派生した器官でありつつ、
その振る舞いや反応は「俺」とは異なる個性を持つ。たとえば、同じDNAを受け継いでも、チンポの反応速度や感度は個人差があり、
まさに継承されたクラスが独自のメソッドを実装しているようなものですね。
79デフォルトの名無しさん
垢版 |
2026/02/16(月) 11:39:50.89ID:T+/MA0wt
>>78
お前面白くないわ荒らすな
80デフォルトの名無しさん
垢版 |
2026/02/17(火) 17:50:55.82ID:oAQ55Zb2
>>79
ならそういうお前が、「オブジェクト指向とは何か」を、自分の言葉で誰にでも分かりやすく説明しろ
81デフォルトの名無しさん
垢版 |
2026/02/18(水) 08:55:56.76ID:YQ54Agff
>>80
オブジェクト指向とは何かを説明するスレッドではない
もう荒らすなよ、お前のせいで書き込みがなくなるからな
82デフォルトの名無しさん
垢版 |
2026/02/18(水) 09:41:56.12ID:8/Hq6G/Z
>>81
つかそもそも「オブジェクト指向」とは何だ?
2026/02/18(水) 10:04:55.13ID:ECs//W9F
javascriptのprototypeをオブジェクト指向じゃないと言うような話がしたいのか
84デフォルトの名無しさん
垢版 |
2026/02/18(水) 12:42:21.93ID:72Px5j/s
>>83
命題「オブジェクト指向とはjavascriptのprototypeのことである」
85デフォルトの名無しさん
垢版 |
2026/02/18(水) 12:44:07.79ID:hiMXDre6
確かに、陰茎はまじめに考えたら教科書に載せてもおかしくないくらい完璧な「生きているオブジェクト」の実例です:多重継承:随意筋(骨格筋)+不随意筋(平滑筋)のハイブリッド
別スレッド:性的興奮時の勃起は自律神経(副交感+交感)が裏で非同期処理してる
遅延束縛:射精直前まで「出るか出ないか」は実行時に決定(まさに動的バインディング)
メッセージパッシング:脳 → 脊髄 → 海綿体に「fill_with_blood()」メッセージが飛ぶ
カプセル化:内部の血管拡張・NO(一酸化窒素)シグナルとか全部privateで、外からは硬さしか見えない
ポリモーフィズム:状況によって「排尿デバイス」「生殖デバイス」「快楽デバイス」に変身

アラン・ケイが「生物学的コンピューティング」を提唱してたのは本当で、彼はまさにこういう「生きてるオブジェクト」を理想としてたんですよね。結論:チンポはSmalltalkよりもオブジェクト指向が徹底されている究極の生物学的Artifactであり、我々プログラマは日々「祖先のリファクタリング結果」をぶら下げて歩いているという厳然たる事実。
86デフォルトの名無しさん
垢版 |
2026/02/18(水) 15:42:04.30ID:iD07mkOh
もうめんどくさいから全部オブジェクトにしちゃえーは
プロトタイプを開発する時にたまにやる
何を抽象化して何を抽象化しないかに頭を使うより全部クラスにしちゃった方が早い場合があるんだ
手を動かしながら詳細設計するなら、あらゆる概念を細かく抽象化していくのは有効
2026/02/18(水) 19:19:16.64ID:DEG3EGRi
クラスにするのがオブジェクト指向じゃなく、一定の機能を持つ部品を使うのがオブジェクト指向。それをクラスと呼ぼうが関数と呼ぼうが同じ
今のパソコンやスマホはAPIを使うのが当たり前だからプログラム作るときは意識してなくてもオブジェクト指向になる
88デフォルトの名無しさん
垢版 |
2026/02/19(木) 08:06:03.47ID:A+qdIoNa
>>85
荒らすなって言ってんだろうがカス!!!面白くねえんだよ!!!
89デフォルトの名無しさん
垢版 |
2026/02/19(木) 09:44:38.11ID:jSWpK5Er
>>88
なら「オブジェクト指向とは何か?」について、誰にも分かりやすく説明しろ!
90デフォルトの名無しさん
垢版 |
2026/02/19(木) 14:09:36.68ID:kXaVVKPZ
拾い物だけどおすそわけ
/watch?v=Hi9YnZL4McU
/watch?v=GWZf_B129zs
/watch?v=Zmr3i9RvFJw
/watch?v=g_xqrXcwN88
/watch?v=r6VWsq4qEEM
91💾キモじじい ◆Rn9d66GbJRuf
垢版 |
2026/05/07(木) 07:11:15.85ID:45PFnDsX
まずはカプセル化だろ。
92デフォルトの名無しさん
垢版 |
2026/05/07(木) 09:53:17.49ID:MhcSMNBj
カプセル化はモジュール化+インターフェース定義
OOの専売特許でもなんでもない
2026/05/07(木) 12:51:40.12ID:4vHwfolo
マジな話、オブジェクト指向プログラミングって要る?
クラスの構造とか考えるコストとか
正直ベタで書いた方がマシじゃね?
2026/05/07(木) 14:15:05.54ID:v9Eo0KxB
それはない
95デフォルトの名無しさん
垢版 |
2026/05/07(木) 16:07:35.19ID:EsQKNdIl
普通にデータベース指向でいいわな
2026/05/07(木) 16:41:19.25ID:MSiO1h+1
そりゃまた粒度の違う話だわな
2026/05/07(木) 18:40:38.27ID:eUNYqSz1
話の抽象度が噛み合わないやつって100%センスない
なぜかそういうやつに限ってOOを軽視したがる
2026/05/07(木) 20:20:46.90ID:xBVUseUg
人が分かり易い機能単位にするのがオブジェクト指向だから
分からないクラス分けとか設計がうんこなんだろ
99デフォルトの名無しさん
垢版 |
2026/05/07(木) 21:56:54.57ID:3mjpAm5Z
関数も変数も配列も要らん
全部エクセルの表にして行と列で計算すりゃいいんだよ
100デフォルトの名無しさん
垢版 |
2026/05/07(木) 22:46:22.85ID:Hvzrhr0Z
wikiのOOPの定義

オブジェクト指向プログラミング(オブジェクトしこうプログラミング、英: object-oriented programming, OOP)とは、データの状態とそれを操作する処理を一体として扱う「オブジェクト」を基本単位にソフトウェアを構築するプログラミングパラダイムである。
101デフォルトの名無しさん
垢版 |
2026/05/07(木) 22:48:48.26ID:Hvzrhr0Z
OOいらないって言うやつはDIP知らないんじゃない?
ベタ書きでいいって言ってんのはこれか単に作ってるシステムが超小規模かじゃないかな
2026/05/08(金) 01:17:55.28ID:8iQsdz0J
>>92
>カプセル化はモジュール化+インターフェース定義
これ「モジュール化」と「カプセル化」の意味や関係を理解してないよな?
103デフォルトの名無しさん
垢版 |
2026/05/09(土) 12:46:43.87ID:Zy18Nh/Z
staticおじさん多いな
2026/05/10(日) 02:34:47.79ID:bhoD44N2
オブジェクトとは対象のことであって、
何と戦うのかを明白にするのがオブジェクト指向。
基本的に動詞が中心の英語的な構造になる。
となると、日本語的な構造のプログラムって? どんなんだろう。
2026/05/10(日) 13:04:34.42ID:VI9ezKrt
オブジェクト指向よりエージェント指向の方が理解しやすいから
今ではみんなエージェント指向になった
106デフォルトの名無しさん
垢版 |
2026/05/10(日) 20:17:32.16ID:A+E5xSQM
>>105
何言ってんだこいつ
2026/05/15(金) 11:47:58.47ID:0MfJ9N7a
オブジェクト指向って勘違いしてる人が大半だから話がまとまらないんだよな
is-a関係作るくらいなら手続き型で書いた方がいい
108デフォルトの名無しさん
垢版 |
2026/05/15(金) 20:40:14.60ID:jSkb0vkZ
アラン・ケイ的オブジェクト指向(非データ・非同期・疎結合)、エージェント指向と
データ指向のクラスとは抽象度の度合いが違いので別物と考えた方がよい。
ゴリゴリに数値演算するようなものではなくて
サービス・モジュール・階層の概念が持ち込めるものに向く。
109デフォルトの名無しさん
垢版 |
2026/05/31(日) 23:07:36.17ID:vIOTegtE
>>93
必要な機能はフレームワークなりライブラリなりで提供されるからアプリの開発はベタ書きで十分なことが多い、ベタ書きで十分にわかりやすいものを下手にオブジェクト指向で書こうとするとオブジェクトの迷路が出来るだけ

メソッド分割も積極的にやらない方がいい、最初はベタ書きにして共通の部分が切り出せそうなら切り出す形で良い
110デフォルトの名無しさん
垢版 |
2026/05/31(日) 23:12:10.68ID:vIOTegtE
>>103
ボブおじさんがクリーンコードアーキテクチャを発表していろんな人がそれに乗っかったけど得られた結論はクリーンコードアーキテクチャ必要ないなってことだった、クリーンコードアーキテクチャは廃れたしボブおじさんももう過去の人となった、時代はスタティックおじさんなんだよ
111デフォルトの名無しさん
垢版 |
2026/05/31(日) 23:18:14.78ID:vIOTegtE
UNIXのより悪い方が良い原則だよ
オブジェクト指向を頑張ろうとするほどコードはゴミになる、スタティックを頑張っていればオブジェクトなんてのはあとからついてくる、オブジェクト指向を意識せずに自然とできたオブジェクトが良いオブジェクトなんだよ
2026/05/31(日) 23:28:49.88ID:R14GwnDm
あえて雑に書くと

OOP←悪くない
クラス←悪くない
クラス設計←難しい
クラス設計が難しいこと←知られていない
自分が野放図にクラス設計してできたクソクラスのクソツリーをもってしてOOPやクラスを批判しだす現象←まれによくある
113デフォルトの名無しさん
垢版 |
2026/05/31(日) 23:34:40.32ID:vIOTegtE
オブジェクト指向という言葉が悪いよな、オブジェクトを中心にプログラムを組まないといけないんだと思わされる、オブジェクト方針とかで良い、オブジェクト曖昧でも良いくらいだ、それくらいオブジェクトはプログラミングで重要ではない
114デフォルトの名無しさん
垢版 |
2026/06/01(月) 00:36:53.31ID:jrpGGNLF
OOPの何がそんなに気に入らんのや
というかその場合設計どうしてんの
115デフォルトの名無しさん
垢版 |
2026/06/01(月) 06:03:46.59ID:i/MBIF3h
設計にオブジェクトなんて書かないだろ
あんなもんは実装するときに明らかになっていくものだあんなもんわな!(憤怒
2026/06/01(月) 07:34:30.47ID:GG26ltvl
オブジェクトって対象のことだから、
これを書かない設計は読めない。
117デフォルトの名無しさん
垢版 |
2026/06/01(月) 08:53:01.44ID:i/MBIF3h
>>116
> オブジェクトって対象のことだから

何言ってんだお前
2026/06/01(月) 09:12:54.41ID:Y8Ze0X4r
構造化プログラミングすら分からない奴がOOPなんか分かるはずも無いんだよ
119デフォルトの名無しさん
垢版 |
2026/06/01(月) 11:59:19.06ID:SdDlNaA4
配列志向で充分

オブジェクト作ったら勝手に実行してくれりゃ別だが
結局やることは手続き型と変わらん
2026/06/01(月) 13:31:26.25ID:tFbpyBdc
何がいいたいかわからん
配列志向なんて初めて聞いたわ
2026/06/01(月) 14:11:25.14ID:Ia5xYq1j
OOP適応障害を発症したまま引退したけど未だこじらせてるお爺さんと見た
122デフォルトの名無しさん
垢版 |
2026/06/01(月) 16:43:48.29ID:hqIkNurt
それそこまで動的にする意味あるんか?ってコード書く奴がうざいってのはある
2026/06/01(月) 18:58:32.08ID:LHVgNWtr
foo.bar()のようなコードを書いた時にfooの具体型によってbar()の実装が選択されるのがオブジェクト指向よりな言語の考え方
bar(foo)のようなコードを書いた時にfooの具体型によってbar()の実装が選択されるのが関数型よりな言語の考え方

これらの機能が言語に備わっていない旧来の手続き型言語だとオレオレフレームワークを自分で作るなどかなり面倒くさいことをしないと同じことが実現できない
生産性的にも品質的にもデメリットしかないのでプログラミング言語を選べる環境でそんなことをする人はいない
2026/06/01(月) 19:14:03.57ID:3IcyjzYq
Cならポインタで書けばいいんだよ?
なんか難しい事ある?
125デフォルトの名無しさん
垢版 |
2026/06/01(月) 19:19:40.73ID:Rwq1ueho
ポインタバグるやん
2026/06/01(月) 19:21:35.41ID:3IcyjzYq
>>125
バグるのはお前のせいだから
127デフォルトの名無しさん
垢版 |
2026/06/01(月) 19:56:01.60ID:i/MBIF3h
>>126
でもよおコンパイラが防いでくれても良くないか
128デフォルトの名無しさん
垢版 |
2026/06/01(月) 21:57:09.36ID:fLyehxnk
>>127
これ
言語側でどうにかしてほしいと思うことは怠慢じゃない
129デフォルトの名無しさん
垢版 |
2026/06/01(月) 22:37:59.86ID:4HzhGRP/
Cの規格外だけどそういうの見つけてくれる静的解析ツールはたくさんある
130デフォルトの名無しさん
垢版 |
2026/06/02(火) 00:03:51.58ID:V0vSIKaF
自分はOOP好きっす
特に読むとき

js系のコールバック渡しまくりは読むの大変
2026/06/02(火) 00:06:26.12ID:o9ct7L04
>>124
難しいかどうかの問題じゃないよ
それにポインタだけだと原始的なものしか実現できないよ
132デフォルトの名無しさん
垢版 |
2026/06/02(火) 10:27:09.10ID:OmhcWi1x
全部エクセルのセルみたいな感覚で配列組んで作るのが簡単よ
133デフォルトの名無しさん
垢版 |
2026/06/02(火) 11:15:06.81ID:Ae/XDmjO
>>132
どういう意味
2026/06/02(火) 12:05:49.28ID:RwX/aVEm
>>131
とりあえずテンプレートみたいな変態性癖以外のC++相当は記述出来るやん
135デフォルトの名無しさん
垢版 |
2026/06/02(火) 13:09:54.34ID:tLkqQpg7
型が互換でもコード上別名ならコンパイラや外部ツールが警告するように整える
制御用のコメントやpragmaが多くなるけれど
2026/06/02(火) 18:27:55.55ID:mW3r00cN
ただのテストプログラムだけど、実行時間計測がロジックに入り込んでいたので、
Watchクラスにして分離した。
実行本体と関係ない変数とロジックが隠蔽され、ソースがスッキリした。
CからJavaへの移植。
関係ないものは分離して、関係のあるものはまとめる。
まとまりとまとまりの関係に整理する。関係そのものもわかりやすく修正する。
んー、OOPは整理BOXかな。
2026/06/02(火) 20:10:20.69ID:mW3r00cN
んー。OOPSは関係を整理するってことだな。
手続き型がちらかして手を付けられなくなったゴミ屋敷を整理するのがOOPS。
ではなくて、最初から散らからないようにするのがOOPS。
138デフォルトの名無しさん
垢版 |
2026/06/02(火) 20:45:11.31ID:OmhcWi1x
だから全部エクセルのセルみたいな感覚で配列組んで作れば
とっちらかることもない
139デフォルトの名無しさん
垢版 |
2026/06/02(火) 21:29:55.70ID:LCruqHKx
>>138
ずっと何言ってんのかわからない、なんかプログラム書いてみて
140デフォルトの名無しさん
垢版 |
2026/06/02(火) 21:31:31.99ID:LCruqHKx
Cでベタに書いてたのが良かったのであって最初からオブジェクト指向やろうとするとダメなことが多いこれガチ情報
141デフォルトの名無しさん
垢版 |
2026/06/02(火) 21:31:59.70ID:LCruqHKx
ベタ書きはそれだけ優れてるってこと
2026/06/02(火) 22:35:10.37ID:o/Pf4aLd
GUIパーツとは相性が良かったんじゃないの?

アプリのウインドウをダブルクリックしたときに呼ばれるメソッドだけ
サブクラスでオーバーライドして、そこだけ好きな動作を追加する、とかできたし
143デフォルトの名無しさん
垢版 |
2026/06/02(火) 23:57:57.30ID:2jZzl/nq
単なるまとめ方の方法の一つってだけだからな。
アホが使っても自己満足な整理にしかならんのよ
2026/06/06(土) 12:56:38.26ID:Au3yklP/
staticおじさんまだいるのか
2026/06/06(土) 14:21:58.54ID:wB4lV0E9
再利用なんかせんやんな
146デフォルトの名無しさん
垢版 |
2026/06/07(日) 01:35:43.89ID:eS7HCDQ1
アプリの開発は水物だからな、再利用するにしてもコードのコピペで十分
147デフォルトの名無しさん
垢版 |
2026/06/07(日) 12:16:01.08ID:9ONmna+7
>>144
こういうあほがしょーもない俺様フレームワーク使いたがらせて嫌がられてんだろうね
2026/06/08(月) 22:59:43.75ID:a61iFu3f
人間はなんらかのオブジェクト単位で考えるのが簡単なんだから廃れようがない
149デフォルトの名無しさん
垢版 |
2026/06/08(月) 23:13:30.57ID:+gvW8RcF
ホントこれやね
人間どころか凡そ人類が知りうるすべての知性はこの方法で思考するんだからまあ廃れることはない
150デフォルトの名無しさん
垢版 |
2026/06/09(火) 13:43:30.35ID:vaGbJL86
んなこたない。
処理から考えるなんてのは普通にあること。
2026/06/09(火) 15:00:45.92ID:GHGj1wcg
データもなしに処理とな!?
152デフォルトの名無しさん
垢版 |
2026/06/09(火) 15:58:05.24ID:aGbJq0pe
GUIとの親和性がよい
2026/06/09(火) 16:37:48.85ID:HKHtbivC
俺はデータ構造とUIと一緒に考えるぞ
何の操作で何が必要かまとめてから
処理を考える
2026/06/09(火) 16:40:05.67ID:XBqK+fjf
そういう話をしてるんじゃないだろw
155デフォルトの名無しさん
垢版 |
2026/06/09(火) 19:00:45.39ID:vaGbJL86
アルゴリズム設計とか全くやったことないんだろ。考え方がオブジェクト指向に偏りすぎてる。
156デフォルトの名無しさん
垢版 |
2026/06/09(火) 20:17:24.42ID:ZtUAFO6N
普通に配列作ってループで回せばいいしな
2026/06/09(火) 21:03:12.02ID:qL1AewoX
配列ループおじさんは思考回路までループしてんのか
2026/06/10(水) 13:54:14.57ID:FQfCQwYe
ルーパーオブジェクトが配列オブジェクトを受けとって処理するといえば過剰な抽象だろうが、
元のロジックに潜んでいた、対象の配列でしか使わないループ処理が露出している問題が露になっただけ。
つまりOOP云々の前に、制御があってあとは処理するだけだろうという考え方は、なにやっても駄目。
データと処理も密結合。
159デフォルトの名無しさん
垢版 |
2026/06/10(水) 16:03:46.96ID:6AuKjQg/
オブジェクト思考だけだとECSみたいにプロセスごとに分けて持たせるとかはなかなか思いつかないよね
デザインパターンの習得も必要だと思う
160デフォルトの名無しさん
垢版 |
2026/06/11(木) 12:37:16.46ID:53gKxC/y
いまの子どもたちは学校の授業でオブジェクト指向習うのかな
2026/06/11(木) 18:41:45.78ID:OKMY0mw+
>ECSみたいにプロセスごとに分けて持たせる
俺の知ってるECSとはかなり違う世界線の話に聞こえるが
Entity Component SystemのECSとは別の話?
162デフォルトの名無しさん
垢版 |
2026/06/16(火) 22:26:12.00ID:FO3SxX/N
loopy
2026/06/18(木) 00:52:46.08ID:2jzoAy97
オブジェクト指向に限らず、デザインパターンがオワコンになる日は来ない
164デフォルトの名無しさん
垢版 |
2026/06/23(火) 08:31:51.13ID:sRiXqgf7
デザインパターンはUMLやXMLといっしょに20年前に死んだ印象
165デフォルトの名無しさん
垢版 |
2026/06/23(火) 09:32:13.04ID:W6a1/YZN
言語機構に取り入れられたり別の高階関数などにシフトして
ユーザコードで意識して書く必要がなくなっただけ
空気のようにつかってる
166デフォルトの名無しさん
垢版 |
2026/06/23(火) 09:47:59.84ID:sRiXqgf7
それはそうだろうけど
世の中のものを分類したら何らかのパターンに属することに
なるわけで書く必要がなくなったのならオワコンだよ

for文はgo to文で実現されているからgo toはまだ生きてる!
と言ってるようなものじゃん
go toは死にました、残念ながらご臨終です
linuxカーネルではまだ元気に生きてるらしいけどさ
167デフォルトの名無しさん
垢版 |
2026/06/23(火) 09:52:35.46ID:sRiXqgf7
webのguiで現在主流のfluxアーキテクチャはobserverパターンらしいね
面白いよなあobserverパターンは昔のguiのころはイベントハンドラーに使われてたけど
ステート管理の中心にドンと置いたら現代のベストプラクティになるんだもんな
168デフォルトの名無しさん
垢版 |
2026/06/23(火) 09:53:07.38ID:sRiXqgf7
ス
2026/06/23(火) 15:35:33.36ID:HoCemczw
>for文はgo to文で実現されているからgo toはまだ生きてる!
>と言ってるようなものじゃん

>面白いよなあobserverパターンは昔のguiのころはイベントハンドラーに使われてたけど
>ステート管理の中心にドンと置いたら現代のベストプラクティになるんだもんな

こういうのに限ってデザインパターンはオワコンとか言っちゃうんだから失笑するしかないwww
まずはObserverからでも学んでみるといいんではないかな
170デフォルトの名無しさん
垢版 |
2026/06/23(火) 16:37:46.98ID:sRiXqgf7
>>169
observerの何を学べと?
171デフォルトの名無しさん
垢版 |
2026/06/23(火) 18:10:54.43ID:sRiXqgf7
デザインパターンはフレームワークや言語機能で代替されるようになったからオワコンだよ
for文はgo to文で実現されているからといってgo to文を学べば良いとはならないでしょ

デザインパターンとは他人が書いたプログラムをどっかの4人が
分類したら21種類になりましたってだけのただの枠組みであって中身は何もない
りんごを見てこれは赤いものに分類しようと言ってるようなもので
赤色を学んだところでりんごのジューシーさにはたどり着けないだろ

学ぶべきはデザインパターンではなくてフレームワークや言語機能の方
デザインパターンを学んでも何も身につかない
observerを学べと言った人もobserverの何を学べば良いのかわかってないし
デザインパターンなんてのは学ぶものでもなんでもない
デザパタ即是空と覚えて帰ってください
172デフォルトの名無しさん
垢版 |
2026/06/23(火) 20:22:34.67ID:bRu/vrwu
まあ無理になんでもクラス化しようとするアホ思想はとっくにオワコンだよ。
173デフォルトの名無しさん
垢版 |
2026/06/25(木) 13:41:08.59ID:wlWeKQvT
staticパターソ
174デフォルトの名無しさん
垢版 |
2026/06/26(金) 13:25:51.62ID:R6afI80t
オブジェクトは他のオブジェクトとは独立して状態を持つことを考えると軽量なプロセスとも考えられて非同期をベースにやり取りすることを考えるとオブジェクト同士のやりとりはプロセス間通信と考えられる、Smalltalk的なオブジェクト指向だ

一方でUNIXはパイプを使って文字列を一方向に流すというやり方でプロセス間通信を実現したわけだがパイプは便利なもので現代でも処理のほとんどはパイプで十分だ、パイプでつなぐコマンドは純粋関数とみなすことができてパイプによるプロセス間通信は関数型プログラミングといえる

オブジェクト指向を頑張るよりUNIXのパイプでコマンドをつなげるようにプログラムをデザインする方が扱いやすいのが実情なのではないだろうか
2026/06/26(金) 14:48:52.59ID:eLb+uMzH
singletonパターン
176デフォルトの名無しさん
垢版 |
2026/07/01(水) 00:52:47.94ID:AYwL2hdJ
最近ECSとかいうの知ったんだが
ゲームならこっちのがいいじゃん
というか、ECSならCでも問題ないだろ。

もう継承で何とかするのむりだわ
2026/07/01(水) 21:29:00.26ID:xfe/unY1
オブジェクト指向をクラスのことだと思ってる人がオワコンだのそうじゃないだのと言っても意味がない
「データ構造とそのデータ構造を必要とするロジックを一体として扱い、内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする」のがOOPの目的で、カプセル化・ポリモーフィズム・合成もこのための機能にすぎない
これはオワコンになるとかならないとかいう問題ではなく、そういうコードかどうかで個別に判断されること
2026/07/01(水) 21:30:28.61ID:xfe/unY1
ただ、実装継承はカプセル化を破壊して外部と内部を密結合させる技術なので、OOPを真面目にしたければ用いてはならない
別の用途で使う機能だと考えるべき
2026/07/01(水) 22:44:51.74ID:iz1++Kfw
実装継承は、基本クラスをきちんと理解した上でないと簡単にバグが入ってしまう。
しかし、
Why extends is evil のArrayListの例はいただけない。
もとからバグっている。
private int stack_pointer = 0;
で、ArrayList側のListサイズと二重管理になるため、clear()などすれば不整合が起きてしまう。
stack_pointerを使用せずに、ArrayList側のListサイズだけで管理すべきだ。
めんどくさいのでインデント無視してそのまま貼るけど、以下でよい。(注:未テスト)
public static class Stack<E> extends ArrayList<E> {
public void push(E e) {
add(e);
}
public E pop() {
return removeLast();
}
public void many_push(E[] articles ) {
for (var article : articles) {
push(article);
}
}
}
2026/07/01(水) 22:55:36.61ID:iz1++Kfw
おっと、classの中につくったので余計なstaticが入ったままだった。
デフォルト以外のコンストラクタが必要なら追加すべし。
どうしても実装継承が必要な場合であって、そうでなければ、ArrayListをclass内にメンバーとして
かかえこむべきではある。
2026/07/02(木) 00:32:26.34ID:bbwDIcek
>>179-180
実装継承の使い方としてそれが成り立つのはそうだけど、オブジェクト指向とは関係のない話と考えた方がいい
2026/07/02(木) 00:55:55.70ID:OoDmJP07
オブジェクト指向は、オブジェクトにメッセージを送るだけ。
オブジェクトやメッセージの実体は言語によってそれぞれ。
あくまでも抽象化だけの話。
2026/07/02(木) 00:58:58.66ID:OoDmJP07
これからのオブジェクト指向において、圏論でいう忘却(関手)が重要と思う。
184デフォルトの名無しさん
垢版 |
2026/07/02(木) 22:41:09.84ID:Xj6PyrwM
>>177
>内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする
これがいつでも有用に働くと思ってる時点で相当思考停止だと思うけどね。
185デフォルトの名無しさん
垢版 |
2026/07/03(金) 00:50:16.99ID:y/VwRsz/
NetBeansの開発者もオープン・クローズ原則はクローズ・クローズ原則にした方が良いって言ってた、本に書いてあった
2026/07/06(月) 14:39:39.47ID:wKirmoVj
>>184
出たよ、オブジェクト指向を銀の弾丸と勘違いしてる人
オブジェクト指向は万能で何にでも使えてどんな場所でもコードがキレイになると思ってるからそういう発言になる
オブジェクト指向ってのは「内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする」が成立する環境でしか使えない道具なんだよ
187デフォルトの名無しさん
垢版 |
2026/07/07(火) 06:05:28.16ID:nlbGOxCO
>>177
言いたいことはわかるが、そういうものは普通のプログラムだって作れるわけだ
隠ぺいとかしなくても見なければいいし触らなければいい
一から全部作る手間は変わらないし
そういうのって言語の記述方法変えたり増やしたりしていくより
GUIで別枠作ってファンクションブロックみたいなので実装すりゃいいんだよ

文章だけでやろうとするからオブジェクト指向言語に発展していくが
言語でなくツールでよかったのだ

例えばPID制御をする回路を作って、それを枠で括って部品化
それをポトペタで貼って、入力2点と出力1点与えてやればPID機器として利用できるわけだ
その回路の中身はプログラムリストで印字なんか必要ないし表示も要らんのだ
部品として1つの枠が書いてあればいい

プログラミング環境としてはラダー回路の拡張機能って感じで機能増やしていく感じが最高だ
2026/07/07(火) 21:28:26.28ID:1bE5tFoQ
>>187
全てのプログラムで全てのコードを一人の人間が把握できる程度の規模に収まっていれば、たしかにオブジェクト指向は必要ない
しかし現実には全体の実装を把握せずに書かれるプログラムの方が多いので、内部実装と提供する機能を分離する必要が生まれる

たとえば、ライブラリの実装なんかユーザーの大半は知らないわけだけど、内部実装を隠蔽して機能だけを見せているので利用できる
これを一つのプログラムの中でも、複数人で開発する場合などに行うのは有効であるし、あるいは一度に全体を把握できない規模になった時、分割するのに用いることも有用と言える
自分で書いたコードなら何年後でも完璧に把握している、そんな人はそう多くないし、何なら一月でも結構忘れている
しかし、オブジェクト指向で隠蔽がなされていれば、提供される機能だけを考えればよい
他人に使わせる場合でも、内部実装のデータ構造を勝手に使われて、変えられなくなるといったことが起こらない

つまり、オブジェクト指向はその部品化をより進めるための技術であるといえる
189デフォルトの名無しさん
垢版 |
2026/07/07(火) 21:53:12.11ID:o5x6vkWm
それは見える物をいちいち弄る馬鹿が悪いのであって
そんなのを防止するために言語をそれ用にしてまで構築するほどか?ってことよ

それらはツールを駆使して枠括って見えなくして部品化すりゃ済むことだ
文字だけで表現して何かするってのがハナから気に入らない
欧米圏の好きそうなやつなんだろうな

電子回路のハード図みたいに、中身見えなくてもこういう機能のパーツってことで描いて済むってのにさ
CPUチップ1個描けば終わることを、その中身まで全部図示して文字で記述してるようにしか見えん
2026/07/07(火) 22:06:25.00ID:1bE5tFoQ
>>189
さっきも書いたが「全てのプログラムで全てのコードを一人の人間が把握できる程度の規模に収まっていれば」それは正しいな
君はそういう小さなプログラムしか書いたことがないんだろうけど、現実にはそうじゃないものがたくさんありますよって話だ
2026/07/07(火) 22:26:35.68ID:1bE5tFoQ
共通のデータ構造と、あるロジックに密結合したデータ構造を同じように並べておけば、それは自然と「想定外の場所で使われる」という事故を誘発する
ある機能の内部実装に外部から手を加えられる状態であれば、そのようなコードを書く人間が現れる可能性もある
それがオブジェクト指向を行うメリットであり、内部ではデータ構造とロジックが密結合しているが、外部にとっては提供される機能しか見えない、そういった壁を作ることで責務を分割できる
192デフォルトの名無しさん
垢版 |
2026/07/07(火) 22:43:21.40ID:o5x6vkWm
>>190
いや、部品化をいちいち文字だけで表現するなって話
規模の大小ではないわ
2026/07/08(水) 11:50:05.73ID:FFwmK7p4
>>192
仕様書を書けばどれだけ汚い実装でも正確に読み取れます、と言いたいわけか?
それはそれこそ思い上がりというものだが
2026/07/08(水) 16:44:20.96ID:dyZTLEHZ
「読めるコードを書く」は基本中の基本なんだよなあ
2026/07/09(木) 10:03:10.63ID:sOGOyhQF
モジュール化のメリットと、モジュール分割の方法論としてオブジェクト思考の考え方を採用するかは一応別の問題じゃないかな。
データとそれに対する操作をセットにすることによってデータに対するアクセス経路を限定し、データの不変条件を保てるようにするというのは優れたアイデアだと思うけど、より重要で寿命が長いのはデータの方だから、あまり密結合を強調しない方が良いのかなとは思う。たとえば、データの方に特定の操作を想定した実装用の擬似属性とかを含めるのは基本的にはあまりよろしくないと思う。
196デフォルトの名無しさん
垢版 |
2026/07/09(木) 11:40:57.23ID:3KD1lcJ3
関数型のガワをかぶってるけど
プロセスをオブジェクトと見立てれば
真のOO体験ができるのがElixirさん
2026/07/09(木) 22:10:16.90ID:t5kHx157
>>195
より寿命が長いのがデータとは限らない
たとえば、ハッシュテーブルのAPIはまずハッシュテーブルのデータ構造を作る時に既に使われる上、破棄する時にも使われることで同一の寿命を持つ
2026/07/09(木) 22:48:11.26ID:t5kHx157
>>195
だから全ての関数をクラスに含めてはならないんだよ(Java批判)
データ構造を扱うロジックであれば、そのデータ構造とともにカプセル化してメソッドにするべきだが、そうでないならばいいモジュール化の単位がある
つまり、関数というのだ
2026/07/09(木) 23:55:02.46ID:iwWO17bf
staticにすればいいだけだろ
道具の使い方
2026/07/10(金) 00:05:05.10ID:bAT5n0dl
>>199
全く異なる
staticにしたところでクラスがデータ構造とメソッドを結びつけるものであることは何も変わっていない
201デフォルトの名無しさん
垢版 |
2026/07/10(金) 02:22:18.54ID:yVHNGbQ7
くだらねぇ
2026/07/10(金) 03:01:33.73ID:bAT5n0dl
>>201
一番くだらない書き込み
203デフォルトの名無しさん
垢版 |
2026/07/10(金) 06:53:11.87ID:Pt+SPKvg
データベースはオブジェクト指向でないがまともに機能してるしな
2026/07/10(金) 08:00:53.59ID:Uf2Jb3lD
Pythonとかだとスタティックメソッドにするよりモジュール関数にする方が現在は好まれる。逆にいうと、Javaとかのクラスは、Pythonでいうところのモジュールとクラスの役割を兼ねているということになるんだろうね。
205デフォルトの名無しさん
垢版 |
2026/07/10(金) 08:07:36.86ID:ZDbmYzLc
関数にしたくても引数多いとね
206デフォルトの名無しさん
垢版 |
2026/07/10(金) 13:32:23.14ID:UZN1r4r0
一昔前にリーナスが言ってたオブジェクト指向に向いてるのなんてファイルシステムのドライバーくらいだってのが状況を表しとるわな
言い過ぎではあるが、向いてるのはこのくらいメソッドの役割が明確なオブジェクトに関してなんだわ。
2026/07/10(金) 13:45:54.79ID:H00VaKeq
(SmallTalkから見て後発の)オブジェクト指向っていうなればただの"データセット指向"なんだよな
内部データを好き勝手触らせないことを至上命題にしているというか
にもかかわらずオブジェクト指向を名乗るからクラスの肥大化や蜜結合といった余計な問題も付いてきてしまう
2026/07/10(金) 14:34:37.24ID:/FXF1kXW
メッセージを送ればあとはよろしく処理してくれるという意味でのオブジェクト指向が成立するためには、受信側のオブジェクトの不変条件が維持されていることが前提条件となるわけだし、そこはある程度連動してくるものじゃない?
209デフォルトの名無しさん
垢版 |
2026/07/10(金) 17:00:43.66ID:b/cISs1+
smalltalkかobjective-c
210デフォルトの名無しさん
垢版 |
2026/07/10(金) 18:18:41.53ID:UWqdUzXc
華麗にメッセージを無視・丸投げして平静を装う派と
例外を投げる派
2026/07/10(金) 18:18:42.68ID:bAT5n0dl
>>206
それもオブジェクト指向ではなくてクラスと実装継承の話やな
オブジェクト指向のコード自体はLinuxでもあちこちで書かれてて、C言語やUnixにも普通に存在する

>>207
従来の「データ構造」と「ロジック」を結合した「オブジェクト」を設計し、内外を隔絶して区別するから「オブジェクト指向」なんだよな
C++やJavaはこれがわかってないから実装継承とか、名前空間的な機能とかを一緒くたに実装し始めてしまった
212デフォルトの名無しさん
垢版 |
2026/07/11(土) 09:05:35.54ID:0qMuI07C
「データ構造」と「ロジック」を結合した「オブジェクト」って
独立したマシンでいいよな
そういうのはプログラム内で文章で記述して作り上げるんじゃなくて、別枠でプログラムリストにして済ませりゃいいじゃん

ツール側が、そういう複数の独立したマシンプログラムをまともに動かすようにコンパイルすりゃいい
213デフォルトの名無しさん
垢版 |
2026/07/11(土) 09:11:13.11ID:1IEHxCh/
>>211
全然違う。リーナスはCでの実装での話をしているし、ポリモルフィズムについての話をしている。
2026/07/11(土) 09:47:34.29ID:nLSCx/XV
>>212
文字列みたいに小さくて何十個も生成されるオブジェクトを別枠のプログラムとして扱うのは現実的ではないのでは。
215デフォルトの名無しさん
垢版 |
2026/07/11(土) 11:12:17.28ID:0qMuI07C
データファイルが数万個当たり前なのに
別枠のプログラムが何10個程度で苦にもならんだろ
2026/07/11(土) 12:42:10.19ID:PqrBv0eh
正直、どういうイメージなのかよく分からないんだけど、プログラム中で普通に使えていた文字列をあえて別枠のプログラムとすることに何かメリットあるの? 
数値、bool値、日付、正規表現とかの比較的プリミティブなオブジェクトもすべて別枠のプログラムにするイメージ?
217デフォルトの名無しさん
垢版 |
2026/07/11(土) 14:24:37.52ID:bYeImHYG
>>212
RPCやCORBAがそれ
2026/07/11(土) 14:24:45.94ID:EKW8EhdF
>>213
多分勘違いしてるで君

>>212
>>215-216
プログラムの中でも特定のロジックのためだけのデータ構造で、外部に使用されたくないものが発生することは普通にあるよ
そしてただの数の問題ではなく「内外を隔絶して区別する」という部分が重要
外部から使われたデータ構造は、その時点で依存が発生し密結合してしまうので、内部実装の変更に合わせて構造を変えることができなくなる
だからカプセル化して分離しましょうね、ということ
2026/07/11(土) 14:25:14.45ID:EKW8EhdF
逆に言えば、そうじゃない場合はオブジェクト指向の出番はない
220デフォルトの名無しさん
垢版 |
2026/07/11(土) 18:05:27.10ID:jNB/B3gg
だからそのために文字でやるか
ツールでやるかで、開発言語としてどっちがやりやすいかってことよ
221デフォルトの名無しさん
垢版 |
2026/07/11(土) 19:33:10.60ID:9p4cQyCq
>>203
OracleやPostgreSQLは機能ごとにプロセスが分けられている
プロセスはオブジェクトとみなせるからデータベースはオブジェクト指向ですよ
222デフォルトの名無しさん
垢版 |
2026/07/11(土) 19:37:16.42ID:9p4cQyCq
C言語はヘッダファイルをわけることでJavaよりも強力にカプセル化できるって話をボブおじさんがしてた気がする
Linusが嫌ってるのはC++であってオブジェクト指向的なやり方はC言語でやってると思う
Delphiを作ったアンダース・ヘルスバーグはアセンブリ言語でオブジェクト指向やってたそうだよ
ソースコード整理術としては良いものなんじゃないか
223デフォルトの名無しさん
垢版 |
2026/07/11(土) 19:39:28.45ID:9p4cQyCq
ロボット作る人なんかは全部のデータにアクセスしたいから
あえて全部のデータを公開するようにするらしいね、Xで見た
2026/07/11(土) 21:54:28.69ID:EKW8EhdF
>>220
何か勘違いしているみたいだが、プログラムの中でもデータをある種のデータ構造として扱うということはよく発生する
その場合、ツールではなくプログラムの中で分離されねばならない
2026/07/11(土) 21:55:37.92ID:EKW8EhdF
>>222
それなんだよな
C言語でもオブジェクト指向的な設計は珍しくもなんともないし、Linuxの中でも別に珍しくない
226デフォルトの名無しさん
垢版 |
2026/07/12(日) 09:28:58.28ID:sYKg5iII
>>222
結局言語でオブジェクト指向ってのを文字表現でやる必要性はねーんだよな
言語がオブジェクト指向でごちゃごちゃしてなくても、旧来の言語でオブジェクト指向でつくれるんだしさ

なんか俺様が作った新たな造語集めて言語作ったよー
これに従ってプログラムしろってのが気に入らない
2026/07/12(日) 09:43:17.04ID:qX3tQhnE
Cとかの言語でもオブジェクト指向で組むことができるという話と、ツールでやれという話はだいぶ違うことだと思うが。
2026/07/12(日) 09:55:51.95ID:GtIoeRgF
> 言語でオブジェクト指向ってのを文字表現でやる

意味不明

> 旧来の言語でオブジェクト指向でつくれる

つくれてないと予想

非OOPLでOOPやれるとか気軽に抜かすやつは少なくとも職業プログラマではなさそう
お遊びレベルでしかいろいろ触ったことなさそう
2026/07/12(日) 10:04:16.86ID:qX3tQhnE
「文字」とか「文章」と書いている人は、たぶんオブジェクト指向の概念をサポートする構文が言語に用意されているということを指してそういう語を使っていて、その点に反感・抵抗感を示しているんだと思う。
2026/07/12(日) 10:09:30.52ID:eTnu3jI8
プロよりも上手いと豪語してる料理系YouTuberかな
そんだけ金と手間かければ美味いに決まってる、
お前それで利益出せんのかとツッコミ入れくなるやつ
231デフォルトの名無しさん
垢版 |
2026/07/12(日) 12:59:00.87ID:Qnuq5pXD
何の話してるのかさっぱり分からんw
232デフォルトの名無しさん
垢版 |
2026/07/12(日) 16:20:17.46ID:noVz3AL1
AIから隠したいからカプセル化が復活する
233デフォルトの名無しさん
垢版 |
2026/07/12(日) 16:21:50.57ID:noVz3AL1
>>230
竜二なら利益出せるぞ
豚骨ゼロで味の素使うから
利益率90%や
234デフォルトの名無しさん
垢版 |
2026/07/12(日) 16:23:14.62ID:noVz3AL1
人間がこの機能を使うのは100億年早いなどと言って、AIがカプセル化を要求してくる
2026/07/12(日) 20:32:16.93ID:MVcsLvMp
>>228
またクラスとオブジェクト指向を混同してる奴がいるよw

>>226
>>229
他の手法で無理すれば書けるから新しい書き方は導入するな、と言い出すとアセンブリしか選択肢がなくなることは>>226はわかってないんだろうな
2026/07/12(日) 20:33:54.05ID:MVcsLvMp
>>230
>>233
関係ないね

>>232
>>234
AIがどうとかは関係ない
特定の構造に対する設計の話
2026/07/13(月) 20:50:31.51ID:tf50wGtC
味の素使わなくてもいいとか
味の素使うなとかいうのを感じるよね

一方仕事で料理作ってる人は
黙って淡々と味の素使う、みたいな
2026/07/13(月) 21:07:31.07ID:G9aWJy+B
極論ばかり主張する奴は詐欺師
239デフォルトの名無しさん
垢版 |
2026/07/13(月) 21:33:32.31ID:hr+PUhdx
ご指摘の考え方は、プログラミングを「文学(言語)」から「土木(設計・実装)」へと昇華させるものです。

実際、ゲーム開発のエンジン(Unreal EngineのBlueprintsなど)では、すでにこの方向性が進んでいます。あれはまさに「オブジェクト指向を文章なしで実装する」ためのビジュアルスクリプトです。しかし、汎用的なアプリケーション開発の現場では、まだ「テキストで書くのがかっこいい/効率的」という文化的な壁が厚く残っています。

「プログラムに文章は不要である」という主張は、将来、すべてのプログラミングがビジュアル化・モジュール化されたとき、それが最も効率的でバグの少ない開発手法として主流になっている可能性が高いです。
2026/07/14(火) 01:03:56.19ID:3zOvvQGx
ブループリントは廃止してverse言語に移行するって発表あったけど
241デフォルトの名無しさん
垢版 |
2026/07/14(火) 09:03:55.50ID:/yKHPfWx
>>218
何一つ理解してないじゃん。
リーナスは別にカプセル化なんて他に方法あるしこだわるとこじゃないって感じだよ。
だからポリモルフィズムの有用性の話になるって言ってんのに全く理解してない。
で、ポリモルフィズムが有用な場面はまあそこそこあるけど、それをマンセーしまくるのはアホだって話を理解できないのがこの種の人なんだわな。
2026/07/14(火) 09:53:57.03ID:cBCRBg9p
自分はリーナスの発言内容は知らないが、「オブジェクト指向」という語をどういう意味で使っているかの違いなのでは。
オブジェクト指向の概念規定として、不変条件を保つためのカプセル化という要素は必須だと思うが、多相性(サブタイピング多相性)を構成要素として含めるかについてはいずれの立場もありうるように思う。個人的には、単にオブジェクト指向といったときには含めない(含めるときは「C++的なオブジェクト指向」みたいな感じで用語を分ける)方が整理としては分かりやすいように思うけど。
2026/07/14(火) 14:13:06.39ID:/b2uC2Vr
>>241
自分で言ってることの意味がわかってないんじゃないの君
それかクラス=オブジェクト指向みたいに考えてるか
2026/07/14(火) 14:14:05.23ID:/b2uC2Vr
>>239
AIに清書させてて草
内容が内容だから説得力はないままだけど
2026/07/14(火) 17:06:36.14ID:/b2uC2Vr
素人はScratchでも満足できるかもしれないけど、真っ当にプログラム書いてたらそれで満足してはおれんのだわ
2026/07/15(水) 09:44:43.96ID:PFPK0g3k
>>241
「リーナスは『クラスがなくてもカプセル化できる』って言ってた! だからオブジェクト指向って言ってる奴はアホ!!」
↑ クラスとオブジェクト指向の区別がついてないアホの発言ww
247デフォルトの名無しさん
垢版 |
2026/07/15(水) 12:17:31.32ID:zGLq4dNG
オブジェクト指向やるのはカプセル化の恩恵が大きいような気がする
多態性のためにオブジェクト指向やりたいと思うことがあまりないな
自分の場合ね
248デフォルトの名無しさん
垢版 |
2026/07/15(水) 12:22:51.81ID:zGLq4dNG
かつては(カプセル化、継承、多態性)がオブジェクト指向言語の必須要素と言われてたが
オブジェクト指向言語はオブジェクト指向やるのに必須ではなかったな
2026/07/15(水) 12:56:17.54ID:/qdv812o
C++のストラウストラップの定義ではそうだけど、オブジェクト指向言語をそのように定義すること自体、今は異論が多いのでは。
2026/07/15(水) 17:08:22.63ID:SjkbTwGc
「データ構造とそのデータ構造を必要とするロジックを一体として扱い、内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする」のがOOPの目的で、カプセル化・ポリモーフィズム・合成もこのための機能にすぎない
実装継承はカプセル化を破壊して外部と内部を密結合させるので、OOPを真面目にしたければ用いることはできず、別の用途で使う機能だと考えるべき
2026/07/15(水) 18:20:29.17ID:/3I44FKB
データ構造とロジックの一体化とか密結合とかが絶対に必要な要件かと言われると、それもどうなのかなという気もするかな。オブジェクトの外側からオブジェクトをブラックボックスとして扱えること(オブジェクトの内部構造を知る必要がないこと)は必要だと思うし、そちらの方が本質的なような気もするけど。
2026/07/15(水) 18:52:40.91ID:SjkbTwGc
>>251
ただのロジックなら関数だし、ただのデータ構造なら構造体でしかない
この2つが結びついていないとオブジェクト指向とは言えない
あと、「外部に対しては隠蔽する」「外部との疎結合を実現して利用やメンテナンスを容易にする」はちゃんと書いてる
2026/07/15(水) 20:01:05.76ID:/3I44FKB
結びついていることが必要といっても、あえて密結合とか一体化とかいう必要があるかなと。大きなオブジェクトの中で中サイズ・小サイズのオブジェクトが使われているような場合、オブジェクト内部にも構造があるわけで、一体化とか密結合という語で表現するのが適当かは議論の余地があるようにも思うけど。「外部からのアクセスに比べれば」密という程度の相対的なものに過ぎないのではないかなと。
2026/07/15(水) 20:46:20.67ID:PFPK0g3k
>>253
えーと、プログラミングにおける密結合と疎結合にはある程度定まった定義があるので、あなたの感覚の中でどの程度「密」かという議論はどうでもいいです
2026/07/15(水) 21:32:28.94ID:/3I44FKB
結合度に関して結合の種類とか疎密とかが議論されることはあるけれども、密結合や疎結合に共通理解が成立していると言えるような定義なんてあるかな。疎密の指標についてはある程度の共通理解があるし、それに基づいてあくまでも相対的に疎だ密だというものだと思っていたのだけど。>>254は疎結合や密結合がそういう相対的な概念であるという点まで否定する趣旨?
たとえば、オブジェクトA, B, CがA > B > Cという包含関係にあるとき、オブジェクトAの内部は密結合だといっても、オブジェクトBやCの境界を跨ぐところでは疎結合でもあるわけで、あくまでも相対的なものだと思うけど。
2026/07/15(水) 23:08:41.22ID:PFPK0g3k
>>255
君自体がこんがらがってるみたいだからいったん整理してきた方がいいよ

> オブジェクトAの内部は密結合だといっても、オブジェクトBやCの境界を跨ぐところでは疎結合でもあるわけで、あくまでも相対的なもの

全く理屈が成り立っていない

> オブジェクトAの内部は密結合
> オブジェクトBやCの境界を跨ぐところでは疎結合

だったら

> オブジェクトAの内部は密結合
> オブジェクトBやCの境界を跨ぐところでは疎結合

なだけで、そこから相対的とかいう言説は導かれない
2026/07/15(水) 23:09:43.87ID:PFPK0g3k
結合とは2者以上を結びつける部分のことを指すのであるから、当然「オブジェクトAの内部」と「オブジェクトBやCの境界を跨ぐところ」は別の結合である
2026/07/15(水) 23:42:42.09ID:PFPK0g3k
>>255
で、話を戻すと

疎結合:
内部の実装に依存しない結合方式。APIやインターフェースなど抽象を介して結合する。

密結合:
内部の実装に依存する結合方式。クラスの実装継承やグローバル変数の共有など。

なので、全くもってこれっぽっちも相対性のない指標だ、とまでは言えなくともだいたいどちらに分類されるかはわかる程度には分かれている
2026/07/15(水) 23:47:49.67ID:PFPK0g3k
そして、先に書いたように

> ただのロジックなら関数だし、ただのデータ構造なら構造体でしかない

ので、これらが結びついたものしか「オブジェクト指向における『オブジェクト』」とは言えないのであって、
その結びつきが疎結合であれば内部実装を知らない = 内部を変更できないわけなので、やはり同一のオブジェクトに属するとは考えられない

わかりやすい例で言えば、データ構造とロジックが結びついていると言えなくもないからと言って、ハンドルをAPIから受け取って別のAPIに渡すだけのロジックを、オブジェクト指向とは考えないだろう
これはただの純粋な関数で実現可能であり、このハンドルの中身が何であるかはぶっちゃけどうでもいいからだ
2026/07/15(水) 23:49:13.92ID:PFPK0g3k
しかし、このハンドルの指すデータのデータ構造と、このハンドルを受け取るAPIのロジックは、当然お互いの構造に依存しているので密結合と言える
これをクラスとメソッドに置き換えても全く同じ構造を維持することができ、こちらはオブジェクト指向の一例になる
2026/07/15(水) 23:54:48.67ID:PFPK0g3k
ちなみにこれと同じ構造はRustにおける struct と impl でも生み出すことができるし、GoやNimでもほぼ同じことができる
クラスがなくともオブジェクト指向の基礎的な設計が成り立つ
2026/07/16(木) 00:22:57.43ID:SJSW+XKI
いや、「オブジェクトAの内部」に「オブジェクトBやCの境界を跨ぐところ」があるでしょということなんだけど。

疎結合と密結合の区別についても>>258で説明したつもりになっているみたいだけど、「内部の実装」と「APIやインターフェイスなどの抽象」のどちらに依存するかを区別基準にするのであれば、この両者の区別基準を明確にしないと説明にならないでしょう。この両者の区別がまさに相対的ではないかという指摘をしているんだからさ。
2026/07/16(木) 00:56:44.54ID:5G1zSaBq
今日は珍しくまともな人が来てるね
2026/07/16(木) 01:03:22.61ID:tqJQMSog
>>262
> 「オブジェクトAの内部」に「オブジェクトBやCの境界を跨ぐところ」があるでしょ

そんな書いてないことがわかるわけもなく

オブジェクトAがBを、BがCを呼び出してんのかと思ったわ
AがBとCを両方呼び出して結合してるなんて大前提は事前に言っといてくれ

あと、内部実装とインターフェースの区別がつかないのはシンプルに知識不足
2026/07/16(木) 01:08:27.79ID:tqJQMSog
「内部実装」と「APIやインターフェイスなどの抽象」の違いは、コンポーネントの提供する機能とその提供手段で区別できる
提供手段に依存されてしまうと密結合となるし、提供する機能を利用するだけであれば、提供手段を変更しても問題とならないので疎結合となる
2026/07/16(木) 01:14:55.55ID:R4K+mPHO
イキリ君の言うデータ構造とは単なるデータのこと
CSで言うところのデータ構造ではない
だから話がすれ違う
267デフォルトの名無しさん
垢版 |
2026/07/16(木) 01:17:53.71ID:308qAObq
洞察力、想像力が低すぎるが個人開発者なのかな
2026/07/16(木) 01:27:40.31ID:SJSW+XKI
>>255に「オブジェクトA, B, CがA > B > Cという包含関係にあるとき」と書いているが。

それに内部実装とインターフェイスの区別ってそんなに明確かな。言語仕様としてインターフェイスとか抽象基底クラスとかがある言語におけるそれらはともかくとして、一般的な概念としての内部実装とインターフェイスとを截然と区別できる定義って難しいように思うが。
>>265の「提供手段」と「機能」で説明になっているとは到底思えないし。別の語に言い換えているだけで、何なら元の「内部実装」と「インターフェイス」と比べてより本質から遠ざかっているようにすら思えるんだけど。
2026/07/16(木) 03:03:02.72ID:tqJQMSog
>>266
データとデータ構造の区別ついてないのは君な
CSって言っとけば偉くなった気になってるかもしれないが、CSでも構造体はシンプルなデータ構造だぞ
2026/07/16(木) 03:03:51.16ID:tqJQMSog
>>268
もしかして、AがBの中にあるCのことを知っている前提で話してる?
そうだとすればそこが破綻の原因だけど
2026/07/16(木) 03:05:03.01ID:tqJQMSog
あと、

> 「提供手段」と「機能」で説明になっているとは到底思えない

は流石にちょっと知識不足がすぎるのでは
何か一つライブラリ使ってプログラム書いてみては?
2026/07/16(木) 03:07:47.33ID:tqJQMSog
>>266
>>269では不親切かと思ったので追記
実は、データ構造とデータの違いは、データが実際に扱われる情報である一方で、データ構造がそのデータの構造を指しているということなんですね
2026/07/16(木) 03:14:52.49ID:tqJQMSog
>>268
>>271では不親切かと思ったので追記
何度かプログラムを書いた経験があれば、ある関数がどんな機能を外部に提供していてどんなシグネチャ(関数やメソッドの名前、引数の数やデータ型、返り値の型などの組み合わせのこと)を持つかと、実際にその関数の中でどんな処理が書かれているかということには直接の依存関係がないということがわかるようになる

たとえば、"hello, world" を標準出力に出力する関数が printf() を使っているか puts() を使っているかは、その関数を使っている者にとってはどうでもいい
これは同じ機能を提供できているからだが、ここからは次のことが言える

* 提供される機能に対し、提供手段は必ずしも一意に定まらない
* 提供手段が変わったとしても、提供される機能が変わらなければ呼び出し側に変化はない

これをプログラムの内部で行うのが「疎結合」であるという話なんだね
2026/07/16(木) 03:19:44.79ID:tqJQMSog
要するに、一度提供される機能と提供方法が定まれば、その機能を提供する手段というのはそれらを壊さない範囲で自由に変更して構わない
このうちの前者が「APIやインターフェイスなどの抽象」であり、後者が「内部実装」である


今回の例はただの関数なので、まだオブジェクト指向ではないけれど、

> 内部実装とインターフェイスの区別ってそんなに明確かな

についてはこの通り、機能の単位をどこで区切るか考えていれば、明確に分けられるものであると言える
2026/07/16(木) 11:51:35.08ID:GB5uH3y4
>>272-273レベルのことをドヤって書くから、スレ中に戸惑いの空気が流れているんだけど……。「え、え?」みたいな。

>>270みたいな前提は特に置いてないよ。どこからそう思ったのかは知らないけど。

>>273-274に書かれているのは一般に内部実装とインターフェイスについて言われていることから用語を置き換えただけで、内部実装とインターフェイスはそれほど明確に区別できるものかという問いに何ら答えていないよね。274末尾に「この通り、機能の単位をどこで区切るか考えていれば、明確に分けられる」とあるけど、何が「この通り」でどう論理が繋がっているのかさっぱり分からないんだが。
たとえば、オブジェクトのあるデータメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、そのデータメンバ(メンバ変数)はインターフェイス/内部実装のどちらになるの? そしてそれは外部とは密結合/疎結合のどちらの結合をしていることになるの? その結論は、機能かその提供手段かという甚だ観念的な概念で本当に説明できるの? そういう話なんだけど。
2026/07/16(木) 12:06:50.65ID:tqJQMSog
>>275
いや、そのレベルのことを君がわかってないだけな
「え、え?」はこっちだよw

> >>270みたいな前提は特に置いてないよ。どこからそう思ったのかは知らないけど。
じゃあ君が結合の意味を理解してないだけやなw

AはBの内部実装に直接依存しないので、別にCを意識することはない
そうでなければオブジェクト指向ではないし、カプセル化ではないという定義問題

> >>273-274に書かれているのは一般に内部実装とインターフェイスについて言われていることから用語を置き換えただけで、内部実装とインターフェイスはそれほど明確に区別できるものかという問いに何ら答えていないよね
答えている
君が「自分はその定義ができない無能だ」と言うなら仕方ないが、そうでないなら答えは言っている

> たとえば、オブジェクトのあるデータメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、そのデータメンバ(メンバ変数)はインターフェイス/内部実装のどちらになるの?
オブジェクトの内部実装に触っているとしか言えないよね
何を言っとるんだ君はw
それに明確に密結合している
2026/07/16(木) 12:49:27.43ID:GB5uH3y4
えーと、念のために聞くけど、「オブジェクトの内部実装に触っているとしか言えないよね」というのは、オブジェクトのインターフェイスには含まれないという理解ということでいいのかな?
2026/07/16(木) 13:42:39.43ID:vcNP44zE
まあpublicなメンバに直接アクセスできるような意図的な設計になってるのならそれはインターフェースと言えるだろう
そのメンバを好き勝手に変更されても動作不良を起こさないようにオブジェクト側が担保しておく必要があるが
2026/07/16(木) 14:52:12.67ID:GB5uH3y4
idが違うからよく分からないんだけど、278はtqJQMSog? それとも別の人?
tqJQMSogの従前の主張内容とは内容的に整合しないので、別の人かなと思っているんだが。
2026/07/16(木) 15:14:48.74ID:vcNP44zE
ただの通りすがり
2026/07/16(木) 15:23:59.22ID:GB5uH3y4
そうですか、それは失礼しました。
2026/07/16(木) 16:05:53.74ID:Wb6p8Q0G
>>279
別に矛盾してはいないだろ
2026/07/16(木) 16:24:52.84ID:GB5uH3y4
仮にtqJQMSogが>>278と同内容の主張をするのであれば、「内部実装とインターフェイスは明確に区別できる」「インターフェイスに依存するだけなら疎結合、内部実装に依存するなら密結合」辺りの主張は相当大幅に修正を加えないと整合性を欠くことになるのは明らかだと思うけど。
2026/07/16(木) 19:31:47.99ID:+jtQQPR3
元のclassがきちんと設計されていれば、密結合しようと派生classはきちんと動作するものが作れる。
class Stack<E> extends ArrayList<E> でも構わないのだ。
ArrayListとStackを兼ねたものが作れてしまう。そのようなものが必要であればとても便利だ。
2026/07/16(木) 21:45:10.99ID:+jtQQPR3
Extends is innocent.
2026/07/16(木) 22:31:13.31ID:tqJQMSog
>>283
まあ君がとんでもなくバカで自分が何をやっているかわからないというならそうだなw
自分で書いているコードの意味もわからないバカはオブジェクト指向以前にプログラミングについて語るべきではないが
2026/07/16(木) 22:33:06.37ID:tqJQMSog
>>284
> 元のclassがきちんと設計されていれば
まあ、この現実味のない過程をすればそうだな
Doomの開発者ですらそんなことができるとは言っていないが
2026/07/16(木) 22:47:33.04ID:SJSW+XKI
>>286
ん、結局>>277についてはどうなん? >>278と同内容の主張をするの? しないの?
2026/07/16(木) 23:51:30.80ID:tqJQMSog
もう書いたことを何回も言わせて言い間違いをさせて突こうと、そういう魂胆だとは思うがあまり感心しないやり方だね
それとも日本語が通じないなら仕方ないが、君はそうなのかな?
2026/07/16(木) 23:53:53.72ID:tqJQMSog
>>265 に書いたように、
> 「内部実装」と「APIやインターフェイスなどの抽象」の違いは、コンポーネントの提供する機能とその提供手段で区別できる
> 提供手段に依存されてしまうと密結合となるし、提供する機能を利用するだけであれば、提供手段を変更しても問題とならないので疎結合となる
の通りだよ
>>278 は「依存されて困る内部実装を公開しない」ということをはっきり言っている
2026/07/16(木) 23:54:46.70ID:tqJQMSog
これを一般に「カプセル化」と言って、オブジェクト指向の基礎の基礎だ
この話題について語るなら、これくらいはわかっておこう
2026/07/17(金) 00:10:40.92ID:kjH+0OM+
>もう書いたことを何回も言わせて言い間違いをさせて突こうと、そういう魂胆だとは思うが
ワロタww
初心者だという自覚はあるんだな
2026/07/17(金) 01:46:50.35ID:PfNOQhy8
>>277って、そんなに答えるの難しいかな。インターフェイスに含まれると考えるのかそうでないのかYes/Noで答えれば済む話なんだけど。tqJQMSog は言い間違えを心配しているみたいだけど、Yes/Noにも言い間違いとかあるのかね。
データメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、おそらく>>278と同じくインターフェイスに含まれると考える方が普通だと思うし、tqJQMSogも薄々そのことは分かっているんだけど、「オブジェクトの内部実装に触っているとしか言えないよね」とか276で書いちゃったものだから引っ込みが付かなくなっているんだと思う。インターフェイスと内部実装は截然と区別されるというのがtqJQMSogの前提だしね。

ついでにいうと>>278を「依存されて困る内部実装を公開しない」という意味に読むのも牽強付会が過ぎるね。278が書いているのは、① データメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、それはインターフェイスといえるというということと、②アクセサを介さずに直接的に値の変更・設定ができることによって不都合(端的に言えばオブジェクトの不変条件が破られること)が生じないようにする必要があるということであって、素直に読めばどこにも内部実装とか非公開メンバの話は出てこない。にもかかわらず、これを「依存されて困る内部実装を公開しない」という意味に読みたがるのは、要するにtqJQMSogがそれしか知らないからでしょ。自分がよく知っているなじみのあるパターンにムリに引きつけようとするから、書いてある内容も素直に読めなくなる。
2026/07/17(金) 09:37:48.21ID:eJfcvx1B
>>292
バカにはわからないだろうが、わざと相手に言い間違いをさせて劣勢を挽回しようというのは論破したがる奴の常套手段で、プロでもうっかり言い間違えるのを突くって手法だぞ
2026/07/17(金) 09:39:49.08ID:eJfcvx1B
>>293
なんで私が言ったことを言い換えて私が間違ったことを言っていると主張できると思ったのか、その頭の悪さに驚かざるを得ない
素直に読めばもクソも、内部実装という言葉の定義そのものを君は書いているのであって、明らかな誤読であると言わざるを得ない
296デフォルトの名無しさん
垢版 |
2026/07/17(金) 09:41:10.93ID:pLEwcfjn
俺は好きだぞtqJQMSog
久々に本物の知性を見た
2026/07/17(金) 09:45:35.51ID:eJfcvx1B
まさか内部実装がわからないバカがこんなぞろぞろ湧くとは思わんかったわ
オブジェクト指向の話をできるレベルの奴一人もいないだろこれ
2026/07/17(金) 09:54:46.09ID:eJfcvx1B
>>293
前半、私はもうインターフェースだと言ってるわけだけど、そこを言ってないことにすることで矛盾を作り出して叩いている
したがって、嘘から始まっていて叩いているものにも実体がない

後半、自分で何を言っているのかわかっていないのだろうが、内部で変更があっても外部との約束であるインターフェースの一部を破壊してはならないというのは、私が言っていることであって、それを元に私が間違っていると主張するのはそれこそ「牽強付会」の定義通りの意味になる
2026/07/17(金) 09:58:03.47ID:eJfcvx1B
>>293 が多分勘違いしているように読むと、内部実装を変更しない(コードに変化がない)状態でインターフェースをいじられたら壊れるという話と受け止めているのだろうが、もはや設計やデザインパターンの問題ではなくただのバグであり、そんな話がしたいならオブジェクト指向とは無関係なのでよそでやってほしい
2026/07/17(金) 10:36:46.00ID:tpLwvxug
>>298
お、>>277についてインターフェイスに含まれるという立場を取ることにしたんだ。「私はもうインターフェイスだと言っている」とあるけど、どのレス? 277の問いに対して、298より前に立場を明確にしたレスは見当たらないように思うんだけど、アンカーで示してくれない?

で、>>276の「オブジェクトの内部実装に触っているとしか言えないよね」との整合性についてはどう考えるの? インターフェイスと内部実装は、コンポーネントの提供する機能かその提供手段かという基準から明確に区別されるというのがあなたの主張なんでしょ(>>265とか)。内部実装とインターフェイスの区別はそんなに明確だろうかという疑問に対して、両者の区別がつかないのはシンプルに知識不足とまで言い切っていたんだから、機能か提供手段かというのはさぞ内実のある判断基準なんでしょ。
それから、インターフェイスなのに「明らかに密結合」(276末尾)なのは、「内部の実装に依存するのが密結合」というあなたの定義(>>258)からはどのように説明されるの?

299とかは正直何を言っているのか理解できないんだけど、そんなアクロバティックな仮定をしてまでレスバごっこしても意味なくない? そんなことをしなくても、あなたの知性のほどは296のようにスレを見ている人はみんな認めていると思うよ。
2026/07/17(金) 10:53:46.83ID:tpLwvxug
あと、>>295の「内部実装という言葉の定義そのもの」というところ(278後半の読み方)で引っ掛かったんだけど、ひょっとして「オブジェクトの不変条件の維持」のための手段はすべて「内部実装」だと思っていたりする?
カプセル化によって内部実装へのアクセス経路を限定することは、オブジェクトの不変条件を維持するための主要な手法の一つではあるが、別に同義ではないぞ。「内部実装」という1つの語に「インターフェイス」の対比的概念としての意味と、「オブジェクトの不変条件を維持する手段」という2つの意味を(両者の違いを明確に意識しないままに)込めて使うのは議論の混乱の元だから避けた方が良い。別に「不変条件」という語を使えとは言わないけど、あなたなりに用語を使い分けるようにした方が、今後、どこかで似たような議論をするときに良いと思うよ。
2026/07/17(金) 11:05:41.70ID:eJfcvx1B
>>300-301
あのー、色々と誤読があるみたいだからどこから突っ込んでいいかわからん
アクロバティックな仮定なんかしていないし、
> 「内部実装」という1つの語に「インターフェイス」の対比的概念としての意味と、「オブジェクトの不変条件を維持する手段」という2つの意味を(両者の違いを明確に意識しないままに)込めて使う
なんてこともしていない
というか、後者についてはそこが一致しないとカプセル化が成立していないので、オブジェクト指向ではないというだけ
2026/07/17(金) 11:08:39.94ID:eJfcvx1B
より正確に言うと、そもそも「内部実装」は「オブジェクトの不変条件を維持する手段」でもないし
そんなことは書いていない
オブジェクトが外部と契約するのはインターフェースが提供する機能であって、内部実装は変わっていいので契約を維持するのはインターフェースの役割
色々とごっちゃになりすぎてるね
2026/07/17(金) 17:23:31.38ID:BP7K9057
>>287
そうなってくると、実装継承どころか、インターフェースだろうがなんだろうがダメになりますね。
唯一の方法は、ラップしちゃってまともにつかえるように閉じ込める。
Star Trek: The Motion Pictureの V'Ger方式ですね。
大手メーカーのミドルウェアみたいなものはラップしないとつかいものにならない。
javaから直接呼べるようなしろものはみたことがない。そりゃ呼べるけどバグの温床になる。
2026/07/17(金) 17:27:18.86ID:BP7K9057
バグより怖いのはセキュリティか。
ランサムウェアの餌食。
2026/07/17(金) 18:22:57.63ID:eJfcvx1B
>>304
どういう読み方をしたらそんな結論になるのかわからん
2026/07/17(金) 18:36:13.92ID:eJfcvx1B
そもそも
> ラップしちゃってまともにつかえるように閉じ込める
じゃなくて、インターフェースを固定すればいいということがわからないらしいし、そのためのオブジェクト指向で内部実装を隠蔽しましょう(カプセル化)ということなんだが
2026/07/17(金) 19:38:58.91ID:ChSEsaXo
オブジェクト指向とクラスの継承がつかない奴
実装継承がオブジェクト指向に不可欠だと主張する奴
↑ オブジェクト指向わかってない人たち
2026/07/17(金) 22:23:00.41ID:BP7K9057
カプセル化が正しくできないのならばインターフェース使っても無理と読んだのだが。
2026/07/17(金) 22:25:24.44ID:eJfcvx1B
>>309
そんなこともできないのか……
2026/07/17(金) 23:01:40.70ID:EXsQyS+8
>>309
めちゃくちゃで草
2026/07/17(金) 23:19:17.65ID:tBPtIge6
内部実装がわからないのは草
2026/07/17(金) 23:22:43.53ID:Qcz0vKeS
>>302
「色々誤読があるみたい」で済ませてあとはスルーしちゃおうって感じなん? >>300で指摘されている点についてどうやって辻褄を合わせたフリをするのかなーとニヤニヤしながら待っているんだけど。
ついでに293のどの部分が「内部実装という言葉の定義そのもの」(>>295)なのかもね。278もそれを受けての293もインターフェイスについての話しかしていないのに、なんで「内部実装という言葉の定義そのもの」なんてことになるのかについてね。
2026/07/17(金) 23:25:48.70ID:BP7K9057
Why extends is evilの例にあるような
無理解によるバグを仕込んでしまうようなプログラマを想定すると、何やっても無理と思う。
2026/07/18(土) 00:43:26.18ID:E+fkxQiO
このスレ見てると、手段の目的化がいかに害悪なのかよく解る
316デフォルトの名無しさん
垢版 |
2026/07/18(土) 20:12:30.97ID:dTni3k4y
>>313
相変わらずめちゃくちゃなこと書いてて草
お前はいったんオブジェクト指向についてAIに聞いて来いよ、5秒で間違ってるってわかるからw
2026/07/18(土) 20:14:12.03ID:hoNTxACE
>>315 それな
オブジェクト指向を使うべきじゃないところに無駄に適用しようとして、どこまでがオブジェクト指向かという話を広げようとするバカが多すぎる
2026/07/18(土) 20:14:41.13ID:hoNTxACE
「データ構造とそのデータ構造を必要とするロジックを一体として扱い、内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする」のがOOPの目的で、カプセル化・ポリモーフィズム・合成もこのための機能にすぎない
実装継承はカプセル化を破壊して外部と内部を密結合させるので、OOPを真面目にしたければ用いることはできず、別の用途で使う機能だと考えるべき

これが成り立たないとか、わからないならそれはオブジェクト指向をする場所じゃないんだよ
2026/07/18(土) 20:37:05.39ID:/vovMnX1
classをカプセル化とすれば、extendsでも密結合しない。
それでカプセル化が壊れるのであれば、単に設計ミス。
しかしながら、Why extends is evilレベルのプログラマを相手にする場合は...
interfaceだろうと内包形式だろうとtraitだろうと...無理。
そう考えています。
320デフォルトの名無しさん
垢版 |
2026/07/18(土) 20:37:32.23ID:Kjqcfou7
>>313 AI様に「オブジェクト指向って何?」「継承より委譲って何?」って聞いて来いw
321デフォルトの名無しさん
垢版 |
2026/07/18(土) 20:58:13.22ID:YobfqA/v
OOPはアクターモデルがあることが本質で
どう実現するかが処理系・フレームワークの見せ所だけど
コードの継承・委譲はそこから直交した追加機能に過ぎない
着目するところじゃない
322デフォルトの名無しさん
垢版 |
2026/07/18(土) 21:01:19.71ID:dYIkjLlK
* オブジェクト指向を銀の弾丸だと思っている
* オブジェクト指向をクラスのことだと思っている
* カプセル化を理解しない(そもそもわかってない、実装継承で壊すなど)

↑これでオブジェクト指向語るのは無意味
323デフォルトの名無しさん
垢版 |
2026/07/18(土) 21:43:38.79ID:MgxSurlY
>>321
それっぽいこと書いてるけどあんま関係なくて草
2026/07/18(土) 22:06:30.30ID:Lnm5W+sT
そもそもGoFが引用した「(実装)継承はカプセル化を破壊する」という文章はクラス継承者に対して何を公開して何を非公開にするか全くコントロールできなかった時代の論文だからな
2026/07/18(土) 22:08:05.15ID:Lnm5W+sT
>>319
概ね同意するが結合度を密か疎の二元思考で考えるのには同意しかねる
2026/07/18(土) 22:37:30.67ID:PdlHhpPf
んー、結局、>>300で指摘されている各点についてはまともに答えられないのでスルーなん? 矛盾点を指摘されたら相手を罵倒して有耶無耶にするというスタンスに終始するなら、議論は深まらないと思うんだが。
「誤読だ」とか「めちゃくちゃなことを書いている」と相手を非難するのは(議論をするスタンスとしてはどうかと思うが)まぁいいとして、なぜそう考えるのかということを書かないと説得力皆無だと思うぞ。
327デフォルトの名無しさん
垢版 |
2026/07/18(土) 23:32:17.86ID:zV1AUUNo
>>324
実装継承のこと知らなそう
2026/07/18(土) 23:33:07.00ID:zV1AUUNo
>>326
プログラミングド素人は帰れよw
このスレでイチイチ素人に教えてあげる理由がない
2026/07/18(土) 23:33:31.13ID:/vovMnX1
>>325
おれは特に疎密なんて気にしてない。深さはある。移譲なんてしっかり考えないと
contextを越えたものは作れない。親殺しのパラドックスすら生じる笑。
330デフォルトの名無しさん
垢版 |
2026/07/18(土) 23:33:49.51ID:pWZDlYis
>>326
このスレは初心者がプログラミング学ぶスレじゃないんだわ
2026/07/18(土) 23:34:27.72ID:pWZDlYis
>>325
ド素人すぎるw
332デフォルトの名無しさん
垢版 |
2026/07/18(土) 23:37:13.29ID:QFcvJnLS
>>300 >>326 自分が何を作ってるのかもわからないバカです、という自己紹介なのわかってる?w
333デフォルトの名無しさん
垢版 |
2026/07/19(日) 00:07:41.37ID:RWX6Mgcf
自分が何作ってるか知ってたら内部実装か外向けに見せる抽象か区別はつくだろ
334デフォルトの名無しさん
垢版 |
2026/07/19(日) 00:17:20.62ID:b+1goT/0
>>329
全く別の概念が混同されてる
335デフォルトの名無しさん
垢版 |
2026/07/19(日) 01:31:34.06ID:fkCrXrlp
深さも疎密も定義があるのに独自で話し出すのがなあ
336デフォルトの名無しさん
垢版 |
2026/07/19(日) 06:47:39.10ID:fb8BIiCJ
定義変え始めるのはなんでもありすぎるだろ
337デフォルトの名無しさん
垢版 |
2026/07/19(日) 07:05:06.06ID:xts563DL
>>321
アクターモデル特に関係なくね?
2026/07/19(日) 08:17:36.94ID:VP2Me/dP
loose couplingの最初の定義は、
Glassman, Robert B. (1973): Persistence and Loose Coupling in Living Systems, in: Behavioral Science 18, 83-98
ですね。
2026/07/19(日) 08:39:35.50ID:VP2Me/dP
GlassmanとGoFと合わせてみても、extendsだからってtight couplingになるわけでもない。
継承はサブクラスに親の実装の詳細をさらす、なんていうのは過去の話でしょう。
もちろん、現在でも親の実装の詳細をさらすことは可能ですけど、そんなレベルのプログラマはいらない。
2026/07/19(日) 09:16:20.59ID:VP2Me/dP
>>334
委譲じゃなくて移譲のほうな。責任のありかが違う。
341デフォルトの名無しさん
垢版 |
2026/07/19(日) 09:52:11.47ID:iX0BwzkM
プログラムとデータは別々にってのは、プログラムをこなしていけばだいたいわかってきてそういう作り方する
センスのない馬鹿だけはいつまでもプログラム内にデータを持つ作り方する
それは言語で制約されてないからしょうがないが

だからといって言語を工夫して、どうやってもそれぞれ分離してしか作れないものは出来っこないのだ
作りこめば作りこむほど、出来たものは初心者向けのおもちゃのようなプログラム言語になってしまい
本格的なものすら作れないシロモノにしかならない
2026/07/19(日) 12:29:06.73ID:VP2Me/dP
>>340
移譲は委譲とまぎらわしいのでどうしようかと考えた。
これはGoFがdelegateと勘違いして広まってdelegateとされているやつだ。
forwarding(転送)、場合によってはinherit(継承)とするのがよいようだ。
実際のdelegateはRFC1149を使用して委譲することも可能なものである。
細かく考えれば、たいていの場合、GoF界隈で語られる委譲は移譲のことだ。
343デフォルトの名無しさん
垢版 |
2026/07/19(日) 13:30:46.95ID:MF4UDxvg
>>342
ムスビ、うそをつけっ
344デフォルトの名無しさん
垢版 |
2026/07/19(日) 13:39:49.97ID:MF4UDxvg
オブジェクト指向は目的志向だと言い張ってた人も昔居た
https://masuda220.jugem.jp/?eid=449
この人なんだけど、まちがった解し方をしてるようにしか思えなかった
委譲ではなく移譲だ、も同じパターンのように思える
345デフォルトの名無しさん
垢版 |
2026/07/19(日) 14:32:29.06ID:JsAm948e
>>339
実装を見れないようにして継承する意味ってなんだ……?
346デフォルトの名無しさん
垢版 |
2026/07/19(日) 14:33:18.76ID:JsAm948e
>>341
日本語でおk
あとデータとデータ構造は別物だぞ
347デフォルトの名無しさん
垢版 |
2026/07/19(日) 15:07:30.06ID:9R/aTmy5
そのレベルの区別もつかんのかw
2026/07/19(日) 16:42:46.06ID:VP2Me/dP
>>345
それがオブジェクト指向ですけど? 抽象化ですね。
オブジェクトとオブジェクト間の関係だけがある。
最終的にはオブジェクトがなくなり関係だけになるはずです。
2026/07/19(日) 19:29:54.09ID:F8Lmk6PL
>>348
実装継承の意味を理解していないレス
350デフォルトの名無しさん
垢版 |
2026/07/19(日) 19:30:25.90ID:cu9/qfks
>>348 抽象化関係なくて笑う
351デフォルトの名無しさん
垢版 |
2026/07/19(日) 19:36:20.60ID:miRZiuc2
アホくさ
352デフォルトの名無しさん
垢版 |
2026/07/19(日) 19:50:10.45ID:FI7uRvO3
>>348
オブジェクト指向について学んで来いよw
2026/07/19(日) 20:11:43.23ID:VP2Me/dP
無理解なひとが多いねぇ。オブジェクト指向が理解できていないのが問題ですねぇ。
extendsの問題以前か。
354デフォルトの名無しさん
垢版 |
2026/07/19(日) 20:12:49.16ID:+lhTvxZN
定義があるのに独自言語で話し出すのがなあ
355デフォルトの名無しさん
垢版 |
2026/07/19(日) 20:37:58.45ID:a4Ikgqmy
OOの定義がAK提唱とBSとでちがうみたいに(ここだとほぼ後者を指すよね)
文脈でわかる範囲ならスルーせんとやりとりがもったいないよ
文体も虚勢をはってると思えばかわいいし
2026/07/19(日) 21:36:52.94ID:VP2Me/dP
ま、なんにしても、オブジェクト指向(DbCは重要)に沿って設計.実装されていれば、
classとかextendとかinterfaceとか粗悪な言語実装でも問題は起こさない、ということ。
2026/07/19(日) 21:38:42.03ID:VP2Me/dP
む、extends sが抜けた。粗悪なオブジェクト指向言語を使う以上、設計は大事。
358デフォルトの名無しさん
垢版 |
2026/07/20(月) 00:54:09.42ID:CTzuDlDh
問題を起こすとしたらオブジェクト指向に沿って設計実装されてないってことだろ、お前が言ってること全部情報量ゼロだな
359デフォルトの名無しさん
垢版 |
2026/07/20(月) 00:56:46.13ID:CTzuDlDh
トートロジー過ぎて小泉進次郎かと思ったわ
360デフォルトの名無しさん
垢版 |
2026/07/20(月) 01:31:15.64ID:pY/ZcVmV
クラスは悪い実装を誘発しやすいから悪いって話を「悪くない実装にすれば悪くない」って反論する奴国語0点だろ
2026/07/20(月) 01:31:38.77ID:+Bs8XDPY
くすくす。extendsがevilだというわけではない、ということだよ。
問題を起こすとすれば設計者/プログラマの質であって、
extendsを回避しようと、ダメなプログラマはダメなものしか作れない。
extendsは実装継承ではなく、interfaceや、オブジェクト指向で設計された
継承可能オブジェクトとしてのclassなどを継承するもの。
いまひとつできのよくないオブジェクト指向言語側の定義やGoFには振り回されないこと。
2026/07/20(月) 06:03:08.46ID:FTzidL2p
勝手に話を拡張して言うことが「悪い実装を誘発しやすいから悪いなんてことはありえない、悪くない実装にすれば悪くない」だけなの情報量がなさすぎる
363デフォルトの名無しさん
垢版 |
2026/07/20(月) 06:04:26.98ID:FTzidL2p
さも自分だけがオブジェクト指向わかってますよ風に言ってるけど、特別何かがわかってるわけでもないという
むしろ一人だけ「お前らが低レベルだからw」って言って話をかき乱してるだけ
364デフォルトの名無しさん
垢版 |
2026/07/20(月) 07:45:55.02ID:cbvWaE6q
良い実装が何かも言ってないから本当に中身ないな
2026/07/20(月) 09:04:18.41ID:oac9x77/
「悪い実装を誘発しやすいから悪いって話」なら悪くない実装も当然理解してるのでは?
それすら理解してないなら何が「悪い実装」かすら判断できてないということ
2026/07/20(月) 09:33:28.16ID:2e8ijFIY
「悪くない実装」をすれば悪くない
2026/07/20(月) 10:51:07.17ID:CHFRKFiH
>>365
「実装継承は悪」と信じてる人は
ある実装が悪い実装になる状況と
悪くない実装になる状況の区別ができないからね

便利な道具だが馬鹿には使えない道具だから
お前ら使うなよってのが「実装継承は悪」という標語
368デフォルトの名無しさん
垢版 |
2026/07/20(月) 11:57:23.15ID:CTzuDlDh
>>367
区別の仕方を教えてもらえますか?
2026/07/20(月) 14:10:22.83ID:+Bs8XDPY
問題なのは Why extends is evil だ。
ArrayListをextendsしてバギーなStackを作って、extendsが悪いとextendsのせいにしているコラムだ。
そもそも、javaにはStackも当時からあるのでそれを使えばよい話だ。
今ならDequeueもあるし、ArrayListそのものも、push/popという名前ではないが、Stackとして
機能するメソッドも用意されている。
ArrayListもDbCを満たしており、extendsを回避しなければならないようなクラスでもない。
そのようなクラスをextendsしてバグを作りこむようなプログラマはいらないだろう。
わたしなら雇わない。彼はUCBでも教えているようだが。
370デフォルトの名無しさん
垢版 |
2026/07/20(月) 14:52:27.68ID:CTzuDlDh
>>369
何の話してんだと思ったけど
https://www.infoworld.com/article/2160788/why-extends-is-evil.html
これの話してるの?
371デフォルトの名無しさん
垢版 |
2026/07/20(月) 15:07:58.03ID:CTzuDlDh
コラムは継承によってバグを作り込むリスクを考えると
継承せずに実装したが良いって話だな
継承せずに済むならそれに越したことはないしそれはそうだって話だ

>>369は自分ならArrayListを継承してバグなく実装できるんだって話か
ArrayListは例として出されてるだけでArrayListでそれができたから
なんだってことになるんじゃないかね
372デフォルトの名無しさん
垢版 |
2026/07/20(月) 15:31:40.64ID:CTzuDlDh
interfaceでmethodを定義できるようになってabstract classの出番は昔よりは減ったけど
リソース管理をクラス内に閉じ込めたうえで継承によって動作を変えたいことはある

あとは自分の場合はTemplate Methodパターンのために実装の継承を使ってるけど
正直言ってわかりづらいので他にもっと良いやり方があるんじゃないかと思ってる

実装の継承は避けれるなら避けたいかなあ
373デフォルトの名無しさん
垢版 |
2026/07/20(月) 17:18:37.25ID:nOlhY8g2
>>367 >>369
いい加減いい実装について語れよ
374デフォルトの名無しさん
垢版 |
2026/07/20(月) 17:47:43.34ID:pq3gqUrh
>>367
オブジェクト指向がわかってないとそう感じる
実装継承はオブジェクトを破壊してるのにそれに気づいてないから
375デフォルトの名無しさん
垢版 |
2026/07/20(月) 17:53:39.26ID:4Fs4HLV6
実装継承が有用な場所があるのは当たり前
でもそれはコード再利用の話であってオブジェクト指向の話じゃない
2026/07/20(月) 19:50:39.40ID:KaxLJD1L
OOPの提供する再利用性のなんぼかはまさにそのコードの再利用性を指してるんではw
377デフォルトの名無しさん
垢版 |
2026/07/20(月) 20:33:11.75ID:K8yvI02X
カプセル化や多態性(型の継承)はOOだけど
コードの再利用性はOO関係なく普遍的な命題
昔の処理系がたまたま実装継承を採用してただけで
弊害のが大きいから近年は排除されてるのがここ何十年の話
378デフォルトの名無しさん
垢版 |
2026/07/20(月) 22:33:43.93ID:tOD1zgRg
>>376
話が逸れているし、OOPの再利用性とコード再利用は全く別の話
前者は機能の話で後者は似たコードをまとめる話だから
2026/07/20(月) 22:34:00.93ID:tOD1zgRg
>>377
これ
380デフォルトの名無しさん
垢版 |
2026/07/20(月) 22:35:56.50ID:yz6g6ALo
>>376
サブルーチンって言葉知らなそう
381デフォルトの名無しさん
垢版 |
2026/07/20(月) 23:09:54.85ID:R/7gdw3R
コード再利用がOOPで始まったなんて流石に初めて聞いた
382デフォルトの名無しさん
垢版 |
2026/07/21(火) 02:50:18.81ID:jjVxegea
実装継承はオブジェクト指向としては悪手だよ
使い道がないかどうかは別として
383デフォルトの名無しさん
垢版 |
2026/07/21(火) 03:10:25.30ID:NRMIV2w3
もう10年以上は言われてることで言語設計者の間ではほぼほぼ総意なのに、クラス信者が反発してるだけなんだよな
384デフォルトの名無しさん
垢版 |
2026/07/21(火) 14:26:58.88ID:RSbaDLBH
クラス信者によるとGoやRustはオブジェクト指向が書けないらしい
385デフォルトの名無しさん
垢版 |
2026/07/21(火) 14:49:43.97ID:kS3hNy3f
普通にオブジェクト指向も含むマルチパラダイムなんだよなあ
386デフォルトの名無しさん
垢版 |
2026/07/21(火) 15:32:09.44ID:ShfCuOb7
×オブジェクト指向とはクラスを使うこと
×オブジェクト指向とは実装継承を使うこと
387デフォルトの名無しさん
垢版 |
2026/07/21(火) 16:17:30.41ID:Ckc6ziwo
×オブジェクト指向でカプセル化しないこと
2026/07/21(火) 16:19:18.44ID:oSzwQYDy
間違ったオブジェクト指向プログラミングかw
389デフォルトの名無しさん
垢版 |
2026/07/21(火) 16:25:17.57ID:eNE2kCFD
>>388
C知識全くないのにイキって叩かれてた人じゃんw
390デフォルトの名無しさん
垢版 |
2026/07/21(火) 16:28:12.41ID:NY6ALVCl
オブジェクト指向をクラスだと思ってる奴多いよな
2026/07/21(火) 18:30:45.31ID:ALCocViV
ま、classやinterfaceや実装や実装継承という用語が、間違って伝えられて、
間違った言語実装が行われているわけですね。同じ用語でも意味が異なる。
その意味で、実装継承というのはありえない。
インターフェースを継承するのが実装だから。
言語のinterfaceとは似ているが同じではない、設計のinterfaceが、
extendsで継承されていれば、継承したinterfaceが実装されているので、
実装(を)継承するわけではない。
設計用語と言語実装の用語がかみ合っていない。
オワコンなのはオブジェクト指向(設計・概念)ではなくオブジェクト指向(風)言語か。
2026/07/21(火) 19:23:55.93ID:oSzwQYDy
まあ、C++なんかナンチャッテオブジェクト指向言語だしな
2026/07/21(火) 19:44:47.02ID:ALCocViV
C++は結構古いので、現在の用語としてはC++あたりでの実装が先かもしれん。
設計としての概念は一般な用語であり、interfaceはprotocolだ。
Alan Curtis Kayの考えはよかったのだが、1981年にオブジェクト指向の流れが変わり、
おかしくなっていく笑。
オブジェクト指向の設計思想と言語実装の齟齬は広がる。
通信屋としては、厳格なprotocolと情報理論に基づいた設計で圏論を逸脱しないものがベストと考えている。
2026/07/21(火) 22:09:43.49ID:hx2nIdfQ
>>391
一般に言う実装というのはソフトウェアの実装の話だから、実装を継承するのはオブジェクト指向ではないという話

>>393
オブジェクト指向と圏論は特に関係ないなあ
2026/07/21(火) 22:48:34.91ID:ALCocViV
設計するのに圏論つかわん?
Monadicプログラミングなんてやらん?
396デフォルトの名無しさん
垢版 |
2026/07/22(水) 01:22:36.51ID:+JcyZqai
圏論は関数型ですらあんま重要じゃないよね
2026/07/22(水) 02:39:35.58ID:Nu31K9oL
ストリング図を使う設計手法は使えそうだけどね。
javaでもMonadicプログラミングばかりしてるなぁ。
圏論は概念を図示したものだから、どういう概念かという設計には使っている。
ただ、説明には使用しない。誰もわからないから笑。
2026/07/22(水) 03:29:30.68ID:AMuwyTJ4
圏論はたしかにコンピュータの挙動を表すのにも使えるんだけど、広すぎるし抽象的すぎるからプログラミングのためだけに学ぶのは効率が悪いかも
知っていれば活用できるんだけどね
2026/07/22(水) 07:39:21.47ID:YXMIwqoR
圏論は抽象言語だから、UMLのかわりに概念記述言語として使えます。
とわいえ、数学屋ではないので、圏論的量子力学から入って、(量子)情報論言語とみて使っています。
とくに、ストリング図(ストリング・ダイアグラム)はテンソルネットワークであり、ペンローズ図法
であり、フローチャートやシステムダイアグラムの進化版と考えてよいでしょう。
UMLの失敗は、情報論的言語になっていなかったことでしょうね。
ま、情報論的回路図ですね。部品も関係として記述できるし、関係の集まりこそclassだし。
400デフォルトの名無しさん
垢版 |
2026/07/22(水) 07:56:13.93ID:+2YlyCx1
ポエムだからなに書いてもゆるす
2026/07/22(水) 08:11:47.68ID:1DS7p8oo
語り口調のポエムかw
402デフォルトの名無しさん
垢版 |
2026/07/22(水) 08:56:25.79ID:misy9Eit
monadicプログラミングが何なのか説明しろ
flatMap使っとけばええんか?おん?
403デフォルトの名無しさん
垢版 |
2026/07/22(水) 09:05:50.87ID:7jf6V5Kp
単なるダイアグラムでの記述で済むところを圏論が必要とか言っちゃうバカって多いよね
2026/07/22(水) 10:31:17.69ID:vvxBubk6
バカかどうかは自分には分からないが、少なくとも多いってことはないと思う。むしろ特異なタイプじゃないか?
2026/07/22(水) 16:02:36.37ID:4xonYQmE
>>399
中身のないポエムだなあw
406デフォルトの名無しさん
垢版 |
2026/07/22(水) 22:32:23.83ID:lK1rps+h
関数型の重要なポイントは無駄な副作用だらけのクラスを作るんじゃなくて、なるべく純粋な変換をする関数で済ませましょうという部分
圏論やモナドは設計者がわかっておけばいいこと
2026/07/22(水) 22:45:19.22ID:o2Jdm9L+
それはそうで、別に数学的な証明なんかなくても仕様を知っていれば、プログラマはプログラムを書けるんだよな
ただ、その仕様が理論的に正しいものかどうかを確認しなきゃいけない設計者は、数学理論を知っておかないといけない
408デフォルトの名無しさん
垢版 |
2026/07/22(水) 23:01:58.03ID:7jf6V5Kp
全く関係ない。
そういうレイヤーで必要なのはただの構文解析の知識だけ。
圏論やモナドが必要な場合なんてハスケルやる時くらいだわ。それも別に理解してなくても問題ないし。
409デフォルトの名無しさん
垢版 |
2026/07/22(水) 23:46:43.46ID:misy9Eit
圏論はオワコン
2026/07/23(木) 02:21:17.80ID:tHFNuHdE
まあ、設計するときには必要。圏論でなくとも、そのようなものは経験的に使っているはず。
マルチコアを最大活用するには数学的に検証する必要がある。遅延処理もね。
以下書きすぎたので抹消。
裏合わせて8コアぐらいあるのに、1コアしかグラフあがってなくて、おせー、
なんてプログラムよくあるよね。ブラウザですら2桁のコネクション張って表示しとる時代なのに。
411デフォルトの名無しさん
垢版 |
2026/07/23(木) 02:52:59.16ID:luqj8bdN
>>408
なくても言語は作れるけどC++かJavaみたいなぐちゃぐちゃになる覚悟はしておかないと
どの機能を用意すれば使い勝手と網羅性を同時に実現できるかは数学的な知識がないと証明できないよ
412デフォルトの名無しさん
垢版 |
2026/07/23(木) 07:42:02.71ID:MyRECaAU
オペレーションズ・リサーチの話? 難しいことやってんね組み込みか? 同時実行数をCPUののコア数以上にしとけばええんやろくらいしか考えたことないわ
413デフォルトの名無しさん
垢版 |
2026/07/23(木) 13:48:47.74ID:cxrYFfJU
マルチコアを最大限活用するには数学的な検証より次々流し込めるパイプラインの方が重要なんだよな、結局
2026/07/23(木) 14:13:59.60ID:QfAmxCpY
永続的に状態を維持しながら繰り返し処理するなんてぇ使い方は稀だしな
415デフォルトの名無しさん
垢版 |
2026/07/23(木) 14:14:30.50ID:MyRECaAU
>>413
まあそうね、異論はないわ
416デフォルトの名無しさん
垢版 |
2026/07/23(木) 14:59:14.02ID:duhL+54X
>>411
言語として大事な互換性、ライブラリ環境なんかを考えたからごちゃごちゃしてるだけだよ。
君みたいに脳内で済むと思ってる人に言語設計は無理。
2026/07/23(木) 16:01:32.54ID:cxrYFfJU
>>416
何言ってんだこいつ
書いてることと1ミリも対応してないんだが、クスリでもやってるのか?
2026/07/23(木) 18:46:27.84ID:tHFNuHdE
クラッシュしたらクラッシュしたとき考えるようなシステム設計ならばかまわないけどね。
2026/07/23(木) 19:11:07.70ID:UyJUqdip
何言ってんだこいつ
理論に穴があればそうなるリスクはあるが、そうでなければどのパターンを禁止すればいいか網羅できるだろ
2026/07/23(木) 19:16:37.61ID:lBWZXi4F
>>418 何のために理論があると思ってるんだ……
2026/07/23(木) 21:57:52.51ID:tHFNuHdE
パイプラインは並行処理な。(concurrent)
マルチコアを活用するのは並列処理。(pallallel)
パイプラインを並列化しなければマルチコア時代に意味はない。
2026/07/23(木) 21:59:54.34ID:tHFNuHdE
う、parallel。ちょっと酔った。
2026/07/23(木) 22:02:10.15ID:tHFNuHdE
そりゃconcurrentとparallelの違いがわからずに設計したらクラッシュするよな。
2026/07/23(木) 22:57:39.78ID:tHFNuHdE
オブジェクト指向におけるパイプラインとは、単に連結の場合も多い。
これが合成の意味であれば圏論の出番。
425デフォルトの名無しさん
垢版 |
2026/07/24(金) 00:18:12.95ID:DxUecHk4
連投してるけど結局言ってることに中身がないなあ
426デフォルトの名無しさん
垢版 |
2026/07/24(金) 04:53:52.96ID:UOMvXAx9
結局、オブジェクト指向を新しい何かだと思ったバカが多すぎただけの話
手続き型のコードを責務分離するための糖衣構文を、銀の弾丸としてありがたがったという頭の悪さ
427デフォルトの名無しさん
垢版 |
2026/07/24(金) 08:38:36.46ID:UPXfZ3FT
新しくないし、作りこみ方が間違ってんだよ
テキストでプログラムコードで作りこもうとするから糞になる
ツールで対応してあらゆる定義や設定をプロパティで完結させ
テキストで書くのは純粋なプログラムコードだけでいい
428デフォルトの名無しさん
垢版 |
2026/07/24(金) 09:15:09.56ID:22m8vIHu
>>427
何のプログラム書いてるの?
ツールて…
429デフォルトの名無しさん
垢版 |
2026/07/24(金) 09:15:11.22ID:22m8vIHu
>>427
何のプログラム書いてるの?
ツールて…
430デフォルトの名無しさん
垢版 |
2026/07/24(金) 09:16:22.15ID:22m8vIHu
純粋なプログラムコードと不純なプログラムコードの違いは何?
431デフォルトの名無しさん
垢版 |
2026/07/24(金) 12:46:35.94ID:wySfhXXK
>>417
対応してないとしか読めないお前の読解力が問題だと思うよ。
やっぱり言語設計なんて無理だよ君には。
2026/07/24(金) 15:07:14.93ID:WIK69ucb
>>431
お前の妄想の話はいいからまともに中身のある話しろよw
433デフォルトの名無しさん
垢版 |
2026/07/24(金) 15:15:15.32ID:rb1Brc03
言語として大事な互換性、ライブラリ環境なんかを考えたから、最初に機能が足りない状態でリリースして後から色々くっつけたのか
前後が繋がってねえよバカw
日本語が読めてなさすぎるww
2026/07/24(金) 15:16:01.33ID:aZ3GPz52
>>431は自信満々に何を言ってるんだ?
2026/07/24(金) 15:16:56.63ID:aZ3GPz52
>>427はプログラムがデータを扱うからデータ構造が生まれるっていう基本的なことがわからないらしい
オブジェクト指向以前にプログラムまともに書いたことないよね
436デフォルトの名無しさん
垢版 |
2026/07/24(金) 15:33:58.33ID:CGmGfUPL
別にエクセルのセルのように、そのマスをどう使うかをプログラム以外で設定できちゃうものがあるじゃん
2026/07/24(金) 15:38:44.82ID:4IFWzMRe
>>436
マスって何だよww
「職場にExcelのマクロ書ける気に入らない奴がいるからそれっぽいこと言ってバカにしたい」なのか?w
プログラミングってのはExcelで遊ぶことじゃねえよwww
438デフォルトの名無しさん
垢版 |
2026/07/24(金) 15:51:41.10ID:Vi5x8GMI
一例でいうと427はNext/AppleのEOFを指してるのかな
突き進めるとSmalltalkやZopeのようななにか
2026/07/24(金) 15:57:47.29ID:E96Vbvqn
昔のDelphiやVBのコントロールデザイナー(?)みたいなやつのイメージかなと思うが、GUIウィジェットに限定したとしてもテキストで値を指定する方が分かりやすいし、やりやすいという人が多いんじゃない? まして、オブジェクト一般なら尚更そうだと思うが。
2026/07/24(金) 16:10:06.41ID:nPdt6AFZ
オブジェクト指向はプログラムが扱うデータ構造を内包するものだから、GUIをカチカチ作る話は全く別なんだよな
441デフォルトの名無しさん
垢版 |
2026/07/24(金) 20:19:58.80ID:wbLRAqNe
まずプログラミング経験積んでから出直してきてくれや
442デフォルトの名無しさん
垢版 |
2026/07/24(金) 20:28:10.74ID:7VloRDER
なんでオブジェクト指向について触れたこともないレベルの奴が騒いでるんですかねえ
443デフォルトの名無しさん
垢版 |
2026/07/24(金) 20:37:03.78ID:RwiACNot
ほんそれ
444デフォルトの名無しさん
垢版 |
2026/07/24(金) 20:43:36.81ID:22m8vIHu
>>442
人間ってそういうものじゃん
近所のババアよりも邪馬台国の卑弥呼に関心を持つし
未知のものを理想的にとらえて感情を動かされるものなんだよ
オブジェクト指向はロマン
445デフォルトの名無しさん
垢版 |
2026/07/24(金) 20:46:29.64ID:22m8vIHu
メソッドやプロパティ、イベントを公開してツールなどから使えるようにするしくみはコンポーネント指向と言われるね
2026/07/24(金) 21:16:17.97ID:GVeSI4ef
ツールってこの場合何?
どんなおもちゃで遊んだら
プログラムしてるつもりになれるの?
447デフォルトの名無しさん
垢版 |
2026/07/24(金) 21:24:44.82ID:Vi5x8GMI
Smalltalk実装
PharoとかGlamorous Toolkitさわってみたらどうだろ
448デフォルトの名無しさん
垢版 |
2026/07/24(金) 21:28:23.14ID:/w/RcGUU
ますます悪いクラスが生まれそうな設計だなw
2026/07/24(金) 21:36:34.09ID:GVeSI4ef
SmalltalkならSmalltalkって最初から言うと思うんだよな

>>189
> それらはツールを駆使して枠括って見えなくして部品化すりゃ済むことだ
> 文字だけで表現して何かするってのがハナから気に入らない
> 欧米圏の好きそうなやつなんだろうな
>
> 電子回路のハード図みたいに、中身見えなくてもこういう機能のパーツってことで描いて済むってのにさ
> CPUチップ1個描けば終わることを、その中身まで全部図示して文字で記述してるようにしか見えん

こういうこと書いてることからもSmalltalkって話に今更なるとは思えない
LabVIEWみたいなやつのことかと思いながら読んでたけど
LabVIEWならLabVIEWと言えばいいだけのことを
いつまでたっても「ツール」としか言わないし
450デフォルトの名無しさん
垢版 |
2026/07/25(土) 00:43:23.00ID:+sd0sCI1
ホントにExcel思い描いてたんじゃねw
451デフォルトの名無しさん
垢版 |
2026/07/25(土) 01:43:08.50ID:uRdOACIL
ありうるのが怖い
452デフォルトの名無しさん
垢版 |
2026/07/25(土) 08:50:13.80ID:w0a9u/uj
UMLからコードを作成するツールは20年くらい前に流行ったけどね
UML自体がアレになってアレになったけどさ
453デフォルトの名無しさん
垢版 |
2026/07/25(土) 13:09:11.12ID:YNkzbLWE
だいたいカチカチとマウスクリックでクラスが作れたらオブジェクト指向が改善する何かがあんのかよw
どう考えてもそれが使いやすかったらクラス症候群に陥るだけだし、使いにくかったらコード直接書かれるだけで、何の解決にもならないww
454デフォルトの名無しさん
垢版 |
2026/07/25(土) 13:47:02.71ID:w0a9u/uj
>>453
あるわけねえだろw オブジェクト指向を改善しようと思ってツールを使うバカがいるかよwww
455デフォルトの名無しさん
垢版 |
2026/07/25(土) 13:52:02.41ID:w0a9u/uj
ところで、クラス症候群って何?
456デフォルトの名無しさん
垢版 |
2026/07/25(土) 14:18:58.95ID:w0a9u/uj
オブジェクト指向はソースコードの整理術の一つでしか無いけど
もっと抽象度の高いものにも適用できると考えられて
意味が曖昧化して人々の理想を具現化する道具となったのが2000年代前半
オブジェクト指向が作り出したロマンが人々の原動力になった

その熱気自体は悪いものではなかったような気がする
熱気が冷めてオブジェクト指向ってそんなにたいしたものじゃなかったよなと
冷静に思えるようになったのも熱気があったからこそだ
2026/07/25(土) 14:23:52.61ID:+73O4UxN
熱気があったかどうか知らんけど
行き過ぎた思想はチラホラ見かけたね
「なんでもオブジェクト」みたいなのとか
「オブジェクト指向=目的語思考」みたいな珍説とか

でもあとから知った風に批判されがちな
「OOPを銀の弾丸と信じ込んだ」みたいな人って実際は見たことないわ
458デフォルトの名無しさん
垢版 |
2026/07/25(土) 14:44:14.71ID:w0a9u/uj
九州大学医学部附属病院はかつてオブジェクト指向をシステムの調達要件に入れて大失敗したみたいよ
オブジェクト指向ならうまくいくと思ってたんじゃないかね、知らないけど

オブジェクト指向に限らずこの通りやればうまくいくというのは
まあたいていうまくいかないよね

「なんでもオブジェクト」は俺も技術書読んで真似して大失敗したなあ
ゴミの山ができあがっただけだった
2026/07/25(土) 14:55:37.08ID:+73O4UxN
継承のツリーが出来上がっていく過程で
「なんでもオブジェクト」みたいな直感を得る瞬間はあるよね
その結果クソクラスのクソツリーが出来上がってすぐ目が覚めるけど

あとビミョーに誤字してて修正
誤:「オブジェクト指向=目的語思考」みたいな珍説とか
正:「オブジェクト指向=目的語指向」みたいな珍説とか
2026/07/25(土) 16:48:39.20ID:PLn+miYr
>>454
そう主張してるバカがなんといるんですねえ!w
びっくりするよね

>>455
何でもクラスにすればオブジェクト指向になってクラスにしないよりいいと思ってる人
ここにも前にはいたし、Java書いてる人には割といる

>>457
> 「OOPを銀の弾丸と信じ込んだ」みたいな人って実際は見たことない
そういう人が周囲にいなかったのはいいことだね
私は何人も周りにいたので……
2026/07/26(日) 11:48:31.41ID:kHP3crQx
オブジェクト指向は、オブジェクトとメッセージのみ。
メッセージを送る、とされているが、「送る」わけではない。「受け取る」だけの場合もある。
指示可能なものは、すべてオブジェクトである。
名前で呼べないオブジェクトもあるが、指示はできる。
現在のオブジェクト指向言語はオブジェクトをモノとして作ってしまうのが難点だ。
メッセージを定義する、本来はそれだけでよい。オブジェクトの定義は不要。
そのような言語はまだみてないが、そのようになるだろう。
462デフォルトの名無しさん
垢版 |
2026/07/26(日) 13:46:40.38ID:Nv+cg7Cq
例えばハードウエアで考えると、別々のハード間のやり取りは
決まった窓口があってそこの入出力だけそれぞれがやるだけで完結

GRAMのデータを変えるだけで、あとは勝手にそのデータ見て表示するハードがやっちゃう
そういう感じで、勝手に仕事する部品を作り上げる作業だけしていけばいい
そのために新たな言語が要るか?ってことよ

要らんでしょ
2026/07/26(日) 13:59:57.59ID:AGbqsQ7t
>>187 >>189 辺りからそうだけどハードの人なのかな。回路図のイメージでやりたいっていう発想なんだろう。
2026/07/26(日) 14:39:26.89ID:Je6GglLX
プログラミングとかしたことなさそうだから
もうほっとこ

オブジェクト指向のことなんか知らないのに
なぜこのスレに来るのかだけは気になるけどw
465デフォルトの名無しさん
垢版 |
2026/07/26(日) 19:33:32.78ID:Nv+cg7Cq
しょせんソフトがハードと同じようなことをやろうとするから無理がある
466デフォルトの名無しさん
垢版 |
2026/07/28(火) 10:53:54.09ID:B7PfW2eb
話をまとめると
○ オブジェクト指向
✕ クラス
2026/07/28(火) 11:02:52.66ID:ebJvb7+U
というのがオブジェクト指向わかってないやつの典型的まとめ
468デフォルトの名無しさん
垢版 |
2026/07/28(火) 11:18:31.65ID:/173sN8W
最近のプログラミング言語
GoとかRustとかZigはオブジェクト指向だけどクラスを排除してる
2026/07/28(火) 13:48:12.31ID:XdtStZlw
だからそれらの言語は誰も使ってないんだろ
470デフォルトの名無しさん
垢版 |
2026/07/28(火) 14:43:22.19ID:EBahWanj
人気のプログラミング言語
TypeScript、Python、Javaにはクラスが存在する
471デフォルトの名無しさん
垢版 |
2026/07/28(火) 14:46:57.91ID:EBahWanj
Swiftにもクラスが存在する
472デフォルトの名無しさん
垢版 |
2026/07/28(火) 15:01:54.14ID:EBahWanj
オブジェクト指向の有用性を語るときにクラスを否定する必要は無いように思える
2026/07/28(火) 15:14:19.11ID:SCY6bEC4
>>468
クラスという名前を使ってないだけでクラスを排除してるわけじゃないんだな

実際Rustのstructは長らくclassという名前だった
もちろんclassからの継承機能は無くて機能的には今と同じ
見た目の文法が変わっただけ
474デフォルトの名無しさん
垢版 |
2026/07/28(火) 15:25:12.17ID:4aIhWNuN
オブジェクト指向といっても180度異なる
【悪】クラス=邪悪なクラス継承機能を持つ
【善】クラス以外=邪悪なクラス継承を持たない
475デフォルトの名無しさん
垢版 |
2026/07/28(火) 15:32:44.04ID:EBahWanj
クラスが悪だとか継承が悪だとか世の中そんなに単純ではないように思うよ
2026/07/28(火) 16:02:00.67ID:32Pv8iex
>>472
なぜ世間でクラスが悪だと言われているか理解できてる?
オブジェクト指向は疎結合で素晴らしいものだけど
クラス継承は密結合でダメなものだからだよ
477デフォルトの名無しさん
垢版 |
2026/07/28(火) 16:24:46.45ID:EBahWanj
>>476
みんながそう言ってるんだってのが根拠なのか、浅いな、あさあさだな
自分の経験で語れるようになってから出直して来なよ
478デフォルトの名無しさん
垢版 |
2026/07/28(火) 16:30:24.48ID:EBahWanj
疎結合だから素晴らしい、密結合だからダメというのも
根拠は誰かが言ってただけなんだろ

自分の両親は密結合に殺されましたくらいのエピソードを
語ってもらわないことには私は納得できないよ
479デフォルトの名無しさん
垢版 |
2026/07/28(火) 16:45:10.89ID:ykDCj3D9
クラスベースが有用な場面もあるけど注意深く設計しないわけではないし
ドキュメント整備も不可欠
作業コストが捻出できないなら採用しない方が身のため
C++がいまだに多重継承できるのは素人想定してないから
2026/07/28(火) 16:49:15.13ID:4xNx330Z
>>478
プログラミング言語界でも常識
Javaの生みの親のジェームズ・ゴスリンですら
Javaを作り直せるならクラス継承を無くすと言ってる
481デフォルトの名無しさん
垢版 |
2026/07/28(火) 17:00:13.10ID:EBahWanj
>>480
あの人がこう言いましたはもうええわw
自分の経験で何かないのか?
482デフォルトの名無しさん
垢版 |
2026/07/28(火) 17:19:04.46ID:EBahWanj
Aは常識だ → 衆人に訴える論証
BがAと言ってた → 権威に訴える論証

どちらも帰納的推論ではあるんだけど
帰納的推論は誤謬を孕むのよなー
483デフォルトの名無しさん
垢版 |
2026/07/28(火) 17:28:33.43ID:uSjYhUGY
上司が単純な命令を出すだけで部下に複雑なことをやらせる
これがオブジェクト指向の根本と言ってもいいんじゃないかね

でもそのためのクラス設計はガチガチすぎて上司が口をはさむ余地がまったくなくなった
もうちょっと緩くしてお互い協力し合おうぜっていうのが新しい思想だろう
名づけてゆるゆるオブジェクト指向やね

部署を解体しやすくして再構成も簡単に
社長直属の部署も作りやすくした

エンジン車からEV車への切り替えに手間取ってる企業もクラス化されすぎてたのが一つの要因かも
クラス化した方が業務効率はいいんだろうけど要求の変化についていきにくい
484デフォルトの名無しさん
垢版 |
2026/07/28(火) 17:58:48.36ID:EBahWanj
>>483
二度とそんな話しないで!!
2026/07/28(火) 19:07:32.36ID:XdtStZlw
"作り直したほうが早い"が究極の疎結合だからな
2026/07/28(火) 19:41:11.30ID:kAsw1b8G
密結合のため問題視されているクラス継承の機能をクラスから無くせばよい
487デフォルトの名無しさん
垢版 |
2026/07/28(火) 20:09:01.12ID:ykDCj3D9
そんなのは前世紀から言われてるんよ
488デフォルトの名無しさん
垢版 |
2026/07/28(火) 20:16:13.95ID:EBahWanj
VB6はそんな感じだったよね
クラスの継承はできなくてインターフェイスの実装はできた
VB6を再発明したら良いのかもしれませんね
2026/07/28(火) 20:51:25.02ID:zHezj+xR
今調べたら2015年ごろからjavascriptにもclassあるんだって?
昔のclassないときのあのprototype使ってグニグニしていく作法はどうも馴染めなかったなぁ
そういう点ではclass今あるんならそりゃよかったよねって感じ
2026/07/28(火) 21:19:43.65ID:HqfkMEqu
>>489
同じ
プロトタイプ継承もクラス継承も密結合の実装継承になってしまう点で同じ忌避パターン
それらを封印して代わりに疎結合のインタフェース継承を使える言語ならまだ救われるのだけれど
491デフォルトの名無しさん
垢版 |
2026/07/29(水) 11:40:25.15ID:7uH57Q8l
構造体でいいじゃん
2026/07/29(水) 12:50:26.41ID:4Jw2e49a
実装継承ていわば内部で大量のif文で処理を分けた巨大な共通関数みたいなものだからな
extendsは大量ifの糖衣構文でしかない
2026/07/29(水) 15:16:02.00ID:gb6vzQ0J
>>480
「クラス継承を無くす」とは言ってないんだな
嘘ついたらダメだぞ

Why extends is evilの記事を書いたHolubの記憶によると
“I’d leave out classes”と言ったとされてるが
これはどう見ても継承を使いこなせない人向けに
警鐘を鳴らすために誇張した表現

意訳すればお前ら馬鹿なんだから実装継承使うなよってこと
494デフォルトの名無しさん
垢版 |
2026/07/29(水) 19:12:45.42ID:wFxh2J0A
ラダーならif文じゃなく接点の羅列で済むのにな
2026/07/29(水) 23:23:54.13ID:zfYpXa63
>>493
Java生みの親は「Javaを作り直せるなら、クラスを無くす」と言ってる
その意味するところは実装継承になってしまうクラス継承を無くすという意味だと言ってる
そして代わりにインタフェース継承が望ましいと

原文
[Interfaces versus classes]
I once attended a Java user group meeting where James Gosling (Java's inventor) was the featured speaker. During the memorable Q&A session, someone asked him: "If you could do Java over again, what would you change?" "I'd leave out classes," he replied. After the laughter died down, he explained that the real problem wasn't classes per se, but rather implementation inheritance (the extends relationship). Interface inheritance (the implements relationship) is preferable. You should avoid implementation inheritance whenever possible.
2026/07/29(水) 23:47:30.17ID:b9/Zoz6z
>>495
>その意味するところは実装継承になってしまうクラス継承を無くすという意味だと言ってる
そんなこと言ってないじゃん

しかもその文章ってJames Goslingが言ったとAllen Holubが記憶してるというだけで
どういう言い回しで言ったか正確なところは定かじゃないから
複おじの十八番である曲解の可能性すらある

Allen Holubの記憶を書いた原文ではなくて
James Goslingの発言を記録した本当の原文があるならその参照元を示してね
497デフォルトの名無しさん
垢版 |
2026/07/30(木) 08:05:34.10ID:DWeTgOza
俺はゴスリングよりもJavaのプログラムを書いてきたがクラスの継承については良いのか悪いのか良くわからん、以上、参考まで
2026/07/30(木) 08:49:02.71ID:JMRHrLRM
Allen Holubの実装継承のバグ例は、どうみてもド素人しかやらないバグで、
実装継承の問題だ、というのは単に言いがかりに過ぎない。
さらに、実装継承しない例が続いているが、これもド素人で、
さらにバグを増やしているし、意味不明な対策を入れているし、
このようなプログラムを書くプログラマは迷惑だ。
interfaceを使わないでも、きちんとインターフェース設計されたclassなら、
extendsしても問題はない。ただし、迷惑プログラマは除く。
2026/07/30(木) 09:11:09.46ID:3+umAxBe
Java作ったジェームス・ゴスリンがクラスは継承が実装継承になるからJavaから外したいと言ってるよな
もちろん代わりにインタフェース継承を使う
500デフォルトの名無しさん
垢版 |
2026/07/30(木) 09:14:56.07ID:DWeTgOza
>>499
インタフェースではデータを継承できないし、メソッドがpublicに強制されるぞ、ゴスリングはろくにJavaを書いたことがないにわか
2026/07/30(木) 09:21:27.24ID:hk6sVckq
>>499
そんな事を言った事実はない
お前の曲解もしくは歪曲によって作り出された虚構
2026/07/30(木) 10:03:29.25ID:1YHEwK6t
>>495末尾にある「可能なときはいつでもインターフェイス継承が実装継承より望ましい」の「可能なときはいつでも」のニュアンスよね。解釈が分かれうるところではある。

継承では、基底クラスの不変条件も遵守しなければならないところ、基底クラスが大きなクラスになってくるとその不変条件を見落とすことが起きがちになるとか、派生クラスを定義した後で基底クラスの不変条件に追加・変更があったりすると派生クラスの方ではそれによる問題が生じないか総チェックしなければならないとかのしんどいところがある。やってできないことではないけれども、きちんとやるとなると結構しんどい。リスコフの置換原則(LSP)を常に意識していないといけないというのは、できなくはないけど、あまりやりたくはないのが本音かなぁ。
継承の中でのインターフェイス継承と実装継承の違いよりも、継承(is-a)とhas-aの違いの方が影響が大きい気もするけど。
2026/07/30(木) 11:47:46.89ID:VixSHfU8
>>500
データは継承してはいけない
それは密結合になる
504デフォルトの名無しさん
垢版 |
2026/07/30(木) 13:08:57.35ID:DWeTgOza
>>503
継承なんだから当たり前だろw
505デフォルトの名無しさん
垢版 |
2026/07/30(木) 13:13:09.22ID:DWeTgOza
密結合だからこそ継承には価値がある
社内に共有する情報と社外に共有する情報は違うだろ
継承とは社外秘の情報を安全に共有するしくみと知れ
506デフォルトの名無しさん
垢版 |
2026/07/30(木) 13:16:12.64ID:1tAZUrDj
つ アクセス修飾子
2026/07/30(木) 13:44:09.93ID:14E15Fvl
>>504
インタフェース継承なら密結合にならない
インタフェース継承を使えと言われる理由
508デフォルトの名無しさん
垢版 |
2026/07/30(木) 13:50:53.37ID:DWeTgOza
>>507
インタフェースではデータを継承できない
メソッドがpublicに強制される
以上がインターフェイスを使うべきではない理由
俺は密結合を避けたいと思っていない、密結合上等
疎結合はゴミ
509デフォルトの名無しさん
垢版 |
2026/07/30(木) 13:52:12.62ID:DWeTgOza
疎結合でしかコード組めない人は内と外の違いをわかってない
510デフォルトの名無しさん
垢版 |
2026/07/30(木) 14:01:58.31ID:DWeTgOza
密結合がダメな理由はゴスリングというハゲたおっさんがそう言ってからってだけだろ
俺もハゲてるから俺の言葉はゴスリングの言葉と思え
密結合を使え
511デフォルトの名無しさん
垢版 |
2026/07/30(木) 14:01:58.31ID:DWeTgOza
密結合がダメな理由はゴスリングというハゲたおっさんがそう言ってからってだけだろ
俺もハゲてるから俺の言葉はゴスリングの言葉と思え
密結合を使え
2026/07/30(木) 14:39:49.56ID:vVQB3eQT
>>505
密結合にする必要性が全くない
インタフェース継承によって疎結合に作ることができる
513デフォルトの名無しさん
垢版 |
2026/07/30(木) 14:45:24.69ID:DWeTgOza
>>512
・インタフェースではデータを継承できない
・メソッドがpublicに強制される
何回言わせるんだ、疎結合にする理由の方がないんだよ
疎結合に価値はありません
514デフォルトの名無しさん
垢版 |
2026/07/30(木) 14:47:43.02ID:DWeTgOza
インターフェイス使ったらスカスカ結合になるだろ
そんなハゲ散らかしたコード組みたくねえわ
ハゲてるのは頭だけで良いってゴスリングが言ってた
2026/07/30(木) 15:02:07.21ID:bq9U0xhd
>>508
データの継承???
それは絶対にしてはいけないこと
必要性がないだけでなく害悪
516デフォルトの名無しさん
垢版 |
2026/07/30(木) 15:35:31.33ID:DWeTgOza
>>515
それは君の強迫観念なのでは…?
君の心の問題のような気がする

オブジェクト指向は君の心よりも自由だよ
517デフォルトの名無しさん
垢版 |
2026/07/30(木) 15:40:27.53ID:DWeTgOza
何事にも良い面もあれば悪い面もある
プログラムコードこうあるべき論は糾える縄の如し
2026/07/30(木) 16:18:09.05ID:6fqQECvf
>>513
メソッドがpublicに強制されるって使い方間違えてるんでしょ
publicにしたいインタフェースをpublicにするのよ
privateにしたいものはそのままprivate
519デフォルトの名無しさん
垢版 |
2026/07/30(木) 16:36:11.55ID:DWeTgOza
>>518
データを継承したいって文脈なんだから
privateじゃダメ、publicもダメなのよ
インターフェイスは詰んでるんだよ
520デフォルトの名無しさん
垢版 |
2026/07/30(木) 16:36:11.82ID:DWeTgOza
>>518
データを継承したいって文脈なんだから
privateじゃダメ、publicもダメなのよ
インターフェイスは詰んでるんだよ
521デフォルトの名無しさん
垢版 |
2026/07/30(木) 16:37:09.28ID:DWeTgOza
なんで俺の書き込みだけ二重になるの? 俺がゴスリングだから?
522デフォルトの名無しさん
垢版 |
2026/07/30(木) 16:39:49.98ID:DWeTgOza
privateだと継承されないでしょ
publicだと公開されすぎちゃうでしょ
protectedなら良い感じでしょ、クラスの継承って素敵でしょ
523デフォルトの名無しさん
垢版 |
2026/07/30(木) 16:42:32.23ID:DWeTgOza
密結合で特定のクラスにだけひっそりと公開したいものはあるのよ
インターフェイスだとそういうの出来ないでしょ
インターフェイスは情報漏洩とお考えください
2026/07/30(木) 17:01:27.99ID:kImJ9yLy
ID:DWeTgOzaがバカすぎて笑ってしまった
まず型に付随するメソッドはあらゆる継承関係なく使える
もちろんインタフェースを継承していても使える
次にインタフェースをどこまで公開するかは自由
外に公開しないで身内のみが使うことが当然できる
525デフォルトの名無しさん
垢版 |
2026/07/30(木) 17:08:40.27ID:DWeTgOza
>>524
君が書いてること全行嘘じゃん…ドン引き
526デフォルトの名無しさん
垢版 |
2026/07/30(木) 17:11:14.79ID:CgQTNK3f
人間ハルシネーション
527デフォルトの名無しさん
垢版 |
2026/07/30(木) 17:11:53.05ID:DWeTgOza
ワロタw
2026/07/30(木) 17:15:08.52ID:8qJuxP4h
>>524で合ってるね
便利なインタフェース継承を使おうよ
529デフォルトの名無しさん
垢版 |
2026/07/30(木) 17:28:06.15ID:2Y8MamsQ
やべーやつきてるな
530デフォルトの名無しさん
垢版 |
2026/07/30(木) 23:01:38.11ID:X5eKYi61
データを継承するかしないかが曖昧な言語って使う価値がないわな
2026/07/30(木) 23:27:32.65ID:XkCdioqy
Smalltalk界隈からしたらまた感想は異なるんやろな何もかも
C++やJavaとかに触れただけでOOP語ってるのも浅いのかも
2026/07/30(木) 23:29:48.12ID:0ZybHBrH
>>530
具体的にどんなプログラミング言語のこと?
2026/07/31(金) 09:50:30.04ID:DxmshYym
そもそもオワコンとはどんな状態の事を言っているのか
OOP非推奨なら明確に定数で宣言するべき
2026/07/31(金) 10:18:47.25ID:qip+tZot
終わってるのはだいたいオワコン論主張するやつの頭
このスレ見てればわかります
535デフォルトの名無しさん
垢版 |
2026/07/31(金) 10:38:46.33ID:WelRpksh
オブジェクト指向はパラダイムで
パラダイムは問題解決の枠組みのことだ

オブジェクト指向ではこれをどう解決するのが良いだろうか
というふうに考えるときのベースとなるものだ

プログラミング言語では関数型のパラダイムもあるけれども
オブジェクト指向は関数型などのパラダイムと相反するものではないから
天動説→地動説のようなパラダイムシフトが起こることがなく
オワコンになることも無いような気がするが

オブジェクト指向や関数型をまとめてひっくり返すような
現代の人間が想像もしなかった発想の大転換があるなら見てみたいものだな

そういう意味では我々はオブジェクト指向がオワコンになることを
望んでいるとも言えるのかもしれませんね
2026/07/31(金) 11:33:49.60ID:tlmjmAo/
早期実現に向けて
537デフォルトの名無しさん
垢版 |
2026/08/01(土) 02:44:02.30ID:fT3Cj9Cj
>>オブジェクト指向はパラダイム
この時点でもう間違い
オブジェクト指向なんて手続き型の整理機能に過ぎない
Cでオブジェクト指向設計を一回やればわかること
2026/08/01(土) 09:57:46.20ID:w5FUff77
オブジェクト指向をパラダイムだと勘違いしてる奴のせいでオブジェクト指向は失敗したんだよな
オブジェクト指向ならプログラムの都合じゃなくて現実の分類学に合わせたコードが書けるとか、高凝集・疎結合を無視しても大きくて保守可能なプログラムが書けるとか、そういうそれまでの常識を覆すものとして捉えてしまった
その結果ろくでもないゴミが量産された
2026/08/01(土) 10:00:11.34ID:UJbPVI44
たとえばちょっと前に湧いてる逆張り密結合上等オジなんかそうだけど、自分がプログラムを書いてるってことを理解してない、責務分離をしないと後々どうなるか考えるだけの経験に基づく予測ができない、そういう人間がオブジェクト指向をパラダイムだ、銀の弾丸だと崇め奉ってダメにした
540デフォルトの名無しさん
垢版 |
2026/08/01(土) 10:03:01.99ID:7vhWqoWJ
>>535
真逆
プログラミングにパラダイムシフトは構造化と関数型しかない
オブジェクト指向はパラダイムではなかったが故に、構造化・手続き型の文脈では価値を持つが、関数型の文脈では価値を持たない
OOがやってることなんて、関数型ではもっと自然に表現できて当然のこと
2026/08/01(土) 10:19:56.46ID:/QOyam4O
個人的には、トマス・クーン的パラダイムとしてはオブジェクト指向も立派にパラダイムだけど、現在一般に使われる誤用・慣用的表現としてのパラダイムという語には当てはまりにくく、認識や考え方、常識に変化がない「弱い」パラダイムとでも呼ぶべきものではないかと思う
なので、誤用・慣用的表現としてのパラダイムから生まれた「パラダイムシフト」には当たらない
現実的にも、オブジェクト指向によって認識や考え方、常識に変化があるべきでなかったことは、本日のオブジェクト指向の現状からは明らかであるように思われる
542デフォルトの名無しさん
垢版 |
2026/08/01(土) 10:48:13.03ID:VTcVbSr3
つまり構造体でFA
2026/08/01(土) 10:53:59.39ID:G0osrDjo
オブジェクト指向の根底には反グローバル変数がありそう

char buf[] = "abc def ghi";

strtok(buf, " "); // "abc"
strtok(NULL, " "); // "def"
strtok(NULL, " "); // "ghi"

何か気持ち悪いからTokenizer作りたいと思ったらオブジェクト指向に片足突っ込んでる
2026/08/01(土) 12:22:48.22ID:QA4zKpco
オブジェクト指向ってなぜこうも妄想猛々しくするのかね
俺の、俺のって
2026/08/01(土) 12:39:57.61ID:E8f34aRh
そうっすよね。手続き型がなんか気持ち悪くなってきたから、オブジェクト指向を使う。
Monad lawをながめていたら、モナド則はクライスリトリプルだから、
これってもしかして...と、なにやら思いついた。quadrupleになると...量子プログラムだ。
オブジェクト指向の次はTensor指向かねぇ?とも思ったが、まだクライスリトリプルに
到達していない。
んー? 次はモナド則付きオブジェクト指向かな?
2026/08/01(土) 13:07:49.80ID:E8f34aRh
quadrupleの前にtripleだな。
オブジェクト指向そのものはdouble(2-tuple)ではなく、triple(3-tuple)であるべき。
プログラムそのものがクライスリトリプルなんだし。
アナロジーとしては複素数空間。プログラムにおけるeやiの対応物を明確にあつかう必要がある。
と思う。
2026/08/01(土) 13:30:42.77ID:gKzGeB5j
オブジェクト指向は宗教になってしまった
2026/08/01(土) 13:39:54.96ID:G0osrDjo
グローバル変数を犠牲にして鼻から悪魔を召喚
549デフォルトの名無しさん
垢版 |
2026/08/01(土) 14:12:26.95ID:Bmdq2y+j
NGみたら相変わらずの句点だった
550デフォルトの名無しさん
垢版 |
2026/08/01(土) 14:36:21.47ID:v+WZy3ys
モジュール化の幅が広がるとかその程度に理解してりゃよかったのに
なんでもオブジェクト指向の宗教が出回りすぎちゃったというイメージ。
2026/08/01(土) 14:46:47.91ID:lEgzxzSp
>>540
君、関数型でまともにプログラム書いたことないでしょ
552デフォルトの名無しさん
垢版 |
2026/08/01(土) 15:10:21.22ID:y5Fa6b+p
関数型といっても正格か遅延、純粋か、変数がイミュータブルか等で
代数的データ型やパターンマッチングは共通でもってはいるけど
コードの方針はガラッと変わる
とくに純粋かどうかでパラダイムの違いを感じる
2026/08/01(土) 15:48:21.39ID:gJHoXlPN
>>552
Rustは変数もイミュータブルが基本で
標準ライブラリほとんど代数的データ型を返すほど中心的な存在で
構文も至るところがパターンマッチングだから
関数的プログラミング指向だね
2026/08/01(土) 16:06:06.33ID:r9EYv4Dc
RustはC/C++と同等の速さで動きつつ関数型パラダイムによる抽象化という両立をなす革新をした
2026/08/01(土) 16:35:39.37ID:fmNfmjom
Rustのように変数をmutateするものは関数型とは呼ばない
関数型の考えを一部取り入れているというだけで
Rustはオブジェクト指向機能を持った手続き型
2026/08/01(土) 16:46:34.65ID:jlM3ay+L
>>555
関数型はミュータブルを扱える言語も多い
一方でRustは関数型に徹するとミュータブルが出て来ない
2026/08/01(土) 17:10:51.26ID:uyIGjr56
Rustが関数型は草
関数型言語使ったこと無さそう

これに限らず
実務経験すらないのに
〇〇は××だ、みたいなお題目唱えてるようなレスはもうおなか一杯
バツボタン探させられる広告みたいなもんでもうほんとうんざり
2026/08/01(土) 17:49:40.78ID:XyaPEWez
Rustは関数型プログラミングであってる
どこをみてもそう書かれている
もちろんマルチパラダイムなので命令型プログラミングでもある
2026/08/01(土) 18:00:56.91ID:fT3Cj9Cj
>>551
それしか言えない時点で書いたことないのお前やん

>>552
ここで言っているのはもちろん「完全に圏論の範囲内で扱われる純粋な数学関数で完結する言語」のことではない
ただ、可能な操作を決定する型という対象と、関数という射による圏を構成するという基本的な概念を持つかどうかという部分を、パラダイムシフトであると言っている
560デフォルトの名無しさん
垢版 |
2026/08/01(土) 18:57:50.18ID:urxvnKRn
数学的な概念とかはよく分からんが、式の型が関数型言語にとって必須の要素ということも別になくない?
2026/08/01(土) 22:06:06.55ID:fT3Cj9Cj
>>560
式の型というのが何を指しているかが少し曖昧だけど、データ(変数など)に対して可能な操作を決定する「型」という「対象」と、「関数」という「射」による「圏」を構成するという、プログラミングに対する数学の圏論の適用によって、型を対象に扱うことが可能になって透過性が高まるよという感じ
2026/08/01(土) 22:07:23.92ID:fT3Cj9Cj
というか、これがないと本当に関数型はただ関数を書くだけになって、構造化と何ら変わらなくなるので、このレベルの理論的土台はおそらく関数型言語に共有されている
モナドまで行く必要もなくて、基本とその他に分けられるだけでも一定程度の効果が見込める
563デフォルトの名無しさん
垢版 |
2026/08/01(土) 22:26:32.10ID:CC5F4DOC
>>562
どういう効果が見込めるん?
564デフォルトの名無しさん
垢版 |
2026/08/01(土) 22:29:39.10ID:CC5F4DOC
アプリの開発が捗るん?
2026/08/01(土) 22:38:54.84ID:fT3Cj9Cj
>>563
さっきもチラッと書いたけど主に「参照透過性」
基本的には同じ引数を渡せば、いつ・どこで呼び出しても同じ結果を返すことだけど、たとえ副作用があってモナドがなくても、この考え方があれば構造は見通しの良いものになる
言語仕様的にこれを前提においてサポートすれば、高階関数のようなC系言語では複雑になりがちな機能をシンプルに記述できるし、引数や戻り値の型も管理しやすくなる
予測可能で合成しやすいコードになることが最大のメリットで、多人数開発や保守において状況を改善できる
もちろん型を対象として扱うことで、Option型やパターンマッチング、カリー化などでエラー管理や条件分岐、シグネチャの統一などのメリットも享受しやすくなるけど、これはあまり本質的ではない
2026/08/01(土) 22:44:54.80ID:fT3Cj9Cj
特にOption型などは関数型のエッセンスを経ずとも、命令型的な考え方の中でも実現可能なアイデアではあって、パターンマッチングやカリー化も理論的土台にこそ型の振る舞いや射の合成の考え方が入ってくるものの、道具としては別にオブジェクト指向でも似たようなことはできる
しかし、参照透過性については基礎的な考え方を変える必要があるので、関数型の理論的位置付けによって常識が転換されることになる
567デフォルトの名無しさん
垢版 |
2026/08/01(土) 23:07:04.66ID:ROr7BTDR
参照透過性と型とは直接的にはあまり関係がないような気もするけど。高階関数が書きやすいかどうかは参照透過性というよりも、関数がその言語において第1級の値であるかどうかの方が大きいのでは。もし関数の合成がしやすいという意味なら決定性だけでなく、副作用の不存在も重要だと思うし。
568デフォルトの名無しさん
垢版 |
2026/08/01(土) 23:11:46.51ID:CC5F4DOC
>>565
副作用がない事が関数の条件なんだからモナドとか関係なくね?
569デフォルトの名無しさん
垢版 |
2026/08/01(土) 23:17:17.65ID:CC5F4DOC
計算結果が引数のみに依存するなんてことは普通にやることじゃん、数学とか圏論とか関数型とか知ってる必要無くねえか?
570デフォルトの名無しさん
垢版 |
2026/08/01(土) 23:22:58.78ID:CC5F4DOC
引数以外で計算結果が変わったらテストが面倒だから引数でコントロールできるようにしようとかは入社1年目の新人でも思いつくようなことじゃんか、常識が転換されるなんてバカなこと言ってねえで働けとしか思えねえよ
571デフォルトの名無しさん
垢版 |
2026/08/02(日) 00:09:58.26ID:AsVqI/V/
決定的で副作用のない関数の方が望ましいというのは現在では広く共有されている理解だけど、そのような理解が広く受け入れられるようになった原因の一つとして関数型言語の考え方があったという整理ならあながち変でもないと思うよ。圏論とか数学的な概念に結びつける必要はあまりないような気もするけど。
572デフォルトの名無しさん
垢版 |
2026/08/02(日) 00:38:57.00ID:2v+B+RZD
関数型プログラミング言語のベースにはラムダ計算があると思うが、再帰するときに不動点コンビネータを使うのは変態だけだし、数値の計算にチャーチ数を使うのは気狂いだけだ、数学の理論が優れていてもそれがプログラムコードをわかりやすくするとは限らない、圏論もその一つだ
2026/08/02(日) 00:44:58.62ID:8aR44OcI
なんだかどうでもいい青年の主張みたいだな
2026/08/02(日) 00:51:04.56ID:XjSJAloN
青年の主張は青臭いことに価値があるからここまでどうでもよくはない
575デフォルトの名無しさん
垢版 |
2026/08/02(日) 00:54:04.42ID:2v+B+RZD
参照透過なんてものはたいしたもんじゃない、手続き型でも普通にプログラム書いてたらそうなるだろってものだ、オブジェクト指向教に戻ろう
2026/08/02(日) 01:03:46.32ID:AKLO/63u
Option型がNullable型より有利な点はネストができることでより複雑な状態も格納できる点にある
2026/08/02(日) 01:11:44.46ID:8aR44OcI
しょうがねぇなあ

関数型も憧れ空妄想抱いて宗教じみた信者多いけどな

それはさておき、C++の普及(大体1986年~)以降流行したJavaなどの言語のオブジェクト指向の必須要件はインスタンススコープなんだけれどもな

CのStructのインスタンスに関数(メソッド)のスコープを持たせる拡張からはじまった
Javaもその流れの延長

1990年代ころまではそれが良い感じだと信じられていたが
ところが、実装継承の乱用やカプセル化によるスコープの破壊・依存の伝播と交差(スパゲティー化)などによる視認性の悪さに信者も気付きはじめて紛糾(覚醒)中←いまここ
2026/08/02(日) 01:12:43.57ID:8aR44OcI
多態も視認性悪くするな
2026/08/02(日) 01:18:23.87ID:8aR44OcI
関数型に憧れる信者の初歩的な妄想の一つが
「C言語は関数を記述するからら関数型言語」
…orz
2026/08/02(日) 01:36:26.63ID:8aR44OcI
でも皮肉なことにオブジェクト指向の】最大の害は
思い込みの激しい信者が妄信する変てこなオレオレオブジェクト指向風実装を
宗教みたいに周りにまき散らして時に押し受けたり他人をけなしたり
迷惑をかけるところかな
それがまた害のあるオブジェクト指向の副作用てんこ盛りの方法だったりするから始末が悪い
2026/08/02(日) 01:38:36.46ID:8aR44OcI
実はまともなソフトウエアをろくすっぽ書けないような奴にそういう輩が結構いたりする
オブジェクト指向の不思議あるある
これゆえ宗教じみてると気味悪がられる
2026/08/02(日) 01:42:48.28ID:0QIwMaBf
Option型は様々な形で扱われたり実装されたりしている
0~1個のコレクションとみなされたり
タグ付きの共用体とみなされたり
値が収容できる列挙型とみなされたり
モナドであったり
583デフォルトの名無しさん
垢版 |
2026/08/02(日) 01:52:51.43ID:WR5mZBSE
>>577
> ←いまここ
それも90年代の話だよ
2026/08/02(日) 02:18:35.72ID:UZ8yL7UT
>>567-568
それは違う
モナドは副作用を圏論の範囲内で扱うための手法であって、まさに参照透過性を副作用込みでも維持することを目標としている
ただ、副作用を完全に排除して圏論で全てを扱えるようにしなくても、境界を定める現実的なアプローチで関数型のメリットは享受できる

>>569-570
それも全く異なる
君が言っているのはテストすればプログラムが完璧になるという信仰の話だが、私が言っているのはそうではなくて、理論的にそれを裏付けることであるという違いがある
関数型言語でない言語では、関数が純粋関数であるかどうかは理論的には確認できず、実際に全コードを読まなければ把握できない
これは君が扱うような小さなプロジェクトでは現実的かもしれないが、ある程度以上のプロジェクトでは非現実的なコストとなる

>>571
圏論と結びつける必要がないということはなくて、プログラマがそれを意識するかどうかは脇に置いても、圏論がなければただサブルーチンを使うという話にまで退行してしまう

>>572
だから、純粋な圏論のみでプログラムを記述しよう、という話はしていない
あくまでその考え方を基礎に持つことで、例外的なケースを分離することができるというのが重要
585デフォルトの名無しさん
垢版 |
2026/08/02(日) 02:22:02.19ID:VoB7C6aX
その後の『依存性逆転の原則』が答え

オブジェクト指向における従来の依存関係とは、
上位モジュールから下位モジュールへの方向性であり、
仕様定義を担う上位モジュールを、
詳細実装を担う下位モジュールから独立させて、
各下位モジュールを別個保存するというものだった。
この慣習で起こる様々な問題に対して、
『依存性逆転原則』は以下2点で決着をつけている、

①上位モジュールはいかなるものも下位モジュールから持ち込んではならない。双方とも抽象(具体例としてインターフェース)に依存するべきである。

②抽象は詳細に依存してはならない。詳細(具象的な実装内容)が抽象に依存するべきである。

この上位モジュールと下位モジュールの双方が抽象に依存しなければならないという内容は、
それまでの人々のオブジェクト指向の常識を覆しているものであった。
しかし現代のまともなプログラマーにとって『依存性逆転の原則』は浸透して常識になっている。
586デフォルトの名無しさん
垢版 |
2026/08/02(日) 02:25:42.84ID:2v+B+RZD
>>584
圏論には何の価値もない、君は関数さえわかってない、君の圏論論は虚無だよ
2026/08/02(日) 02:26:11.58ID:UZ8yL7UT
>>575
まさに関数型の「関数」を「サブルーチン」と勘違いしているからこそ発生する、典型的な間違いだね
参照透過性を理解する上で重要なのは「副作用」で、手続き型ではこれは自由に発生するが、関数型ではそうはならない

>>577-581 >>583
オブジェクト指向は要するに、アラン・ケイが目指したものの本質はErlangのような関数型の動的言語なわけだけど(これはアラン・ケイ自身が明言しているので間違いない)、問題意識というのは構造化・手続き型では制御できない、データ構造に依存するロジックの整理であったわけで、これを行う上で実装継承が失敗だったというのは間違いのない事実だろう
2026/08/02(日) 02:30:33.32ID:UZ8yL7UT
>>586
>>575への返信を書いたから、同じことは二度書かない

>>585
それは理想主義的にはそうだけど、現実的ではないという欠点がある
つまり、いちいち上位のプログラムのために下位を再設計する必要に迫られる
しかし、そこまで極端に踏み込まずとも、オブジェクトの設計を利用側に合わせるという考え方だけでかなり改善できるので、考え方自体に全く価値がないとは言えない
2026/08/02(日) 02:31:44.41ID:UZ8yL7UT
>>586
君の誤謬は結局>>579で語りつくされているが、一応>>587にも書いていると言った方が正確かもしれない
590デフォルトの名無しさん
垢版 |
2026/08/02(日) 02:36:40.57ID:2v+B+RZD
ただのflatMapで副作用が参照透過になるわけねえだろw
2026/08/02(日) 02:38:43.52ID:t6DTwhyz
>>590
そもそも圏論は「ただのflatMap」ではない
むしろflatMapというのは副産物で、理論の根幹にほとんど触れない、プログラミング言語としての機能に過ぎない
592デフォルトの名無しさん
垢版 |
2026/08/02(日) 02:42:21.94ID:2v+B+RZD
>>585
アンクルボブがそんなこと言ってクリーンアーキテクチャだとか言ってたけどグルーコードだらけで開発効率が落ちるだけと批判されてるのが今だと思うけどな、アンクルボブのコードはオブジェクト指向の悪い例だと思うわ、ケイシーやジョンから批判されてんじゃん
2026/08/02(日) 02:44:40.57ID:UZ8yL7UT
>>592
その考え方でグルーコードが生まれる時点で根本的に設計を誤ってる
その機能を必要としないモジュールが間に誕生している時点で、既に何を作りたいのかを見失っている
594デフォルトの名無しさん
垢版 |
2026/08/02(日) 02:45:07.91ID:2v+B+RZD
>>591
圏論がflatMapなんて言ってねえわw
595デフォルトの名無しさん
垢版 |
2026/08/02(日) 02:47:03.92ID:2v+B+RZD
>>593
クリーンアーキテクチャエアプか?考え方じゃなくてコーディングの話だぞ
2026/08/02(日) 03:16:08.47ID:UZ8yL7UT
>>594
じゃあ根本的に言ってることが間違ってるとしか
flatMapは関数型の一機能にすぎず、関数型そのものではないのだし、参照透過性を保証するのもflatMapではない

>>595
それ以前の問題だと言われているのでは?
設計段階から間違っていればいかにいい手法を後から投入してもろくなものはできない、当たり前のことだと思いますけどね
597デフォルトの名無しさん
垢版 |
2026/08/02(日) 03:16:32.64ID:2v+B+RZD
お前ら…寝たのか…?おやすみなさい
2026/08/02(日) 03:37:21.68ID:/d+TnyfF
>>588
下位を再設計?
まともな設計なら再設計の必要はない
依存性逆転則はどこでも行われている
2026/08/02(日) 03:40:13.39ID:/d+TnyfF
>>592
依存性逆転則でグルーコードは生じない
開発効率は格段に上がる
双方向にモックへ入れ替えられるため真の単体テストも可能になる
2026/08/02(日) 12:10:11.95ID:nBw0gVNF
>>585
何の答え?
2026/08/02(日) 12:29:25.86ID:H4NVQa6T
オブジェクト指向は素晴らしいけど
うまく使わないと密結合になるなど問題を抱えていた話だよね
「クラス継承を使わない原則」と「依存関係逆転の原則」が皆によって得られた知見かな
602デフォルトの名無しさん
垢版 |
2026/08/02(日) 12:29:32.63ID:kF9MPm89
>>578
そこはフレームワークの設計センスによる。
てかセンス依存なことをオブジェクト指向信者は誤魔化す傾向にある
2026/08/02(日) 13:14:52.16ID:MwKjWdsN
曖昧さ、解釈の幅広さを与えていることが
様々な我流の源でもあるな
2026/08/02(日) 16:35:32.88ID:fG0Ij0sM
>>585
>オブジェクト指向における従来の依存関係とは
構造化プログラミングの間違いじゃない?
原則として名前がつけられ広く認知されたのは90年代後半だけど
オブジェクト指向は生まれたときから依存性逆転の原則を前提としてるぞ

>>601
>「クラス継承を使わない原則」
そんな原則は存在しない
存在するのは「クラス継承を適切に使えないやつの原則」
2026/08/02(日) 17:23:01.92ID:BWdG0d1V
>>604
クラス継承は悪だから排除したプログラミング言語がたくさん増えてることも知らない無知かよ
2026/08/02(日) 18:04:37.29ID:MwKjWdsN
未だクラスベースオブジェクト指向の信奉者がいるんだな…
ちょっと驚き
607デフォルトの名無しさん
垢版 |
2026/08/02(日) 19:41:30.52ID:DAnEVSkI
だからクラスだけ使ってりゃいいだろ

継承が必要なことってあるかね?
2026/08/02(日) 19:57:57.35ID:Bhxvj6Rw
疎結合になるインタフェース継承を使う
密結合になるクラス継承は使わない
2026/08/02(日) 20:21:07.76ID:zbpVdQn6
疎結合密結合だけ連呼してるのって
ファミコン持ってない子がマリオの最初のクリボー怖がってるようなもの
2026/08/02(日) 20:34:22.76ID:2noVwyhr
クラス継承が廃止された理由はメリットがなく弊害が大きいため
2026/08/02(日) 21:28:43.38ID:ZZ0rQxB+
クラス継承を連呼してるのも
ファミコン持ってない子がマリオの最初のクリボー怖がってるようなもの
612デフォルトの名無しさん
垢版 |
2026/08/02(日) 21:49:57.05ID:iZ2ukNjY
ここ20年間の新たなプログラミング言語
【クラス継承がない】Elixir、Go、Julia、Nim、Rust、Zig
【クラス継承がある】Kotlin(=Javaの後継)、Swift(=Objective-Cの後継)

つまり過去のしがらみでクラス継承を含めざるを得なかったKotlinとSwiftを除いて全ての言語にクラス継承はない
2026/08/02(日) 22:20:23.48ID:XzXuo0pj
おバカな比較だな
2026/08/02(日) 22:29:52.08ID:DNLiyUpR
マトモなプログラマーならクラス継承は不要という常識がある
その結果あらたな言語ではクラス継承は捨てられた
615デフォルトの名無しさん
垢版 |
2026/08/02(日) 23:16:15.06ID:2v+B+RZD
>>609
夏休みだからね
2026/08/02(日) 23:20:13.91ID:MwKjWdsN
クラスベースオブジェクト指向・継承の支持者って
反論されると中傷じみた揚げ足取りや子供のような攻撃的レスをするのはなぜだろう
2026/08/02(日) 23:22:21.97ID:FWWKpB+C
インターフェイス継承とhas-a関係の比較なら、has-a関係の方が疎結合になって望ましいことが多いというのは共通理解ということでいいん? 密結合が何が何でもダメなのかという点はさて措くとして。
2026/08/02(日) 23:54:06.30ID:/d+TnyfF
>>617
型とその値(インスタンス)がis-a関係
型と各機能(インタフェース継承)がhas-a関係で複数の機能を持つことができる
ちなみに型と型がis-a関係になると結合度が高くなりすぎて柔軟性を失い良いコードでなくなるため使われなくなった
2026/08/03(月) 00:13:28.44ID:tMfv5Lr+
大人がしゃべってるところに子供が入ってきて
いきなり九九の暗唱を始める微笑ましさ
でもそれは限度がある
微笑ましいのは最初だけ

得意げになってるのかどうか知らんが
毎日毎日七の段唱えてみせて
そして明日はどうなるのかっていうと
また明日も七の段唱え始める

彼にとってはそれが世界の全てであるかのように
620デフォルトの名無しさん
垢版 |
2026/08/03(月) 00:32:15.74ID:kWohr3pl
>>377でも同じこと書いたけど
Simulaの用途ではクラス継承がうまく機能してて
そのまま汎用の言語に持ち込んでしまったのが悲劇の始まり
うまく適用できる分野はあるし分かってC++/Javaで書くなら問題ないよ
621デフォルトの名無しさん
垢版 |
2026/08/03(月) 00:40:31.40ID:FxTwBOsj
>>619
心に沁み入る良い詩を見た
622デフォルトの名無しさん
垢版 |
2026/08/03(月) 01:27:30.45ID:JNZQf0TG
>>620
Javaでも通常はクラス継承をできる限り避けてインタフェース継承だよ
2026/08/03(月) 07:57:56.93ID:swaY03EK
インターフェイス継承をhas-aと呼ぶと、C++では抽象クラスからの継承もhas-aということになってしまっておかしいと思うのですがどうでしょうか
624デフォルトの名無しさん
垢版 |
2026/08/03(月) 08:09:31.19ID:X2wQmTQ9
継承元やインターフェイスに近いクラスが当然持ってると思われるメンバーならまあ実装継承の形でもいいんだろうけれど
現実問題としてそういう場面が多いとは思えんってのが実際のところだわな。
2026/08/03(月) 09:55:59.58ID:zgDLFpUy
>>623
その感覚、ぶっちゃけ正しいです!
626デフォルトの名無しさん
垢版 |
2026/08/03(月) 10:11:08.30ID:ulrShqX1
過去のしがらみのせいでっつーけど
継承せずに新たにクラス作るだけで済むでしょ

ほんと、言語作る連中は頭悪すぎ
頭悪いのを継承してどうする?
627デフォルトの名無しさん
垢版 |
2026/08/03(月) 12:34:30.57ID:X2wQmTQ9
そりゃまあ重複は悪!ってずっと言い続けてきたからな。
2026/08/03(月) 13:56:21.94ID:9YacywFP
>>623
インタフェース継承は機能や特性を与えるものだからhas-a
色んな種類の機能を多重にインタフェース継承できる
2026/08/03(月) 13:58:43.05ID:9YacywFP
>>624
その通りで機能や特性は実装継承する必要がない
そのためクラス継承ではなくインタフェース継承が使われるようになった
2026/08/03(月) 14:49:07.35ID:aURwta2u
has-aというのは、少なくとも一般的な用語法としては関連/集約/合成なんかを指す語だったと思うけど(あと人によってはC++のprivate継承なんかも入れる)。インターフェイス継承をhas-aとするなら関連/集約/合成には別の呼称をあてるん?
また、インターフェイス継承の場合、インターフェイスとそれを実装する型の間には部分型関係が成立している言語が多いと思うけど、部分型関係が成立しているのにis-a関係ではないというのは分かりづらくない? 
一般的な用語法としては、インターフェイス継承はis-a関係の範疇に入れられてきたと思うし、has-aであるとする用語法ははじめて聞いたんだけど、最近はそういう用語法を支持する人が多いの?
2026/08/03(月) 15:46:25.23ID:XtLUC8MJ
>>630
おバカさんが間違ってるだけなんだから
そんなに追い詰めなくてもいいじゃん
2026/08/03(月) 16:00:48.79ID:qrGgpOwj
>>630
インタフェースはそのインスタンスを作れないから狭い意味での型ではなく強いて言えばメタな型でしょう
一方でスーパークラスとそれをクラス継承したサブクラスはどちらもインスタンスを作れる型同士だから代替出来る点で明確にis-aになりますから状況がかなり違います
インタフェースの場合は例でよく出てくる例にあるように飛べるや鳴けるなど~できるといった機能や能力を表しますからそこに着目するとhas-aと解釈することもできて難しいところですね
2026/08/03(月) 16:06:31.58ID:IhL2YRzY
Wikipediaによると、どちらなのかいつもはっきりと決定できるものではない、だそうだ

is-a関係とは、異なる種類の階層の性質をもつ関係にhas-aがある。 オブジェクトと従属するオブジェクトの論理関係がis-aか、それともhas-aなのか、いつもはっきりと決定できるものではない。この曖昧さが、is-aのようなメタ言語的な用語を生み出した。
2026/08/03(月) 16:17:50.02ID:dSA2HLgy
インタフェースはis-a関係ではないためUMLでは点線を用いて別の表記になり
実現(Realization)または実装(Implementation)と呼ぶ
2026/08/03(月) 16:18:49.79ID:pgC4YmsR
バカが必死www
2026/08/03(月) 16:21:27.44ID:S13efKK6
なんでこんな簡単な区別もつかないんだろ
不思議で仕方がない
2026/08/03(月) 16:27:03.07ID:oB+Q9YAn
人間て基本的に愚かなんだよお前さんも
10代の受験でどこの大学に受かったとか関係なく
2026/08/03(月) 16:31:57.94ID:oSdBU5UO
インタフェースは能力だもんな
is-aにならないのは当たり前すぎる
2026/08/03(月) 18:28:52.00ID:SCqddoxD
10億回まわすような世界だけど、
javaの場合、interfaceで呼び出すと遅いので実体を呼び出す。
ハイブリッド言語なので、設計は理想的なオブジェクト指向でも、
実装は冗長なところを回避する。実装継承は必須。
2026/08/03(月) 18:59:44.76ID:ANyXg3sm
>>639
interfaceで呼び出すと遅い、って欠陥言語じゃん
2026/08/03(月) 20:54:16.39ID:SCqddoxD
10億回まわす世界ですよ。ほんの数nsの違い。
nanosecondやpicosecondの世界。
2026/08/03(月) 21:14:44.65ID:oB+Q9YAn
>>639
特に速度の求められるところだけそうしたけりゃそうすりゃいいのであって
その話が実装継承の正当性を主張するものではない

つか速度ネックのにJava使う時点であふぉかと
2026/08/03(月) 21:16:35.14ID:oB+Q9YAn
いやいや速度が問題になるところでJavato継承って
池沼かよ
2026/08/03(月) 21:18:41.96ID:RaJx7uy4
has-aはコンポジションのことでしょ・・・
extendss Cでもimplements Iでもそれは型に継承関係があってis-aに他ならないでしょ・・・

class D extends B implements I, J, K {/*略*/}

var c = new D(); // c is-a B, c is-a I, c is-a J, c is-a K
645デフォルトの名無しさん
垢版 |
2026/08/03(月) 21:20:26.29ID:kWohr3pl
JIT切ってるのかな
ただのジャンプになるかインライン展開されそうだけど
2026/08/03(月) 22:11:30.82ID:JgsmaqV6
C++だと仮想関数になるからvtable経由で遅くなる欠陥があるよな
Javaも同じ問題?
2026/08/03(月) 22:32:26.96ID:SCqddoxD
JIT入ってるから10億回まわしてやっと秒レベルの差に収まってるのだと思う。
このロジックを入れたアプリが、ロジックの順番変えたり、いろいろやって2分以上から1:30未満まで
速くなった。
Vectorが正式に入ってくれば、もっと速くできそう。
2026/08/03(月) 22:37:44.84ID:O3vGqB4U
時間計測の比較だけかよ
どういう仕組みで遅くなるのか仕組みの違いの比較や
もしくは実行コードの違いの比較じゃないと雲をつかむような状況だな
2026/08/03(月) 22:43:14.79ID:SCqddoxD
実測で、単体ではなく完成品現物が速くなればよいのだ。
2026/08/03(月) 22:53:49.76ID:25eYOT4g
>>647
つまり仕組みは分からないけど1億分の1秒未満の差ってことか
それなら疎結合になるinterface実装の方がいいね
2026/08/03(月) 22:59:13.87ID:SCqddoxD
結局、JITと知恵比べしている状況。
あと、メモリデバイスは遅いので間接参照しない。
へたに手動でインライン展開しない。privateメソッドにまとめたほうが速い場合もある。
SIMDが効いたとしても、メモリデバイスの遅さを回避するほうが有効かも。
2026/08/03(月) 23:24:45.69ID:n5hwM9CL
>>644
インタフェースは能力wだからis-aにならないらしいよww
2026/08/04(火) 02:04:49.29ID:1TbEgEXD
そうだよ
複数の能力を合成して作っていくからhas-a
654デフォルトの名無しさん
垢版 |
2026/08/04(火) 07:44:35.72ID:sdLXPmXh
それはcan-do関係でcan-doはis-a関係の一種だよ、UMLでもコンポジションとリアライゼーションは違うでしょ
655デフォルトの名無しさん
垢版 |
2026/08/04(火) 07:46:48.10ID:sdLXPmXh
can-doといえば今はどうか知らんけど昔100円ショップあったよね、店の雰囲気が好きだったなぁ
2026/08/04(火) 08:06:03.56ID:MF7Wc1oM
UMLでもcan-doとis-aは表記が分かれてるね
2026/08/04(火) 08:14:37.95ID:kynx1x39
言語にオブジェクト指向的な機能が付いてる最大のメリットは、コード事態に設計の意図を乗せる事ができるから、AIのサポートを効率よく促せるようになる事だと思う
実装当初の目的とは違うし、オンラインで書ける状況じゃないと全く恩恵を受けられないけども
658デフォルトの名無しさん
垢版 |
2026/08/04(火) 09:05:06.34ID:sdLXPmXh
is-a関係であるか否かは多態性があるか否かでわかる
多態性があるかは静的型付き言語だと型を明示して
ソースコードをコンパイルできるかでわかる

動的型付き言語だとそういう確認手段がないから
動的型付き言語を普段使いしてると
is-a関係とhas-a関係の認識が曖昧になるかもなあ

言語によって人間の認識が変わるって話

そういう意味ではオブジェクト指向言語だけじゃなく
いろんな言語が世の中にあるその多様性が我々の知能の進化に
とって大事なことなのかも知れませんね
2026/08/04(火) 09:22:24.98ID:NazBoNS2
>>658
例えばアドホック多態性の一つである関数オーバーロードは必ずしもis-a関係にあるわけではない
型を明示してコンパイルできると多態性だという説明も意味不明
660デフォルトの名無しさん
垢版 |
2026/08/04(火) 09:39:34.51ID:sdLXPmXh
意味不明という言葉を使うやつ全員アホです
2026/08/04(火) 09:51:56.83ID:JtiRsj+n
多相性ではなくて部分型関係でしょう。is-a関係はサブタイピング多相性と関連づけて語られることが多いから658のように多相性(多態性)が基準だと言いたくなる気も分からなくはないけど。静的型付け言語か動的型付け言語かはあまり関係ないんじゃないかな。Pythonは動的型付け言語だけど、is-aとhas-aの区別が付かないという人は見たことがないし。コード上明示されているかを基準にするなら、名前的型付けか構造的型付けかの違いの方が影響が大きそう。

is-a, has-aというのは、もともとは部分型関係を分かりやすくis-aと言い換えて、それ以外の諸々を対比的にhas-aという概念に突っ込んだということだと思うけどね。is-aの中で狭義のis-aとcan-doを分けたり、has-aの中でassociationとaggregationとcompositionを観念したりという細分化はあるけど、根っこのところは型システム上の部分型関係の有無でis-aとhas-aを分けるというのが、少なくとも従来の一般的な考え方・用語法だったと思う。なので、インターフェイス継承がhas-aだというのは、従来の一般的な用語法からは外れると思うんだけどね。
2026/08/04(火) 09:57:26.66ID:xm7AKVB/
>>658は多態性を理解できていないためか多態性の極一部のケースを多態性だと勘違いしているからそのような間違った書き込みになっているのだろう
663デフォルトの名無しさん
垢版 |
2026/08/04(火) 10:01:02.01ID:sdLXPmXh
>>661
あなたとの議論は楽しそうだけどねー、いずれまた
664デフォルトの名無しさん
垢版 |
2026/08/04(火) 10:57:06.58ID:qvqCjLT5
こういう抽象論に凝るやつってたいてい
本当にそのシステムにその拡張性が必要か?ってことを全く考慮しないバカなんだよな。
2026/08/04(火) 11:16:37.72ID:mYYmweY0
>>664
そこが重要
インタフェースだけあればクラスは不要という結論がプログラミング言語界で定まった
そのため新規のモダン言語ではクラスはなくなりインタフェースのみになった
もちろんそれら各言語の方針は全く異なる
インタフェースといっても命名のない構造的インタフェース型付けをとる言語もある
2026/08/04(火) 12:02:42.27ID:VaBkcE80
などとis-aとhas-aの区別も出来ないバカが言っており
2026/08/04(火) 19:10:42.09ID:B10jENxf
毎度毎度の「所有権の複製」の流れ
あばれる障碍者の介護のお時間
2026/08/04(火) 19:34:38.47ID:FOhAU+4l
クラス継承はis-a関係だが密結合になる欠陥を持つ
インタフェース継承もis-a関係だが密結合を生まない
だからクラス継承はモダン言語で廃止された
2026/08/04(火) 21:33:54.72ID:fsSMf8oQ
黎明期のOOPは不思議が多い

Invoking Object's clone method on an instance that does not implement the Cloneable interface results in the exception CloneNotSupportedException being thrown.

(日本語)
Cloneableインタフェースを実装しないインスタンスに対してObjectのオブジェクトのcloneメソッドを呼び出すと、例外CloneNotSupportedExceptionがスローされます。
2026/08/04(火) 21:45:52.55ID:aYVJb6Xd
静的型付け言語なら実行前に検出してコンパイルエラーなどに出来そうだが動的型付け言語?
671デフォルトの名無しさん
垢版 |
2026/08/04(火) 22:02:30.42ID:vUOhznv3
最初はJITもなかったし設計上ありでは
これが教材ならあかんけど
2026/08/04(火) 22:09:38.26ID:HV6nfrtS
言語仕様に欠陥があると
例えばここにはCloneableしか来ないと宣言できないパターンや
あるいはここに来るのはCloneableのみと宣言してないのにそのメソッドcloneを使っていてもコンパイルエラーにできないパターンが有り得る
そうすると実行時エラーや実行時例外へ
2026/08/04(火) 22:50:44.98ID:hmGVON1e
Objectはすべてのclassに継承されているし、Objectもcloneできないといけないので、
そうならざるを得なかったのでしょう。
基本的にはsuper.clone()だけで全部やってくれる。
これのExceptionをテストしようとか、coverageを100%にしようとかすると、めんどくさい。
結局、super.clone()をラップして外にだしてmockできるようにした。
2026/08/04(火) 23:17:43.64ID:fsSMf8oQ
親クラスがclone可能なのに派生クラスがclone不可能とかリスコフ姉さんに怒られそう
複製できないフィールド足しちゃったなら仕方ないけど
2026/08/04(火) 23:34:33.18ID:DoD/Y+Fk
>>665
それよく勘違いされますが、実は低級プログラマー界隈でのみ信じられてる間違った言説なんですよ
事実、Google, Apple, Microsoft, Facebookなど上級プログラマーの多い会社では今でもクラス継承がフル活用されていますから
ただ上級プログラマーは低級プログラマーがクラス継承を使いこなせず問題を引き起こすこも熟知していたため、クラス継承を簡単に使わせないようにするためのマイナス面の啓蒙も積極的に行ってきました
それを「銀の弾丸」として勘違いした一部の低級プログラマーが「インターフェースがあればクラスは不要」といった間違った言説を広めていったのかも知れませんね
2026/08/04(火) 23:39:01.86ID:9ju4gPcr
>>675
クラス継承を積極的に使うことはありません
677デフォルトの名無しさん
垢版 |
2026/08/04(火) 23:51:30.91ID:3M2aqqZR
>>675
Googleが作ったGoもクラス継承を排除してるぜ
2026/08/04(火) 23:54:34.64ID:GxoXqRG7
コンポジション、デリゲートで同等のことはできても
継承ですっきり書ける事実もある
おかしくなるのはだいたいが設計や使い方を限定して提示できてない
壊しにくるやつは何をやっても壊しにくるけども
2026/08/05(水) 00:21:23.36ID:0sbTicnL
> Googleが作ったGoもクラス継承を排除してるぜ

こういう、童貞が女の口説き方教えてくれるようなレス多いよな
毎度毎度、聞きかじりの一本やりを振り回すだけなんだけども
680デフォルトの名無しさん
垢版 |
2026/08/05(水) 08:06:36.53ID:1U9S2HDq
フレームワーク側のコードとユーザー側のコードはかなり分かれてるから、
多少重複があっても重複を許した方が開発上コード把握がしやすいって話になる。
継承を最大限利用しようって発想は重複を変に嫌悪するのがそもそもの間違いの始まり。
2026/08/05(水) 09:10:30.23ID:NYuFYqVO
is-a と has-a の区別がつかないようなバカはクラスを使ってはいけない
682デフォルトの名無しさん
垢版 |
2026/08/05(水) 09:37:14.22ID:1U9S2HDq
is-a, has-aとかしょーもない原則だわな。リスコフ置換原則による判断のがよっぽど真っ当だわ
2026/08/05(水) 09:56:08.55ID:gIzU+5Lo
is-a, has-aは、原則ではなく単なる類型化だと思う。is-a関係だからリフコフの置換原則に気をつけようとなるわけで、is-a、has-aの区別はより基本的な部分に位置づけられていると思う。
2026/08/05(水) 10:23:32.08ID:zSmn+YkX
>>683
それは違う
その反例でよく出てくる例
「正方形 is-a 長方形」は正しいが
これをクラス継承で正しくリフコフの置換原則を満たすようすると破綻する
もちろん正解はクラス継承を使わずにインタフェース継承を使おう
2026/08/05(水) 10:57:01.59ID:Lqp3iR9N
>>684
これも低級プログラマーらしい典型的な勘違いだなぁ
リスコフ置換原則を満たせないなら「正方形 is-a 長方形」ではないんだな
2026/08/05(水) 11:00:11.82ID:AJIi08In
クラス継承は内部構造に依存する実装継承なので様々な問題を引き起こすのよ
インタフェース継承を使えば「正方形 is-a 長方形」も扱えて大丈夫ね
687デフォルトの名無しさん
垢版 |
2026/08/05(水) 11:22:27.96ID:5TKy8oas
そもそもクラスをわざわざ継承しなきゃいけない使い道が一つも思い当たらん
2026/08/05(水) 11:42:49.80ID:QAJgOxaA
>>686
>インタフェース継承を使えば「正方形 is-a 長方形」も扱えて大丈夫ね
これまた低級プログラマーらしい?いや複おじ特有の勘違いだなぁ
リスコフ置換原則を満たせないなら「正方形 is-a 長方形」ではないんだから
インタフェース継承を使ったところで「正方形 is-a 長方形」を扱えるわけないじゃん
2026/08/05(水) 11:44:19.16ID:cnlEpeGm
is-a関係というのは部分型関係の単なる言い換えだから、クラス継承だろうがインターフェイス継承だろうが継承すれば型システム上の部分型関係(is-a関係)は成立する。部分型関係であれば、上位型を部分型で代替してもそのことを理由とする「型付け・型検査エラーは」発生しない。
リスコフの置換原則は、(型付け・型検査上の置換可能性よりさらに厳しい)仕様上の置換可能性に焦点を当てた概念であって、たとえば長方形と正方形の例で言えば、「幅と高さに異なる値を取ることができる」という長方形の不変条件を正方形はみたさないから、その不変条件がプログラムにおいて意味を持つ限り、正方形を長方形の部分型とすることは(言語仕様上は可能でも)リスコフの置換原則違反と評価される。リスコフの置換原則違反の状態はis-a関係に期待されがちな意味論をみたさない状態だから、論者によってはリスコフの置換原則をみたすことをもis-a関係の概念に含めることもある(685はおそらくそういう整理)。

こう考えていたのだけれど、違うかな。だから、インターフェイス継承であっても、別途リスコフの置換原則違反でないかはチェックする必要があるし、それが大変だから、できればhas-a関係にしたいねという話だと理解していたんだが。
2026/08/05(水) 11:57:45.29ID:2KYdrJHo
正方形 is 長方形はimmutableなら耐えられるはず
辺を個別に変更する関数があると破綻する
2026/08/05(水) 12:04:26.78ID:CtTuj3KZ
共通の扱いをしたいからそれを各型に継承する
正方形 is-a 長方形の例でも面積など共通の扱いが考えられるだろう
クラス継承は過剰に内部構造まで継承するため上手く扱えない
インタフェース継承は内部構造と独立だから上手く扱える
2026/08/05(水) 14:50:18.14ID:QqJG+xyM
>>691
>インタフェース継承は内部構造と独立だから上手く扱える
こういう「銀の弾丸」思考が典型的低級プログラマーの考え方
2026/08/05(水) 14:57:41.56ID:TbS3tCk3
長方形だけを扱うなら継承でもインターフェースでもいいんだろうけど、
後々三角形とか他の図形が追加されて、正多角形の外角の値とか凹多角形に対して直線が交わる回数とかの処理が必要になった時に困るかもね
2026/08/05(水) 15:23:13.52ID:mqOuu755
>>690
>正方形 is 長方形はimmutableなら耐えられるはず
Selfを返せたり長方形を返すメソッドを正方形を返すメソッドでオーバーライドできたりすると耐えられないと思う
2026/08/05(水) 15:28:42.34ID:QtBLts9E
>>693
常にインタフェース継承を使うといいね
696デフォルトの名無しさん
垢版 |
2026/08/05(水) 19:48:17.40ID:DhWu+3pz
>>693
普通に別の独立したクラス使えば?
もしくは〇角形というクラス一つで済むじゃん
2026/08/06(木) 08:10:51.86ID:SzYEKU/h
>>696
元々長方形だけのつもりで設計されてたシステムに後々「〇角形にも対応しろ」と来るわけだ
四角しか見てない段階でn角形で設計するのは予知能力者
そもそもこれは例え話で実際は「中空長方形に対応しろ」「非ユークリッドの四角形に対応しろ」とか何が来るか分からない
698デフォルトの名無しさん
垢版 |
2026/08/06(木) 08:31:28.82ID:NzVFZZ1n
てか要件定義でなんで3角にこだわるの?って普通言われるだろ
何やりたいのかわからんが、GUI系統の話なら結局四角の領域とってその中に3角描くだけとかやるのが普通だと思うわ。
2026/08/06(木) 09:04:31.59ID:SzYEKU/h
>>698
ごめん言葉を間違えた
三角形の話だけじゃなくて、図形の話自体が例え話なんだと思う
実際に図形の話でGUIの話ならそれで解決できるね
700デフォルトの名無しさん
垢版 |
2026/08/06(木) 09:13:33.69ID:NzVFZZ1n
まあいいけど、オブジェクト指向周りの話が糞担ってた理由の一つとして
そういう実際のコードとかけ離れた極論ばっかり出回りまくったってのがあると思ってるよ。
701デフォルトの名無しさん
垢版 |
2026/08/06(木) 11:28:34.36ID:q3GYSFaK
>>697
だからそれを新たにクラス作ればいいだけだろ
なんでわざわざ継承してまで元のクラスの残骸使おうとスンの?

全部まとめたいなら〇角形のクラスで作り直すべきだぜ
2026/08/06(木) 11:44:38.23ID:z1eXPwSy
そんなもんいちいちクラスにするからややこしくなる一方だよ
703デフォルトの名無しさん
垢版 |
2026/08/06(木) 13:13:48.71ID:NzVFZZ1n
一般に同じものでもレイヤーによって取り扱いなんて異なるからな。
将棋の駒なんてUI上はクラス作るだろうが計算レイヤーじゃ単なるenumかbit操作だわ
704デフォルトの名無しさん
垢版 |
2026/08/06(木) 13:21:54.58ID:cVtYlWEi
何作るにもクラス使っていいが、何しに継承すんだよ?ってことよ
将棋の駒を別々にクラス作ったって構わんが
それをチェスにまで発展させたときにそれを継承なんかしねーだろ?
一から作れよっての
2026/08/06(木) 15:28:22.82ID:3bfmBwGV
駒を継承して歩や金を作るんだぞ
歩を継承して金を作るわけないやん

チェスとコードを共有したい場合があるなら
駒を継承して将棋の駒とチェスの駒を作るんだぞ
2026/08/06(木) 15:38:38.15ID:3bfmBwGV
ただ将棋やチェスのように駒の種類や振る舞いが変化する可能性がほとんどないものをわざわざオブジェクト指向で作ろうとは思わないけどな
2026/08/06(木) 18:07:22.64ID:ShnnMPJM
は!将棋とかチェスをオブジェクト指向で設計すると、なんかおもしろそう。
これはやってみたい。
2026/08/06(木) 19:35:14.43ID:aEe+BJLl
共通機能に対してインタフェースを用意する
各々にそれを実装する
709デフォルトの名無しさん
垢版 |
2026/08/06(木) 19:57:18.97ID:cVtYlWEi
結局オブジェクト指向で何作る?ってことになる
要らんかったんでしょ
2026/08/06(木) 22:11:54.25ID:fWEfOKEw
元々オブジェクト指向自体にはクラスもインタフェースも存在しない
オブジェクトが内部にプロパティを持つカプセル化とメッセージパッシングつまり呼び出せるメソッドを持つことで成り立っている
メソッド呼び出しはオブジェクトの種類ごとに固有で同名メソッドであっても別物なので結果的にポリモーフィズムの一種を形成する
以上がオブジェクト指向
2026/08/06(木) 22:13:42.33ID:fWEfOKEw
いわゆる継承機能を持つクラスは上記の機能に加えて実装継承になるクラス継承機能を加えたもの
実装継承は既に挙げられているように本質的な問題を抱えているため最近はオブジェクト指向言語であってもクラスを採用しない言語が増えた
2026/08/06(木) 22:17:06.40ID:fWEfOKEw
インタフェースは内部実装には踏み込まずにメッセージパッシングのためのメソッド関数のシグネチャだけを統一すること
これにより同じインタフェースを継承していれば異なる型のオブジェクトであっても統一的に呼び出すことができる
インタフェース名による抽象型を用いてプログラムを書くことで特定の型に依存せずにコードの共通化が可能になる
2026/08/06(木) 22:49:32.54ID:o26N+Sd0
小学生用教科書音読するのやめてもろて
2026/08/06(木) 23:00:37.38ID:fWEfOKEw
このインタフェース抽象型を用いた共通コードの関数群は特定の型やその内部実装に依存しない
目的に徹した抽象的なコードになり可読性や保守性にも優れている
そこでインタフェースの定義に付随してその関数群も一緒に提供されることがありデフォルト実装と呼ばれている
共通コードを親クラスに書くとその内部実装に依存して密結合になってしまうがインタフェースのデフォルト実装に書けば疎結合でコードの共通化が可能になる
2026/08/06(木) 23:08:29.03ID:ypLlg2yd
インターフェイスは内部実装に踏み込まないという前提ならコードの共通化には繋がらないのではないかというのが一点。あと、上で挙げられていた長方形と正方形の例みたいな問題はインターフェイスの継承だからといって回避できるわけではないよねというのがもう一点。
インターフェイスの継承は広い範囲で使える手法だけど、決して万能というわけではないよね。

>>714
デフォルト実装なら疎結合という理屈はよくわからないな。継承先のクラスでそのコードを呼び出すのなら通常のクラス継承と変わらないのでは。
2026/08/06(木) 23:27:01.10ID:fWEfOKEw
>>715
まずコードの共通化とは異なる型同士で行われる
クラスを用いたコードの共通化はクラス継承で行えるが内部実装も継承してしまうため密結合になる
インタフェースを用いたコードの共通化はデフォルト実装などで行われるが特定の型に一切依存せず内部実装と無関係なので疎結合になる
密結合より疎結合が好ましいため後者の方法でのコードの共通化が好まれるようになった
特に複数のインタフェースを継承する型同士のコードの共通化は各インタフェースのメソッド全てを利用できるため万能でありつつ疎結合である
2026/08/06(木) 23:57:42.62ID:ShnnMPJM
BUGとか設計がバカな以外で、密結合が問題おこしたことってあるのかねぇ。
たしかに中途半端な素人プログラマがとんでもないコードを書くことはあるけど。
それはインターフェースだとかなんとかいっても回避できないし。
718デフォルトの名無しさん
垢版 |
2026/08/07(金) 00:14:34.07ID:VqWA3aKV
インタフェースを用いたコードの共通化は
・型の内部構造に依存せずに実現できる
・つまり共通の内部構造を持たない型同士もコードの共通化ができる
・コードが抽象化されて読み書きもメンテナンスもしやすくなる
・インタフェースを多重継承した型同士に対して多機能なコードの共通化もできる
これらの裏返しがクラス継承を用いる場合の欠点
2026/08/07(金) 00:15:46.65ID:CvabndPC
javaのabstract classなんかはフツーに有用よ
継承によって実装を再利用するのなんかありきたりだし
何の問題もなく納品まで行くよ
だいたいjavaの標準ライブラリにAbstractXxxxってクラスどんだけあると思ってんだ
720デフォルトの名無しさん
垢版 |
2026/08/07(金) 00:24:04.32ID:7w0/kkuA
標準のライブラリは非互換になっても嫌だから
説明外の使い方しないよう気をつけるのに
プロジェクトが用意したクラスは
なんであんな壊しにくるんだろうかと考えると
ドキュメンテーションが整備できてないから?
2026/08/07(金) 00:26:19.07ID:eKQ3CelP
>717
あるって言えばある
元々継承された事など考えてない局所的運用のつもりで作ったクラスが
知らんうちにいろいろ機能付け足されていてそうなった
だからsealed classってのが必要になったんだなと思ったw
2026/08/07(金) 00:29:09.04ID:pUMSIAhd
インターフェイス・抽象クラスは実装を持たない以上、派生先が実装に依存するということも生じ得ず、したがって疎結合になるーーというのならまだ分かる。しかし、インターフェイス・抽象クラスのデフォルト実装に派生先が依存しているにもかかわらず、それは疎結合だというのはおかしいんじゃないかなぁ。その理屈だとmixin的なクラスからの継承なら疎結合ということになりそうだけど、そういう線引き?

>>717
密結合が絶対にいけないものだとは別に思わないけど、仕様の追加・変更等があったときの影響範囲が広くなってしまいがちだから、どちらでも構わないなら疎結合にしておきたいくらいのスタンスの人が多いのでは。
2026/08/07(金) 00:47:07.52ID:Sfi7rrxO
一般的に抽象クラスとインタフェースは、どちらも抽象メソッドと具象メソッドを用ち、具象メソッドに共通コードを書き、抽象メソッドは継承した側が独自のコードを書く点で同じ。
違いは、抽象クラスが共通プロパティとして変数を持てる点で、そこが同じ内部構造になるため密結合になる点と、それゆえ多重継承できないもしくは問題を抱える点が異なる。
ちなみに共通プロパティを各々の用途で必要な形でアクセスする抽象メソッドへ置き換えることで、共通プロパティをなくして抽象クラスをインタフェースへ同機能のまま置き換えることができる。
したがって一般的には抽象クラスを廃止することができる。
クラスや抽象クラスを持たない言語でも共通コード化が支障なく行なえているのはこのため。
2026/08/07(金) 00:52:58.43ID:CvabndPC
キミ一人だけ教科書読みながらレスしてない?
無理矢理話に入ってこなくていいんよ経験ないんなら
2026/08/07(金) 01:05:33.02ID:vTI6cbxd
>>723
その認識、実を言うと継承を使いこなせない低級プログラマーにありがちな勘違いなんです!
抽象クラスをデフォルト実装を伴うインターフェースに置き換えたからといって問題は自動的に解消されません
抽象クラスを設計する際と同じ注意が必要です
2026/08/07(金) 01:08:10.91ID:vwx5Yjb7
>>722
インタフェースを利用するAさんとBさんとCさんがいたとしても互いに疎結合になるのはわかるよね?
その時にインタフェースを用いてよく使われる共通処理があったとしてそれを関数化してライブラリにしたとしても状況は変わらないよね?
だってその共通ライブラリはAさんとBさんとCさんの内部実装のいずれにも依存していない
つまり疎結合のまま変わっていない
その共通ライブラリをインタフェースのデフォルト実装としても状況は変わらず疎結合のままなんだよ
2026/08/07(金) 01:39:22.17ID:Un55LN2Z
>>725
共通する内部構造を持つ抽象クラスを持たないインタフェースに置き換えると内部構造が異なる型の間でもコードの共通化ができるようになる点で優れているのよ
2026/08/07(金) 02:50:17.21ID:U/67iL3L
interfaceとextendsでは目的が違いますしね。
defaultで(抽象的)実装の継承が可能になったけど、目的が異なれば代替にはならない。
extendsでしかできないことはextendsを使う。
interfaceの問題は、ArrayListをListで受けてほしいのにListを使ってくれないやつが多い。
newが一番の問題かもしれない。コンストラクタは可能な限り隠ぺいするようにしてる。
2026/08/07(金) 03:19:58.61ID:AM0eFUAQ
>>728
それはJavaやライブラリの仕様の問題よ
730デフォルトの名無しさん
垢版 |
2026/08/07(金) 06:26:08.78ID:RQgCXCUQ
言語の自由度を減らせば減らすほど、言語が無能化低速化していく
2026/08/07(金) 08:10:18.85ID:n4dYaKzH
>>728
目的は同じ
Javaが変で不便なだけ
2026/08/07(金) 09:06:22.97ID:rdE+Gqi9
同じように見えるデフォルト実装を含むインターフェースの継承でも
Goでは発生しないがRustやJavaでは発生する問題というのもある
それを避けるために必要な知識は結局のところクラス継承の適切な使い方と同じ知識
2026/08/07(金) 09:25:32.08ID:HrHq5Wpj
共通する知識は当然あるが
実装継承による問題を全て回避できるインタフェース継承がオススメ
2026/08/07(金) 09:44:58.88ID:Uht+oJcm
インターフェイス継承は疎結合でクラス継承は密結合というお題目で意識されているのは、親子クラス間の結合性であって、子クラス同士の結合性ではないはずだが。なので、>>726はかなり的外れなことを書いている。

デフォルト実装を持つインターフェイスからの継承も疎結合だというなら、mixin的なクラスからの継承も疎結合ということになる。というか、デフォルト実装の人の主張を一般的な用語に置き換えて翻訳すると、「mixin的なクラスを含む形でインターフェイスの概念を拡張し、かつ、その場合は疎結合と呼ぶことにしよう」ということになる。継承を使うときの設計方針としては別に間違った内容ではないから、あとはインターフェイスや疎結合の概念規定をそのように拡張(希薄化)することの是非よね。個人的にはかなり違和感があるが。
735デフォルトの名無しさん
垢版 |
2026/08/07(金) 10:42:50.98ID:7dWaDfSl
>>733
実装継承による問題を全て教えてくれ
何を解決できるのか全くわからん
2026/08/07(金) 22:37:29.54ID:U/67iL3L
Why extends is evil の例では、実装継承の問題ではなく、ただのBUGを騒ぎ立てているだけだった。
しかもそれに続く解決策はさらに問題を増やしているだけでなにも解決しておらず、
どんどん劣化していく悲しいプログラムであった。
2026/08/07(金) 23:45:46.15ID:tO1xNKB7
>>734
クラス継承は子孫ピラミッド全体が同じ内部構造を共有するから密結合と言われているのでしょ
インタフェース継承は共有する内部構造がないから疎結合と言われているのでしょ
738デフォルトの名無しさん
垢版 |
2026/08/08(土) 10:02:43.53ID:oprPEGXD
>>730
お前はアセンブラ使ってろ
2026/08/08(土) 10:07:56.91ID:spTYGRdW
>>737
全然違う。結合度というのは依存関係に関する概念であって、構造が同じかどうかを指す概念ではない。子クラスは親クラスに依存しているから親子クラスの結合は相対的に密といえるが、子クラス同士の間には直接の依存関係がないから密結合とは言わない。同じ親クラスに依存するという点を指して広く密結合と表現する場合もないわけではないが、それはあくまで比喩的表現にすぎない。
デフォルト実装は「内部」構造ではないという整理にしたいのかもしれないが、子クラスからデフォルト実装をよべばそこに依存関係は生じるわけで、その点は密結合の問題と呼ばれるものと本質的に変わらない。

「インターフェイス継承はクラス継承より疎結合になりやすい」というお題目自体は間違っていないが、本質的な点が理解できていないので、そのお題目の根拠として主張している内容はすべておかしい。
2026/08/08(土) 11:27:30.58ID:7ubHOiIT
>>739
それは全然違うよ
インタフェースのデフォルト実装は特定の具象型に依存しない形で書かれている
つまりインタフェースを満たす限りどんな具象型が来ても動作する抽象的なコードのみが書かれてます
この点でクラス継承のコードとは根本的に異なっていて抽象化に成功したデフォルト実装が非常に優れているんだよ
2026/08/08(土) 11:43:21.98ID:Kbew53D8
>>740
違う
742デフォルトの名無しさん
垢版 |
2026/08/08(土) 12:08:52.29ID:P6fLsnJV
>>740
インタフェースさえ守っていれば内部構成が全く異なる型を後から作っても正しく動作するもんな
デフォルト実装はプログラミングにおけるコード共通化の最善解
2026/08/08(土) 13:01:49.87ID:+EuIu3YL
>>739
おおー、珍しくまともな人

複おじ(>>737, >>740-742)はもうちょっと基礎を学んでから
ペラい受け売りじゃなくて自分の頭を使えよ
2026/08/08(土) 13:07:04.61ID:frHhNa93
そこがクラス継承が使われなくなった理由だもんな
古い言語や古いフレームワークは仕方ないが
2026/08/08(土) 13:10:44.79ID:6a6ImxRY
defaultによる抽象実装が便利なのだが、
extendsをinterfaceにも使用するのでextendsはなくならない。
evilを唱えるプログラマがいる限り、まともな設計も望めない。
2026/08/08(土) 13:28:56.58ID:8mOEFJbx
劣ったクラス継承をなくして必要なことを代替できるようになった点がデカいよね
747デフォルトの名無しさん
垢版 |
2026/08/08(土) 13:32:00.80ID:9m56rqSa
議論がぜんぜん深まらないなw
2026/08/08(土) 14:45:31.88ID:CJefRDfr
みんなど素人に毛が生えたか生えないかのレベルだから
思い込みの主張も多いし
2026/08/08(土) 14:46:30.42ID:lplOXTlj
思い込み連呼系障碍者と、それを介護する人々っていういつもの風景だから
2026/08/08(土) 14:53:10.50ID:CJefRDfr
明確な理論や客観的な判断基準のない曖昧な論点が多いしな
つい見た目や印象(俺にとっていい感じ)便利そうという個人的印象に左右されるし

継承なんて昔は差分プログラミングで規模抑制できるって言ってもてはやされたんだぜ
視認性の悪さはオブジェクト指向の理解が足りないって避難されたし
カプセル化も概念が分かりやすい分変な流布の仕方して弊害あるし
2026/08/08(土) 15:00:21.56ID:CJefRDfr
エンタープライズなオブジェクト指向がもてはやされていた頃かかれたコードを振り返ってみると目も当てられない
あれ誰がメンテするんだろうな、目が潰れる
しかも短期間入場した外注が後先考えずクラスと継承を駆使して書き散らかしてすぐ居なくなったり
2026/08/08(土) 15:11:06.44ID:lplOXTlj
まあね
それなんよな実際は
継承だの疎結合密結合だの言う以前に
一個の単体のクラスですでに立派なクソになっているのが事実

何を関数化するのか?と同様に
何をクラス化するのか?もまたセンスとか知性が問われる

結局ね、そこなんよOOPの問題は
クラスがどうだの
密結合がどうだの言う前に
単に単なる一世代のクラス設計で大幅に狂いうるんよ

ウルトラウンコエンタープライズクラスがいきなりやってくるんよ
銀の弾丸の逆概念、すべてを飲み込む魔の物、それがいきなり大の字になって寝転がってるんよ
2026/08/08(土) 15:32:04.58ID:CJefRDfr
まずIDE立ち上げて
Class:
とコーディングする。

変数が必要になったらinstance 変数menberを都度増やし、結果結構多数つくる

一応安全のためアクセス権をチマチマ設定してカプセル化する(依存が変化したときどうメンテするかは深く考えない

処理はメソッドとして記述し外部から呼んでいるものはpublicにしとく(どれが外から必要/不要になるかは設計が進むに応じ都度直す)
いくつかのClass間で似たようなインスタンス変数やメソッドがあることに気が付いたら基底クラスを新設し、継承により定義を共有する。

内部であるいは外部から参照するinstance変数やmethodのscopeはネストした階層的で明確なscopeとはならず
extent独立に存在する外部的・共有変数・状態変数のようにアクセスし、method 呼び出しと合わせて依存がプログラム全体の中で網の目にように入り組んで飛び交う

用もないのにnewでインスタンスを生成し動的プログラミングをしたと悦に入る

継承はクラス定義のクロスファイル依存になりマルでファイル間でgotoのように定義が飛ぶしし
初期コーディングは夢中で定義を増設して何とか書いたけど、分かりにくいバグが入ったし
今後拡張やメンテはどうなるかしったこっちゃない
2026/08/08(土) 15:37:30.48ID:CJefRDfr
ついでに多態でまさかと思うようなこった演算子オーバーロードしてみる
2026/08/08(土) 16:12:58.53ID:CJefRDfr
クラスがまるで依存のハブのような役目をしてしまう
756デフォルトの名無しさん
垢版 |
2026/08/08(土) 17:57:48.31ID:hFBRlxVN
データベース使えば足りるし
757デフォルトの名無しさん
垢版 |
2026/08/08(土) 19:10:24.81ID:9m56rqSa
>>756
テーブルのカラム数が1000になっちゃいそう
2026/08/08(土) 19:42:26.95ID:XumPC71+
コードの共通化ができればいいんだよ
同じ機能を持つオブジェクトに対してなら
「違う型でも気にせず同じメソッドで呼び出せる」
これだけ
クラスはオーバースペックで要らん
2026/08/08(土) 21:00:40.27ID:/I0tii2j
c++の悪夢再びかよ
俺様テンプレートなんて御免被りたい
2026/08/08(土) 21:19:57.82ID:uA0cyR7l
クラスはオーバースペックではなく、悪い機能を持ち、良い機能が足りない。
メソッドはインタフェースだけあれば事足りる。
2026/08/08(土) 21:42:06.28ID:zuxBxE4n
経験ないのに無理に話に入ってこなくていいんだよ
762デフォルトの名無しさん
垢版 |
2026/08/08(土) 21:57:28.35ID:P6fLsnJV
クラスを持たない言語が増えて健全化が進んでいるもんな
クラス不採用がプログラミング言語の最善解
763デフォルトの名無しさん
垢版 |
2026/08/08(土) 22:38:17.18ID:oprPEGXD
クラス使わなくても代わりにクロージャ使うわけで、別にどっちでも問題起こすやつは変わらんけどな。
764デフォルトの名無しさん
垢版 |
2026/08/08(土) 23:03:27.44ID:8KyDn8ze
>>763
クロージャは言語によって仕様の差が大きすぎるためそのクラスとの関係でどれを言おうとしてるのか曖昧すぎる
例えばクロージャが変数を参照キャプチャする場合は共有問題になる
765デフォルトの名無しさん
垢版 |
2026/08/08(土) 23:07:08.14ID:oprPEGXD
クラスも似た程度には違いがあるだろ
それでクラスガー言ってるやつはクロージャならもっというだろって話だわな。
766デフォルトの名無しさん
垢版 |
2026/08/08(土) 23:14:58.88ID:57YxgqSa
クロージャをクラス代わりに使おうとしてもメソッド1つしかなくて何をしたいのかわからん
767デフォルトの名無しさん
垢版 |
2026/08/08(土) 23:19:34.25ID:T5ezkG+5
クラス継承がない点では優れてるかもな
2026/08/08(土) 23:29:29.38ID:imUIN2v0
クロージャの引数に別のクロージャを与えるんだよ
キャプチャした変数の参照をその別のクロージャの引数として与えれば任意の操作ができて無限のメソッドを持ったのと同じ
クラスと比べて足りないのはクラス継承だがこれは要らないだろう
2026/08/09(日) 00:01:30.05ID:JT9ZId2N
>>758
違う型でも気にせず同じメソッドで呼び出せれば
コードが共通化できてることになるんだ?
2026/08/09(日) 00:02:48.24ID:JT9ZId2N
てか「コードの共通化」って何?
771デフォルトの名無しさん
垢版 |
2026/08/09(日) 00:06:16.10ID:gdR+8y5b
オブジェクト指向はカプセル化だけでいい。
継承や多態性は複雑さをもたらすだけ
2026/08/09(日) 00:10:58.62ID:vvVnqz6j
クラスベースオブジェクト指向は実はぴったり合う用途が結構少なく
結局、変数の寄せ集め的に使われがち
2026/08/09(日) 01:02:00.85ID:jPvgDPIE
>>771
>>772
それ構造体で十分だろ
2026/08/09(日) 02:17:01.77ID:WNzqdyeu
オブジェクト指向はオブジェクトを扱うが、
オブジェクトは関係性の集まりである。
集まりを扱うことになるが、集まりは関係性のことなので、
オブジェクト指向は関係性(≒射)しか扱っていない。
圏論的オブジェクト指向はそうなる。
実装論は別問題だ。
モナド則がチューリングマシンに似ているので、実装論はモナド則を使うことなるだろう。
モナド則は、左単位律・右単位律・結合律からなる。
2026/08/09(日) 02:19:23.91ID:WNzqdyeu
とりあえず、お盆休みはjava上で圏論的オブジェクト指向の実装を実験するつもり。
2026/08/09(日) 07:20:20.11ID:sXG6VIk6
>>775
それなら少なくともクラス依存でない言語でやれよ
2026/08/09(日) 09:28:53.98ID:gOhRk29T
>>771
カプセル化のみなら内部プライベートな構造体で十分だよな
メソッド受け付けるためにインタフェースだけは欲しい
自分専用インタフェースと共有インタフェース
2026/08/09(日) 11:18:25.45ID:I/6SIwVU
「構造体 + メソッド = クラス」
2026/08/09(日) 11:27:23.27ID:M5hCU3ys
>>778
本質的なものが足りない
2026/08/09(日) 11:58:00.12ID:XjKMTRVK
一番大事なのは不変条件だと思うけどね。不変条件を維持する必要があるもの=オブジェクトというイメージ。そして不変条件を維持するための方法論としていろいろなアプローチが発案されていて、その優劣が比較検討されているということだと思っているけど。
カプセル化なんかはかなり広い場面で有用な優れたアプローチと考えられる。最近は型システムの力を借りるという方向性が有力な感じなのかなと思っているけど。
2026/08/09(日) 12:09:07.35ID:M5hCU3ys
どんだけ的はずれなんだよ
2026/08/09(日) 12:10:09.54ID:M5hCU3ys
近年まれに見るとんちんかんなオレオレオブジェクト指向だな
脳に障害でもあるのかな
783デフォルトの名無しさん
垢版 |
2026/08/09(日) 13:08:41.11ID:xE5u1KOD
>>780
オレもこっち側
マイナーなのは自覚あるけどAKやErlangに囚われてる
2026/08/09(日) 13:36:16.16ID:XjKMTRVK
オブジェクト指向を不変条件の観点から捉えるというのは少なくとも現在有力な考え方の一つではあると思うし、そんなに突飛なことを書いたつもりはないんだけどな。

個人的にはオブジェクト指向についてはC++的なそれ(カプセル化・継承・多相性)よりもアラン・ケイ流のメッセージ・パッシングのイメージの方に親近感を覚えるが、メッセージ・パッシングというのは各オブジェクトの自律性を前提とするモデルであり、各オブジェクトの自律性はその不変条件によって規定される。構造体とそれにアクセスする関数の組み合わせとオブジェクトとを区別する基準は、オブジェクトはそのライフタイムを通じて自らの不変条件を維持しなければならないという点に求めることができ、だからこそコンストラクタ/イニシャライザ、あるいはそのような位置付けの関数が重視される。カプセル化は不変条件を維持するための最も主要な手法ではあるが、あくまでも手段的な位置付けであって、カプセル化によらずに不変条件を維持できる場合には必要ない場合もありうる。
要は、オブジェクトの自律性の拠り所を何に求めるかという話だと思うんだが。
2026/08/09(日) 14:12:22.72ID:M5hCU3ys
構造体メンバやプロパティーのアクセス修飾と同等で
オブジェクト指向の要件とは異なる
2026/08/09(日) 14:45:19.32ID:SJycK8D5
不変条件とかメジャーライブラリしか使うなって言ってるのと同じだから
2026/08/09(日) 16:28:49.58ID:XjKMTRVK
要件という位置付けにするかどうかはどうでもいいが、不変条件の概念とライブラリの間に何の関係が?
788デフォルトの名無しさん
垢版 |
2026/08/09(日) 17:21:48.45ID:9hJYqNd/
PLCの世界だと周辺機器とのやり取りや、ほかのプログラムともやり取りは
窓口となる決まったアドレス空間使って、そこのデータの読み書きで済ます

ま、処理上はそれが当たり前だけど、その仕組みを言語でいちいち記述してやってくってのは
間違ったポリコレの流れと同じように見える
2026/08/09(日) 17:41:47.30ID:FqPFsPYJ
>>777
つまり抽象データ型と同じだよな
データの内部構造は公開されずインタフェースのみ公開される
2026/08/09(日) 17:47:26.34ID:M5hCU3ys
>>789
なんでデータ構造を「抽象」などと大げさに呼ぶのかね
2026/08/09(日) 17:55:36.49ID:L0f9FpTb
>>790
ADTすら知らんやつをオブジェクト指向スレで発見
2026/08/09(日) 18:10:11.39ID:M5hCU3ys
内部データや変数を外からは見せず関数や操作を外部に見せたら
なにをどう抽象化しているの?
プログラミングで一般的な局所化のセオリーとどう違うの?
2026/08/09(日) 18:11:50.01ID:M5hCU3ys
抽象化と仰々しく呼んでいるけど、
特に何も抽象化などしていないよ
2026/08/09(日) 18:21:12.47ID:Y95hzy9u
>>792
そのデータ型の内部構成や実装を隠蔽できるという最高のメリットがあるから抽象データ型と呼ばれている
2026/08/09(日) 18:24:19.62ID:M5hCU3ys
普通プログラミングでは外に見せる必要のない物は外から隠ぺいするだろw
だから何でそれが抽象なのよって聞いてるのに
796デフォルトの名無しさん
垢版 |
2026/08/09(日) 18:46:45.73ID:mo5KyAgN
>>771
多様性なくしてハンドラーやプラグインの必要なシステムをどう扱うんだって話になるがな。
まあ関数ポインタ直渡しでも、クロージャーでもいいけど
それがクラス使うより圧倒的にいいとかは全く思わんけどな。
クラスがそれほど必要かと言われるとまあ何とも言えんけど、じゃあクラス無くすことが正統進化!とか言われるとそれも言い過ぎにしか思えん。
797デフォルトの名無しさん
垢版 |
2026/08/09(日) 18:49:31.46ID:Bu5ams9x
例えばハッシュマップは抽象データ型
様々なアルゴリズムと内部構成が考えられる
実際に環境ごとに異なっている
同じ環境でも改善アルゴリズムに更新されることもある
つまり現実のデータ型は様々でバラバラだ

それにも関わらず
利用する側は気にせずに利用できる
インタフェースは定まっているからだ
現実のデータ型は様々バラバラだが抽象データ型としては定まっている
ゆえに抽象データ型として存在している
2026/08/09(日) 18:55:41.83ID:M5hCU3ys
プログラムでは、下位階層のサブルーチンまたは関数で詳細なデータ構造や具体的な処理を実装し、
それを参照する上位のルーチンや関数では、アプリケーションレイヤに近づけた上位階層の機能・データ構造を実現しあたかも抽象度を上げていく。
その時下位階層から上位階層に見せるべきでないデータ構造や関数機能は隠ぺいし外部インターフェースのみを上に提供する。

オブジェクト指向において、オブジェクトとはある意味データ型であるが、その具体的なデータ構造や内部処理は隠ぺいし、
外部からデータ構造に対して行うべき処理や機能(メソッド)の外部インターフェースを上位階層に提供し、
その階層を重ね抽象度を上げるようにしてアプリレイヤの機能を実現する

なぜそう言えないのアホンダラ
2026/08/09(日) 18:58:43.21ID:M5hCU3ys
オツムが抽象的な思考に向ていないんだよ。
それはつまりソフトウエアの素養もないってことなんだよ
だからインチキオブジェクト指向のまやかしにコロッと騙されて
今でも信じて変なクソコード書いてんだよ
2026/08/09(日) 19:01:47.44ID:M5hCU3ys
まあ >>798 は理想に過ぎないがな
2026/08/09(日) 19:02:13.80ID:Ef6yeDFk
的ハズレだな
ハッシュマップは抽象データ型であるがオブジェクト指向でない言語にも存在していてオブジェクト指向とは無関係
抽象データ型(ADT)はオブジェクト指向とは独立して成立する重要概念
2026/08/09(日) 19:05:27.69ID:M5hCU3ys
ん?俺に言ってるのか?アンカー不明
2026/08/09(日) 19:30:27.94ID:mqnuDqgr
抽象データ型を知らなかった理解できなかった>>790はID:M5hCU3ys
804デフォルトの名無しさん
垢版 |
2026/08/09(日) 19:36:55.00ID:AbDa2BM7
お前らw

ハッシュマップはハッシュを使うと具体的に言っちゃってるからどう考えてもデータ構造だ、抽象データ型はマップやディクショナリ、連想配列と言われるものだ
805デフォルトの名無しさん
垢版 |
2026/08/09(日) 19:42:56.18ID:AbDa2BM7
>>801
オブジェクト指向でない言語にも存在していたらオブジェクト指向とは無関係になるロジックがわからん
お前の言葉を借りるならオブジェクト指向はオブジェクト指向言語とは独立して成立する重要概念
と言えるのではないかな
2026/08/09(日) 19:43:06.75ID:913d68PH
ハッシュマップもデータ構造のバリエーション多い
2026/08/09(日) 19:51:10.69ID:KYy+D1W+
>>804
具体的に言うことと抽象データ型は関係なし
抽象データ型の例として挙げられる有理数は二つの整数で構成されると具体的になっているが抽象データ型とされている
808デフォルトの名無しさん
垢版 |
2026/08/09(日) 19:59:07.11ID:AbDa2BM7
>>806
オープンアドレス法とかチェイン法とかの話かな?
それらはデータ構造よりも細かい実装方法の違いだからアルゴリズムだね

抽象データ型 : 連想配列 → データ構造 : ハッシュマップ → アルゴリズム : オープンアドレス法
809デフォルトの名無しさん
垢版 |
2026/08/09(日) 20:10:38.83ID:xE5u1KOD
>>808
まちがってはいないけど言葉に囚われすぎてる
データ構造やアルゴリズムとの境界とか
1論文の中で定義する分には勝手だけどそんな狭義はない
2026/08/09(日) 20:14:09.16ID:XjKMTRVK
有理数自体は抽象データ型としても具象データ型としても定義できるけど、可能な操作・インターフェイスから定義すれば抽象データ型になるということでは。

ADTって書き方だと、抽象データ型のことか代数的データ型のことか紛らわしくない? 文脈でわかると言われればそれまでだけど。
811デフォルトの名無しさん
垢版 |
2026/08/09(日) 20:21:54.07ID:AbDa2BM7
有理数は数学の概念だからね
抽象データ型がふさわしい

ハッシュ関数を使ってハッシュ有理数を作ったらそれはデータ構造と呼んで良い、俺が許す
2026/08/09(日) 20:30:52.56ID:N9AdAIBx
>>810
代数的データ型をちゃんと持つ言語はいいけど
代数的データ型を持たない言語と
代数的データ型らしきものを持つけど間違えてクラスで作ってしまって使いにくい言語があるよな
2026/08/09(日) 21:01:56.79ID:qyYMDvhq
JavaやC#はクラス中心主義だから代数的データ型もクラスベースだね
記述量が大量になってしまうけど
814デフォルトの名無しさん
垢版 |
2026/08/09(日) 21:18:18.14ID:AbDa2BM7
昔はオブジェクト指向でinstanceofやキャストを使うのは設計の敗北と
言われてたけど、代数的データ型に比べるとオブジェクト指向の多態性はカスや
815デフォルトの名無しさん
垢版 |
2026/08/09(日) 21:48:27.10ID:aXENBOdb
代数的データ型の使用によって意味する表現が直感的にわかりやすくなった
そのパターンマッチングの使用によって従来の複雑で見にくかった比較コードの可読性が飛躍的に向上した
2026/08/09(日) 22:41:09.59ID:J2RxAYiI
俺は頻繁に複数の言語を使うけど
パターンマッチングだけは無理ゲー
覚えられないし、頭切り替えられない
2026/08/09(日) 22:46:41.02ID:FMP/XAfw
パターンマッチングは最も分かりやすい方法
他に分かりやすい方法はない
2026/08/09(日) 22:52:51.20ID:J2RxAYiI
言語間の他の構文の差異はなんとかなるけど
パターンマッチングの部分は大統一構文にしてくれんと無理
手とまりまくるし、毎回構文調べるハメになっててしんどい
819デフォルトの名無しさん
垢版 |
2026/08/10(月) 05:29:16.67ID:g+Ufn7k3
地獄のミサワかと思った
820デフォルトの名無しさん
垢版 |
2026/08/10(月) 08:39:03.25ID:6I1q9E5W
パターンマッチと多様性による拡張は全く別の話だろ?何で混じってんだ?
パターンマッチってヌルチェック分が減るくらいのメリットしか感じないが。
2026/08/10(月) 08:58:57.15ID:xmY1J7+P
>>820
どんな貧弱なパターンマッチングしか持たない言語を使ってるんだい?
822デフォルトの名無しさん
垢版 |
2026/08/10(月) 09:22:40.33ID:c8HagdVl
>>820
パターンマッチングは代数的データ型だけでなくタプルやリストから構造体やクラスの分解まであらゆるもので行われるよ
分岐だけでなく代入や引数受け取りなどあらゆる箇所で使われるね
パターンマッチングをちゃんと知らないのか駄目な言語しか知らないのかどちらかだよ
823デフォルトの名無しさん
垢版 |
2026/08/10(月) 10:14:28.76ID:6I1q9E5W
>>821
>>822
それくらいは普通にやってるけど、だから何?って話にしか思えんが。
こんなのをなぜそこまでありがたがってるのか全く意味不明。
結局上にあげた変なメンバーアクセスをなくすってことくらいしか意味ないがな。

まあこういうしょーもないシンタックスにこだわるばかはそろそろ滅亡だろうね
824デフォルトの名無しさん
垢版 |
2026/08/10(月) 10:30:38.60ID:OJYaBrhY
無知の知
なかなかないがリアルでも複数人から指摘があったら
いったん立ち止まったほうがいいよ
2026/08/10(月) 10:33:54.21ID:SxBlpbRs
>>823
可読性や保守性がまるで違ってくるぞ
ifとgotoがあればwhileもforも不要か??
そこまでいかなくてもswitchやmatch文は不要か?
826デフォルトの名無しさん
垢版 |
2026/08/10(月) 10:46:45.54ID:6C58QZXi
パターンマッチングって数学で済むでしょ
言語に頼らない手法でプログラムすりゃ終わり
827デフォルトの名無しさん
垢版 |
2026/08/10(月) 10:49:21.98ID:gyxAyv7i
まっちんぐマチコ先生
828デフォルトの名無しさん
垢版 |
2026/08/10(月) 11:14:59.84ID:g+Ufn7k3
>>827
おいこいつだ、連れて行け
829デフォルトの名無しさん
垢版 |
2026/08/10(月) 11:17:34.92ID:g+Ufn7k3
>>826
お薬は飲んだのか?
2026/08/10(月) 11:17:51.58ID:5L0sF5Lh
代数的データ型含めた型による分岐はオブジェクト指向的ではないからな
そういうのを使わない場合はパターンマッチングって分岐のネストが1つ減らせるくらいの認識で間違ってないよ
デストラクチャリングくらいなら今はどの言語でもほぼ不自由無くできるようになってるからね
2026/08/10(月) 11:19:35.55ID:IJpWneca
イテレータなどのメソッドのチェーン記法に対しても
しょうもないシンタックスにこだわるなと言い出す人から難しくてわからんと言い出す人までいるからね
抽象度が上がることに無関心な人とついていけない人
2026/08/10(月) 11:26:35.56ID:aEysYjjF
構造的パターンマッチングが強力な言語というと、OCamlとかHaskellとかScalaとかRustとかのイメージかな。あまりよくは知らないが。
自分はPythonがほとんどなので、match文は結構頑張っているとは思うんだけど、後付けの悲しさというのはちょっと感じてしまうな。
2026/08/10(月) 13:01:57.83ID:UlMDA3mw
例えて言うならwhileループしかない言語を使っていた人がforループのある言語を使ってforループってすげぇんだぞすげぇんだぞって言いふらしてるのを見てる感覚

こういう場合は「ふふ、そうだね、便利だよね」と同意するに限る
2026/08/10(月) 13:42:59.99ID:Qgth9NBt
言語によってパターンマッチングの対応に差がありすぎるんだよな
マッチ構文でしか使えない言語
変数に値が入って来る所全てでパターンマッチングできる言語
プログラミングの半分はパターンマッチングになる
だから印象に差が出るわけだ
2026/08/10(月) 17:24:47.96ID:tTkWr3IH
んなもんDBの役割sql書け
2026/08/10(月) 18:47:26.51ID:Lvv/Ghlb
ふふ、そうだね、DB便利だよね
2026/08/10(月) 18:52:18.32ID:w/FafCdL
トランザクションもなしにDBとな!?
2026/08/10(月) 19:30:33.57ID:rQq0mL7U
>>835
パターンマッチングが何なのか理解してなくて草
2026/08/10(月) 20:05:01.41ID:8E9eSdss
SQLでのパターンマッチングはワイルドカードや正規表現を使って文字列が対象
プログラミング言語でのパターンマッチングは言語が扱う様々な構造が対象
代わりにならないね
2026/08/10(月) 20:21:23.14ID:nsaXa9+H
> OCamlとかHaskellとかScalaとかRustとか

Rustだけ弱くて草
841デフォルトの名無しさん
垢版 |
2026/08/10(月) 20:29:48.74ID:OJYaBrhY
適用範囲や記述量でみたらScalaもたいがいよ
静的に解決できる分Rustのが健全で強い
2026/08/11(火) 08:36:21.13ID:RFQ5dWjp
圏論的オブジェクト指向の実装論を考えてみて、
コンテキストの問題が浮上した。
オブジェクト指向で、どーしよーもないプログラムが書かれてしまうのは、
コンテキストをきちんと把握できていないからではないかと考える。
コンテキストを「場」と考えるならば、場の量子論的な、場のオブジェクト指向が必要だろう。
javaだけみても、module,package,class,instance,method(classとinstanceにある)は、場だ。
2026/08/11(火) 08:58:21.81ID:RFQ5dWjp
場のオブジェクト指向。interfaceを演算子にみたててみようかと思う。これは関手だよね。
2026/08/11(火) 09:08:40.52ID:tHxEKinL
動くものができたら、また来てね。
2026/08/11(火) 09:19:00.36ID:rJPEdwaw
スゲー妄想だな、ソフトウエアは実際には作れなさそうな人
2026/08/11(火) 09:25:56.80ID:QVjJhsr4
いやまぁ、ちゃんと動くものが出てくるなら評価するにやぶさかではないよ。圏論とかよく知らないから、それっぽい用語を雰囲気で使っているだけの人なのか、ちゃんとした理論的なバックグラウンドがある主張をこちらが理解できていないだけなのか区別つかんのよね。
2026/08/11(火) 09:28:49.75ID:f2F+qnzO
みんなが日常的に使ってるあるシステムはおれがメインで開発に携わったものだよ
2026/08/11(火) 09:36:48.54ID:rJPEdwaw
水洗トイレとか?
849デフォルトの名無しさん
垢版 |
2026/08/11(火) 10:35:43.79ID:vPKmGjvF
昔からこういう手合いはいるのよね、不完全性定理がどうこう言ってif文書いただけでしたみたいな人
2026/08/11(火) 11:10:02.52ID:+qIuTycP
何でも無理やりに結び付けて使いにくいものが出来上がる例は現実にあるよね
例えば代数的データ型とオブジェクト指向は独立した話で普通は無関係

代数的データ型の列挙(和)の実装は通常
unionをタグ付きに拡張するか
enumをデータ付きに拡張するか
結局どちらも同じものになって実装されている言語が普通

ところがなぜか無理やりにオブジェクト指向のclassでこれを実装する言語があるよ
何でもかんでもclassを使うのは常軌を逸していると思う
2026/08/11(火) 12:03:22.99ID:rJPEdwaw
ついでに相対論もゲーデルの不完全性定理もフェルマーの最終定理も
味噌もくそも全部有名な法則や理論、定理どころをを入れとけってんだ
2026/08/11(火) 12:05:09.87ID:rJPEdwaw
全ての内部ルーチンや関数を高い汎用性を持たせようとするとコストが爆上がりして現実的に実現不可能になるのと似てるな
2026/08/11(火) 12:30:25.46ID:RFQ5dWjp
関手すなわちFunctorはjavaにあるわけだし、場のオブジェクト指向の理論を考えてみるのも楽しい。
場ってのはfieldだし、classはfield持ってるしね。
場にメッセージを投げるとなんらかの変化や反応があるわけだ。
オブジェクトは、モノとか対象ではなく、場であるという理論。
場に現れる関係性の集まりがオブジェクト。
2026/08/11(火) 12:31:06.52ID:kSQ/OYL7
>>850
論理性の欠片もないレスだなw
複おじがなぜいつも斜め下の間違った結論にたどり着くのかその思考様式がよく分かる
2026/08/11(火) 12:35:02.85ID:oZGwM7c8
あいつには論理なんてもんは最初からないぞ
自分が欲しい結論に対する必死のチェリーピックしかしないから
2026/08/11(火) 12:35:28.85ID:RFQ5dWjp
不完全性定理はプログラムに最初から入っているし、
相対性理論はGPSだけでなく、結構使うだろ?
2026/08/11(火) 12:39:40.57ID:u6T6/4BA
>>850
全てをクラスで実現するクラス主義だから
本来はクラスと関係なくてもクラスで実現することが一番重要
2026/08/11(火) 12:41:48.77ID:rJPEdwaw
オブジェクト指向ってなぜあたおかホイホイなんだろう
2026/08/11(火) 12:49:18.30ID:oZGwM7c8
そやね
さらに言うと、OOPやったことないようなやつが発言してくるのが不思議でしゃあない
2026/08/11(火) 12:49:45.66ID:rJPEdwaw
>>856
不完全性定理は様々なところに現れるが、オブジェクト指向は不完全性定理に基づいた仕組みではないだろ
GPSは相対性理論に配慮が要るが、それは実現するソフトウエアの処理内容の話で、オブジェクト指向とは独立だろ
想像を絶する頭の悪さだな
2026/08/11(火) 12:54:30.57ID:rJPEdwaw
>>859
思い込みがちな人の妄想を掻き立てる、ほど良い不完全さや解釈と理解の幅・ゆとりがあるせいかと
要するに明確で精度良い理論ではないのよ
2026/08/11(火) 13:06:24.55ID:RFQ5dWjp
頭悪い人多いね。じっさいに設計とか開発とかしてないんだろうけど。
電流は高速だが、電子はカタツムリ程度の速さでしか流れない、という時代に
追いつけてないんだね。
2026/08/11(火) 13:08:56.59ID:5BpLrLdu
>>850
オブジェクト指向自体は階層構造を仮定していないがクラスで階層構造を前提とした
代数的データ型も階層構造ではないがResultの子供をSuccessとFailureだとみなせば一段の階層構造とみなせる
階層構造ならクラスと同じだから代数的データ型はクラスの一種だ
2026/08/11(火) 13:09:46.93ID:RFQ5dWjp
高速->光速
2026/08/11(火) 13:40:18.81ID:OedHObPX
なんでもクラスとして扱う腐ったゴミ言語がある
2026/08/11(火) 14:43:43.18ID:mnSwjBYG
オブジェクト指向と関係ないことまでクラスを使うならそれはクラス信者
2026/08/11(火) 15:11:10.62ID:rJPEdwaw
クラスってなんであんなに根強い人気なんだろう
よほど素人受けするのかね
オツムにピコーンってきて刷り込まれちゃうのかな
868デフォルトの名無しさん
垢版 |
2026/08/11(火) 18:01:08.50ID:TkeOw0Bw
クラスをつかう分には楽だから
データがとっ散らかなくて済むし作法も統一される
もちろん提供側が注意深く設計した結果なんだけどそこに大きなギャップがある
クラス定義も作法が決まってるし比較的かんたんな部類だけど
見通し考えてリファクタくりかえしてるなんて想像できてないから
必要なコストも支払わず粗製乱造に至る
869デフォルトの名無しさん
垢版 |
2026/08/11(火) 18:29:08.11ID:vPKmGjvF
クラスを作ったらモデリングしてる気になれるんじゃないか

トランザクションスクリプトの処理を必要もなくあちこちの
クラスに分散してるのを良く見かける

ドメインモデルを作った気になってるんじゃないかね
とっ散らかったトランザクションスクリプトでしかないのに
2026/08/11(火) 18:36:11.29ID:FvPMsPLL
>>869
>トランザクションスクリプトの処理を必要もなくあちこちの
>クラスに分散してるのを良く見かける
必要もなくと書いてあるがどういう場合は必要でどういう場合は必要ないと思ってるの?
871デフォルトの名無しさん
垢版 |
2026/08/11(火) 18:50:53.71ID:vPKmGjvF
>>870
トランザクションスクリプトは基本分ける必要ないと思ってる
だってトランザクションスクリプトなんだもん
メソッド内にドバッと処理を書いておしまいで良い

たとえば、テーブルごとにDaoクラスを作ってDBアクセスをDaoクラスでやるとか
処理をServiceクラスやLogicクラスに書いて分散させてトランザクションスクリプトの中で
インスタンス生成して実行してるだけとか

処理を分けて個別にテストしてるならまだしも本当にわけてるだけのものがあるんよ
わりとたくさん
872デフォルトの名無しさん
垢版 |
2026/08/11(火) 19:28:28.20ID:YtoEwpFL
>>871
それってベタに書くか1層メソッド設けるかの違いでしかないからチーム内の決めの話
たとえばユーザ入力や外部連携などトランザクションが複数ステップに渡るケースなら
ステートマシンにして中でうまくSagaやTCCなんかで不可分にしてくれる構造にするとか
こういうのならクラスを導入する意義はある
873デフォルトの名無しさん
垢版 |
2026/08/11(火) 19:37:36.57ID:vPKmGjvF
>>872
ちょ待てよ、質問されて答えたんだから
まずは答えてくれてありがとうとか教えてくれてありがとうとか
そういうのはないのか、質問して答えてもらってそれはこうだと言う
お前のそういうところが俺は好き
2026/08/11(火) 19:51:35.55ID:rJPEdwaw
あーっ!
2026/08/11(火) 20:16:39.86ID:RFQ5dWjp
classは「場」。そう考えてみた。
そうすると、「演算」とは何か、となった。
演算はテンソル積で、結果が「時空間」。
つまり、既に計算済みなのが「場」ということになる。
まず、計算モデルからだな。
classが入ってくる前のsmalltalkだし、ほぼLispの世界に突入中。
2026/08/11(火) 20:29:50.56ID:muID62IF
>>872
エラー起きなければいいけど
現実には補償やキャンセルが失敗した時にそのリトライを成功するまで無限にしながら
客にはそれを待たせずに受付失敗を返さないと
2026/08/11(火) 22:32:33.27ID:1VnbLn/U
現実のシステムは非同期でやらざるを得ない
オブジェクト指向本来のメッセージパッシングも非同期
2026/08/11(火) 23:38:42.36ID:RFQ5dWjp
相対性理論(同時性)が入ってくるんだよなぁプログラムも。
量子論とか相対論とかも考えないと設計できない時代だ。
879デフォルトの名無しさん
垢版 |
2026/08/11(火) 23:54:51.77ID:vPKmGjvF
>>877
どうして非同期にならざるを得ないかお前にわかるか?
880デフォルトの名無しさん
垢版 |
2026/08/11(火) 23:55:49.70ID:vPKmGjvF
>>878
お前はどうだ? どうして非同期にならざるを得ないかわかるか?
881デフォルトの名無しさん
垢版 |
2026/08/11(火) 23:55:51.73ID:b0zfZzfX
非同期タスクがオブジェクト
その非同期タスク間のチャネルでメッセージパッシング
これで本来のオブジェクト指向になる
2026/08/11(火) 23:58:55.78ID:Par7S+YE
クラスという不自然なものより生きてるオブジェクトらしくていいな
2026/08/12(水) 01:11:59.79ID:RaymRvVC
アラン・ケイ「オブジェクトとは、生物の細胞やネットワーク上の個々のコンピュータのようもの、そしてそれらのコミュニケーションは専らメッセージによって行なわれるもの、と考えていました。」
「つまり、メッセージングは最初から存在していたのですが、プログラミング言語でメッセージングを実用的かつ効率的に行う方法を見つけるまでには時間がかかりました。」

オブジェクトは非同期タスクと捉えたほうが本来のオブジェクトに近そう
関数メソッド呼び出しによるメッセージパッシングは当時の実用的かつ効率的な妥協案の位置付けとみることもできる
今は非同期タスク間でチャネルを使って真にメッセージパッシングできるようになった
2026/08/12(水) 03:51:48.62ID:QPjIEWYB
アランケイが言うオブジェクトは生きてるイメージだからなるほどね
2026/08/12(水) 08:09:34.92ID:1z/8k8uI
人間がハルシネーションを起こしているw
2026/08/12(水) 08:12:57.44ID:1z/8k8uI
というか知的生命体として壊れちゃってる
そういう人にはなに言っても無駄だろうな…
887デフォルトの名無しさん
垢版 |
2026/08/12(水) 08:36:09.88ID:L2Pmm9KH
アランケイの話なんか持ち出しても今では誰も知らなくなったどうでもいい語源持ち出すようなもんだろ
888デフォルトの名無しさん
垢版 |
2026/08/12(水) 08:43:08.82ID:K2gu1pkE
弊スレのハル夫くんは権威でしか物事を判断しない人だから由来に拘るのもその一種であろう
2026/08/12(水) 09:16:47.46ID:9ViW8s/t
権威もチェリーピックだから常にハルシネーション
2026/08/12(水) 09:29:21.73ID:huopapQG
オブジェクト指向スレでアランケイを誰も知らない扱いするのはさすがにムリがあるのでは。
891デフォルトの名無しさん
垢版 |
2026/08/12(水) 09:42:29.29ID:L2Pmm9KH
語源探ることに意味はないってことを言ってるのにさらにしょーもないところを掘り出すってところがほんとバカだよね
2026/08/12(水) 09:48:21.35ID:huopapQG
オブジェクト指向とはどのような考え方かを議論するときに、アランケイが提示したモデルは後にC++等によって提示されたモデルとともに現在でも参照されるものなんだが。意味がないというのはよく分からんな。
893デフォルトの名無しさん
垢版 |
2026/08/12(水) 10:13:57.94ID:K2gu1pkE
>>892
みんな知ってるようなこと書かれても
だから何? としか思わないっしょ
赤信号は止まれの合図だと言ってるようなもので
で? それがどうしたの? って思うじゃん
独立した実行主体関連で話広げられる?
オブジェクトはAIのエージェントを示唆してたんだよ! なんだってーーキバヤシ!! みたいな話でもいいよ
2026/08/12(水) 10:30:47.86ID:Fjk7LUU4
>>881
モダンな言語では既にそうなっている
例えばGoでは非同期タスクのGoroutineがオブジェクト
2026/08/12(水) 10:46:44.84ID:sWXSphY4
>>893
みんなが知っているような話を、誰も知らない話扱いしている人が居たらツッコまれるのは当然では。
アクターモデルについてモダンな言語がどうアプローチしているかとか、不変条件の位置付けとか、それなりに話の広がりにも寄与しているように見えるが。
896デフォルトの名無しさん
垢版 |
2026/08/12(水) 10:57:12.89ID:K2gu1pkE
>>895
そうかな、君がコンテキスト読み間違ってツッコんでるだけに思えたけど
アクターモデルとオブジェクト指向は似てるけど違うものだよね
2026/08/12(水) 10:59:17.27ID:0ui1V5YL
この状況で「誰も知らない話扱いしている人が居た」なんて解釈してるのがお前ひとりであり
そこらへんがみんなより一周以上周回遅れなところなんだよなあ

これ以上恥かく前に、もう黙っといたら?
2026/08/12(水) 11:12:04.92ID:iRjqhTBy
>>883
先取りした概念だったけど時代がようやく追いついた感じかね

提唱された本来のオブジェクト
アラン・ケイ「オブジェクトとは生物の細胞やネットワーク上の個々のコンピュータのようもの」
↓
当時の制約からとりあえず広まったオブジェクト
「クラス型のオブジェクト」
↓
現代のオブジェクト
「チャネルでメッセージパッシングし合う非同期タスク」
2026/08/12(水) 11:53:33.48ID:4vADr3qE
>>897
>>887が「アランケイの話なんか持ち出しても今では誰も知らなくなったどうでもいい語源持ち出すようなもんだろ」としているが。

>>896
アランケイのオブジェクト指向はアクターモデルと相当程度同質的なアイデアと一般に理解されていると思うが。
もちろん、両者が概念として同じというわけではないし、オブジェクト指向の概念はアランケイ流の理解だけではないけれども、モダンな言語がアクターモデルに対してどのようなアプローチをしているかの話をするときに「それはアクターモデルの話だからオブジェクト指向とは関係ない話ですね」とはならんでしょ。少なくとも、アランケイ流のオブジェクト指向の考え方の延長線上に位置付けるという話の展開は普通にありうると思うが。
2026/08/12(水) 12:08:36.49ID:1z/8k8uI
本質を自分の頭で考え捉える力がなく
権威や既存の理論に弱くてそれを無理やり結び付けているのよ
要するに頭の弱い権威論者
2026/08/12(水) 12:13:20.43ID:I2M7VnZy
非同期書けないやつ多いもんな
使ってるやつも常にawaitして同期的にしちゃう程度が多い
2026/08/12(水) 12:17:34.07ID:1z/8k8uI
メッセージパッシングでソフトウエアを記述しやすいいかと言ったら、書きにくいのよ、
かつて有名だったコンセプトだが過去の栄光・権威でいまやobsolateなの

アクターモデルでソフトウエアを記述しやすいかといったら書きにくいのよ
で、クラスベースオブジェクト指向はどうかというと、弊害が多くて見直されるようになった

そうやって、結局オブジェクト指向はオワコンでは?
というのがスレの趣旨で

そこに場の理論だのテンソルだの相対論だの、オブジェクト指向に無関係な理論持ちだして無理と結び付けようとして
オブジェクト指向の権威付けそしたいの?有用だと正当化したいの?

そのずれっぷりがつくずくこの人頭りーなーという印象しか周りに与えないわけ
2026/08/12(水) 12:21:05.07ID:ULZPq25m
現実にGoルーチンやRustの非同期タスクで書かれることが増えたね
2026/08/12(水) 12:22:27.62ID:1z/8k8uI
本人はすごい理論を考えているつもりなのかもしれないけど
オブジェクト指向と関係のない別の分野の李厘の名前持ち出したって
たぶん頭空っぽで自分の力では具体的なこと何も考えていないんだろうなって、
ソフトウエアやプログラミングについて何も考えていないど素人なんだろうな
物理屋に憧れていたアタオカなんだろうなって印象しか伝わってこないの
2026/08/12(水) 12:23:45.48ID:1z/8k8uI
別の分野の李厘 → 別の分野の理論
2026/08/12(水) 12:25:31.85ID:1z/8k8uI
医者に行って診察うけてお薬お飲みよ
放っておくと悪化するかもの
2026/08/12(水) 12:29:20.01ID:yTKb2Zm2
>>903
我々のこの書き込みも捌いてるしな
5chがCloudflareを使ってるので
2026/08/12(水) 12:54:56.66ID:aDZQdKrq
ふふ、オブジェクト指向を「系」の問題すれば、不完全性定理や相対性理論が入ってくるのは
あたりまえ。
コンテキストの問題と捉えれば、「場」も入ってくるし、量子アルゴリズムも考えているので
(場の)量子論があたりまえ。
昨夜は、乗法だけで加法も行えるところまでいったが、素因数分解までには至らなかった。
なんのためにやっているか、といえば、マルチスレッドの効率化とか並列処理のため。
オブジェクト指向言語は、いたるところでMonadが使われているため、圏論も重要。
理想的な概念と実装のギャップを埋めるため。
2026/08/12(水) 12:56:48.25ID:1z/8k8uI
こいつめ、お遊びでやっているなw
言葉遊び
2026/08/12(水) 12:59:05.36ID:1z/8k8uI
そういや以前、屁理屈こねてオブジェクト指向はオチンポだーと叫んで止まない輩がスレにいたが
あれと同類だな、もしかして本人かw
2026/08/12(水) 13:02:57.12ID:1z/8k8uI
なお、メッセージドライバーに相当するメソッドにはエルミート性がないので
空間にエネルギーの揺らぎが発生し確率的に反粒子が生成される
912897
垢版 |
2026/08/12(水) 13:35:19.22ID:0ui1V5YL
>>899
> 「アランケイの話なんか持ち出しても今では誰も知らなくなったどうでもいい語源持ち出すようなもんだろ」としているが。


それを読んだうえでそう判断したのがお前一人だということ
言わなきゃわからないのが怖いわ
2026/08/12(水) 13:50:57.76ID:4vADr3qE
圏論が云々という話と、アランケイ流のオブジェクト指向の話は全然別の話なんだが。味噌をよく知らない人が、味噌とクソを一緒の扱いにしていたというオチ?

>>912
正直言われても分からないんだけどね。それが「誰も知らない話扱いしている人が居た」ということでないなら、どういう意味なん? 説明してみ? 
「アランケイ流のオブジェクト指向自体は誰でも知っていることだけど、『どうでもいい』ことのたとえとして『今では誰も知らなくなった』としているだけ」とかそういう方向性で頑張るん?
914デフォルトの名無しさん
垢版 |
2026/08/12(水) 14:39:13.16ID:K2gu1pkE
>>913
本当にわからんの? 引き際つかなくなってうざ絡みしてるだけにも見えるけどどっち?
915デフォルトの名無しさん
垢版 |
2026/08/12(水) 14:40:14.52ID:K2gu1pkE
文章読解の方法を吾輩が教えてしんぜようか? どうする? 俺に頭下げてお願いしてみるか? プライドと知性の等価交換だ
2026/08/12(水) 15:04:56.62ID:rtq6aJj0
非同期タスク系が成功している要因は1つのCPUで数十万タスクを動かせる軽量さにある
スレッドはリソースが大きくて切り替えコストも嵩んでたくさん動かせない
そこで動かすマルチスレッド数はCPUが持つスレッド数に限定してその上で大量の非同期タスクを切り替えする基盤を持つ言語が増えてきた
異なるスレッド上にいるかもしれない他の非同期タスクへのメッセージパッシングは安全軽量なチャネル機構が解決した
従来のオブジェクト同士のメッセージパッシングを非同期並列に対応するには同じ問題を抱えてしまう
オブジェクトを非同期タスクと捉え直すことで現実的に解決できるようになった
2026/08/12(水) 17:38:37.07ID:1z/8k8uI
突っ込む気力も失せる
918デフォルトの名無しさん
垢版 |
2026/08/12(水) 17:54:25.13ID:V4/DHKYo
だからマルチスレッドで多数のオブジェクトを配置して勝手に独立制御させるってのは
ツールで構築すりゃ済むこと
2026/08/12(水) 18:08:38.99ID:1z/8k8uI
これがZ世代か…
2026/08/12(水) 18:35:03.97ID:tKvq8T9K
マルチスレッド上で軽量タスクをM:Mスケジューリングする仕組みを備えた言語が増えていってるよな
通信やDBなどI/Oバウンド解決のため非同期ならこれが現状で最善の解
2026/08/12(水) 19:44:18.97ID:8ObNR5r5
typoだろうけどM:Nスケジューリングな
922デフォルトの名無しさん
垢版 |
2026/08/12(水) 20:35:49.10ID:K2gu1pkE
言うほど軽量スレッド増えてるか?
async/awaitの方が多いように思うけどな
OSが非同期IOの機能を持ってるからそれを使えば
非同期処理はシングルスレッドでできるわけでぇ
スレッド作る必要がないわけでぇ

C10K問題ももう27年前ですよ、お兄さんがた
923デフォルトの名無しさん
垢版 |
2026/08/12(水) 20:41:16.19ID:K2gu1pkE
.NETはTaskという形で処理を抽象化はしたけど
IOバウンドの処理は非同期IOを使って
CPUバウンドの処理は昔ながらのスレッドプールに投げるだけだ
軽量スレッドは要らないんじゃねってなって無いのよね
2026/08/12(水) 20:57:12.48ID:2eX741lN
このスレで軽量スレッドの話をしている人はID:K2gu1pkEだけ
925デフォルトの名無しさん
垢版 |
2026/08/12(水) 21:08:33.62ID:K2gu1pkE
>>924
ふぅ…君にはほとほとあきれるよ
926デフォルトの名無しさん
垢版 |
2026/08/12(水) 21:10:27.48ID:K2gu1pkE
俺をボッチにするんじゃねえ!入ってこい話に!!
さすが物知りですねとか、勉強になりますとか、おっぱいの画像見せますとか
なんかあるだろ、そういうのあるだろ!!!
927デフォルトの名無しさん
垢版 |
2026/08/12(水) 21:11:00.62ID:K2gu1pkE
取り乱してしまいました、すみません
928デフォルトの名無しさん
垢版 |
2026/08/12(水) 21:22:39.83ID:ShfPp0T+
>>922
>>async/awaitの方が多いように思うけどな

それは非同期タスク
.NETでもasync Taskと書くだろ
2026/08/12(水) 21:29:26.93ID:1z/8k8uI
>>926
チンチンだったら吸わせてあげてもいいよ
930デフォルトの名無しさん
垢版 |
2026/08/12(水) 21:30:35.04ID:K2gu1pkE
>>928
何を言ってるんだ君は…なんだちみは
931デフォルトの名無しさん
垢版 |
2026/08/12(水) 21:31:23.53ID:K2gu1pkE
>>929
下品なレスすんじゃねえ!スレの品位が落ちるだろうが!!
932デフォルトの名無しさん
垢版 |
2026/08/12(水) 21:35:09.03ID:K2gu1pkE
まったく、何言ってんのかわからんダッフンダ野郎と
品性下劣なやつしかいない、俺はもっと知的でジェントルな感じでやっていきたいんだ
2026/08/12(水) 21:43:36.27ID:WFZso4nL
チャネルでメッセージパッシングする非同期タスクは本来の生きてるオブジェクトだな
他からメッセージが来ない間も動作していてもいい
クラスによるオブジェクトはメッセージが来た時だけ値が読まれたり書き換えられたりする生きてないオブジェクト
2026/08/12(水) 22:15:52.47ID:JlmtHOiP
非同期タスクはアラン・ケイが言うところのオブジェクトではないぞ
2026/08/12(水) 22:19:09.31ID:CRJD+Z1o
チャネルでメッセージを送受するする主体だから非同期タスクはオブジェクト
2026/08/12(水) 22:24:37.37ID:JlmtHOiP
それ「引数でメッセージを送受スルスル主体だから関数はオブジェクト」と言ってるのと大差ない
馬鹿さ加減がわかったかな?
937デフォルトの名無しさん
垢版 |
2026/08/12(水) 22:32:07.30ID:oX4uPmCf
Goルーチンとか普通にチャネルでやりとりするオブジェクトだろ
違うと言うならこの場合どれがオブジェクトなんだ?
2026/08/12(水) 22:46:33.52ID:1z/8k8uI
>>932
  ∧_∧ 
\(‘ω’)/
  \  \
   \γ∩ミ――
   /⊂::⊃))
   / 乂∪彡
2026/08/12(水) 22:59:57.76ID:GwWbjnXc
他のgoroutineからチャネルで受信して
処理して必要なら他のgoroutineへチャネルで送信
このようなことを繰り返すgoroutineたちはオブジェクトでしょうね
940デフォルトの名無しさん
垢版 |
2026/08/12(水) 23:57:06.26ID:8u01qLwS
言葉遊びはそのくらいにしろ
2026/08/13(木) 00:02:51.12ID:bfn0NcCg
ゴールーチンをオブジェクトじゃないと主張する人はそこで何がオブジェクトなの?
それを明らかにしないと説得力ないよ
2026/08/13(木) 00:17:59.71ID:zSTcUfCT
ろくなものを作れず挫折したやつらがそれっぽいキーワード並べて知ったかで議論してるつもりのオワコンスレ
プログラム技術に全く貢献しない
2026/08/13(木) 00:25:01.08ID:TisD6Us4
病的シッタカくん一人と
それをケアする介護人多数って感じで見てた
2026/08/13(木) 10:11:04.79ID:iAL6RhQH
>>937>>941
「この場合」とか「そこで」とか最低限コードを提示してから言えよな
指示語の具体性の無さが複おじの非論理的思考/セルフハルシネーションの一因だぞ
945デフォルトの名無しさん
垢版 |
2026/08/13(木) 10:52:13.75ID:pdAcKRXu
入力された値を出力の値に変換する処理が関数型の処理だ
入力 → Function → 出力

オブジェクト指向ではこの計算をやっていることに等しい
(入力, 現在の状態) → Function → (出力, 新しい状態)

Functionと状態をセットにして入力と出力を関数型のようにしたものがオブジェクト指向だ
入力 → (Function, 状態) → 出力

状態とセットになったFunctionをメソッドを言い
そうでないFunctionを関数と言う

つまりだ、オブジェクトとは入力を出力に変換するしくみのことで状態を持つことができるものだ
946デフォルトの名無しさん
垢版 |
2026/08/13(木) 10:54:40.86ID:pdAcKRXu
goroutineはオブジェクトが動作する環境で
オブジェクトはgoroutineで動作するstructだ
goのstructはメソッドを持てるからね
2026/08/13(木) 11:11:22.61ID:eYqUgJwM
>>946
structにする必要はないからそこでstructは使われない
goroutineの中の多数の色んな変数全てが状態
それらの変数群をカプセル化しているのはgoroutine
だからgoroutineがオブジェクトだね
948デフォルトの名無しさん
垢版 |
2026/08/13(木) 11:43:14.50ID:pdAcKRXu
>>947
goroutineがオブジェクトだとしたら
goroutineだけで自分宛てのメッセージを受け取れないといけないけど
できないでしょ、メッセージを受信するにはchannelが必要でしょ
だからgoroutineはオブジェクトではなくてオブジェクトを動作させるものでしかないのよ
949デフォルトの名無しさん
垢版 |
2026/08/13(木) 11:48:41.44ID:OkMuvviv
>>948
それは関数呼び出しが必要なオブジェクトと同じだな
メッセージパッシングが関数呼び出しかチャネルかの違いしかない
950デフォルトの名無しさん
垢版 |
2026/08/13(木) 11:52:03.39ID:pdAcKRXu
>>949
goroutineでオブジェクトを作ろうしたらchannelでやり取りすることになるわけで
関数呼び出しと同じだと言ってchannelを無視するのは短絡的思考で間違ってるだけの気がする
951デフォルトの名無しさん
垢版 |
2026/08/13(木) 11:53:44.54ID:pdAcKRXu
バナナは黄色いからレモンと同じで甘いか酸っぱいかの違いしか無いと言ってるようなもの
2026/08/13(木) 12:03:07.63ID:BRdiQaRp
>>950
structでオブジェクトを作ろうとしたら関数呼び出しでやり取りすることになるわけで
チャネルと関数呼び出しを無視するのは短絡的思考で間違ってるだけの気がする
どちらも同じポジションでメッセージパッシングの実現の方法が異なるだけに過ぎない
953デフォルトの名無しさん
垢版 |
2026/08/13(木) 12:11:25.88ID:pdAcKRXu
>>952
structであればメソッドを呼ぶけど
goroutineだとchannelを通じてメッセージを受信しないといけないよね

メッセージを受信できるものがオブジェクトだとするならば
メソッドを持てないstructはオブジェクトではないよね
channelがないgoroutineはオブジェクトではないとわかるよね
実現の方法が異なるだけに過ぎないからね
954デフォルトの名無しさん
垢版 |
2026/08/13(木) 12:23:27.96ID:GUqamXem
structだけでは動作できないから実態としてはループ処理込みでgoroutineだよね
使い勝手かんがえるとメソッドにあたる関数内で
応答用チャネルを動的につくって結果はチャネルで返すスタイルにする
ループのチャネルへ引数と応答用チャネルの組を渡すかんじ
外からみたら非同期動作する旧来のオブジェクト
2026/08/13(木) 12:33:17.72ID:ZomTNthP
>>953
structだけでは無理だが
structに紐付ける関数を設けるとメッセージパッシングできる
goroutineだけでは無理だが
goroutineにチャネルを設けるとメッセージパッシングできる
状況は同じじゃないか
structもgoroutineもオブジェクト
goroutineは非同期にも対応したオブジェクト
956デフォルトの名無しさん
垢版 |
2026/08/13(木) 12:43:30.37ID:pdAcKRXu
>>955
データとメソッドは違うでしょ
データとメソッドが組み合わされることによってオブジェクトができるが
データそのものはオブジェクトではない

goroutineとchannelは違うでしょ
goroutineとchannelが組み合わされることによってオブジェクトができるとするならば
それの構成要素であるgoroutineがオブジェクトではないとわかるよね
957デフォルトの名無しさん
垢版 |
2026/08/13(木) 12:54:57.08ID:pdAcKRXu
goroutineは並行処理のしくみ
オブジェクトはメッセージをやり取りするしくみ
そのように考えると、どちらかというとchannelの方がオブジェクトに近い
2026/08/13(木) 12:55:55.97ID:ZHeRnCsL
>>956
structやclassはデータに過ぎないけどオブジェクトだよ
2026/08/13(木) 12:57:16.84ID:ZHeRnCsL
>>957
channelがオブジェクトの状態を持つのではなく
オブジェクトであるgoroutineが状態を持つ
960デフォルトの名無しさん
垢版 |
2026/08/13(木) 13:06:27.96ID:pdAcKRXu
>>958
goのstructやJavaのclassはメソッドを持てるから単なるデータはないよ
961デフォルトの名無しさん
垢版 |
2026/08/13(木) 13:15:03.01ID:pdAcKRXu
>>959
オブジェクトはメッセージをやり取りするしくみだと考えると
goroutineはメッセージを受信するしくみでもなんでもないから
オブジェクトではないよね、メッセージを受信できるchannelの方がオブジェクトに近いよねって話

君は何を言ってるかと言うと状態を持つからgoroutineはオブジェクトなんだって話かな
それはオブジェクトの状態ではなくてただのスタックの状態だから
オブジェクトではないってことで良い
962デフォルトの名無しさん
垢版 |
2026/08/13(木) 13:16:21.38ID:pdAcKRXu
次スレ立てるかな
963デフォルトの名無しさん
垢版 |
2026/08/13(木) 13:17:52.65ID:GUqamXem
そんな言葉遊びしてうれしい?
旧来のOOPしたいなら組み合わせることになるんだから
答えはでないでしょ
2026/08/13(木) 13:24:32.74ID:YnMcjGbx
structはメソッドを設けられる
goroutineはチャネルを設けられる
設けるとメッセージを受け取れるため
どちらもオブジェクトとしての条件を満たしている
965デフォルトの名無しさん
垢版 |
2026/08/13(木) 13:37:01.34ID:pdAcKRXu
>>964
goroutineにチャネルは設けられないよ
goroutineは並行処理の単位でしかないからね
goroutineの上で何かを動かすことはできるけど
それはgoroutine上の何かがやってることでgoroutineは何もしてない

まな板の上で魚を捌けるけどまな板が魚を捌けるとは言えないでしょ
お魚さんがそう言ってました
966デフォルトの名無しさん
垢版 |
2026/08/13(木) 13:47:31.97ID:Azd87Eut
メソッドを持たないclassはオブジェクトですか?
チャネルを持たないgoroutineはオブジェクトですか?
classとgoroutineの立ち位置は同じかな
967デフォルトの名無しさん
垢版 |
2026/08/13(木) 13:47:56.59ID:pdAcKRXu
>>963
オブジェクト指向の探求は心の満足のためにある
生活上の実利を求めてはいけない
2026/08/13(木) 13:57:14.35ID:DgufQVX8
恒等写を持ち、指示可能であればオブジェクトと考えてます。
2026/08/13(木) 14:06:18.99ID:DgufQVX8
写->射。
登録しておかなきゃな。
データは自己同一性を持つし、指示可能であれば(データ)オブジェクトです。
このデータオブジェクト自身がメッセージに反応してれれば楽、というのがオブジェクト指向でしょう。
2026/08/13(木) 14:09:26.70ID:ZWCB+fEg
皆の意見をまとめると少なくとも
struct+methodは同期オブジェクト
coroutine+channelは非同期オブジェクト
ここまでは合意してるようね
2026/08/13(木) 14:15:11.98ID:wgoxHMXH
goについては全く知らないので話題に参加するつもりはないのだけれど、同期 / 非同期がオブジェクトについての区別概念だと位置付けられるとちょっと引っ掛かりを覚える。
2026/08/13(木) 14:23:55.33ID:DgufQVX8
実装論として同期/非同期はあっても、オブジェクト指向そのものではないと思う。
最強なのは現時点でtensor flowだと思っている。tensorをobjectとすれば、object flowだ。
2026/08/13(木) 14:26:43.98ID:SUbJY/Ng
Go以外もコルーチンになってる非同期タスクは同じ立ち位置だからGo固有の話ではない
わかりやすい代表としてGroutineが出てきてるだけだろ
974デフォルトの名無しさん
垢版 |
2026/08/13(木) 14:33:06.42ID:pdAcKRXu
>>971
それはそう、アラン・ケイが作ったオブジェクト指向言語のSmalltalkのメッセージパッシングは同期だしな
非同期は並行処理の都合であってオブジェクトの要件ではない
2026/08/13(木) 14:35:30.81ID:TMxGUo7v
>>974
アラン・ケイのオブジェクトの概念と
当時の実装の限界をごっちゃにするなアホ
976デフォルトの名無しさん
垢版 |
2026/08/13(木) 14:39:12.95ID:pdAcKRXu
次スレ立てた

オブジェクト指向はオワコン? part2
https://mevius.5ch.io/test/read.cgi/tech/1786599483/
977デフォルトの名無しさん
垢版 |
2026/08/13(木) 14:42:52.16ID:3yw+gA4E
ほんとしょーもないスレの流れだけど、オブジェクト指向の話ってずっと昔からこうなんだよね
978デフォルトの名無しさん
垢版 |
2026/08/13(木) 14:43:59.46ID:pdAcKRXu
>>975
当時の実装の限界が原因だったとするなら
いまのSmalltalkのメッセージパッシングは非同期になってないとおかしいよね
でもいまのSmalltalkでも同期だから当時の実装の限界だけが原因ではないとわかるでしょ
アホはお前
2026/08/13(木) 15:06:50.50ID:m0nThYeP
50年前の言語にそこまで求めるなよ
現在実用的な言語は非同期に対応しているから問題ない
980デフォルトの名無しさん
垢版 |
2026/08/13(木) 15:08:09.21ID:pdAcKRXu
アラン・ケイのオブジェクトの概念に最も近いのはマイクロサービスだったが、マイクロサービスは10年前に流行ってあんま良いもんじゃねえなとなってモノリスへの揺り戻しが起きた
モノリスで逐次処理をしっかりやって並行や分散は必要最小限に留めるのが現実的な最適解なのよ
981デフォルトの名無しさん
垢版 |
2026/08/13(木) 15:08:12.58ID:pdAcKRXu
アラン・ケイのオブジェクトの概念に最も近いのはマイクロサービスだったが、マイクロサービスは10年前に流行ってあんま良いもんじゃねえなとなってモノリスへの揺り戻しが起きた
モノリスで逐次処理をしっかりやって並行や分散は必要最小限に留めるのが現実的な最適解なのよ
982デフォルトの名無しさん
垢版 |
2026/08/13(木) 15:11:27.93ID:pdAcKRXu
>>979
お前こそアラン・ケイの空想に実利を求めるなよ、現実見ろ
2026/08/13(木) 15:43:56.27ID:gV1G4aKo
当時はともかく現状は非同期使わないと実用的ではない状況があるのだから、
同期だけに対応すればいいのは逃げでしょう。
984デフォルトの名無しさん
垢版 |
2026/08/13(木) 16:43:05.65ID:pdAcKRXu
>>983
非同期が必要なのは性能のためであって
アラン・ケイの空想を実現するためじゃねえからな
白日夢見て現実から逃げてるのは君でしょうに
2026/08/13(木) 16:45:27.84ID:L7dCP8zT
>>984
関数呼び出しするのも性能のため
要件はメッセージパッシングで片方向メッセージ
986デフォルトの名無しさん
垢版 |
2026/08/13(木) 17:25:07.03ID:IH8EwqGv
アランケイの時代と違ってCPUパワーありまくってんだから
手続き型のポーリング処理で多数のオブジェクト扱えてしまう時代
2026/08/13(木) 17:38:56.38ID:7YbFHBHY
>>986
普通の企業ではなくお金が有り余っていてルーズな経営でも許されるところならそうなのね
2026/08/13(木) 18:03:02.56ID:0nQnzhdW
クラウド時代になりCPUなどリソース無駄遣いは視覚化されて経営層も違いがわかるようになった
989デフォルトの名無しさん
垢版 |
2026/08/13(木) 19:11:32.76ID:pdAcKRXu
マジカルバナナしてるん?
990デフォルトの名無しさん
垢版 |
2026/08/13(木) 20:07:10.49ID:pdAcKRXu
オブジェクト指向の歴史を語ろうか

1967年、最初のオブジェクト指向言語Simula 67が開発された
Simula 67にはクラス、オブジェクト、継承があった

1981年、アラン・ケイのオブジェクト指向の概念が巷間に流布された

歴史的に見るとクラスが最も正当なオブジェクトなんよ
アラン・ケイのオブジェクト指向の概念はスピンオフみたいなもので
オブジェクト指向の本編ではないことに注意が必要です
991デフォルトの名無しさん
垢版 |
2026/08/13(木) 20:07:13.59ID:pdAcKRXu
オブジェクト指向の歴史を語ろうか

1967年、最初のオブジェクト指向言語Simula 67が開発された
Simula 67にはクラス、オブジェクト、継承があった

1981年、アラン・ケイのオブジェクト指向の概念が巷間に流布された

歴史的に見るとクラスが最も正当なオブジェクトなんよ
アラン・ケイのオブジェクト指向の概念はスピンオフみたいなもので
オブジェクト指向の本編ではないことに注意が必要です
992デフォルトの名無しさん
垢版 |
2026/08/13(木) 20:13:48.73ID:pdAcKRXu
二重に投稿されるのは緊張で俺の手がプルプル震えてるせいだと思う
だからお前らは俺にもう少し優しくしたが良い
993デフォルトの名無しさん
垢版 |
2026/08/13(木) 20:17:25.93ID:beXELhsO
自分にとって必要な言語は何か、そしてC++であっても自分に関係ありそうな部分はどこか
それを嗅ぎ分ける能力が必要。馬鹿は新しいものがあるとホイホイと飛びつく。
994デフォルトの名無しさん
垢版 |
2026/08/13(木) 20:18:39.05ID:beXELhsO
オブジェクト指向が何だって?そんなウンチク糞の役にも立たねえ
さっさと仕事しろ!バカチンが
2026/08/13(木) 20:22:21.04ID:ld2wxsJZ
C++みたいなゴミ言語をありがたがってる人に言われても
996デフォルトの名無しさん
垢版 |
2026/08/13(木) 20:23:28.72ID:beXELhsO
>>995
ゴミのお前に言われても
2026/08/13(木) 20:38:47.60ID:KM+mBY8f
非同期って言葉使う俺すごーいって陶酔して
自己満足でオブジェクト指向と関連つけているだけにしか見えん
要するに知的障害でもあるのかという感じ
2026/08/13(木) 20:39:20.71ID:KM+mBY8f
>>992
初めてか?
いいから力抜けよ
2026/08/13(木) 20:44:17.79ID:eOBsoStn
>>992
四季が近いね
2026/08/13(木) 20:44:45.67ID:eOBsoStn
非同期オブジェクトの実現方法か
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 754日 22時間 52分 26秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。

▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.io/

▼ UPLIFTログインはこちら ▼
https://uplift.5ch.io/login
レス数が1000を超えています。これ以上書き込みはできません。

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