教えてくれ
前スレ
オブジェクト指向はオワコン
https://itest.5ch.net/mevius/test/read.cgi/tech/1693054853
オブジェクト指向はオワコン?
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2024/07/19(金) 21:52:20.62ID:iooVOtBL2デフォルトの名無しさん
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年代にオブジェクト指向が隆盛を極めて失敗したのには理由があると私は思っている
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が関数型言語的な記述を取り入れてきたのを、これからは関数型言語だみたいにいいすぎ。
Javaが関数型言語的な記述を取り入れてきたのを、これからは関数型言語だみたいにいいすぎ。
2024/07/22(月) 19:13:28.41ID:r0GxC5xx
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:1jhTJKzb2024/07/23(火) 06:15:03.01ID:kV7JJfy7
マジレスするとこんなところで暇潰してるお前らがオワコン
2,3年後にはウーバーに転職してそう
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 🤡
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
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の仕様を理解出来て無いからだ
単にチミがappendChildの仕様を理解出来て無いからだ
2024/11/16(土) 17:48:59.41ID:ti8Vm5gi
Reactの
import React from 'react'はクラス継承?
interfaceで受取するだけなら楽だなあって思った
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ポはいまだに最悪だけど、バグを出しにくく可読性の高いものを作るためにオブジェクト指向があるのに、
手続き型言語のように使われている/そのような設計しかできないのは、なさけないね。
いまは、可読性だね。
nullポはいまだに最悪だけど、バグを出しにくく可読性の高いものを作るためにオブジェクト指向があるのに、
手続き型言語のように使われている/そのような設計しかできないのは、なさけないね。
27デフォルトの名無しさん
2025/07/29(火) 11:15:57.06ID:1ZD9gqT+ 例外のせい
28デフォルトの名無しさん
2025/07/29(火) 13:55:51.99ID:NJMLl04q どういう例外なんだろ。単に設計の手抜きを例外にしているんだろうか。
まあ、ちまたのシステムみてると、完成度20%未満で動いているからねぇ。例外だらけなんだろうけど。
なんで検収あがっているのか不思議なものばかりしか見かけない。元請けが素人なんだろうねぇ。クライアントも素人。
まあ、ちまたのシステムみてると、完成度20%未満で動いているからねぇ。例外だらけなんだろうけど。
なんで検収あがっているのか不思議なものばかりしか見かけない。元請けが素人なんだろうねぇ。クライアントも素人。
29デフォルトの名無しさん
2025/08/21(木) 11:15:40.71ID:eMoWWoq9 >>24
それ30年前のオブシコの思想だよw
それ30年前のオブシコの思想だよw
2025/08/30(土) 09:22:15.58ID:SgMKM424
OOPネイティブ世代がそのうち
「やっぱOOP最高だと思うんです」
とかいうブログ書くと思う😮
「やっぱOOP最高だと思うんです」
とかいうブログ書くと思う😮
31デフォルトの名無しさん
2025/09/18(木) 19:25:41.74ID:M/nNjO2C 論破するから大丈夫
32デフォルトの名無しさん
2026/01/18(日) 18:36:54.68ID:RmD5ijfM2026/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
36デフォルトの名無しさん
2026/01/25(日) 17:24:05.33ID:MAZyqQZ62026/01/25(日) 18:40:28.69ID:BYLcg9+J
まともに相手するレベルのツイートじゃないな
OO言語とか全然関係ない
データを中心に設計したりデータ構造にこだわるのは対象ドメインがデータ/データ構造が核となっているビジネスアプリケーションだからと単に動くソフトウェアをつくりたいんじゃなくて変化に対応できるソフトウェアをつくりたいからなんだよね
別にOO言語にこだわる必要はないと思うけど
OO言語を揶揄する人がこう低レベルだとOOのほうがいいのかもって思う
OO言語とか全然関係ない
データを中心に設計したりデータ構造にこだわるのは対象ドメインがデータ/データ構造が核となっているビジネスアプリケーションだからと単に動くソフトウェアをつくりたいんじゃなくて変化に対応できるソフトウェアをつくりたいからなんだよね
別にOO言語にこだわる必要はないと思うけど
OO言語を揶揄する人がこう低レベルだとOOのほうがいいのかもって思う
2026/01/25(日) 18:41:15.69ID:BYLcg9+J
39デフォルトの名無しさん
2026/01/26(月) 13:41:30.16ID:RJJEe8Qz オブジェクト指向をプログラミングに不慣れな人に意識させると
過剰設計になりがちってことかな
自分が出会った人の中にも
思考停止でgetter/setterを作るアホや
プログラミング初心者を名乗りながらオブジェクト指向では
こうあるべき論を振りかざして動くプログラムを作れないアホがいた
オブジェクト指向に対する憧れや理想がアホを養成するんだと思う
かくいう私も昔そのアホの一人でね
過剰設計になりがちってことかな
自分が出会った人の中にも
思考停止でgetter/setterを作るアホや
プログラミング初心者を名乗りながらオブジェクト指向では
こうあるべき論を振りかざして動くプログラムを作れないアホがいた
オブジェクト指向に対する憧れや理想がアホを養成するんだと思う
かくいう私も昔そのアホの一人でね
40デフォルトの名無しさん
2026/01/26(月) 14:00:03.36ID:RJJEe8Qz 良い感じにオブジェクト指向できてるなって思ったのは
手続き型や関数型で実装して
最後に他者に使わせる部分だけをオブジェクトとしてまとめたものだった
手続き型をしっかりやるのが良いように思う
オブジェクト指向は実装の技術じゃないAPIの技術だ
手続き型や関数型で実装して
最後に他者に使わせる部分だけをオブジェクトとしてまとめたものだった
手続き型をしっかりやるのが良いように思う
オブジェクト指向は実装の技術じゃない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の関係に似てて同列に語れるときと語れないときがある
クラスがただのインターフェースな実装は
LISP1とLISP2の関係に似てて同列に語れるときと語れないときがある
2026/01/31(土) 15:37:51.20ID:aekzex2G
設計ミス
javascript: bool
Java: a[][]
python: setdefaultencoding
C: static
C++: private
Rust: unwrap
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見せてみ? おん?
何言ってんだお前これを見ろ
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
56デフォルトの名無しさん
2026/01/31(土) 17:11:30.31ID:8I4xBgdI >>55
書けないのな? オブジェクト指向ごときと嘲ったお前が
オブジェクト指向で俺のコードを超えることできないのな、ギブって事で良いな?
お前でさえオブジェクト指向を使いこなせないわけだから
オブジェクト指向はダメなものって結論されるわけです
書けないのな? オブジェクト指向ごときと嘲ったお前が
オブジェクト指向で俺のコードを超えることできないのな、ギブって事で良いな?
お前でさえオブジェクト指向を使いこなせないわけだから
オブジェクト指向はダメなものって結論されるわけです
57デフォルトの名無しさん
2026/01/31(土) 17:19:37.95ID:8I4xBgdI 俺はいや俺たちはオブジェクト指向を完全に理解しているからこそ
その限界もわかっているんだよ
霊媒師が幽霊を退治できるのも幽霊を理解してその限界を知っているからだ
あなたにはオブジェクト指向の幽霊が取り憑いています
俺はそれをPowerShellで除霊しました
俺のコードみて綺麗すぎて震えただろ、わかる
その限界もわかっているんだよ
霊媒師が幽霊を退治できるのも幽霊を理解してその限界を知っているからだ
あなたにはオブジェクト指向の幽霊が取り憑いています
俺はそれをPowerShellで除霊しました
俺のコードみて綺麗すぎて震えただろ、わかる
58デフォルトの名無しさん
2026/01/31(土) 17:28:40.22ID:8I4xBgdI 手続き型で書いたNano ID
https://compilebytes.com/share/nbdiKnVCvf
オブジェクト指向が良いものだと言うならば
俺が手続き型で書いた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おじさん(👈今ココ)
オブジェクトおじさん→フレームワークおじさん→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)。
これが「膀胱満杯イベント」のトリガー(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)がメインスレッドを乗っ取るようなもの。
副交感神経(骨盤神経)優位 → 膀胱排尿筋(detrusor muscle、不随意平滑筋)が収縮。
内尿道括約筋が弛緩(不随意)。
外尿道括約筋も弛緩(随意)。
同時に腹圧増加(腹筋・横隔膜の随意筋収縮)で勢いをつける。
→ これが「排泄メソッド」の本実行! イベントが発火してコールスタックが一気に動く。
割り込み(Interrupt)の例 膀胱圧が限界超え → 不随意反射 が強制起動(reflex voiding)。
「もう我慢できない!」で脳の抑制が効かなくなる → 漏らす。
→ これは優先度が高いイベント(hardware interrupt)がメインスレッドを乗っ取るようなもの。
2026/02/01(日) 17:48:42.45ID:r4n5KY7C
66デフォルトの名無しさん
2026/02/01(日) 18:53:58.00ID:sP0FV+uQ2026/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)で証明された
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を受け継いでも、チンポの反応速度や感度は個人差があり、
まさに継承されたクラスが独自のメソッドを実装しているようなものですね。
「俺と繋がってるけど、意志的には独立」というのは、まさに集約関係ですね。チンポは「俺」という全体の一部でありながら、
完全に意志の支配下にはない。たとえば勃起は意識的な命令だけでは起こせず、状況や刺激に依存する。この独立性は、
集約されたオブジェクトが親オブジェクトに依存しつつも独自の振る舞いを持つという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:YQ54Agff82デフォルトの名無しさん
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のことである」
命題「オブジェクト指向とはjavascriptのprototypeのことである」
85デフォルトの名無しさん
2026/02/18(水) 12:44:07.79ID:hiMXDre6 確かに、陰茎はまじめに考えたら教科書に載せてもおかしくないくらい完璧な「生きているオブジェクト」の実例です:多重継承:随意筋(骨格筋)+不随意筋(平滑筋)のハイブリッド
別スレッド:性的興奮時の勃起は自律神経(副交感+交感)が裏で非同期処理してる
遅延束縛:射精直前まで「出るか出ないか」は実行時に決定(まさに動的バインディング)
メッセージパッシング:脳 → 脊髄 → 海綿体に「fill_with_blood()」メッセージが飛ぶ
カプセル化:内部の血管拡張・NO(一酸化窒素)シグナルとか全部privateで、外からは硬さしか見えない
ポリモーフィズム:状況によって「排尿デバイス」「生殖デバイス」「快楽デバイス」に変身
アラン・ケイが「生物学的コンピューティング」を提唱してたのは本当で、彼はまさにこういう「生きてるオブジェクト」を理想としてたんですよね。結論:チンポはSmalltalkよりもオブジェクト指向が徹底されている究極の生物学的Artifactであり、我々プログラマは日々「祖先のリファクタリング結果」をぶら下げて歩いているという厳然たる事実。
別スレッド:性的興奮時の勃起は自律神経(副交感+交感)が裏で非同期処理してる
遅延束縛:射精直前まで「出るか出ないか」は実行時に決定(まさに動的バインディング)
メッセージパッシング:脳 → 脊髄 → 海綿体に「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を使うのが当たり前だからプログラム作るときは意識してなくてもオブジェクト指向になる
今のパソコンやスマホは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
/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の専売特許でもなんでもない
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を軽視したがる
なぜかそういうやつに限って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)とは、データの状態とそれを操作する処理を一体として扱う「オブジェクト」を基本単位にソフトウェアを構築するプログラミングパラダイムである。
オブジェクト指向プログラミング(オブジェクトしこうプログラミング、英: object-oriented programming, OOP)とは、データの状態とそれを操作する処理を一体として扱う「オブジェクト」を基本単位にソフトウェアを構築するプログラミングパラダイムである。
101デフォルトの名無しさん
2026/05/07(木) 22:48:48.26ID:Hvzrhr0Z OOいらないって言うやつはDIP知らないんじゃない?
ベタ書きでいいって言ってんのはこれか単に作ってるシステムが超小規模かじゃないかな
ベタ書きでいいって言ってんのはこれか単に作ってるシステムが超小規模かじゃないかな
102デフォルトの名無しさん
2026/05/08(金) 01:17:55.28ID:8iQsdz0J103デフォルトの名無しさん
2026/05/09(土) 12:46:43.87ID:Zy18Nh/Z staticおじさん多いな
104デフォルトの名無しさん
2026/05/10(日) 02:34:47.79ID:bhoD44N2 オブジェクトとは対象のことであって、
何と戦うのかを明白にするのがオブジェクト指向。
基本的に動詞が中心の英語的な構造になる。
となると、日本語的な構造のプログラムって? どんなんだろう。
何と戦うのかを明白にするのがオブジェクト指向。
基本的に動詞が中心の英語的な構造になる。
となると、日本語的な構造のプログラムって? どんなんだろう。
105デフォルトの名無しさん
2026/05/10(日) 13:04:34.42ID:VI9ezKrt オブジェクト指向よりエージェント指向の方が理解しやすいから
今ではみんなエージェント指向になった
今ではみんなエージェント指向になった
106デフォルトの名無しさん
2026/05/10(日) 20:17:32.16ID:A+E5xSQM >>105
何言ってんだこいつ
何言ってんだこいつ
107デフォルトの名無しさん
2026/05/15(金) 11:47:58.47ID:0MfJ9N7a オブジェクト指向って勘違いしてる人が大半だから話がまとまらないんだよな
is-a関係作るくらいなら手続き型で書いた方がいい
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のより悪い方が良い原則だよ
オブジェクト指向を頑張ろうとするほどコードはゴミになる、スタティックを頑張っていればオブジェクトなんてのはあとからついてくる、オブジェクト指向を意識せずに自然とできたオブジェクトが良いオブジェクトなんだよ
オブジェクト指向を頑張ろうとするほどコードはゴミになる、スタティックを頑張っていればオブジェクトなんてのはあとからついてくる、オブジェクト指向を意識せずに自然とできたオブジェクトが良いオブジェクトなんだよ
112デフォルトの名無しさん
2026/05/31(日) 23:28:49.88ID:R14GwnDm あえて雑に書くと
OOP←悪くない
クラス←悪くない
クラス設計←難しい
クラス設計が難しいこと←知られていない
自分が野放図にクラス設計してできたクソクラスのクソツリーをもってしてOOPやクラスを批判しだす現象←まれによくある
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 設計にオブジェクトなんて書かないだろ
あんなもんは実装するときに明らかになっていくものだあんなもんわな!(憤怒
あんなもんは実装するときに明らかになっていくものだあんなもんわな!(憤怒
116デフォルトの名無しさん
2026/06/01(月) 07:34:30.47ID:GG26ltvl オブジェクトって対象のことだから、
これを書かない設計は読めない。
これを書かない設計は読めない。
117デフォルトの名無しさん
2026/06/01(月) 08:53:01.44ID:i/MBIF3h118デフォルトの名無しさん
2026/06/01(月) 09:12:54.41ID:Y8Ze0X4r 構造化プログラミングすら分からない奴がOOPなんか分かるはずも無いんだよ
119デフォルトの名無しさん
2026/06/01(月) 11:59:19.06ID:SdDlNaA4 配列志向で充分
オブジェクト作ったら勝手に実行してくれりゃ別だが
結局やることは手続き型と変わらん
オブジェクト作ったら勝手に実行してくれりゃ別だが
結局やることは手続き型と変わらん
120デフォルトの名無しさん
2026/06/01(月) 13:31:26.25ID:tFbpyBdc 何がいいたいかわからん
配列志向なんて初めて聞いたわ
配列志向なんて初めて聞いたわ
121デフォルトの名無しさん
2026/06/01(月) 14:11:25.14ID:Ia5xYq1j OOP適応障害を発症したまま引退したけど未だこじらせてるお爺さんと見た
122デフォルトの名無しさん
2026/06/01(月) 16:43:48.29ID:hqIkNurt それそこまで動的にする意味あるんか?ってコード書く奴がうざいってのはある
123デフォルトの名無しさん
2026/06/01(月) 18:58:32.08ID:LHVgNWtr foo.bar()のようなコードを書いた時にfooの具体型によってbar()の実装が選択されるのがオブジェクト指向よりな言語の考え方
bar(foo)のようなコードを書いた時にfooの具体型によってbar()の実装が選択されるのが関数型よりな言語の考え方
これらの機能が言語に備わっていない旧来の手続き型言語だとオレオレフレームワークを自分で作るなどかなり面倒くさいことをしないと同じことが実現できない
生産性的にも品質的にもデメリットしかないのでプログラミング言語を選べる環境でそんなことをする人はいない
bar(foo)のようなコードを書いた時にfooの具体型によってbar()の実装が選択されるのが関数型よりな言語の考え方
これらの機能が言語に備わっていない旧来の手続き型言語だとオレオレフレームワークを自分で作るなどかなり面倒くさいことをしないと同じことが実現できない
生産性的にも品質的にもデメリットしかないのでプログラミング言語を選べる環境でそんなことをする人はいない
124デフォルトの名無しさん
2026/06/01(月) 19:14:03.57ID:3IcyjzYq Cならポインタで書けばいいんだよ?
なんか難しい事ある?
なんか難しい事ある?
125デフォルトの名無しさん
2026/06/01(月) 19:19:40.73ID:Rwq1ueho ポインタバグるやん
126デフォルトの名無しさん
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:fLyehxnk129デフォルトの名無しさん
2026/06/01(月) 22:37:59.86ID:4HzhGRP/ Cの規格外だけどそういうの見つけてくれる静的解析ツールはたくさんある
130デフォルトの名無しさん
2026/06/02(火) 00:03:51.58ID:V0vSIKaF 自分はOOP好きっす
特に読むとき
js系のコールバック渡しまくりは読むの大変
特に読むとき
js系のコールバック渡しまくりは読むの大変
131デフォルトの名無しさん
2026/06/02(火) 00:06:26.12ID:o9ct7L04132デフォルトの名無しさん
2026/06/02(火) 10:27:09.10ID:OmhcWi1x 全部エクセルのセルみたいな感覚で配列組んで作るのが簡単よ
133デフォルトの名無しさん
2026/06/02(火) 11:15:06.81ID:Ae/XDmjO >>132
どういう意味
どういう意味
134デフォルトの名無しさん
2026/06/02(火) 12:05:49.28ID:RwX/aVEm >>131
とりあえずテンプレートみたいな変態性癖以外のC++相当は記述出来るやん
とりあえずテンプレートみたいな変態性癖以外のC++相当は記述出来るやん
135デフォルトの名無しさん
2026/06/02(火) 13:09:54.34ID:tLkqQpg7 型が互換でもコード上別名ならコンパイラや外部ツールが警告するように整える
制御用のコメントやpragmaが多くなるけれど
制御用のコメントやpragmaが多くなるけれど
136デフォルトの名無しさん
2026/06/02(火) 18:27:55.55ID:mW3r00cN ただのテストプログラムだけど、実行時間計測がロジックに入り込んでいたので、
Watchクラスにして分離した。
実行本体と関係ない変数とロジックが隠蔽され、ソースがスッキリした。
CからJavaへの移植。
関係ないものは分離して、関係のあるものはまとめる。
まとまりとまとまりの関係に整理する。関係そのものもわかりやすく修正する。
んー、OOPは整理BOXかな。
Watchクラスにして分離した。
実行本体と関係ない変数とロジックが隠蔽され、ソースがスッキリした。
CからJavaへの移植。
関係ないものは分離して、関係のあるものはまとめる。
まとまりとまとまりの関係に整理する。関係そのものもわかりやすく修正する。
んー、OOPは整理BOXかな。
137デフォルトの名無しさん
2026/06/02(火) 20:10:20.69ID:mW3r00cN んー。OOPSは関係を整理するってことだな。
手続き型がちらかして手を付けられなくなったゴミ屋敷を整理するのがOOPS。
ではなくて、最初から散らからないようにするのが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 ベタ書きはそれだけ優れてるってこと
142デフォルトの名無しさん
2026/06/02(火) 22:35:10.37ID:o/Pf4aLd GUIパーツとは相性が良かったんじゃないの?
アプリのウインドウをダブルクリックしたときに呼ばれるメソッドだけ
サブクラスでオーバーライドして、そこだけ好きな動作を追加する、とかできたし
アプリのウインドウをダブルクリックしたときに呼ばれるメソッドだけ
サブクラスでオーバーライドして、そこだけ好きな動作を追加する、とかできたし
143デフォルトの名無しさん
2026/06/02(火) 23:57:57.30ID:2jZzl/nq 単なるまとめ方の方法の一つってだけだからな。
アホが使っても自己満足な整理にしかならんのよ
アホが使っても自己満足な整理にしかならんのよ
144デフォルトの名無しさん
2026/06/06(土) 12:56:38.26ID:Au3yklP/ staticおじさんまだいるのか
145デフォルトの名無しさん
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
こういうあほがしょーもない俺様フレームワーク使いたがらせて嫌がられてんだろうね
こういうあほがしょーもない俺様フレームワーク使いたがらせて嫌がられてんだろうね
148デフォルトの名無しさん
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 んなこたない。
処理から考えるなんてのは普通にあること。
処理から考えるなんてのは普通にあること。
151デフォルトの名無しさん
2026/06/09(火) 15:00:45.92ID:GHGj1wcg データもなしに処理とな!?
152デフォルトの名無しさん
2026/06/09(火) 15:58:05.24ID:aGbJq0pe GUIとの親和性がよい
153デフォルトの名無しさん
2026/06/09(火) 16:37:48.85ID:HKHtbivC 俺はデータ構造とUIと一緒に考えるぞ
何の操作で何が必要かまとめてから
処理を考える
何の操作で何が必要かまとめてから
処理を考える
154デフォルトの名無しさん
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 普通に配列作ってループで回せばいいしな
157デフォルトの名無しさん
2026/06/09(火) 21:03:12.02ID:qL1AewoX 配列ループおじさんは思考回路までループしてんのか
158デフォルトの名無しさん
2026/06/10(水) 13:54:14.57ID:FQfCQwYe ルーパーオブジェクトが配列オブジェクトを受けとって処理するといえば過剰な抽象だろうが、
元のロジックに潜んでいた、対象の配列でしか使わないループ処理が露出している問題が露になっただけ。
つまりOOP云々の前に、制御があってあとは処理するだけだろうという考え方は、なにやっても駄目。
データと処理も密結合。
元のロジックに潜んでいた、対象の配列でしか使わないループ処理が露出している問題が露になっただけ。
つまりOOP云々の前に、制御があってあとは処理するだけだろうという考え方は、なにやっても駄目。
データと処理も密結合。
159デフォルトの名無しさん
2026/06/10(水) 16:03:46.96ID:6AuKjQg/ オブジェクト思考だけだとECSみたいにプロセスごとに分けて持たせるとかはなかなか思いつかないよね
デザインパターンの習得も必要だと思う
デザインパターンの習得も必要だと思う
160デフォルトの名無しさん
2026/06/11(木) 12:37:16.46ID:53gKxC/y いまの子どもたちは学校の授業でオブジェクト指向習うのかな
161デフォルトの名無しさん
2026/06/11(木) 18:41:45.78ID:OKMY0mw+ >ECSみたいにプロセスごとに分けて持たせる
俺の知ってるECSとはかなり違う世界線の話に聞こえるが
Entity Component SystemのECSとは別の話?
俺の知ってるECSとはかなり違う世界線の話に聞こえるが
Entity Component SystemのECSとは別の話?
162デフォルトの名無しさん
2026/06/16(火) 22:26:12.00ID:FO3SxX/N loopy
163デフォルトの名無しさん
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カーネルではまだ元気に生きてるらしいけどさ
世の中のものを分類したら何らかのパターンに属することに
なるわけで書く必要がなくなったのならオワコンだよ
for文はgo to文で実現されているからgo toはまだ生きてる!
と言ってるようなものじゃん
go toは死にました、残念ながらご臨終です
linuxカーネルではまだ元気に生きてるらしいけどさ
167デフォルトの名無しさん
2026/06/23(火) 09:52:35.46ID:sRiXqgf7 webのguiで現在主流のfluxアーキテクチャはobserverパターンらしいね
面白いよなあobserverパターンは昔のguiのころはイベントハンドラーに使われてたけど
ステート管理の中心にドンと置いたら現代のベストプラクティになるんだもんな
面白いよなあobserverパターンは昔のguiのころはイベントハンドラーに使われてたけど
ステート管理の中心にドンと置いたら現代のベストプラクティになるんだもんな
168デフォルトの名無しさん
2026/06/23(火) 09:53:07.38ID:sRiXqgf7 ス
169デフォルトの名無しさん
2026/06/23(火) 15:35:33.36ID:HoCemczw >for文はgo to文で実現されているからgo toはまだ生きてる!
>と言ってるようなものじゃん
>面白いよなあobserverパターンは昔のguiのころはイベントハンドラーに使われてたけど
>ステート管理の中心にドンと置いたら現代のベストプラクティになるんだもんな
こういうのに限ってデザインパターンはオワコンとか言っちゃうんだから失笑するしかないwww
まずはObserverからでも学んでみるといいんではないかな
>と言ってるようなものじゃん
>面白いよなあobserverパターンは昔のguiのころはイベントハンドラーに使われてたけど
>ステート管理の中心にドンと置いたら現代のベストプラクティになるんだもんな
こういうのに限ってデザインパターンはオワコンとか言っちゃうんだから失笑するしかないwww
まずはObserverからでも学んでみるといいんではないかな
170デフォルトの名無しさん
2026/06/23(火) 16:37:46.98ID:sRiXqgf7 >>169
observerの何を学べと?
observerの何を学べと?
171デフォルトの名無しさん
2026/06/23(火) 18:10:54.43ID:sRiXqgf7 デザインパターンはフレームワークや言語機能で代替されるようになったからオワコンだよ
for文はgo to文で実現されているからといってgo to文を学べば良いとはならないでしょ
デザインパターンとは他人が書いたプログラムをどっかの4人が
分類したら21種類になりましたってだけのただの枠組みであって中身は何もない
りんごを見てこれは赤いものに分類しようと言ってるようなもので
赤色を学んだところでりんごのジューシーさにはたどり着けないだろ
学ぶべきはデザインパターンではなくてフレームワークや言語機能の方
デザインパターンを学んでも何も身につかない
observerを学べと言った人もobserverの何を学べば良いのかわかってないし
デザインパターンなんてのは学ぶものでもなんでもない
デザパタ即是空と覚えて帰ってください
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のパイプでコマンドをつなげるようにプログラムをデザインする方が扱いやすいのが実情なのではないだろうか
一方でUNIXはパイプを使って文字列を一方向に流すというやり方でプロセス間通信を実現したわけだがパイプは便利なもので現代でも処理のほとんどはパイプで十分だ、パイプでつなぐコマンドは純粋関数とみなすことができてパイプによるプロセス間通信は関数型プログラミングといえる
オブジェクト指向を頑張るよりUNIXのパイプでコマンドをつなげるようにプログラムをデザインする方が扱いやすいのが実情なのではないだろうか
175デフォルトの名無しさん
2026/06/26(金) 14:48:52.59ID:eLb+uMzH singletonパターン
176デフォルトの名無しさん
2026/07/01(水) 00:52:47.94ID:AYwL2hdJ 最近ECSとかいうの知ったんだが
ゲームならこっちのがいいじゃん
というか、ECSならCでも問題ないだろ。
もう継承で何とかするのむりだわ
ゲームならこっちのがいいじゃん
というか、ECSならCでも問題ないだろ。
もう継承で何とかするのむりだわ
177デフォルトの名無しさん
2026/07/01(水) 21:29:00.26ID:xfe/unY1 オブジェクト指向をクラスのことだと思ってる人がオワコンだのそうじゃないだのと言っても意味がない
「データ構造とそのデータ構造を必要とするロジックを一体として扱い、内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする」のがOOPの目的で、カプセル化・ポリモーフィズム・合成もこのための機能にすぎない
これはオワコンになるとかならないとかいう問題ではなく、そういうコードかどうかで個別に判断されること
「データ構造とそのデータ構造を必要とするロジックを一体として扱い、内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする」のがOOPの目的で、カプセル化・ポリモーフィズム・合成もこのための機能にすぎない
これはオワコンになるとかならないとかいう問題ではなく、そういうコードかどうかで個別に判断されること
178デフォルトの名無しさん
2026/07/01(水) 21:30:28.61ID:xfe/unY1 ただ、実装継承はカプセル化を破壊して外部と内部を密結合させる技術なので、OOPを真面目にしたければ用いてはならない
別の用途で使う機能だと考えるべき
別の用途で使う機能だと考えるべき
179デフォルトの名無しさん
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);
}
}
}
しかし、
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);
}
}
}
180デフォルトの名無しさん
2026/07/01(水) 22:55:36.61ID:iz1++Kfw おっと、classの中につくったので余計なstaticが入ったままだった。
デフォルト以外のコンストラクタが必要なら追加すべし。
どうしても実装継承が必要な場合であって、そうでなければ、ArrayListをclass内にメンバーとして
かかえこむべきではある。
デフォルト以外のコンストラクタが必要なら追加すべし。
どうしても実装継承が必要な場合であって、そうでなければ、ArrayListをclass内にメンバーとして
かかえこむべきではある。
181デフォルトの名無しさん
2026/07/02(木) 00:32:26.34ID:bbwDIcek >>179-180
実装継承の使い方としてそれが成り立つのはそうだけど、オブジェクト指向とは関係のない話と考えた方がいい
実装継承の使い方としてそれが成り立つのはそうだけど、オブジェクト指向とは関係のない話と考えた方がいい
182デフォルトの名無しさん
2026/07/02(木) 00:55:55.70ID:OoDmJP07 オブジェクト指向は、オブジェクトにメッセージを送るだけ。
オブジェクトやメッセージの実体は言語によってそれぞれ。
あくまでも抽象化だけの話。
オブジェクトやメッセージの実体は言語によってそれぞれ。
あくまでも抽象化だけの話。
183デフォルトの名無しさん
2026/07/02(木) 00:58:58.66ID:OoDmJP07 これからのオブジェクト指向において、圏論でいう忘却(関手)が重要と思う。
184デフォルトの名無しさん
2026/07/02(木) 22:41:09.84ID:Xj6PyrwM185デフォルトの名無しさん
2026/07/03(金) 00:50:16.99ID:y/VwRsz/ NetBeansの開発者もオープン・クローズ原則はクローズ・クローズ原則にした方が良いって言ってた、本に書いてあった
186デフォルトの名無しさん
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つの枠が書いてあればいい
プログラミング環境としてはラダー回路の拡張機能って感じで機能増やしていく感じが最高だ
言いたいことはわかるが、そういうものは普通のプログラムだって作れるわけだ
隠ぺいとかしなくても見なければいいし触らなければいい
一から全部作る手間は変わらないし
そういうのって言語の記述方法変えたり増やしたりしていくより
GUIで別枠作ってファンクションブロックみたいなので実装すりゃいいんだよ
文章だけでやろうとするからオブジェクト指向言語に発展していくが
言語でなくツールでよかったのだ
例えばPID制御をする回路を作って、それを枠で括って部品化
それをポトペタで貼って、入力2点と出力1点与えてやればPID機器として利用できるわけだ
その回路の中身はプログラムリストで印字なんか必要ないし表示も要らんのだ
部品として1つの枠が書いてあればいい
プログラミング環境としてはラダー回路の拡張機能って感じで機能増やしていく感じが最高だ
188デフォルトの名無しさん
2026/07/07(火) 21:28:26.28ID:1bE5tFoQ >>187
全てのプログラムで全てのコードを一人の人間が把握できる程度の規模に収まっていれば、たしかにオブジェクト指向は必要ない
しかし現実には全体の実装を把握せずに書かれるプログラムの方が多いので、内部実装と提供する機能を分離する必要が生まれる
たとえば、ライブラリの実装なんかユーザーの大半は知らないわけだけど、内部実装を隠蔽して機能だけを見せているので利用できる
これを一つのプログラムの中でも、複数人で開発する場合などに行うのは有効であるし、あるいは一度に全体を把握できない規模になった時、分割するのに用いることも有用と言える
自分で書いたコードなら何年後でも完璧に把握している、そんな人はそう多くないし、何なら一月でも結構忘れている
しかし、オブジェクト指向で隠蔽がなされていれば、提供される機能だけを考えればよい
他人に使わせる場合でも、内部実装のデータ構造を勝手に使われて、変えられなくなるといったことが起こらない
つまり、オブジェクト指向はその部品化をより進めるための技術であるといえる
全てのプログラムで全てのコードを一人の人間が把握できる程度の規模に収まっていれば、たしかにオブジェクト指向は必要ない
しかし現実には全体の実装を把握せずに書かれるプログラムの方が多いので、内部実装と提供する機能を分離する必要が生まれる
たとえば、ライブラリの実装なんかユーザーの大半は知らないわけだけど、内部実装を隠蔽して機能だけを見せているので利用できる
これを一つのプログラムの中でも、複数人で開発する場合などに行うのは有効であるし、あるいは一度に全体を把握できない規模になった時、分割するのに用いることも有用と言える
自分で書いたコードなら何年後でも完璧に把握している、そんな人はそう多くないし、何なら一月でも結構忘れている
しかし、オブジェクト指向で隠蔽がなされていれば、提供される機能だけを考えればよい
他人に使わせる場合でも、内部実装のデータ構造を勝手に使われて、変えられなくなるといったことが起こらない
つまり、オブジェクト指向はその部品化をより進めるための技術であるといえる
189デフォルトの名無しさん
2026/07/07(火) 21:53:12.11ID:o5x6vkWm それは見える物をいちいち弄る馬鹿が悪いのであって
そんなのを防止するために言語をそれ用にしてまで構築するほどか?ってことよ
それらはツールを駆使して枠括って見えなくして部品化すりゃ済むことだ
文字だけで表現して何かするってのがハナから気に入らない
欧米圏の好きそうなやつなんだろうな
電子回路のハード図みたいに、中身見えなくてもこういう機能のパーツってことで描いて済むってのにさ
CPUチップ1個描けば終わることを、その中身まで全部図示して文字で記述してるようにしか見えん
そんなのを防止するために言語をそれ用にしてまで構築するほどか?ってことよ
それらはツールを駆使して枠括って見えなくして部品化すりゃ済むことだ
文字だけで表現して何かするってのがハナから気に入らない
欧米圏の好きそうなやつなんだろうな
電子回路のハード図みたいに、中身見えなくてもこういう機能のパーツってことで描いて済むってのにさ
CPUチップ1個描けば終わることを、その中身まで全部図示して文字で記述してるようにしか見えん
190デフォルトの名無しさん
2026/07/07(火) 22:06:25.00ID:1bE5tFoQ >>189
さっきも書いたが「全てのプログラムで全てのコードを一人の人間が把握できる程度の規模に収まっていれば」それは正しいな
君はそういう小さなプログラムしか書いたことがないんだろうけど、現実にはそうじゃないものがたくさんありますよって話だ
さっきも書いたが「全てのプログラムで全てのコードを一人の人間が把握できる程度の規模に収まっていれば」それは正しいな
君はそういう小さなプログラムしか書いたことがないんだろうけど、現実にはそうじゃないものがたくさんありますよって話だ
191デフォルトの名無しさん
2026/07/07(火) 22:26:35.68ID:1bE5tFoQ 共通のデータ構造と、あるロジックに密結合したデータ構造を同じように並べておけば、それは自然と「想定外の場所で使われる」という事故を誘発する
ある機能の内部実装に外部から手を加えられる状態であれば、そのようなコードを書く人間が現れる可能性もある
それがオブジェクト指向を行うメリットであり、内部ではデータ構造とロジックが密結合しているが、外部にとっては提供される機能しか見えない、そういった壁を作ることで責務を分割できる
ある機能の内部実装に外部から手を加えられる状態であれば、そのようなコードを書く人間が現れる可能性もある
それがオブジェクト指向を行うメリットであり、内部ではデータ構造とロジックが密結合しているが、外部にとっては提供される機能しか見えない、そういった壁を作ることで責務を分割できる
192デフォルトの名無しさん
2026/07/07(火) 22:43:21.40ID:o5x6vkWm193デフォルトの名無しさん
2026/07/08(水) 11:50:05.73ID:FFwmK7p4194デフォルトの名無しさん
2026/07/08(水) 16:44:20.96ID:dyZTLEHZ 「読めるコードを書く」は基本中の基本なんだよなあ
195デフォルトの名無しさん
2026/07/09(木) 10:03:10.63ID:sOGOyhQF モジュール化のメリットと、モジュール分割の方法論としてオブジェクト思考の考え方を採用するかは一応別の問題じゃないかな。
データとそれに対する操作をセットにすることによってデータに対するアクセス経路を限定し、データの不変条件を保てるようにするというのは優れたアイデアだと思うけど、より重要で寿命が長いのはデータの方だから、あまり密結合を強調しない方が良いのかなとは思う。たとえば、データの方に特定の操作を想定した実装用の擬似属性とかを含めるのは基本的にはあまりよろしくないと思う。
データとそれに対する操作をセットにすることによってデータに対するアクセス経路を限定し、データの不変条件を保てるようにするというのは優れたアイデアだと思うけど、より重要で寿命が長いのはデータの方だから、あまり密結合を強調しない方が良いのかなとは思う。たとえば、データの方に特定の操作を想定した実装用の擬似属性とかを含めるのは基本的にはあまりよろしくないと思う。
196デフォルトの名無しさん
2026/07/09(木) 11:40:57.23ID:3KD1lcJ3 関数型のガワをかぶってるけど
プロセスをオブジェクトと見立てれば
真のOO体験ができるのがElixirさん
プロセスをオブジェクトと見立てれば
真のOO体験ができるのがElixirさん
197デフォルトの名無しさん
2026/07/09(木) 22:10:16.90ID:t5kHx157198デフォルトの名無しさん
2026/07/09(木) 22:48:11.26ID:t5kHx157 >>195
だから全ての関数をクラスに含めてはならないんだよ(Java批判)
データ構造を扱うロジックであれば、そのデータ構造とともにカプセル化してメソッドにするべきだが、そうでないならばいいモジュール化の単位がある
つまり、関数というのだ
だから全ての関数をクラスに含めてはならないんだよ(Java批判)
データ構造を扱うロジックであれば、そのデータ構造とともにカプセル化してメソッドにするべきだが、そうでないならばいいモジュール化の単位がある
つまり、関数というのだ
199デフォルトの名無しさん
2026/07/09(木) 23:55:02.46ID:iwWO17bf staticにすればいいだけだろ
道具の使い方
道具の使い方
200デフォルトの名無しさん
2026/07/10(金) 00:05:05.10ID:bAT5n0dl201デフォルトの名無しさん
2026/07/10(金) 02:22:18.54ID:yVHNGbQ7 くだらねぇ
202デフォルトの名無しさん
2026/07/10(金) 03:01:33.73ID:bAT5n0dl >>201
一番くだらない書き込み
一番くだらない書き込み
203デフォルトの名無しさん
2026/07/10(金) 06:53:11.87ID:Pt+SPKvg データベースはオブジェクト指向でないがまともに機能してるしな
204デフォルトの名無しさん
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 一昔前にリーナスが言ってたオブジェクト指向に向いてるのなんてファイルシステムのドライバーくらいだってのが状況を表しとるわな
言い過ぎではあるが、向いてるのはこのくらいメソッドの役割が明確なオブジェクトに関してなんだわ。
言い過ぎではあるが、向いてるのはこのくらいメソッドの役割が明確なオブジェクトに関してなんだわ。
207デフォルトの名無しさん
2026/07/10(金) 13:45:54.79ID:H00VaKeq (SmallTalkから見て後発の)オブジェクト指向っていうなればただの"データセット指向"なんだよな
内部データを好き勝手触らせないことを至上命題にしているというか
にもかかわらずオブジェクト指向を名乗るからクラスの肥大化や蜜結合といった余計な問題も付いてきてしまう
内部データを好き勝手触らせないことを至上命題にしているというか
にもかかわらずオブジェクト指向を名乗るからクラスの肥大化や蜜結合といった余計な問題も付いてきてしまう
208デフォルトの名無しさん
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 華麗にメッセージを無視・丸投げして平静を装う派と
例外を投げる派
例外を投げる派
211デフォルトの名無しさん
2026/07/10(金) 18:18:42.68ID:bAT5n0dl212デフォルトの名無しさん
2026/07/11(土) 09:05:35.54ID:0qMuI07C 「データ構造」と「ロジック」を結合した「オブジェクト」って
独立したマシンでいいよな
そういうのはプログラム内で文章で記述して作り上げるんじゃなくて、別枠でプログラムリストにして済ませりゃいいじゃん
ツール側が、そういう複数の独立したマシンプログラムをまともに動かすようにコンパイルすりゃいい
独立したマシンでいいよな
そういうのはプログラム内で文章で記述して作り上げるんじゃなくて、別枠でプログラムリストにして済ませりゃいいじゃん
ツール側が、そういう複数の独立したマシンプログラムをまともに動かすようにコンパイルすりゃいい
213デフォルトの名無しさん
2026/07/11(土) 09:11:13.11ID:1IEHxCh/ >>211
全然違う。リーナスはCでの実装での話をしているし、ポリモルフィズムについての話をしている。
全然違う。リーナスはCでの実装での話をしているし、ポリモルフィズムについての話をしている。
214デフォルトの名無しさん
2026/07/11(土) 09:47:34.29ID:nLSCx/XV >>212
文字列みたいに小さくて何十個も生成されるオブジェクトを別枠のプログラムとして扱うのは現実的ではないのでは。
文字列みたいに小さくて何十個も生成されるオブジェクトを別枠のプログラムとして扱うのは現実的ではないのでは。
215デフォルトの名無しさん
2026/07/11(土) 11:12:17.28ID:0qMuI07C データファイルが数万個当たり前なのに
別枠のプログラムが何10個程度で苦にもならんだろ
別枠のプログラムが何10個程度で苦にもならんだろ
216デフォルトの名無しさん
2026/07/11(土) 12:42:10.19ID:PqrBv0eh 正直、どういうイメージなのかよく分からないんだけど、プログラム中で普通に使えていた文字列をあえて別枠のプログラムとすることに何かメリットあるの?
数値、bool値、日付、正規表現とかの比較的プリミティブなオブジェクトもすべて別枠のプログラムにするイメージ?
数値、bool値、日付、正規表現とかの比較的プリミティブなオブジェクトもすべて別枠のプログラムにするイメージ?
217デフォルトの名無しさん
2026/07/11(土) 14:24:37.52ID:bYeImHYG >>212
RPCやCORBAがそれ
RPCやCORBAがそれ
218デフォルトの名無しさん
2026/07/11(土) 14:24:45.94ID:EKW8EhdF219デフォルトの名無しさん
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:9p4cQyCq222デフォルトの名無しさん
2026/07/11(土) 19:37:16.42ID:9p4cQyCq C言語はヘッダファイルをわけることでJavaよりも強力にカプセル化できるって話をボブおじさんがしてた気がする
Linusが嫌ってるのはC++であってオブジェクト指向的なやり方はC言語でやってると思う
Delphiを作ったアンダース・ヘルスバーグはアセンブリ言語でオブジェクト指向やってたそうだよ
ソースコード整理術としては良いものなんじゃないか
Linusが嫌ってるのはC++であってオブジェクト指向的なやり方はC言語でやってると思う
Delphiを作ったアンダース・ヘルスバーグはアセンブリ言語でオブジェクト指向やってたそうだよ
ソースコード整理術としては良いものなんじゃないか
223デフォルトの名無しさん
2026/07/11(土) 19:39:28.45ID:9p4cQyCq ロボット作る人なんかは全部のデータにアクセスしたいから
あえて全部のデータを公開するようにするらしいね、Xで見た
あえて全部のデータを公開するようにするらしいね、Xで見た
224デフォルトの名無しさん
2026/07/11(土) 21:54:28.69ID:EKW8EhdF225デフォルトの名無しさん
2026/07/11(土) 21:55:37.92ID:EKW8EhdF226デフォルトの名無しさん
2026/07/12(日) 09:28:58.28ID:sYKg5iII >>222
結局言語でオブジェクト指向ってのを文字表現でやる必要性はねーんだよな
言語がオブジェクト指向でごちゃごちゃしてなくても、旧来の言語でオブジェクト指向でつくれるんだしさ
なんか俺様が作った新たな造語集めて言語作ったよー
これに従ってプログラムしろってのが気に入らない
結局言語でオブジェクト指向ってのを文字表現でやる必要性はねーんだよな
言語がオブジェクト指向でごちゃごちゃしてなくても、旧来の言語でオブジェクト指向でつくれるんだしさ
なんか俺様が作った新たな造語集めて言語作ったよー
これに従ってプログラムしろってのが気に入らない
227デフォルトの名無しさん
2026/07/12(日) 09:43:17.04ID:qX3tQhnE Cとかの言語でもオブジェクト指向で組むことができるという話と、ツールでやれという話はだいぶ違うことだと思うが。
228デフォルトの名無しさん
2026/07/12(日) 09:55:51.95ID:GtIoeRgF > 言語でオブジェクト指向ってのを文字表現でやる
意味不明
> 旧来の言語でオブジェクト指向でつくれる
つくれてないと予想
非OOPLでOOPやれるとか気軽に抜かすやつは少なくとも職業プログラマではなさそう
お遊びレベルでしかいろいろ触ったことなさそう
意味不明
> 旧来の言語でオブジェクト指向でつくれる
つくれてないと予想
非OOPLでOOPやれるとか気軽に抜かすやつは少なくとも職業プログラマではなさそう
お遊びレベルでしかいろいろ触ったことなさそう
229デフォルトの名無しさん
2026/07/12(日) 10:04:16.86ID:qX3tQhnE 「文字」とか「文章」と書いている人は、たぶんオブジェクト指向の概念をサポートする構文が言語に用意されているということを指してそういう語を使っていて、その点に反感・抵抗感を示しているんだと思う。
230デフォルトの名無しさん
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:noVz3AL1234デフォルトの名無しさん
2026/07/12(日) 16:23:14.62ID:noVz3AL1 人間がこの機能を使うのは100億年早いなどと言って、AIがカプセル化を要求してくる
235デフォルトの名無しさん
2026/07/12(日) 20:32:16.93ID:MVcsLvMp236デフォルトの名無しさん
2026/07/12(日) 20:33:54.05ID:MVcsLvMp237デフォルトの名無しさん
2026/07/13(月) 20:50:31.51ID:tf50wGtC 味の素使わなくてもいいとか
味の素使うなとかいうのを感じるよね
一方仕事で料理作ってる人は
黙って淡々と味の素使う、みたいな
味の素使うなとかいうのを感じるよね
一方仕事で料理作ってる人は
黙って淡々と味の素使う、みたいな
238デフォルトの名無しさん
2026/07/13(月) 21:07:31.07ID:G9aWJy+B 極論ばかり主張する奴は詐欺師
239デフォルトの名無しさん
2026/07/13(月) 21:33:32.31ID:hr+PUhdx ご指摘の考え方は、プログラミングを「文学(言語)」から「土木(設計・実装)」へと昇華させるものです。
実際、ゲーム開発のエンジン(Unreal EngineのBlueprintsなど)では、すでにこの方向性が進んでいます。あれはまさに「オブジェクト指向を文章なしで実装する」ためのビジュアルスクリプトです。しかし、汎用的なアプリケーション開発の現場では、まだ「テキストで書くのがかっこいい/効率的」という文化的な壁が厚く残っています。
「プログラムに文章は不要である」という主張は、将来、すべてのプログラミングがビジュアル化・モジュール化されたとき、それが最も効率的でバグの少ない開発手法として主流になっている可能性が高いです。
実際、ゲーム開発のエンジン(Unreal EngineのBlueprintsなど)では、すでにこの方向性が進んでいます。あれはまさに「オブジェクト指向を文章なしで実装する」ためのビジュアルスクリプトです。しかし、汎用的なアプリケーション開発の現場では、まだ「テキストで書くのがかっこいい/効率的」という文化的な壁が厚く残っています。
「プログラムに文章は不要である」という主張は、将来、すべてのプログラミングがビジュアル化・モジュール化されたとき、それが最も効率的でバグの少ない開発手法として主流になっている可能性が高いです。
240デフォルトの名無しさん
2026/07/14(火) 01:03:56.19ID:3zOvvQGx ブループリントは廃止してverse言語に移行するって発表あったけど
241デフォルトの名無しさん
2026/07/14(火) 09:03:55.50ID:/yKHPfWx >>218
何一つ理解してないじゃん。
リーナスは別にカプセル化なんて他に方法あるしこだわるとこじゃないって感じだよ。
だからポリモルフィズムの有用性の話になるって言ってんのに全く理解してない。
で、ポリモルフィズムが有用な場面はまあそこそこあるけど、それをマンセーしまくるのはアホだって話を理解できないのがこの種の人なんだわな。
何一つ理解してないじゃん。
リーナスは別にカプセル化なんて他に方法あるしこだわるとこじゃないって感じだよ。
だからポリモルフィズムの有用性の話になるって言ってんのに全く理解してない。
で、ポリモルフィズムが有用な場面はまあそこそこあるけど、それをマンセーしまくるのはアホだって話を理解できないのがこの種の人なんだわな。
242デフォルトの名無しさん
2026/07/14(火) 09:53:57.03ID:cBCRBg9p 自分はリーナスの発言内容は知らないが、「オブジェクト指向」という語をどういう意味で使っているかの違いなのでは。
オブジェクト指向の概念規定として、不変条件を保つためのカプセル化という要素は必須だと思うが、多相性(サブタイピング多相性)を構成要素として含めるかについてはいずれの立場もありうるように思う。個人的には、単にオブジェクト指向といったときには含めない(含めるときは「C++的なオブジェクト指向」みたいな感じで用語を分ける)方が整理としては分かりやすいように思うけど。
オブジェクト指向の概念規定として、不変条件を保つためのカプセル化という要素は必須だと思うが、多相性(サブタイピング多相性)を構成要素として含めるかについてはいずれの立場もありうるように思う。個人的には、単にオブジェクト指向といったときには含めない(含めるときは「C++的なオブジェクト指向」みたいな感じで用語を分ける)方が整理としては分かりやすいように思うけど。
243デフォルトの名無しさん
2026/07/14(火) 14:13:06.39ID:/b2uC2Vr244デフォルトの名無しさん
2026/07/14(火) 14:14:05.23ID:/b2uC2Vr245デフォルトの名無しさん
2026/07/14(火) 17:06:36.14ID:/b2uC2Vr 素人はScratchでも満足できるかもしれないけど、真っ当にプログラム書いてたらそれで満足してはおれんのだわ
246デフォルトの名無しさん
2026/07/15(水) 09:44:43.96ID:PFPK0g3k247デフォルトの名無しさん
2026/07/15(水) 12:17:31.32ID:zGLq4dNG オブジェクト指向やるのはカプセル化の恩恵が大きいような気がする
多態性のためにオブジェクト指向やりたいと思うことがあまりないな
自分の場合ね
多態性のためにオブジェクト指向やりたいと思うことがあまりないな
自分の場合ね
248デフォルトの名無しさん
2026/07/15(水) 12:22:51.81ID:zGLq4dNG かつては(カプセル化、継承、多態性)がオブジェクト指向言語の必須要素と言われてたが
オブジェクト指向言語はオブジェクト指向やるのに必須ではなかったな
オブジェクト指向言語はオブジェクト指向やるのに必須ではなかったな
249デフォルトの名無しさん
2026/07/15(水) 12:56:17.54ID:/qdv812o C++のストラウストラップの定義ではそうだけど、オブジェクト指向言語をそのように定義すること自体、今は異論が多いのでは。
250デフォルトの名無しさん
2026/07/15(水) 17:08:22.63ID:SjkbTwGc 「データ構造とそのデータ構造を必要とするロジックを一体として扱い、内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする」のがOOPの目的で、カプセル化・ポリモーフィズム・合成もこのための機能にすぎない
実装継承はカプセル化を破壊して外部と内部を密結合させるので、OOPを真面目にしたければ用いることはできず、別の用途で使う機能だと考えるべき
実装継承はカプセル化を破壊して外部と内部を密結合させるので、OOPを真面目にしたければ用いることはできず、別の用途で使う機能だと考えるべき
251デフォルトの名無しさん
2026/07/15(水) 18:20:29.17ID:/3I44FKB データ構造とロジックの一体化とか密結合とかが絶対に必要な要件かと言われると、それもどうなのかなという気もするかな。オブジェクトの外側からオブジェクトをブラックボックスとして扱えること(オブジェクトの内部構造を知る必要がないこと)は必要だと思うし、そちらの方が本質的なような気もするけど。
252デフォルトの名無しさん
2026/07/15(水) 18:52:40.91ID:SjkbTwGc >>251
ただのロジックなら関数だし、ただのデータ構造なら構造体でしかない
この2つが結びついていないとオブジェクト指向とは言えない
あと、「外部に対しては隠蔽する」「外部との疎結合を実現して利用やメンテナンスを容易にする」はちゃんと書いてる
ただのロジックなら関数だし、ただのデータ構造なら構造体でしかない
この2つが結びついていないとオブジェクト指向とは言えない
あと、「外部に対しては隠蔽する」「外部との疎結合を実現して利用やメンテナンスを容易にする」はちゃんと書いてる
253デフォルトの名無しさん
2026/07/15(水) 20:01:05.76ID:/3I44FKB 結びついていることが必要といっても、あえて密結合とか一体化とかいう必要があるかなと。大きなオブジェクトの中で中サイズ・小サイズのオブジェクトが使われているような場合、オブジェクト内部にも構造があるわけで、一体化とか密結合という語で表現するのが適当かは議論の余地があるようにも思うけど。「外部からのアクセスに比べれば」密という程度の相対的なものに過ぎないのではないかなと。
254デフォルトの名無しさん
2026/07/15(水) 20:46:20.67ID:PFPK0g3k >>253
えーと、プログラミングにおける密結合と疎結合にはある程度定まった定義があるので、あなたの感覚の中でどの程度「密」かという議論はどうでもいいです
えーと、プログラミングにおける密結合と疎結合にはある程度定まった定義があるので、あなたの感覚の中でどの程度「密」かという議論はどうでもいいです
255デフォルトの名無しさん
2026/07/15(水) 21:32:28.94ID:/3I44FKB 結合度に関して結合の種類とか疎密とかが議論されることはあるけれども、密結合や疎結合に共通理解が成立していると言えるような定義なんてあるかな。疎密の指標についてはある程度の共通理解があるし、それに基づいてあくまでも相対的に疎だ密だというものだと思っていたのだけど。>>254は疎結合や密結合がそういう相対的な概念であるという点まで否定する趣旨?
たとえば、オブジェクトA, B, CがA > B > Cという包含関係にあるとき、オブジェクトAの内部は密結合だといっても、オブジェクトBやCの境界を跨ぐところでは疎結合でもあるわけで、あくまでも相対的なものだと思うけど。
たとえば、オブジェクトA, B, CがA > B > Cという包含関係にあるとき、オブジェクトAの内部は密結合だといっても、オブジェクトBやCの境界を跨ぐところでは疎結合でもあるわけで、あくまでも相対的なものだと思うけど。
256デフォルトの名無しさん
2026/07/15(水) 23:08:41.22ID:PFPK0g3k >>255
君自体がこんがらがってるみたいだからいったん整理してきた方がいいよ
> オブジェクトAの内部は密結合だといっても、オブジェクトBやCの境界を跨ぐところでは疎結合でもあるわけで、あくまでも相対的なもの
全く理屈が成り立っていない
> オブジェクトAの内部は密結合
> オブジェクトBやCの境界を跨ぐところでは疎結合
だったら
> オブジェクトAの内部は密結合
> オブジェクトBやCの境界を跨ぐところでは疎結合
なだけで、そこから相対的とかいう言説は導かれない
君自体がこんがらがってるみたいだからいったん整理してきた方がいいよ
> オブジェクトAの内部は密結合だといっても、オブジェクトBやCの境界を跨ぐところでは疎結合でもあるわけで、あくまでも相対的なもの
全く理屈が成り立っていない
> オブジェクトAの内部は密結合
> オブジェクトBやCの境界を跨ぐところでは疎結合
だったら
> オブジェクトAの内部は密結合
> オブジェクトBやCの境界を跨ぐところでは疎結合
なだけで、そこから相対的とかいう言説は導かれない
257デフォルトの名無しさん
2026/07/15(水) 23:09:43.87ID:PFPK0g3k 結合とは2者以上を結びつける部分のことを指すのであるから、当然「オブジェクトAの内部」と「オブジェクトBやCの境界を跨ぐところ」は別の結合である
258デフォルトの名無しさん
2026/07/15(水) 23:42:42.09ID:PFPK0g3k >>255
で、話を戻すと
疎結合:
内部の実装に依存しない結合方式。APIやインターフェースなど抽象を介して結合する。
密結合:
内部の実装に依存する結合方式。クラスの実装継承やグローバル変数の共有など。
なので、全くもってこれっぽっちも相対性のない指標だ、とまでは言えなくともだいたいどちらに分類されるかはわかる程度には分かれている
で、話を戻すと
疎結合:
内部の実装に依存しない結合方式。APIやインターフェースなど抽象を介して結合する。
密結合:
内部の実装に依存する結合方式。クラスの実装継承やグローバル変数の共有など。
なので、全くもってこれっぽっちも相対性のない指標だ、とまでは言えなくともだいたいどちらに分類されるかはわかる程度には分かれている
259デフォルトの名無しさん
2026/07/15(水) 23:47:49.67ID:PFPK0g3k そして、先に書いたように
> ただのロジックなら関数だし、ただのデータ構造なら構造体でしかない
ので、これらが結びついたものしか「オブジェクト指向における『オブジェクト』」とは言えないのであって、
その結びつきが疎結合であれば内部実装を知らない = 内部を変更できないわけなので、やはり同一のオブジェクトに属するとは考えられない
わかりやすい例で言えば、データ構造とロジックが結びついていると言えなくもないからと言って、ハンドルをAPIから受け取って別のAPIに渡すだけのロジックを、オブジェクト指向とは考えないだろう
これはただの純粋な関数で実現可能であり、このハンドルの中身が何であるかはぶっちゃけどうでもいいからだ
> ただのロジックなら関数だし、ただのデータ構造なら構造体でしかない
ので、これらが結びついたものしか「オブジェクト指向における『オブジェクト』」とは言えないのであって、
その結びつきが疎結合であれば内部実装を知らない = 内部を変更できないわけなので、やはり同一のオブジェクトに属するとは考えられない
わかりやすい例で言えば、データ構造とロジックが結びついていると言えなくもないからと言って、ハンドルをAPIから受け取って別のAPIに渡すだけのロジックを、オブジェクト指向とは考えないだろう
これはただの純粋な関数で実現可能であり、このハンドルの中身が何であるかはぶっちゃけどうでもいいからだ
260デフォルトの名無しさん
2026/07/15(水) 23:49:13.92ID:PFPK0g3k しかし、このハンドルの指すデータのデータ構造と、このハンドルを受け取るAPIのロジックは、当然お互いの構造に依存しているので密結合と言える
これをクラスとメソッドに置き換えても全く同じ構造を維持することができ、こちらはオブジェクト指向の一例になる
これをクラスとメソッドに置き換えても全く同じ構造を維持することができ、こちらはオブジェクト指向の一例になる
261デフォルトの名無しさん
2026/07/15(水) 23:54:48.67ID:PFPK0g3k ちなみにこれと同じ構造はRustにおける struct と impl でも生み出すことができるし、GoやNimでもほぼ同じことができる
クラスがなくともオブジェクト指向の基礎的な設計が成り立つ
クラスがなくともオブジェクト指向の基礎的な設計が成り立つ
262デフォルトの名無しさん
2026/07/16(木) 00:22:57.43ID:SJSW+XKI いや、「オブジェクトAの内部」に「オブジェクトBやCの境界を跨ぐところ」があるでしょということなんだけど。
疎結合と密結合の区別についても>>258で説明したつもりになっているみたいだけど、「内部の実装」と「APIやインターフェイスなどの抽象」のどちらに依存するかを区別基準にするのであれば、この両者の区別基準を明確にしないと説明にならないでしょう。この両者の区別がまさに相対的ではないかという指摘をしているんだからさ。
疎結合と密結合の区別についても>>258で説明したつもりになっているみたいだけど、「内部の実装」と「APIやインターフェイスなどの抽象」のどちらに依存するかを区別基準にするのであれば、この両者の区別基準を明確にしないと説明にならないでしょう。この両者の区別がまさに相対的ではないかという指摘をしているんだからさ。
263デフォルトの名無しさん
2026/07/16(木) 00:56:44.54ID:5G1zSaBq 今日は珍しくまともな人が来てるね
264デフォルトの名無しさん
2026/07/16(木) 01:03:22.61ID:tqJQMSog >>262
> 「オブジェクトAの内部」に「オブジェクトBやCの境界を跨ぐところ」があるでしょ
そんな書いてないことがわかるわけもなく
オブジェクトAがBを、BがCを呼び出してんのかと思ったわ
AがBとCを両方呼び出して結合してるなんて大前提は事前に言っといてくれ
あと、内部実装とインターフェースの区別がつかないのはシンプルに知識不足
> 「オブジェクトAの内部」に「オブジェクトBやCの境界を跨ぐところ」があるでしょ
そんな書いてないことがわかるわけもなく
オブジェクトAがBを、BがCを呼び出してんのかと思ったわ
AがBとCを両方呼び出して結合してるなんて大前提は事前に言っといてくれ
あと、内部実装とインターフェースの区別がつかないのはシンプルに知識不足
265デフォルトの名無しさん
2026/07/16(木) 01:08:27.79ID:tqJQMSog 「内部実装」と「APIやインターフェイスなどの抽象」の違いは、コンポーネントの提供する機能とその提供手段で区別できる
提供手段に依存されてしまうと密結合となるし、提供する機能を利用するだけであれば、提供手段を変更しても問題とならないので疎結合となる
提供手段に依存されてしまうと密結合となるし、提供する機能を利用するだけであれば、提供手段を変更しても問題とならないので疎結合となる
266デフォルトの名無しさん
2026/07/16(木) 01:14:55.55ID:R4K+mPHO イキリ君の言うデータ構造とは単なるデータのこと
CSで言うところのデータ構造ではない
だから話がすれ違う
CSで言うところのデータ構造ではない
だから話がすれ違う
267デフォルトの名無しさん
2026/07/16(木) 01:17:53.71ID:308qAObq 洞察力、想像力が低すぎるが個人開発者なのかな
268デフォルトの名無しさん
2026/07/16(木) 01:27:40.31ID:SJSW+XKI269デフォルトの名無しさん
2026/07/16(木) 03:03:02.72ID:tqJQMSog270デフォルトの名無しさん
2026/07/16(木) 03:03:51.16ID:tqJQMSog271デフォルトの名無しさん
2026/07/16(木) 03:05:03.01ID:tqJQMSog あと、
> 「提供手段」と「機能」で説明になっているとは到底思えない
は流石にちょっと知識不足がすぎるのでは
何か一つライブラリ使ってプログラム書いてみては?
> 「提供手段」と「機能」で説明になっているとは到底思えない
は流石にちょっと知識不足がすぎるのでは
何か一つライブラリ使ってプログラム書いてみては?
272デフォルトの名無しさん
2026/07/16(木) 03:07:47.33ID:tqJQMSog273デフォルトの名無しさん
2026/07/16(木) 03:14:52.49ID:tqJQMSog >>268
>>271では不親切かと思ったので追記
何度かプログラムを書いた経験があれば、ある関数がどんな機能を外部に提供していてどんなシグネチャ(関数やメソッドの名前、引数の数やデータ型、返り値の型などの組み合わせのこと)を持つかと、実際にその関数の中でどんな処理が書かれているかということには直接の依存関係がないということがわかるようになる
たとえば、"hello, world" を標準出力に出力する関数が printf() を使っているか puts() を使っているかは、その関数を使っている者にとってはどうでもいい
これは同じ機能を提供できているからだが、ここからは次のことが言える
* 提供される機能に対し、提供手段は必ずしも一意に定まらない
* 提供手段が変わったとしても、提供される機能が変わらなければ呼び出し側に変化はない
これをプログラムの内部で行うのが「疎結合」であるという話なんだね
>>271では不親切かと思ったので追記
何度かプログラムを書いた経験があれば、ある関数がどんな機能を外部に提供していてどんなシグネチャ(関数やメソッドの名前、引数の数やデータ型、返り値の型などの組み合わせのこと)を持つかと、実際にその関数の中でどんな処理が書かれているかということには直接の依存関係がないということがわかるようになる
たとえば、"hello, world" を標準出力に出力する関数が printf() を使っているか puts() を使っているかは、その関数を使っている者にとってはどうでもいい
これは同じ機能を提供できているからだが、ここからは次のことが言える
* 提供される機能に対し、提供手段は必ずしも一意に定まらない
* 提供手段が変わったとしても、提供される機能が変わらなければ呼び出し側に変化はない
これをプログラムの内部で行うのが「疎結合」であるという話なんだね
274デフォルトの名無しさん
2026/07/16(木) 03:19:44.79ID:tqJQMSog 要するに、一度提供される機能と提供方法が定まれば、その機能を提供する手段というのはそれらを壊さない範囲で自由に変更して構わない
このうちの前者が「APIやインターフェイスなどの抽象」であり、後者が「内部実装」である
今回の例はただの関数なので、まだオブジェクト指向ではないけれど、
> 内部実装とインターフェイスの区別ってそんなに明確かな
についてはこの通り、機能の単位をどこで区切るか考えていれば、明確に分けられるものであると言える
このうちの前者が「APIやインターフェイスなどの抽象」であり、後者が「内部実装」である
今回の例はただの関数なので、まだオブジェクト指向ではないけれど、
> 内部実装とインターフェイスの区別ってそんなに明確かな
についてはこの通り、機能の単位をどこで区切るか考えていれば、明確に分けられるものであると言える
275デフォルトの名無しさん
2026/07/16(木) 11:51:35.08ID:GB5uH3y4 >>272-273レベルのことをドヤって書くから、スレ中に戸惑いの空気が流れているんだけど……。「え、え?」みたいな。
>>270みたいな前提は特に置いてないよ。どこからそう思ったのかは知らないけど。
>>273-274に書かれているのは一般に内部実装とインターフェイスについて言われていることから用語を置き換えただけで、内部実装とインターフェイスはそれほど明確に区別できるものかという問いに何ら答えていないよね。274末尾に「この通り、機能の単位をどこで区切るか考えていれば、明確に分けられる」とあるけど、何が「この通り」でどう論理が繋がっているのかさっぱり分からないんだが。
たとえば、オブジェクトのあるデータメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、そのデータメンバ(メンバ変数)はインターフェイス/内部実装のどちらになるの? そしてそれは外部とは密結合/疎結合のどちらの結合をしていることになるの? その結論は、機能かその提供手段かという甚だ観念的な概念で本当に説明できるの? そういう話なんだけど。
>>270みたいな前提は特に置いてないよ。どこからそう思ったのかは知らないけど。
>>273-274に書かれているのは一般に内部実装とインターフェイスについて言われていることから用語を置き換えただけで、内部実装とインターフェイスはそれほど明確に区別できるものかという問いに何ら答えていないよね。274末尾に「この通り、機能の単位をどこで区切るか考えていれば、明確に分けられる」とあるけど、何が「この通り」でどう論理が繋がっているのかさっぱり分からないんだが。
たとえば、オブジェクトのあるデータメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、そのデータメンバ(メンバ変数)はインターフェイス/内部実装のどちらになるの? そしてそれは外部とは密結合/疎結合のどちらの結合をしていることになるの? その結論は、機能かその提供手段かという甚だ観念的な概念で本当に説明できるの? そういう話なんだけど。
276デフォルトの名無しさん
2026/07/16(木) 12:06:50.65ID:tqJQMSog >>275
いや、そのレベルのことを君がわかってないだけな
「え、え?」はこっちだよw
> >>270みたいな前提は特に置いてないよ。どこからそう思ったのかは知らないけど。
じゃあ君が結合の意味を理解してないだけやなw
AはBの内部実装に直接依存しないので、別にCを意識することはない
そうでなければオブジェクト指向ではないし、カプセル化ではないという定義問題
> >>273-274に書かれているのは一般に内部実装とインターフェイスについて言われていることから用語を置き換えただけで、内部実装とインターフェイスはそれほど明確に区別できるものかという問いに何ら答えていないよね
答えている
君が「自分はその定義ができない無能だ」と言うなら仕方ないが、そうでないなら答えは言っている
> たとえば、オブジェクトのあるデータメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、そのデータメンバ(メンバ変数)はインターフェイス/内部実装のどちらになるの?
オブジェクトの内部実装に触っているとしか言えないよね
何を言っとるんだ君はw
それに明確に密結合している
いや、そのレベルのことを君がわかってないだけな
「え、え?」はこっちだよw
> >>270みたいな前提は特に置いてないよ。どこからそう思ったのかは知らないけど。
じゃあ君が結合の意味を理解してないだけやなw
AはBの内部実装に直接依存しないので、別にCを意識することはない
そうでなければオブジェクト指向ではないし、カプセル化ではないという定義問題
> >>273-274に書かれているのは一般に内部実装とインターフェイスについて言われていることから用語を置き換えただけで、内部実装とインターフェイスはそれほど明確に区別できるものかという問いに何ら答えていないよね
答えている
君が「自分はその定義ができない無能だ」と言うなら仕方ないが、そうでないなら答えは言っている
> たとえば、オブジェクトのあるデータメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、そのデータメンバ(メンバ変数)はインターフェイス/内部実装のどちらになるの?
オブジェクトの内部実装に触っているとしか言えないよね
何を言っとるんだ君はw
それに明確に密結合している
277デフォルトの名無しさん
2026/07/16(木) 12:49:27.43ID:GB5uH3y4 えーと、念のために聞くけど、「オブジェクトの内部実装に触っているとしか言えないよね」というのは、オブジェクトのインターフェイスには含まれないという理解ということでいいのかな?
278デフォルトの名無しさん
2026/07/16(木) 13:42:39.43ID:vcNP44zE まあpublicなメンバに直接アクセスできるような意図的な設計になってるのならそれはインターフェースと言えるだろう
そのメンバを好き勝手に変更されても動作不良を起こさないようにオブジェクト側が担保しておく必要があるが
そのメンバを好き勝手に変更されても動作不良を起こさないようにオブジェクト側が担保しておく必要があるが
279デフォルトの名無しさん
2026/07/16(木) 14:52:12.67ID:GB5uH3y4 idが違うからよく分からないんだけど、278はtqJQMSog? それとも別の人?
tqJQMSogの従前の主張内容とは内容的に整合しないので、別の人かなと思っているんだが。
tqJQMSogの従前の主張内容とは内容的に整合しないので、別の人かなと思っているんだが。
280デフォルトの名無しさん
2026/07/16(木) 15:14:48.74ID:vcNP44zE ただの通りすがり
281デフォルトの名無しさん
2026/07/16(木) 15:23:59.22ID:GB5uH3y4 そうですか、それは失礼しました。
282デフォルトの名無しさん
2026/07/16(木) 16:05:53.74ID:Wb6p8Q0G >>279
別に矛盾してはいないだろ
別に矛盾してはいないだろ
283デフォルトの名無しさん
2026/07/16(木) 16:24:52.84ID:GB5uH3y4 仮にtqJQMSogが>>278と同内容の主張をするのであれば、「内部実装とインターフェイスは明確に区別できる」「インターフェイスに依存するだけなら疎結合、内部実装に依存するなら密結合」辺りの主張は相当大幅に修正を加えないと整合性を欠くことになるのは明らかだと思うけど。
284デフォルトの名無しさん
2026/07/16(木) 19:31:47.99ID:+jtQQPR3 元のclassがきちんと設計されていれば、密結合しようと派生classはきちんと動作するものが作れる。
class Stack<E> extends ArrayList<E> でも構わないのだ。
ArrayListとStackを兼ねたものが作れてしまう。そのようなものが必要であればとても便利だ。
class Stack<E> extends ArrayList<E> でも構わないのだ。
ArrayListとStackを兼ねたものが作れてしまう。そのようなものが必要であればとても便利だ。
285デフォルトの名無しさん
2026/07/16(木) 21:45:10.99ID:+jtQQPR3 Extends is innocent.
286デフォルトの名無しさん
2026/07/16(木) 22:31:13.31ID:tqJQMSog >>283
まあ君がとんでもなくバカで自分が何をやっているかわからないというならそうだなw
自分で書いているコードの意味もわからないバカはオブジェクト指向以前にプログラミングについて語るべきではないが
まあ君がとんでもなくバカで自分が何をやっているかわからないというならそうだなw
自分で書いているコードの意味もわからないバカはオブジェクト指向以前にプログラミングについて語るべきではないが
287デフォルトの名無しさん
2026/07/16(木) 22:33:06.37ID:tqJQMSog288デフォルトの名無しさん
2026/07/16(木) 22:47:33.04ID:SJSW+XKI289デフォルトの名無しさん
2026/07/16(木) 23:51:30.80ID:tqJQMSog もう書いたことを何回も言わせて言い間違いをさせて突こうと、そういう魂胆だとは思うがあまり感心しないやり方だね
それとも日本語が通じないなら仕方ないが、君はそうなのかな?
それとも日本語が通じないなら仕方ないが、君はそうなのかな?
290デフォルトの名無しさん
2026/07/16(木) 23:53:53.72ID:tqJQMSog291デフォルトの名無しさん
2026/07/16(木) 23:54:46.70ID:tqJQMSog これを一般に「カプセル化」と言って、オブジェクト指向の基礎の基礎だ
この話題について語るなら、これくらいはわかっておこう
この話題について語るなら、これくらいはわかっておこう
292デフォルトの名無しさん
2026/07/17(金) 00:10:40.92ID:kjH+0OM+ >もう書いたことを何回も言わせて言い間違いをさせて突こうと、そういう魂胆だとは思うが
ワロタww
初心者だという自覚はあるんだな
ワロタww
初心者だという自覚はあるんだな
293デフォルトの名無しさん
2026/07/17(金) 01:46:50.35ID:PfNOQhy8 >>277って、そんなに答えるの難しいかな。インターフェイスに含まれると考えるのかそうでないのかYes/Noで答えれば済む話なんだけど。tqJQMSog は言い間違えを心配しているみたいだけど、Yes/Noにも言い間違いとかあるのかね。
データメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、おそらく>>278と同じくインターフェイスに含まれると考える方が普通だと思うし、tqJQMSogも薄々そのことは分かっているんだけど、「オブジェクトの内部実装に触っているとしか言えないよね」とか276で書いちゃったものだから引っ込みが付かなくなっているんだと思う。インターフェイスと内部実装は截然と区別されるというのがtqJQMSogの前提だしね。
ついでにいうと>>278を「依存されて困る内部実装を公開しない」という意味に読むのも牽強付会が過ぎるね。278が書いているのは、① データメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、それはインターフェイスといえるというということと、②アクセサを介さずに直接的に値の変更・設定ができることによって不都合(端的に言えばオブジェクトの不変条件が破られること)が生じないようにする必要があるということであって、素直に読めばどこにも内部実装とか非公開メンバの話は出てこない。にもかかわらず、これを「依存されて困る内部実装を公開しない」という意味に読みたがるのは、要するにtqJQMSogがそれしか知らないからでしょ。自分がよく知っているなじみのあるパターンにムリに引きつけようとするから、書いてある内容も素直に読めなくなる。
データメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、おそらく>>278と同じくインターフェイスに含まれると考える方が普通だと思うし、tqJQMSogも薄々そのことは分かっているんだけど、「オブジェクトの内部実装に触っているとしか言えないよね」とか276で書いちゃったものだから引っ込みが付かなくなっているんだと思う。インターフェイスと内部実装は截然と区別されるというのがtqJQMSogの前提だしね。
ついでにいうと>>278を「依存されて困る内部実装を公開しない」という意味に読むのも牽強付会が過ぎるね。278が書いているのは、① データメンバ(メンバ変数)がアクセサを介さず外部から直接的に値の変更・設定ができるような設計になっている場合、それはインターフェイスといえるというということと、②アクセサを介さずに直接的に値の変更・設定ができることによって不都合(端的に言えばオブジェクトの不変条件が破られること)が生じないようにする必要があるということであって、素直に読めばどこにも内部実装とか非公開メンバの話は出てこない。にもかかわらず、これを「依存されて困る内部実装を公開しない」という意味に読みたがるのは、要するにtqJQMSogがそれしか知らないからでしょ。自分がよく知っているなじみのあるパターンにムリに引きつけようとするから、書いてある内容も素直に読めなくなる。
294デフォルトの名無しさん
2026/07/17(金) 09:37:48.21ID:eJfcvx1B >>292
バカにはわからないだろうが、わざと相手に言い間違いをさせて劣勢を挽回しようというのは論破したがる奴の常套手段で、プロでもうっかり言い間違えるのを突くって手法だぞ
バカにはわからないだろうが、わざと相手に言い間違いをさせて劣勢を挽回しようというのは論破したがる奴の常套手段で、プロでもうっかり言い間違えるのを突くって手法だぞ
295デフォルトの名無しさん
2026/07/17(金) 09:39:49.08ID:eJfcvx1B >>293
なんで私が言ったことを言い換えて私が間違ったことを言っていると主張できると思ったのか、その頭の悪さに驚かざるを得ない
素直に読めばもクソも、内部実装という言葉の定義そのものを君は書いているのであって、明らかな誤読であると言わざるを得ない
なんで私が言ったことを言い換えて私が間違ったことを言っていると主張できると思ったのか、その頭の悪さに驚かざるを得ない
素直に読めばもクソも、内部実装という言葉の定義そのものを君は書いているのであって、明らかな誤読であると言わざるを得ない
296デフォルトの名無しさん
2026/07/17(金) 09:41:10.93ID:pLEwcfjn 俺は好きだぞtqJQMSog
久々に本物の知性を見た
久々に本物の知性を見た
297デフォルトの名無しさん
2026/07/17(金) 09:45:35.51ID:eJfcvx1B まさか内部実装がわからないバカがこんなぞろぞろ湧くとは思わんかったわ
オブジェクト指向の話をできるレベルの奴一人もいないだろこれ
オブジェクト指向の話をできるレベルの奴一人もいないだろこれ
298デフォルトの名無しさん
2026/07/17(金) 09:54:46.09ID:eJfcvx1B >>293
前半、私はもうインターフェースだと言ってるわけだけど、そこを言ってないことにすることで矛盾を作り出して叩いている
したがって、嘘から始まっていて叩いているものにも実体がない
後半、自分で何を言っているのかわかっていないのだろうが、内部で変更があっても外部との約束であるインターフェースの一部を破壊してはならないというのは、私が言っていることであって、それを元に私が間違っていると主張するのはそれこそ「牽強付会」の定義通りの意味になる
前半、私はもうインターフェースだと言ってるわけだけど、そこを言ってないことにすることで矛盾を作り出して叩いている
したがって、嘘から始まっていて叩いているものにも実体がない
後半、自分で何を言っているのかわかっていないのだろうが、内部で変更があっても外部との約束であるインターフェースの一部を破壊してはならないというのは、私が言っていることであって、それを元に私が間違っていると主張するのはそれこそ「牽強付会」の定義通りの意味になる
299デフォルトの名無しさん
2026/07/17(金) 09:58:03.47ID:eJfcvx1B >>293 が多分勘違いしているように読むと、内部実装を変更しない(コードに変化がない)状態でインターフェースをいじられたら壊れるという話と受け止めているのだろうが、もはや設計やデザインパターンの問題ではなくただのバグであり、そんな話がしたいならオブジェクト指向とは無関係なのでよそでやってほしい
300デフォルトの名無しさん
2026/07/17(金) 10:36:46.00ID:tpLwvxug >>298
お、>>277についてインターフェイスに含まれるという立場を取ることにしたんだ。「私はもうインターフェイスだと言っている」とあるけど、どのレス? 277の問いに対して、298より前に立場を明確にしたレスは見当たらないように思うんだけど、アンカーで示してくれない?
で、>>276の「オブジェクトの内部実装に触っているとしか言えないよね」との整合性についてはどう考えるの? インターフェイスと内部実装は、コンポーネントの提供する機能かその提供手段かという基準から明確に区別されるというのがあなたの主張なんでしょ(>>265とか)。内部実装とインターフェイスの区別はそんなに明確だろうかという疑問に対して、両者の区別がつかないのはシンプルに知識不足とまで言い切っていたんだから、機能か提供手段かというのはさぞ内実のある判断基準なんでしょ。
それから、インターフェイスなのに「明らかに密結合」(276末尾)なのは、「内部の実装に依存するのが密結合」というあなたの定義(>>258)からはどのように説明されるの?
299とかは正直何を言っているのか理解できないんだけど、そんなアクロバティックな仮定をしてまでレスバごっこしても意味なくない? そんなことをしなくても、あなたの知性のほどは296のようにスレを見ている人はみんな認めていると思うよ。
お、>>277についてインターフェイスに含まれるという立場を取ることにしたんだ。「私はもうインターフェイスだと言っている」とあるけど、どのレス? 277の問いに対して、298より前に立場を明確にしたレスは見当たらないように思うんだけど、アンカーで示してくれない?
で、>>276の「オブジェクトの内部実装に触っているとしか言えないよね」との整合性についてはどう考えるの? インターフェイスと内部実装は、コンポーネントの提供する機能かその提供手段かという基準から明確に区別されるというのがあなたの主張なんでしょ(>>265とか)。内部実装とインターフェイスの区別はそんなに明確だろうかという疑問に対して、両者の区別がつかないのはシンプルに知識不足とまで言い切っていたんだから、機能か提供手段かというのはさぞ内実のある判断基準なんでしょ。
それから、インターフェイスなのに「明らかに密結合」(276末尾)なのは、「内部の実装に依存するのが密結合」というあなたの定義(>>258)からはどのように説明されるの?
299とかは正直何を言っているのか理解できないんだけど、そんなアクロバティックな仮定をしてまでレスバごっこしても意味なくない? そんなことをしなくても、あなたの知性のほどは296のようにスレを見ている人はみんな認めていると思うよ。
301デフォルトの名無しさん
2026/07/17(金) 10:53:46.83ID:tpLwvxug あと、>>295の「内部実装という言葉の定義そのもの」というところ(278後半の読み方)で引っ掛かったんだけど、ひょっとして「オブジェクトの不変条件の維持」のための手段はすべて「内部実装」だと思っていたりする?
カプセル化によって内部実装へのアクセス経路を限定することは、オブジェクトの不変条件を維持するための主要な手法の一つではあるが、別に同義ではないぞ。「内部実装」という1つの語に「インターフェイス」の対比的概念としての意味と、「オブジェクトの不変条件を維持する手段」という2つの意味を(両者の違いを明確に意識しないままに)込めて使うのは議論の混乱の元だから避けた方が良い。別に「不変条件」という語を使えとは言わないけど、あなたなりに用語を使い分けるようにした方が、今後、どこかで似たような議論をするときに良いと思うよ。
カプセル化によって内部実装へのアクセス経路を限定することは、オブジェクトの不変条件を維持するための主要な手法の一つではあるが、別に同義ではないぞ。「内部実装」という1つの語に「インターフェイス」の対比的概念としての意味と、「オブジェクトの不変条件を維持する手段」という2つの意味を(両者の違いを明確に意識しないままに)込めて使うのは議論の混乱の元だから避けた方が良い。別に「不変条件」という語を使えとは言わないけど、あなたなりに用語を使い分けるようにした方が、今後、どこかで似たような議論をするときに良いと思うよ。
302デフォルトの名無しさん
2026/07/17(金) 11:05:41.70ID:eJfcvx1B >>300-301
あのー、色々と誤読があるみたいだからどこから突っ込んでいいかわからん
アクロバティックな仮定なんかしていないし、
> 「内部実装」という1つの語に「インターフェイス」の対比的概念としての意味と、「オブジェクトの不変条件を維持する手段」という2つの意味を(両者の違いを明確に意識しないままに)込めて使う
なんてこともしていない
というか、後者についてはそこが一致しないとカプセル化が成立していないので、オブジェクト指向ではないというだけ
あのー、色々と誤読があるみたいだからどこから突っ込んでいいかわからん
アクロバティックな仮定なんかしていないし、
> 「内部実装」という1つの語に「インターフェイス」の対比的概念としての意味と、「オブジェクトの不変条件を維持する手段」という2つの意味を(両者の違いを明確に意識しないままに)込めて使う
なんてこともしていない
というか、後者についてはそこが一致しないとカプセル化が成立していないので、オブジェクト指向ではないというだけ
303デフォルトの名無しさん
2026/07/17(金) 11:08:39.94ID:eJfcvx1B より正確に言うと、そもそも「内部実装」は「オブジェクトの不変条件を維持する手段」でもないし
そんなことは書いていない
オブジェクトが外部と契約するのはインターフェースが提供する機能であって、内部実装は変わっていいので契約を維持するのはインターフェースの役割
色々とごっちゃになりすぎてるね
そんなことは書いていない
オブジェクトが外部と契約するのはインターフェースが提供する機能であって、内部実装は変わっていいので契約を維持するのはインターフェースの役割
色々とごっちゃになりすぎてるね
304デフォルトの名無しさん
2026/07/17(金) 17:23:31.38ID:BP7K9057 >>287
そうなってくると、実装継承どころか、インターフェースだろうがなんだろうがダメになりますね。
唯一の方法は、ラップしちゃってまともにつかえるように閉じ込める。
Star Trek: The Motion Pictureの V'Ger方式ですね。
大手メーカーのミドルウェアみたいなものはラップしないとつかいものにならない。
javaから直接呼べるようなしろものはみたことがない。そりゃ呼べるけどバグの温床になる。
そうなってくると、実装継承どころか、インターフェースだろうがなんだろうがダメになりますね。
唯一の方法は、ラップしちゃってまともにつかえるように閉じ込める。
Star Trek: The Motion Pictureの V'Ger方式ですね。
大手メーカーのミドルウェアみたいなものはラップしないとつかいものにならない。
javaから直接呼べるようなしろものはみたことがない。そりゃ呼べるけどバグの温床になる。
305デフォルトの名無しさん
2026/07/17(金) 17:27:18.86ID:BP7K9057 バグより怖いのはセキュリティか。
ランサムウェアの餌食。
ランサムウェアの餌食。
306デフォルトの名無しさん
2026/07/17(金) 18:22:57.63ID:eJfcvx1B >>304
どういう読み方をしたらそんな結論になるのかわからん
どういう読み方をしたらそんな結論になるのかわからん
307デフォルトの名無しさん
2026/07/17(金) 18:36:13.92ID:eJfcvx1B そもそも
> ラップしちゃってまともにつかえるように閉じ込める
じゃなくて、インターフェースを固定すればいいということがわからないらしいし、そのためのオブジェクト指向で内部実装を隠蔽しましょう(カプセル化)ということなんだが
> ラップしちゃってまともにつかえるように閉じ込める
じゃなくて、インターフェースを固定すればいいということがわからないらしいし、そのためのオブジェクト指向で内部実装を隠蔽しましょう(カプセル化)ということなんだが
308デフォルトの名無しさん
2026/07/17(金) 19:38:58.91ID:ChSEsaXo オブジェクト指向とクラスの継承がつかない奴
実装継承がオブジェクト指向に不可欠だと主張する奴
↑ オブジェクト指向わかってない人たち
実装継承がオブジェクト指向に不可欠だと主張する奴
↑ オブジェクト指向わかってない人たち
309デフォルトの名無しさん
2026/07/17(金) 22:23:00.41ID:BP7K9057 カプセル化が正しくできないのならばインターフェース使っても無理と読んだのだが。
310デフォルトの名無しさん
2026/07/17(金) 22:25:24.44ID:eJfcvx1B >>309
そんなこともできないのか……
そんなこともできないのか……
311デフォルトの名無しさん
2026/07/17(金) 23:01:40.70ID:EXsQyS+8 >>309
めちゃくちゃで草
めちゃくちゃで草
312デフォルトの名無しさん
2026/07/17(金) 23:19:17.65ID:tBPtIge6 内部実装がわからないのは草
313デフォルトの名無しさん
2026/07/17(金) 23:22:43.53ID:Qcz0vKeS314デフォルトの名無しさん
2026/07/17(金) 23:25:48.70ID:BP7K9057 Why extends is evilの例にあるような
無理解によるバグを仕込んでしまうようなプログラマを想定すると、何やっても無理と思う。
無理解によるバグを仕込んでしまうようなプログラマを想定すると、何やっても無理と思う。
315デフォルトの名無しさん
2026/07/18(土) 00:43:26.18ID:E+fkxQiO このスレ見てると、手段の目的化がいかに害悪なのかよく解る
316デフォルトの名無しさん
2026/07/18(土) 20:12:30.97ID:dTni3k4y317デフォルトの名無しさん
2026/07/18(土) 20:14:12.03ID:hoNTxACE >>315 それな
オブジェクト指向を使うべきじゃないところに無駄に適用しようとして、どこまでがオブジェクト指向かという話を広げようとするバカが多すぎる
オブジェクト指向を使うべきじゃないところに無駄に適用しようとして、どこまでがオブジェクト指向かという話を広げようとするバカが多すぎる
318デフォルトの名無しさん
2026/07/18(土) 20:14:41.13ID:hoNTxACE 「データ構造とそのデータ構造を必要とするロジックを一体として扱い、内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする」のがOOPの目的で、カプセル化・ポリモーフィズム・合成もこのための機能にすぎない
実装継承はカプセル化を破壊して外部と内部を密結合させるので、OOPを真面目にしたければ用いることはできず、別の用途で使う機能だと考えるべき
これが成り立たないとか、わからないならそれはオブジェクト指向をする場所じゃないんだよ
実装継承はカプセル化を破壊して外部と内部を密結合させるので、OOPを真面目にしたければ用いることはできず、別の用途で使う機能だと考えるべき
これが成り立たないとか、わからないならそれはオブジェクト指向をする場所じゃないんだよ
319デフォルトの名無しさん
2026/07/18(土) 20:37:05.39ID:/vovMnX1 classをカプセル化とすれば、extendsでも密結合しない。
それでカプセル化が壊れるのであれば、単に設計ミス。
しかしながら、Why extends is evilレベルのプログラマを相手にする場合は...
interfaceだろうと内包形式だろうとtraitだろうと...無理。
そう考えています。
それでカプセル化が壊れるのであれば、単に設計ミス。
しかしながら、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
それっぽいこと書いてるけどあんま関係なくて草
それっぽいこと書いてるけどあんま関係なくて草
324デフォルトの名無しさん
2026/07/18(土) 22:06:30.30ID:Lnm5W+sT そもそもGoFが引用した「(実装)継承はカプセル化を破壊する」という文章はクラス継承者に対して何を公開して何を非公開にするか全くコントロールできなかった時代の論文だからな
325デフォルトの名無しさん
2026/07/18(土) 22:08:05.15ID:Lnm5W+sT >>319
概ね同意するが結合度を密か疎の二元思考で考えるのには同意しかねる
概ね同意するが結合度を密か疎の二元思考で考えるのには同意しかねる
326デフォルトの名無しさん
2026/07/18(土) 22:37:30.67ID:PdlHhpPf んー、結局、>>300で指摘されている各点についてはまともに答えられないのでスルーなん? 矛盾点を指摘されたら相手を罵倒して有耶無耶にするというスタンスに終始するなら、議論は深まらないと思うんだが。
「誤読だ」とか「めちゃくちゃなことを書いている」と相手を非難するのは(議論をするスタンスとしてはどうかと思うが)まぁいいとして、なぜそう考えるのかということを書かないと説得力皆無だと思うぞ。
「誤読だ」とか「めちゃくちゃなことを書いている」と相手を非難するのは(議論をするスタンスとしてはどうかと思うが)まぁいいとして、なぜそう考えるのかということを書かないと説得力皆無だと思うぞ。
327デフォルトの名無しさん
2026/07/18(土) 23:32:17.86ID:zV1AUUNo >>324
実装継承のこと知らなそう
実装継承のこと知らなそう
328デフォルトの名無しさん
2026/07/18(土) 23:33:07.00ID:zV1AUUNo329デフォルトの名無しさん
2026/07/18(土) 23:33:31.13ID:/vovMnX1330デフォルトの名無しさん
2026/07/18(土) 23:33:49.51ID:pWZDlYis >>326
このスレは初心者がプログラミング学ぶスレじゃないんだわ
このスレは初心者がプログラミング学ぶスレじゃないんだわ
331デフォルトの名無しさん
2026/07/18(土) 23:34:27.72ID:pWZDlYis >>325
ド素人すぎるw
ド素人すぎるw
332デフォルトの名無しさん
2026/07/18(土) 23:37:13.29ID:QFcvJnLS333デフォルトの名無しさん
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
アクターモデル特に関係なくね?
アクターモデル特に関係なくね?
338デフォルトの名無しさん
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
ですね。
Glassman, Robert B. (1973): Persistence and Loose Coupling in Living Systems, in: Behavioral Science 18, 83-98
ですね。
339デフォルトの名無しさん
2026/07/19(日) 08:39:35.50ID:VP2Me/dP GlassmanとGoFと合わせてみても、extendsだからってtight couplingになるわけでもない。
継承はサブクラスに親の実装の詳細をさらす、なんていうのは過去の話でしょう。
もちろん、現在でも親の実装の詳細をさらすことは可能ですけど、そんなレベルのプログラマはいらない。
継承はサブクラスに親の実装の詳細をさらす、なんていうのは過去の話でしょう。
もちろん、現在でも親の実装の詳細をさらすことは可能ですけど、そんなレベルのプログラマはいらない。
340デフォルトの名無しさん
2026/07/19(日) 09:16:20.59ID:VP2Me/dP >>334
委譲じゃなくて移譲のほうな。責任のありかが違う。
委譲じゃなくて移譲のほうな。責任のありかが違う。
341デフォルトの名無しさん
2026/07/19(日) 09:52:11.47ID:iX0BwzkM プログラムとデータは別々にってのは、プログラムをこなしていけばだいたいわかってきてそういう作り方する
センスのない馬鹿だけはいつまでもプログラム内にデータを持つ作り方する
それは言語で制約されてないからしょうがないが
だからといって言語を工夫して、どうやってもそれぞれ分離してしか作れないものは出来っこないのだ
作りこめば作りこむほど、出来たものは初心者向けのおもちゃのようなプログラム言語になってしまい
本格的なものすら作れないシロモノにしかならない
センスのない馬鹿だけはいつまでもプログラム内にデータを持つ作り方する
それは言語で制約されてないからしょうがないが
だからといって言語を工夫して、どうやってもそれぞれ分離してしか作れないものは出来っこないのだ
作りこめば作りこむほど、出来たものは初心者向けのおもちゃのようなプログラム言語になってしまい
本格的なものすら作れないシロモノにしかならない
342デフォルトの名無しさん
2026/07/19(日) 12:29:06.73ID:VP2Me/dP >>340
移譲は委譲とまぎらわしいのでどうしようかと考えた。
これはGoFがdelegateと勘違いして広まってdelegateとされているやつだ。
forwarding(転送)、場合によってはinherit(継承)とするのがよいようだ。
実際のdelegateはRFC1149を使用して委譲することも可能なものである。
細かく考えれば、たいていの場合、GoF界隈で語られる委譲は移譲のことだ。
移譲は委譲とまぎらわしいのでどうしようかと考えた。
これは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
この人なんだけど、まちがった解し方をしてるようにしか思えなかった
委譲ではなく移譲だ、も同じパターンのように思える
https://masuda220.jugem.jp/?eid=449
この人なんだけど、まちがった解し方をしてるようにしか思えなかった
委譲ではなく移譲だ、も同じパターンのように思える
345デフォルトの名無しさん
2026/07/19(日) 14:32:29.06ID:JsAm948e >>339
実装を見れないようにして継承する意味ってなんだ……?
実装を見れないようにして継承する意味ってなんだ……?
346デフォルトの名無しさん
2026/07/19(日) 14:33:18.76ID:JsAm948e347デフォルトの名無しさん
2026/07/19(日) 15:07:30.06ID:9R/aTmy5 そのレベルの区別もつかんのかw
348デフォルトの名無しさん
2026/07/19(日) 16:42:46.06ID:VP2Me/dP349デフォルトの名無しさん
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
オブジェクト指向について学んで来いよw
353デフォルトの名無しさん
2026/07/19(日) 20:11:43.23ID:VP2Me/dP 無理解なひとが多いねぇ。オブジェクト指向が理解できていないのが問題ですねぇ。
extendsの問題以前か。
extendsの問題以前か。
354デフォルトの名無しさん
2026/07/19(日) 20:12:49.16ID:+lhTvxZN 定義があるのに独自言語で話し出すのがなあ
355デフォルトの名無しさん
2026/07/19(日) 20:37:58.45ID:a4Ikgqmy OOの定義がAK提唱とBSとでちがうみたいに(ここだとほぼ後者を指すよね)
文脈でわかる範囲ならスルーせんとやりとりがもったいないよ
文体も虚勢をはってると思えばかわいいし
文脈でわかる範囲ならスルーせんとやりとりがもったいないよ
文体も虚勢をはってると思えばかわいいし
356デフォルトの名無しさん
2026/07/19(日) 21:36:52.94ID:VP2Me/dP ま、なんにしても、オブジェクト指向(DbCは重要)に沿って設計.実装されていれば、
classとかextendとかinterfaceとか粗悪な言語実装でも問題は起こさない、ということ。
classとかextendとかinterfaceとか粗悪な言語実装でも問題は起こさない、ということ。
357デフォルトの名無しさん
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点だろ
361デフォルトの名無しさん
2026/07/20(月) 01:31:38.77ID:+Bs8XDPY くすくす。extendsがevilだというわけではない、ということだよ。
問題を起こすとすれば設計者/プログラマの質であって、
extendsを回避しようと、ダメなプログラマはダメなものしか作れない。
extendsは実装継承ではなく、interfaceや、オブジェクト指向で設計された
継承可能オブジェクトとしてのclassなどを継承するもの。
いまひとつできのよくないオブジェクト指向言語側の定義やGoFには振り回されないこと。
問題を起こすとすれば設計者/プログラマの質であって、
extendsを回避しようと、ダメなプログラマはダメなものしか作れない。
extendsは実装継承ではなく、interfaceや、オブジェクト指向で設計された
継承可能オブジェクトとしてのclassなどを継承するもの。
いまひとつできのよくないオブジェクト指向言語側の定義やGoFには振り回されないこと。
362デフォルトの名無しさん
2026/07/20(月) 06:03:08.46ID:FTzidL2p 勝手に話を拡張して言うことが「悪い実装を誘発しやすいから悪いなんてことはありえない、悪くない実装にすれば悪くない」だけなの情報量がなさすぎる
363デフォルトの名無しさん
2026/07/20(月) 06:04:26.98ID:FTzidL2p さも自分だけがオブジェクト指向わかってますよ風に言ってるけど、特別何かがわかってるわけでもないという
むしろ一人だけ「お前らが低レベルだからw」って言って話をかき乱してるだけ
むしろ一人だけ「お前らが低レベルだからw」って言って話をかき乱してるだけ
364デフォルトの名無しさん
2026/07/20(月) 07:45:55.02ID:cbvWaE6q 良い実装が何かも言ってないから本当に中身ないな
365デフォルトの名無しさん
2026/07/20(月) 09:04:18.41ID:oac9x77/ 「悪い実装を誘発しやすいから悪いって話」なら悪くない実装も当然理解してるのでは?
それすら理解してないなら何が「悪い実装」かすら判断できてないということ
それすら理解してないなら何が「悪い実装」かすら判断できてないということ
366デフォルトの名無しさん
2026/07/20(月) 09:33:28.16ID:2e8ijFIY 「悪くない実装」をすれば悪くない
367デフォルトの名無しさん
2026/07/20(月) 10:51:07.17ID:CHFRKFiH >>365
「実装継承は悪」と信じてる人は
ある実装が悪い実装になる状況と
悪くない実装になる状況の区別ができないからね
便利な道具だが馬鹿には使えない道具だから
お前ら使うなよってのが「実装継承は悪」という標語
「実装継承は悪」と信じてる人は
ある実装が悪い実装になる状況と
悪くない実装になる状況の区別ができないからね
便利な道具だが馬鹿には使えない道具だから
お前ら使うなよってのが「実装継承は悪」という標語
368デフォルトの名無しさん
2026/07/20(月) 11:57:23.15ID:CTzuDlDh >>367
区別の仕方を教えてもらえますか?
区別の仕方を教えてもらえますか?
369デフォルトの名無しさん
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でも教えているようだが。
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:CTzuDlDh371デフォルトの名無しさん
2026/07/20(月) 15:07:58.03ID:CTzuDlDh コラムは継承によってバグを作り込むリスクを考えると
継承せずに実装したが良いって話だな
継承せずに済むならそれに越したことはないしそれはそうだって話だ
>>369は自分ならArrayListを継承してバグなく実装できるんだって話か
ArrayListは例として出されてるだけでArrayListでそれができたから
なんだってことになるんじゃないかね
継承せずに実装したが良いって話だな
継承せずに済むならそれに越したことはないしそれはそうだって話だ
>>369は自分ならArrayListを継承してバグなく実装できるんだって話か
ArrayListは例として出されてるだけでArrayListでそれができたから
なんだってことになるんじゃないかね
372デフォルトの名無しさん
2026/07/20(月) 15:31:40.64ID:CTzuDlDh interfaceでmethodを定義できるようになってabstract classの出番は昔よりは減ったけど
リソース管理をクラス内に閉じ込めたうえで継承によって動作を変えたいことはある
あとは自分の場合はTemplate Methodパターンのために実装の継承を使ってるけど
正直言ってわかりづらいので他にもっと良いやり方があるんじゃないかと思ってる
実装の継承は避けれるなら避けたいかなあ
リソース管理をクラス内に閉じ込めたうえで継承によって動作を変えたいことはある
あとは自分の場合はTemplate Methodパターンのために実装の継承を使ってるけど
正直言ってわかりづらいので他にもっと良いやり方があるんじゃないかと思ってる
実装の継承は避けれるなら避けたいかなあ
374デフォルトの名無しさん
2026/07/20(月) 17:47:43.34ID:pq3gqUrh375デフォルトの名無しさん
2026/07/20(月) 17:53:39.26ID:4Fs4HLV6 実装継承が有用な場所があるのは当たり前
でもそれはコード再利用の話であってオブジェクト指向の話じゃない
でもそれはコード再利用の話であってオブジェクト指向の話じゃない
376デフォルトの名無しさん
2026/07/20(月) 19:50:39.40ID:KaxLJD1L OOPの提供する再利用性のなんぼかはまさにそのコードの再利用性を指してるんではw
377デフォルトの名無しさん
2026/07/20(月) 20:33:11.75ID:K8yvI02X カプセル化や多態性(型の継承)はOOだけど
コードの再利用性はOO関係なく普遍的な命題
昔の処理系がたまたま実装継承を採用してただけで
弊害のが大きいから近年は排除されてるのがここ何十年の話
コードの再利用性はOO関係なく普遍的な命題
昔の処理系がたまたま実装継承を採用してただけで
弊害のが大きいから近年は排除されてるのがここ何十年の話
378デフォルトの名無しさん
2026/07/20(月) 22:33:43.93ID:tOD1zgRg379デフォルトの名無しさん
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 ×オブジェクト指向でカプセル化しないこと
388デフォルトの名無しさん
2026/07/21(火) 16:19:18.44ID:oSzwQYDy 間違ったオブジェクト指向プログラミングかw
389デフォルトの名無しさん
2026/07/21(火) 16:25:17.57ID:eNE2kCFD >>388
C知識全くないのにイキって叩かれてた人じゃんw
C知識全くないのにイキって叩かれてた人じゃんw
390デフォルトの名無しさん
2026/07/21(火) 16:28:12.41ID:NY6ALVCl オブジェクト指向をクラスだと思ってる奴多いよな
391デフォルトの名無しさん
2026/07/21(火) 18:30:45.31ID:ALCocViV ま、classやinterfaceや実装や実装継承という用語が、間違って伝えられて、
間違った言語実装が行われているわけですね。同じ用語でも意味が異なる。
その意味で、実装継承というのはありえない。
インターフェースを継承するのが実装だから。
言語のinterfaceとは似ているが同じではない、設計のinterfaceが、
extendsで継承されていれば、継承したinterfaceが実装されているので、
実装(を)継承するわけではない。
設計用語と言語実装の用語がかみ合っていない。
オワコンなのはオブジェクト指向(設計・概念)ではなくオブジェクト指向(風)言語か。
間違った言語実装が行われているわけですね。同じ用語でも意味が異なる。
その意味で、実装継承というのはありえない。
インターフェースを継承するのが実装だから。
言語のinterfaceとは似ているが同じではない、設計のinterfaceが、
extendsで継承されていれば、継承したinterfaceが実装されているので、
実装(を)継承するわけではない。
設計用語と言語実装の用語がかみ合っていない。
オワコンなのはオブジェクト指向(設計・概念)ではなくオブジェクト指向(風)言語か。
392デフォルトの名無しさん
2026/07/21(火) 19:23:55.93ID:oSzwQYDy まあ、C++なんかナンチャッテオブジェクト指向言語だしな
393デフォルトの名無しさん
2026/07/21(火) 19:44:47.02ID:ALCocViV C++は結構古いので、現在の用語としてはC++あたりでの実装が先かもしれん。
設計としての概念は一般な用語であり、interfaceはprotocolだ。
Alan Curtis Kayの考えはよかったのだが、1981年にオブジェクト指向の流れが変わり、
おかしくなっていく笑。
オブジェクト指向の設計思想と言語実装の齟齬は広がる。
通信屋としては、厳格なprotocolと情報理論に基づいた設計で圏論を逸脱しないものがベストと考えている。
設計としての概念は一般な用語であり、interfaceはprotocolだ。
Alan Curtis Kayの考えはよかったのだが、1981年にオブジェクト指向の流れが変わり、
おかしくなっていく笑。
オブジェクト指向の設計思想と言語実装の齟齬は広がる。
通信屋としては、厳格なprotocolと情報理論に基づいた設計で圏論を逸脱しないものがベストと考えている。
394デフォルトの名無しさん
2026/07/21(火) 22:09:43.49ID:hx2nIdfQ395デフォルトの名無しさん
2026/07/21(火) 22:48:34.91ID:ALCocViV 設計するのに圏論つかわん?
Monadicプログラミングなんてやらん?
Monadicプログラミングなんてやらん?
396デフォルトの名無しさん
2026/07/22(水) 01:22:36.51ID:+JcyZqai 圏論は関数型ですらあんま重要じゃないよね
397デフォルトの名無しさん
2026/07/22(水) 02:39:35.58ID:Nu31K9oL ストリング図を使う設計手法は使えそうだけどね。
javaでもMonadicプログラミングばかりしてるなぁ。
圏論は概念を図示したものだから、どういう概念かという設計には使っている。
ただ、説明には使用しない。誰もわからないから笑。
javaでもMonadicプログラミングばかりしてるなぁ。
圏論は概念を図示したものだから、どういう概念かという設計には使っている。
ただ、説明には使用しない。誰もわからないから笑。
398デフォルトの名無しさん
2026/07/22(水) 03:29:30.68ID:AMuwyTJ4 圏論はたしかにコンピュータの挙動を表すのにも使えるんだけど、広すぎるし抽象的すぎるからプログラミングのためだけに学ぶのは効率が悪いかも
知っていれば活用できるんだけどね
知っていれば活用できるんだけどね
399デフォルトの名無しさん
2026/07/22(水) 07:39:21.47ID:YXMIwqoR 圏論は抽象言語だから、UMLのかわりに概念記述言語として使えます。
とわいえ、数学屋ではないので、圏論的量子力学から入って、(量子)情報論言語とみて使っています。
とくに、ストリング図(ストリング・ダイアグラム)はテンソルネットワークであり、ペンローズ図法
であり、フローチャートやシステムダイアグラムの進化版と考えてよいでしょう。
UMLの失敗は、情報論的言語になっていなかったことでしょうね。
ま、情報論的回路図ですね。部品も関係として記述できるし、関係の集まりこそclassだし。
とわいえ、数学屋ではないので、圏論的量子力学から入って、(量子)情報論言語とみて使っています。
とくに、ストリング図(ストリング・ダイアグラム)はテンソルネットワークであり、ペンローズ図法
であり、フローチャートやシステムダイアグラムの進化版と考えてよいでしょう。
UMLの失敗は、情報論的言語になっていなかったことでしょうね。
ま、情報論的回路図ですね。部品も関係として記述できるし、関係の集まりこそclassだし。
400デフォルトの名無しさん
2026/07/22(水) 07:56:13.93ID:+2YlyCx1 ポエムだからなに書いてもゆるす
401デフォルトの名無しさん
2026/07/22(水) 08:11:47.68ID:1DS7p8oo 語り口調のポエムかw
402デフォルトの名無しさん
2026/07/22(水) 08:56:25.79ID:misy9Eit monadicプログラミングが何なのか説明しろ
flatMap使っとけばええんか?おん?
flatMap使っとけばええんか?おん?
403デフォルトの名無しさん
2026/07/22(水) 09:05:50.87ID:7jf6V5Kp 単なるダイアグラムでの記述で済むところを圏論が必要とか言っちゃうバカって多いよね
404デフォルトの名無しさん
2026/07/22(水) 10:31:17.69ID:vvxBubk6 バカかどうかは自分には分からないが、少なくとも多いってことはないと思う。むしろ特異なタイプじゃないか?
405デフォルトの名無しさん
2026/07/22(水) 16:02:36.37ID:4xonYQmE >>399
中身のないポエムだなあw
中身のないポエムだなあw
406デフォルトの名無しさん
2026/07/22(水) 22:32:23.83ID:lK1rps+h 関数型の重要なポイントは無駄な副作用だらけのクラスを作るんじゃなくて、なるべく純粋な変換をする関数で済ませましょうという部分
圏論やモナドは設計者がわかっておけばいいこと
圏論やモナドは設計者がわかっておけばいいこと
407デフォルトの名無しさん
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 圏論はオワコン
410デフォルトの名無しさん
2026/07/23(木) 02:21:17.80ID:tHFNuHdE まあ、設計するときには必要。圏論でなくとも、そのようなものは経験的に使っているはず。
マルチコアを最大活用するには数学的に検証する必要がある。遅延処理もね。
以下書きすぎたので抹消。
裏合わせて8コアぐらいあるのに、1コアしかグラフあがってなくて、おせー、
なんてプログラムよくあるよね。ブラウザですら2桁のコネクション張って表示しとる時代なのに。
マルチコアを最大活用するには数学的に検証する必要がある。遅延処理もね。
以下書きすぎたので抹消。
裏合わせて8コアぐらいあるのに、1コアしかグラフあがってなくて、おせー、
なんてプログラムよくあるよね。ブラウザですら2桁のコネクション張って表示しとる時代なのに。
411デフォルトの名無しさん
2026/07/23(木) 02:52:59.16ID:luqj8bdN412デフォルトの名無しさん
2026/07/23(木) 07:42:02.71ID:MyRECaAU オペレーションズ・リサーチの話? 難しいことやってんね組み込みか? 同時実行数をCPUののコア数以上にしとけばええんやろくらいしか考えたことないわ
413デフォルトの名無しさん
2026/07/23(木) 13:48:47.74ID:cxrYFfJU マルチコアを最大限活用するには数学的な検証より次々流し込めるパイプラインの方が重要なんだよな、結局
414デフォルトの名無しさん
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+54X417デフォルトの名無しさん
2026/07/23(木) 16:01:32.54ID:cxrYFfJU418デフォルトの名無しさん
2026/07/23(木) 18:46:27.84ID:tHFNuHdE クラッシュしたらクラッシュしたとき考えるようなシステム設計ならばかまわないけどね。
419デフォルトの名無しさん
2026/07/23(木) 19:11:07.70ID:UyJUqdip 何言ってんだこいつ
理論に穴があればそうなるリスクはあるが、そうでなければどのパターンを禁止すればいいか網羅できるだろ
理論に穴があればそうなるリスクはあるが、そうでなければどのパターンを禁止すればいいか網羅できるだろ
420デフォルトの名無しさん
2026/07/23(木) 19:16:37.61ID:lBWZXi4F >>418 何のために理論があると思ってるんだ……
421デフォルトの名無しさん
2026/07/23(木) 21:57:52.51ID:tHFNuHdE パイプラインは並行処理な。(concurrent)
マルチコアを活用するのは並列処理。(pallallel)
パイプラインを並列化しなければマルチコア時代に意味はない。
マルチコアを活用するのは並列処理。(pallallel)
パイプラインを並列化しなければマルチコア時代に意味はない。
422デフォルトの名無しさん
2026/07/23(木) 21:59:54.34ID:tHFNuHdE う、parallel。ちょっと酔った。
423デフォルトの名無しさん
2026/07/23(木) 22:02:10.15ID:tHFNuHdE そりゃconcurrentとparallelの違いがわからずに設計したらクラッシュするよな。
424デフォルトの名無しさん
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:22m8vIHu429デフォルトの名無しさん
2026/07/24(金) 09:15:11.22ID:22m8vIHu430デフォルトの名無しさん
2026/07/24(金) 09:16:22.15ID:22m8vIHu 純粋なプログラムコードと不純なプログラムコードの違いは何?
431デフォルトの名無しさん
2026/07/24(金) 12:46:35.94ID:wySfhXXK432デフォルトの名無しさん
2026/07/24(金) 15:07:14.93ID:WIK69ucb >>431
お前の妄想の話はいいからまともに中身のある話しろよw
お前の妄想の話はいいからまともに中身のある話しろよw
433デフォルトの名無しさん
2026/07/24(金) 15:15:15.32ID:rb1Brc03 言語として大事な互換性、ライブラリ環境なんかを考えたから、最初に機能が足りない状態でリリースして後から色々くっつけたのか
前後が繋がってねえよバカw
日本語が読めてなさすぎるww
前後が繋がってねえよバカw
日本語が読めてなさすぎるww
434デフォルトの名無しさん
2026/07/24(金) 15:16:01.33ID:aZ3GPz52 >>431は自信満々に何を言ってるんだ?
435デフォルトの名無しさん
2026/07/24(金) 15:16:56.63ID:aZ3GPz52 >>427はプログラムがデータを扱うからデータ構造が生まれるっていう基本的なことがわからないらしい
オブジェクト指向以前にプログラムまともに書いたことないよね
オブジェクト指向以前にプログラムまともに書いたことないよね
436デフォルトの名無しさん
2026/07/24(金) 15:33:58.33ID:CGmGfUPL 別にエクセルのセルのように、そのマスをどう使うかをプログラム以外で設定できちゃうものがあるじゃん
437デフォルトの名無しさん
2026/07/24(金) 15:38:44.82ID:4IFWzMRe438デフォルトの名無しさん
2026/07/24(金) 15:51:41.10ID:Vi5x8GMI 一例でいうと427はNext/AppleのEOFを指してるのかな
突き進めるとSmalltalkやZopeのようななにか
突き進めるとSmalltalkやZopeのようななにか
439デフォルトの名無しさん
2026/07/24(金) 15:57:47.29ID:E96Vbvqn 昔のDelphiやVBのコントロールデザイナー(?)みたいなやつのイメージかなと思うが、GUIウィジェットに限定したとしてもテキストで値を指定する方が分かりやすいし、やりやすいという人が多いんじゃない? まして、オブジェクト一般なら尚更そうだと思うが。
440デフォルトの名無しさん
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:22m8vIHu445デフォルトの名無しさん
2026/07/24(金) 20:46:29.64ID:22m8vIHu メソッドやプロパティ、イベントを公開してツールなどから使えるようにするしくみはコンポーネント指向と言われるね
446デフォルトの名無しさん
2026/07/24(金) 21:16:17.97ID:GVeSI4ef ツールってこの場合何?
どんなおもちゃで遊んだら
プログラムしてるつもりになれるの?
どんなおもちゃで遊んだら
プログラムしてるつもりになれるの?
447デフォルトの名無しさん
2026/07/24(金) 21:24:44.82ID:Vi5x8GMI Smalltalk実装
PharoとかGlamorous Toolkitさわってみたらどうだろ
PharoとかGlamorous Toolkitさわってみたらどうだろ
448デフォルトの名無しさん
2026/07/24(金) 21:28:23.14ID:/w/RcGUU ますます悪いクラスが生まれそうな設計だなw
449デフォルトの名無しさん
2026/07/24(金) 21:36:34.09ID:GVeSI4ef SmalltalkならSmalltalkって最初から言うと思うんだよな
>>189
> それらはツールを駆使して枠括って見えなくして部品化すりゃ済むことだ
> 文字だけで表現して何かするってのがハナから気に入らない
> 欧米圏の好きそうなやつなんだろうな
>
> 電子回路のハード図みたいに、中身見えなくてもこういう機能のパーツってことで描いて済むってのにさ
> CPUチップ1個描けば終わることを、その中身まで全部図示して文字で記述してるようにしか見えん
こういうこと書いてることからもSmalltalkって話に今更なるとは思えない
LabVIEWみたいなやつのことかと思いながら読んでたけど
LabVIEWならLabVIEWと言えばいいだけのことを
いつまでたっても「ツール」としか言わないし
>>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自体がアレになってアレになったけどさ
UML自体がアレになってアレになったけどさ
453デフォルトの名無しさん
2026/07/25(土) 13:09:11.12ID:YNkzbLWE だいたいカチカチとマウスクリックでクラスが作れたらオブジェクト指向が改善する何かがあんのかよw
どう考えてもそれが使いやすかったらクラス症候群に陥るだけだし、使いにくかったらコード直接書かれるだけで、何の解決にもならないww
どう考えてもそれが使いやすかったらクラス症候群に陥るだけだし、使いにくかったらコード直接書かれるだけで、何の解決にもならないww
454デフォルトの名無しさん
2026/07/25(土) 13:47:02.71ID:w0a9u/uj >>453
あるわけねえだろw オブジェクト指向を改善しようと思ってツールを使うバカがいるかよwww
あるわけねえだろw オブジェクト指向を改善しようと思ってツールを使うバカがいるかよwww
455デフォルトの名無しさん
2026/07/25(土) 13:52:02.41ID:w0a9u/uj ところで、クラス症候群って何?
456デフォルトの名無しさん
2026/07/25(土) 14:18:58.95ID:w0a9u/uj オブジェクト指向はソースコードの整理術の一つでしか無いけど
もっと抽象度の高いものにも適用できると考えられて
意味が曖昧化して人々の理想を具現化する道具となったのが2000年代前半
オブジェクト指向が作り出したロマンが人々の原動力になった
その熱気自体は悪いものではなかったような気がする
熱気が冷めてオブジェクト指向ってそんなにたいしたものじゃなかったよなと
冷静に思えるようになったのも熱気があったからこそだ
もっと抽象度の高いものにも適用できると考えられて
意味が曖昧化して人々の理想を具現化する道具となったのが2000年代前半
オブジェクト指向が作り出したロマンが人々の原動力になった
その熱気自体は悪いものではなかったような気がする
熱気が冷めてオブジェクト指向ってそんなにたいしたものじゃなかったよなと
冷静に思えるようになったのも熱気があったからこそだ
457デフォルトの名無しさん
2026/07/25(土) 14:23:52.61ID:+73O4UxN 熱気があったかどうか知らんけど
行き過ぎた思想はチラホラ見かけたね
「なんでもオブジェクト」みたいなのとか
「オブジェクト指向=目的語思考」みたいな珍説とか
でもあとから知った風に批判されがちな
「OOPを銀の弾丸と信じ込んだ」みたいな人って実際は見たことないわ
行き過ぎた思想はチラホラ見かけたね
「なんでもオブジェクト」みたいなのとか
「オブジェクト指向=目的語思考」みたいな珍説とか
でもあとから知った風に批判されがちな
「OOPを銀の弾丸と信じ込んだ」みたいな人って実際は見たことないわ
458デフォルトの名無しさん
2026/07/25(土) 14:44:14.71ID:w0a9u/uj 九州大学医学部附属病院はかつてオブジェクト指向をシステムの調達要件に入れて大失敗したみたいよ
オブジェクト指向ならうまくいくと思ってたんじゃないかね、知らないけど
オブジェクト指向に限らずこの通りやればうまくいくというのは
まあたいていうまくいかないよね
「なんでもオブジェクト」は俺も技術書読んで真似して大失敗したなあ
ゴミの山ができあがっただけだった
オブジェクト指向ならうまくいくと思ってたんじゃないかね、知らないけど
オブジェクト指向に限らずこの通りやればうまくいくというのは
まあたいていうまくいかないよね
「なんでもオブジェクト」は俺も技術書読んで真似して大失敗したなあ
ゴミの山ができあがっただけだった
459デフォルトの名無しさん
2026/07/25(土) 14:55:37.08ID:+73O4UxN 継承のツリーが出来上がっていく過程で
「なんでもオブジェクト」みたいな直感を得る瞬間はあるよね
その結果クソクラスのクソツリーが出来上がってすぐ目が覚めるけど
あとビミョーに誤字してて修正
誤:「オブジェクト指向=目的語思考」みたいな珍説とか
正:「オブジェクト指向=目的語指向」みたいな珍説とか
「なんでもオブジェクト」みたいな直感を得る瞬間はあるよね
その結果クソクラスのクソツリーが出来上がってすぐ目が覚めるけど
あとビミョーに誤字してて修正
誤:「オブジェクト指向=目的語思考」みたいな珍説とか
正:「オブジェクト指向=目的語指向」みたいな珍説とか
460デフォルトの名無しさん
2026/07/25(土) 16:48:39.20ID:PLn+miYr461デフォルトの名無しさん
2026/07/26(日) 11:48:31.41ID:kHP3crQx オブジェクト指向は、オブジェクトとメッセージのみ。
メッセージを送る、とされているが、「送る」わけではない。「受け取る」だけの場合もある。
指示可能なものは、すべてオブジェクトである。
名前で呼べないオブジェクトもあるが、指示はできる。
現在のオブジェクト指向言語はオブジェクトをモノとして作ってしまうのが難点だ。
メッセージを定義する、本来はそれだけでよい。オブジェクトの定義は不要。
そのような言語はまだみてないが、そのようになるだろう。
メッセージを送る、とされているが、「送る」わけではない。「受け取る」だけの場合もある。
指示可能なものは、すべてオブジェクトである。
名前で呼べないオブジェクトもあるが、指示はできる。
現在のオブジェクト指向言語はオブジェクトをモノとして作ってしまうのが難点だ。
メッセージを定義する、本来はそれだけでよい。オブジェクトの定義は不要。
そのような言語はまだみてないが、そのようになるだろう。
462デフォルトの名無しさん
2026/07/26(日) 13:46:40.38ID:Nv+cg7Cq 例えばハードウエアで考えると、別々のハード間のやり取りは
決まった窓口があってそこの入出力だけそれぞれがやるだけで完結
GRAMのデータを変えるだけで、あとは勝手にそのデータ見て表示するハードがやっちゃう
そういう感じで、勝手に仕事する部品を作り上げる作業だけしていけばいい
そのために新たな言語が要るか?ってことよ
要らんでしょ
決まった窓口があってそこの入出力だけそれぞれがやるだけで完結
GRAMのデータを変えるだけで、あとは勝手にそのデータ見て表示するハードがやっちゃう
そういう感じで、勝手に仕事する部品を作り上げる作業だけしていけばいい
そのために新たな言語が要るか?ってことよ
要らんでしょ
463デフォルトの名無しさん
2026/07/26(日) 13:59:57.59ID:AGbqsQ7t464デフォルトの名無しさん
2026/07/26(日) 14:39:26.89ID:Je6GglLX プログラミングとかしたことなさそうだから
もうほっとこ
オブジェクト指向のことなんか知らないのに
なぜこのスレに来るのかだけは気になるけどw
もうほっとこ
オブジェクト指向のことなんか知らないのに
なぜこのスレに来るのかだけは気になるけどw
465デフォルトの名無しさん
2026/07/26(日) 19:33:32.78ID:Nv+cg7Cq しょせんソフトがハードと同じようなことをやろうとするから無理がある
466デフォルトの名無しさん
2026/07/28(火) 10:53:54.09ID:B7PfW2eb 話をまとめると
○ オブジェクト指向
✕ クラス
○ オブジェクト指向
✕ クラス
467デフォルトの名無しさん
2026/07/28(火) 11:02:52.66ID:ebJvb7+U というのがオブジェクト指向わかってないやつの典型的まとめ
468デフォルトの名無しさん
2026/07/28(火) 11:18:31.65ID:/173sN8W 最近のプログラミング言語
GoとかRustとかZigはオブジェクト指向だけどクラスを排除してる
GoとかRustとかZigはオブジェクト指向だけどクラスを排除してる
469デフォルトの名無しさん
2026/07/28(火) 13:48:12.31ID:XdtStZlw だからそれらの言語は誰も使ってないんだろ
470デフォルトの名無しさん
2026/07/28(火) 14:43:22.19ID:EBahWanj 人気のプログラミング言語
TypeScript、Python、Javaにはクラスが存在する
TypeScript、Python、Javaにはクラスが存在する
471デフォルトの名無しさん
2026/07/28(火) 14:46:57.91ID:EBahWanj Swiftにもクラスが存在する
472デフォルトの名無しさん
2026/07/28(火) 15:01:54.14ID:EBahWanj オブジェクト指向の有用性を語るときにクラスを否定する必要は無いように思える
473デフォルトの名無しさん
2026/07/28(火) 15:14:19.11ID:SCY6bEC4 >>468
クラスという名前を使ってないだけでクラスを排除してるわけじゃないんだな
実際Rustのstructは長らくclassという名前だった
もちろんclassからの継承機能は無くて機能的には今と同じ
見た目の文法が変わっただけ
クラスという名前を使ってないだけでクラスを排除してるわけじゃないんだな
実際Rustのstructは長らくclassという名前だった
もちろんclassからの継承機能は無くて機能的には今と同じ
見た目の文法が変わっただけ
474デフォルトの名無しさん
2026/07/28(火) 15:25:12.17ID:4aIhWNuN オブジェクト指向といっても180度異なる
【悪】クラス=邪悪なクラス継承機能を持つ
【善】クラス以外=邪悪なクラス継承を持たない
【悪】クラス=邪悪なクラス継承機能を持つ
【善】クラス以外=邪悪なクラス継承を持たない
475デフォルトの名無しさん
2026/07/28(火) 15:32:44.04ID:EBahWanj クラスが悪だとか継承が悪だとか世の中そんなに単純ではないように思うよ
476デフォルトの名無しさん
2026/07/28(火) 16:02:00.67ID:32Pv8iex477デフォルトの名無しさん
2026/07/28(火) 16:24:46.45ID:EBahWanj478デフォルトの名無しさん
2026/07/28(火) 16:30:24.48ID:EBahWanj 疎結合だから素晴らしい、密結合だからダメというのも
根拠は誰かが言ってただけなんだろ
自分の両親は密結合に殺されましたくらいのエピソードを
語ってもらわないことには私は納得できないよ
根拠は誰かが言ってただけなんだろ
自分の両親は密結合に殺されましたくらいのエピソードを
語ってもらわないことには私は納得できないよ
479デフォルトの名無しさん
2026/07/28(火) 16:45:10.89ID:ykDCj3D9 クラスベースが有用な場面もあるけど注意深く設計しないわけではないし
ドキュメント整備も不可欠
作業コストが捻出できないなら採用しない方が身のため
C++がいまだに多重継承できるのは素人想定してないから
ドキュメント整備も不可欠
作業コストが捻出できないなら採用しない方が身のため
C++がいまだに多重継承できるのは素人想定してないから
480デフォルトの名無しさん
2026/07/28(火) 16:49:15.13ID:4xNx330Z481デフォルトの名無しさん
2026/07/28(火) 17:00:13.10ID:EBahWanj482デフォルトの名無しさん
2026/07/28(火) 17:19:04.46ID:EBahWanj Aは常識だ → 衆人に訴える論証
BがAと言ってた → 権威に訴える論証
どちらも帰納的推論ではあるんだけど
帰納的推論は誤謬を孕むのよなー
BがAと言ってた → 権威に訴える論証
どちらも帰納的推論ではあるんだけど
帰納的推論は誤謬を孕むのよなー
483デフォルトの名無しさん
2026/07/28(火) 17:28:33.43ID:uSjYhUGY 上司が単純な命令を出すだけで部下に複雑なことをやらせる
これがオブジェクト指向の根本と言ってもいいんじゃないかね
でもそのためのクラス設計はガチガチすぎて上司が口をはさむ余地がまったくなくなった
もうちょっと緩くしてお互い協力し合おうぜっていうのが新しい思想だろう
名づけてゆるゆるオブジェクト指向やね
部署を解体しやすくして再構成も簡単に
社長直属の部署も作りやすくした
エンジン車からEV車への切り替えに手間取ってる企業もクラス化されすぎてたのが一つの要因かも
クラス化した方が業務効率はいいんだろうけど要求の変化についていきにくい
これがオブジェクト指向の根本と言ってもいいんじゃないかね
でもそのためのクラス設計はガチガチすぎて上司が口をはさむ余地がまったくなくなった
もうちょっと緩くしてお互い協力し合おうぜっていうのが新しい思想だろう
名づけてゆるゆるオブジェクト指向やね
部署を解体しやすくして再構成も簡単に
社長直属の部署も作りやすくした
エンジン車からEV車への切り替えに手間取ってる企業もクラス化されすぎてたのが一つの要因かも
クラス化した方が業務効率はいいんだろうけど要求の変化についていきにくい
484デフォルトの名無しさん
2026/07/28(火) 17:58:48.36ID:EBahWanj >>483
二度とそんな話しないで!!
二度とそんな話しないで!!
485デフォルトの名無しさん
2026/07/28(火) 19:07:32.36ID:XdtStZlw "作り直したほうが早い"が究極の疎結合だからな
486デフォルトの名無しさん
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を再発明したら良いのかもしれませんね
クラスの継承はできなくてインターフェイスの実装はできた
VB6を再発明したら良いのかもしれませんね
489デフォルトの名無しさん
2026/07/28(火) 20:51:25.02ID:zHezj+xR 今調べたら2015年ごろからjavascriptにもclassあるんだって?
昔のclassないときのあのprototype使ってグニグニしていく作法はどうも馴染めなかったなぁ
そういう点ではclass今あるんならそりゃよかったよねって感じ
昔のclassないときのあのprototype使ってグニグニしていく作法はどうも馴染めなかったなぁ
そういう点ではclass今あるんならそりゃよかったよねって感じ
490デフォルトの名無しさん
2026/07/28(火) 21:19:43.65ID:HqfkMEqu491デフォルトの名無しさん
2026/07/29(水) 11:40:25.15ID:7uH57Q8l 構造体でいいじゃん
492デフォルトの名無しさん
2026/07/29(水) 12:50:26.41ID:4Jw2e49a 実装継承ていわば内部で大量のif文で処理を分けた巨大な共通関数みたいなものだからな
extendsは大量ifの糖衣構文でしかない
extendsは大量ifの糖衣構文でしかない
493デフォルトの名無しさん
2026/07/29(水) 15:16:02.00ID:gb6vzQ0J >>480
「クラス継承を無くす」とは言ってないんだな
嘘ついたらダメだぞ
Why extends is evilの記事を書いたHolubの記憶によると
“I’d leave out classes”と言ったとされてるが
これはどう見ても継承を使いこなせない人向けに
警鐘を鳴らすために誇張した表現
意訳すればお前ら馬鹿なんだから実装継承使うなよってこと
「クラス継承を無くす」とは言ってないんだな
嘘ついたらダメだぞ
Why extends is evilの記事を書いたHolubの記憶によると
“I’d leave out classes”と言ったとされてるが
これはどう見ても継承を使いこなせない人向けに
警鐘を鳴らすために誇張した表現
意訳すればお前ら馬鹿なんだから実装継承使うなよってこと
494デフォルトの名無しさん
2026/07/29(水) 19:12:45.42ID:wFxh2J0A ラダーならif文じゃなく接点の羅列で済むのにな
495デフォルトの名無しさん
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.
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.
496デフォルトの名無しさん
2026/07/29(水) 23:47:30.17ID:b9/Zoz6z >>495
>その意味するところは実装継承になってしまうクラス継承を無くすという意味だと言ってる
そんなこと言ってないじゃん
しかもその文章ってJames Goslingが言ったとAllen Holubが記憶してるというだけで
どういう言い回しで言ったか正確なところは定かじゃないから
複おじの十八番である曲解の可能性すらある
Allen Holubの記憶を書いた原文ではなくて
James Goslingの発言を記録した本当の原文があるならその参照元を示してね
>その意味するところは実装継承になってしまうクラス継承を無くすという意味だと言ってる
そんなこと言ってないじゃん
しかもその文章ってJames Goslingが言ったとAllen Holubが記憶してるというだけで
どういう言い回しで言ったか正確なところは定かじゃないから
複おじの十八番である曲解の可能性すらある
Allen Holubの記憶を書いた原文ではなくて
James Goslingの発言を記録した本当の原文があるならその参照元を示してね
497デフォルトの名無しさん
2026/07/30(木) 08:05:34.10ID:DWeTgOza 俺はゴスリングよりもJavaのプログラムを書いてきたがクラスの継承については良いのか悪いのか良くわからん、以上、参考まで
498デフォルトの名無しさん
2026/07/30(木) 08:49:02.71ID:JMRHrLRM Allen Holubの実装継承のバグ例は、どうみてもド素人しかやらないバグで、
実装継承の問題だ、というのは単に言いがかりに過ぎない。
さらに、実装継承しない例が続いているが、これもド素人で、
さらにバグを増やしているし、意味不明な対策を入れているし、
このようなプログラムを書くプログラマは迷惑だ。
interfaceを使わないでも、きちんとインターフェース設計されたclassなら、
extendsしても問題はない。ただし、迷惑プログラマは除く。
実装継承の問題だ、というのは単に言いがかりに過ぎない。
さらに、実装継承しない例が続いているが、これもド素人で、
さらにバグを増やしているし、意味不明な対策を入れているし、
このようなプログラムを書くプログラマは迷惑だ。
interfaceを使わないでも、きちんとインターフェース設計されたclassなら、
extendsしても問題はない。ただし、迷惑プログラマは除く。
499デフォルトの名無しさん
2026/07/30(木) 09:11:09.46ID:3+umAxBe Java作ったジェームス・ゴスリンがクラスは継承が実装継承になるからJavaから外したいと言ってるよな
もちろん代わりにインタフェース継承を使う
もちろん代わりにインタフェース継承を使う
500デフォルトの名無しさん
2026/07/30(木) 09:14:56.07ID:DWeTgOza >>499
インタフェースではデータを継承できないし、メソッドがpublicに強制されるぞ、ゴスリングはろくにJavaを書いたことがないにわか
インタフェースではデータを継承できないし、メソッドがpublicに強制されるぞ、ゴスリングはろくにJavaを書いたことがないにわか
501デフォルトの名無しさん
2026/07/30(木) 09:21:27.24ID:hk6sVckq502デフォルトの名無しさん
2026/07/30(木) 10:03:29.25ID:1YHEwK6t >>495末尾にある「可能なときはいつでもインターフェイス継承が実装継承より望ましい」の「可能なときはいつでも」のニュアンスよね。解釈が分かれうるところではある。
継承では、基底クラスの不変条件も遵守しなければならないところ、基底クラスが大きなクラスになってくるとその不変条件を見落とすことが起きがちになるとか、派生クラスを定義した後で基底クラスの不変条件に追加・変更があったりすると派生クラスの方ではそれによる問題が生じないか総チェックしなければならないとかのしんどいところがある。やってできないことではないけれども、きちんとやるとなると結構しんどい。リスコフの置換原則(LSP)を常に意識していないといけないというのは、できなくはないけど、あまりやりたくはないのが本音かなぁ。
継承の中でのインターフェイス継承と実装継承の違いよりも、継承(is-a)とhas-aの違いの方が影響が大きい気もするけど。
継承では、基底クラスの不変条件も遵守しなければならないところ、基底クラスが大きなクラスになってくるとその不変条件を見落とすことが起きがちになるとか、派生クラスを定義した後で基底クラスの不変条件に追加・変更があったりすると派生クラスの方ではそれによる問題が生じないか総チェックしなければならないとかのしんどいところがある。やってできないことではないけれども、きちんとやるとなると結構しんどい。リスコフの置換原則(LSP)を常に意識していないといけないというのは、できなくはないけど、あまりやりたくはないのが本音かなぁ。
継承の中でのインターフェイス継承と実装継承の違いよりも、継承(is-a)とhas-aの違いの方が影響が大きい気もするけど。
503デフォルトの名無しさん
2026/07/30(木) 11:47:46.89ID:VixSHfU8504デフォルトの名無しさん
2026/07/30(木) 13:08:57.35ID:DWeTgOza >>503
継承なんだから当たり前だろw
継承なんだから当たり前だろw
505デフォルトの名無しさん
2026/07/30(木) 13:13:09.22ID:DWeTgOza 密結合だからこそ継承には価値がある
社内に共有する情報と社外に共有する情報は違うだろ
継承とは社外秘の情報を安全に共有するしくみと知れ
社内に共有する情報と社外に共有する情報は違うだろ
継承とは社外秘の情報を安全に共有するしくみと知れ
506デフォルトの名無しさん
2026/07/30(木) 13:16:12.64ID:1tAZUrDj つ アクセス修飾子
507デフォルトの名無しさん
2026/07/30(木) 13:44:09.93ID:14E15Fvl508デフォルトの名無しさん
2026/07/30(木) 13:50:53.37ID:DWeTgOza509デフォルトの名無しさん
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 密結合がダメな理由はゴスリングというハゲたおっさんがそう言ってからってだけだろ
俺もハゲてるから俺の言葉はゴスリングの言葉と思え
密結合を使え
俺もハゲてるから俺の言葉はゴスリングの言葉と思え
密結合を使え
512デフォルトの名無しさん
2026/07/30(木) 14:39:49.56ID:vVQB3eQT513デフォルトの名無しさん
2026/07/30(木) 14:45:24.69ID:DWeTgOza514デフォルトの名無しさん
2026/07/30(木) 14:47:43.02ID:DWeTgOza インターフェイス使ったらスカスカ結合になるだろ
そんなハゲ散らかしたコード組みたくねえわ
ハゲてるのは頭だけで良いってゴスリングが言ってた
そんなハゲ散らかしたコード組みたくねえわ
ハゲてるのは頭だけで良いってゴスリングが言ってた
515デフォルトの名無しさん
2026/07/30(木) 15:02:07.21ID:bq9U0xhd516デフォルトの名無しさん
2026/07/30(木) 15:35:31.33ID:DWeTgOza517デフォルトの名無しさん
2026/07/30(木) 15:40:27.53ID:DWeTgOza 何事にも良い面もあれば悪い面もある
プログラムコードこうあるべき論は糾える縄の如し
プログラムコードこうあるべき論は糾える縄の如し
518デフォルトの名無しさん
2026/07/30(木) 16:18:09.05ID:6fqQECvf519デフォルトの名無しさん
2026/07/30(木) 16:36:11.55ID:DWeTgOza520デフォルトの名無しさん
2026/07/30(木) 16:36:11.82ID:DWeTgOza521デフォルトの名無しさん
2026/07/30(木) 16:37:09.28ID:DWeTgOza なんで俺の書き込みだけ二重になるの? 俺がゴスリングだから?
522デフォルトの名無しさん
2026/07/30(木) 16:39:49.98ID:DWeTgOza privateだと継承されないでしょ
publicだと公開されすぎちゃうでしょ
protectedなら良い感じでしょ、クラスの継承って素敵でしょ
publicだと公開されすぎちゃうでしょ
protectedなら良い感じでしょ、クラスの継承って素敵でしょ
523デフォルトの名無しさん
2026/07/30(木) 16:42:32.23ID:DWeTgOza 密結合で特定のクラスにだけひっそりと公開したいものはあるのよ
インターフェイスだとそういうの出来ないでしょ
インターフェイスは情報漏洩とお考えください
インターフェイスだとそういうの出来ないでしょ
インターフェイスは情報漏洩とお考えください
524デフォルトの名無しさん
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
528デフォルトの名無しさん
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 データを継承するかしないかが曖昧な言語って使う価値がないわな
531デフォルトの名無しさん
2026/07/30(木) 23:27:32.65ID:XkCdioqy Smalltalk界隈からしたらまた感想は異なるんやろな何もかも
C++やJavaとかに触れただけでOOP語ってるのも浅いのかも
C++やJavaとかに触れただけでOOP語ってるのも浅いのかも
532デフォルトの名無しさん
2026/07/30(木) 23:29:48.12ID:0ZybHBrH >>530
具体的にどんなプログラミング言語のこと?
具体的にどんなプログラミング言語のこと?
533デフォルトの名無しさん
2026/07/31(金) 09:50:30.04ID:DxmshYym そもそもオワコンとはどんな状態の事を言っているのか
OOP非推奨なら明確に定数で宣言するべき
OOP非推奨なら明確に定数で宣言するべき
534デフォルトの名無しさん
2026/07/31(金) 10:18:47.25ID:qip+tZot 終わってるのはだいたいオワコン論主張するやつの頭
このスレ見てればわかります
このスレ見てればわかります
535デフォルトの名無しさん
2026/07/31(金) 10:38:46.33ID:WelRpksh オブジェクト指向はパラダイムで
パラダイムは問題解決の枠組みのことだ
オブジェクト指向ではこれをどう解決するのが良いだろうか
というふうに考えるときのベースとなるものだ
プログラミング言語では関数型のパラダイムもあるけれども
オブジェクト指向は関数型などのパラダイムと相反するものではないから
天動説→地動説のようなパラダイムシフトが起こることがなく
オワコンになることも無いような気がするが
オブジェクト指向や関数型をまとめてひっくり返すような
現代の人間が想像もしなかった発想の大転換があるなら見てみたいものだな
そういう意味では我々はオブジェクト指向がオワコンになることを
望んでいるとも言えるのかもしれませんね
パラダイムは問題解決の枠組みのことだ
オブジェクト指向ではこれをどう解決するのが良いだろうか
というふうに考えるときのベースとなるものだ
プログラミング言語では関数型のパラダイムもあるけれども
オブジェクト指向は関数型などのパラダイムと相反するものではないから
天動説→地動説のようなパラダイムシフトが起こることがなく
オワコンになることも無いような気がするが
オブジェクト指向や関数型をまとめてひっくり返すような
現代の人間が想像もしなかった発想の大転換があるなら見てみたいものだな
そういう意味では我々はオブジェクト指向がオワコンになることを
望んでいるとも言えるのかもしれませんね
536デフォルトの名無しさん
2026/07/31(金) 11:33:49.60ID:tlmjmAo/ 早期実現に向けて
537デフォルトの名無しさん
2026/08/01(土) 02:44:02.30ID:fT3Cj9Cj >>オブジェクト指向はパラダイム
この時点でもう間違い
オブジェクト指向なんて手続き型の整理機能に過ぎない
Cでオブジェクト指向設計を一回やればわかること
この時点でもう間違い
オブジェクト指向なんて手続き型の整理機能に過ぎない
Cでオブジェクト指向設計を一回やればわかること
538デフォルトの名無しさん
2026/08/01(土) 09:57:46.20ID:w5FUff77 オブジェクト指向をパラダイムだと勘違いしてる奴のせいでオブジェクト指向は失敗したんだよな
オブジェクト指向ならプログラムの都合じゃなくて現実の分類学に合わせたコードが書けるとか、高凝集・疎結合を無視しても大きくて保守可能なプログラムが書けるとか、そういうそれまでの常識を覆すものとして捉えてしまった
その結果ろくでもないゴミが量産された
オブジェクト指向ならプログラムの都合じゃなくて現実の分類学に合わせたコードが書けるとか、高凝集・疎結合を無視しても大きくて保守可能なプログラムが書けるとか、そういうそれまでの常識を覆すものとして捉えてしまった
その結果ろくでもないゴミが量産された
539デフォルトの名無しさん
2026/08/01(土) 10:00:11.34ID:UJbPVI44 たとえばちょっと前に湧いてる逆張り密結合上等オジなんかそうだけど、自分がプログラムを書いてるってことを理解してない、責務分離をしないと後々どうなるか考えるだけの経験に基づく予測ができない、そういう人間がオブジェクト指向をパラダイムだ、銀の弾丸だと崇め奉ってダメにした
540デフォルトの名無しさん
2026/08/01(土) 10:03:01.99ID:7vhWqoWJ >>535
真逆
プログラミングにパラダイムシフトは構造化と関数型しかない
オブジェクト指向はパラダイムではなかったが故に、構造化・手続き型の文脈では価値を持つが、関数型の文脈では価値を持たない
OOがやってることなんて、関数型ではもっと自然に表現できて当然のこと
真逆
プログラミングにパラダイムシフトは構造化と関数型しかない
オブジェクト指向はパラダイムではなかったが故に、構造化・手続き型の文脈では価値を持つが、関数型の文脈では価値を持たない
OOがやってることなんて、関数型ではもっと自然に表現できて当然のこと
541デフォルトの名無しさん
2026/08/01(土) 10:19:56.46ID:/QOyam4O 個人的には、トマス・クーン的パラダイムとしてはオブジェクト指向も立派にパラダイムだけど、現在一般に使われる誤用・慣用的表現としてのパラダイムという語には当てはまりにくく、認識や考え方、常識に変化がない「弱い」パラダイムとでも呼ぶべきものではないかと思う
なので、誤用・慣用的表現としてのパラダイムから生まれた「パラダイムシフト」には当たらない
現実的にも、オブジェクト指向によって認識や考え方、常識に変化があるべきでなかったことは、本日のオブジェクト指向の現状からは明らかであるように思われる
なので、誤用・慣用的表現としてのパラダイムから生まれた「パラダイムシフト」には当たらない
現実的にも、オブジェクト指向によって認識や考え方、常識に変化があるべきでなかったことは、本日のオブジェクト指向の現状からは明らかであるように思われる
542デフォルトの名無しさん
2026/08/01(土) 10:48:13.03ID:VTcVbSr3 つまり構造体でFA
543デフォルトの名無しさん
2026/08/01(土) 10:53:59.39ID:G0osrDjo オブジェクト指向の根底には反グローバル変数がありそう
char buf[] = "abc def ghi";
strtok(buf, " "); // "abc"
strtok(NULL, " "); // "def"
strtok(NULL, " "); // "ghi"
何か気持ち悪いからTokenizer作りたいと思ったらオブジェクト指向に片足突っ込んでる
char buf[] = "abc def ghi";
strtok(buf, " "); // "abc"
strtok(NULL, " "); // "def"
strtok(NULL, " "); // "ghi"
何か気持ち悪いからTokenizer作りたいと思ったらオブジェクト指向に片足突っ込んでる
544デフォルトの名無しさん
2026/08/01(土) 12:22:48.22ID:QA4zKpco オブジェクト指向ってなぜこうも妄想猛々しくするのかね
俺の、俺のって
俺の、俺のって
545デフォルトの名無しさん
2026/08/01(土) 12:39:57.61ID:E8f34aRh そうっすよね。手続き型がなんか気持ち悪くなってきたから、オブジェクト指向を使う。
Monad lawをながめていたら、モナド則はクライスリトリプルだから、
これってもしかして...と、なにやら思いついた。quadrupleになると...量子プログラムだ。
オブジェクト指向の次はTensor指向かねぇ?とも思ったが、まだクライスリトリプルに
到達していない。
んー? 次はモナド則付きオブジェクト指向かな?
Monad lawをながめていたら、モナド則はクライスリトリプルだから、
これってもしかして...と、なにやら思いついた。quadrupleになると...量子プログラムだ。
オブジェクト指向の次はTensor指向かねぇ?とも思ったが、まだクライスリトリプルに
到達していない。
んー? 次はモナド則付きオブジェクト指向かな?
546デフォルトの名無しさん
2026/08/01(土) 13:07:49.80ID:E8f34aRh quadrupleの前にtripleだな。
オブジェクト指向そのものはdouble(2-tuple)ではなく、triple(3-tuple)であるべき。
プログラムそのものがクライスリトリプルなんだし。
アナロジーとしては複素数空間。プログラムにおけるeやiの対応物を明確にあつかう必要がある。
と思う。
オブジェクト指向そのものはdouble(2-tuple)ではなく、triple(3-tuple)であるべき。
プログラムそのものがクライスリトリプルなんだし。
アナロジーとしては複素数空間。プログラムにおけるeやiの対応物を明確にあつかう必要がある。
と思う。
547デフォルトの名無しさん
2026/08/01(土) 13:30:42.77ID:gKzGeB5j オブジェクト指向は宗教になってしまった
548デフォルトの名無しさん
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 モジュール化の幅が広がるとかその程度に理解してりゃよかったのに
なんでもオブジェクト指向の宗教が出回りすぎちゃったというイメージ。
なんでもオブジェクト指向の宗教が出回りすぎちゃったというイメージ。
551デフォルトの名無しさん
2026/08/01(土) 14:46:47.91ID:lEgzxzSp >>540
君、関数型でまともにプログラム書いたことないでしょ
君、関数型でまともにプログラム書いたことないでしょ
552デフォルトの名無しさん
2026/08/01(土) 15:10:21.22ID:y5Fa6b+p 関数型といっても正格か遅延、純粋か、変数がイミュータブルか等で
代数的データ型やパターンマッチングは共通でもってはいるけど
コードの方針はガラッと変わる
とくに純粋かどうかでパラダイムの違いを感じる
代数的データ型やパターンマッチングは共通でもってはいるけど
コードの方針はガラッと変わる
とくに純粋かどうかでパラダイムの違いを感じる
553デフォルトの名無しさん
2026/08/01(土) 15:48:21.39ID:gJHoXlPN554デフォルトの名無しさん
2026/08/01(土) 16:06:06.33ID:r9EYv4Dc RustはC/C++と同等の速さで動きつつ関数型パラダイムによる抽象化という両立をなす革新をした
555デフォルトの名無しさん
2026/08/01(土) 16:35:39.37ID:fmNfmjom Rustのように変数をmutateするものは関数型とは呼ばない
関数型の考えを一部取り入れているというだけで
Rustはオブジェクト指向機能を持った手続き型
関数型の考えを一部取り入れているというだけで
Rustはオブジェクト指向機能を持った手続き型
556デフォルトの名無しさん
2026/08/01(土) 16:46:34.65ID:jlM3ay+L557デフォルトの名無しさん
2026/08/01(土) 17:10:51.26ID:uyIGjr56 Rustが関数型は草
関数型言語使ったこと無さそう
これに限らず
実務経験すらないのに
〇〇は××だ、みたいなお題目唱えてるようなレスはもうおなか一杯
バツボタン探させられる広告みたいなもんでもうほんとうんざり
関数型言語使ったこと無さそう
これに限らず
実務経験すらないのに
〇〇は××だ、みたいなお題目唱えてるようなレスはもうおなか一杯
バツボタン探させられる広告みたいなもんでもうほんとうんざり
558デフォルトの名無しさん
2026/08/01(土) 17:49:40.78ID:XyaPEWez Rustは関数型プログラミングであってる
どこをみてもそう書かれている
もちろんマルチパラダイムなので命令型プログラミングでもある
どこをみてもそう書かれている
もちろんマルチパラダイムなので命令型プログラミングでもある
559デフォルトの名無しさん
2026/08/01(土) 18:00:56.91ID:fT3Cj9Cj560デフォルトの名無しさん
2026/08/01(土) 18:57:50.18ID:urxvnKRn 数学的な概念とかはよく分からんが、式の型が関数型言語にとって必須の要素ということも別になくない?
561デフォルトの名無しさん
2026/08/01(土) 22:06:06.55ID:fT3Cj9Cj >>560
式の型というのが何を指しているかが少し曖昧だけど、データ(変数など)に対して可能な操作を決定する「型」という「対象」と、「関数」という「射」による「圏」を構成するという、プログラミングに対する数学の圏論の適用によって、型を対象に扱うことが可能になって透過性が高まるよという感じ
式の型というのが何を指しているかが少し曖昧だけど、データ(変数など)に対して可能な操作を決定する「型」という「対象」と、「関数」という「射」による「圏」を構成するという、プログラミングに対する数学の圏論の適用によって、型を対象に扱うことが可能になって透過性が高まるよという感じ
562デフォルトの名無しさん
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 アプリの開発が捗るん?
565デフォルトの名無しさん
2026/08/01(土) 22:38:54.84ID:fT3Cj9Cj >>563
さっきもチラッと書いたけど主に「参照透過性」
基本的には同じ引数を渡せば、いつ・どこで呼び出しても同じ結果を返すことだけど、たとえ副作用があってモナドがなくても、この考え方があれば構造は見通しの良いものになる
言語仕様的にこれを前提においてサポートすれば、高階関数のようなC系言語では複雑になりがちな機能をシンプルに記述できるし、引数や戻り値の型も管理しやすくなる
予測可能で合成しやすいコードになることが最大のメリットで、多人数開発や保守において状況を改善できる
もちろん型を対象として扱うことで、Option型やパターンマッチング、カリー化などでエラー管理や条件分岐、シグネチャの統一などのメリットも享受しやすくなるけど、これはあまり本質的ではない
さっきもチラッと書いたけど主に「参照透過性」
基本的には同じ引数を渡せば、いつ・どこで呼び出しても同じ結果を返すことだけど、たとえ副作用があってモナドがなくても、この考え方があれば構造は見通しの良いものになる
言語仕様的にこれを前提においてサポートすれば、高階関数のようなC系言語では複雑になりがちな機能をシンプルに記述できるし、引数や戻り値の型も管理しやすくなる
予測可能で合成しやすいコードになることが最大のメリットで、多人数開発や保守において状況を改善できる
もちろん型を対象として扱うことで、Option型やパターンマッチング、カリー化などでエラー管理や条件分岐、シグネチャの統一などのメリットも享受しやすくなるけど、これはあまり本質的ではない
566デフォルトの名無しさん
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 関数型プログラミング言語のベースにはラムダ計算があると思うが、再帰するときに不動点コンビネータを使うのは変態だけだし、数値の計算にチャーチ数を使うのは気狂いだけだ、数学の理論が優れていてもそれがプログラムコードをわかりやすくするとは限らない、圏論もその一つだ
573デフォルトの名無しさん
2026/08/02(日) 00:44:58.62ID:8aR44OcI なんだかどうでもいい青年の主張みたいだな
574デフォルトの名無しさん
2026/08/02(日) 00:51:04.56ID:XjSJAloN 青年の主張は青臭いことに価値があるからここまでどうでもよくはない
575デフォルトの名無しさん
2026/08/02(日) 00:54:04.42ID:2v+B+RZD 参照透過なんてものはたいしたもんじゃない、手続き型でも普通にプログラム書いてたらそうなるだろってものだ、オブジェクト指向教に戻ろう
576デフォルトの名無しさん
2026/08/02(日) 01:03:46.32ID:AKLO/63u Option型がNullable型より有利な点はネストができることでより複雑な状態も格納できる点にある
577デフォルトの名無しさん
2026/08/02(日) 01:11:44.46ID:8aR44OcI しょうがねぇなあ
関数型も憧れ空妄想抱いて宗教じみた信者多いけどな
それはさておき、C++の普及(大体1986年~)以降流行したJavaなどの言語のオブジェクト指向の必須要件はインスタンススコープなんだけれどもな
CのStructのインスタンスに関数(メソッド)のスコープを持たせる拡張からはじまった
Javaもその流れの延長
1990年代ころまではそれが良い感じだと信じられていたが
ところが、実装継承の乱用やカプセル化によるスコープの破壊・依存の伝播と交差(スパゲティー化)などによる視認性の悪さに信者も気付きはじめて紛糾(覚醒)中←いまここ
関数型も憧れ空妄想抱いて宗教じみた信者多いけどな
それはさておき、C++の普及(大体1986年~)以降流行したJavaなどの言語のオブジェクト指向の必須要件はインスタンススコープなんだけれどもな
CのStructのインスタンスに関数(メソッド)のスコープを持たせる拡張からはじまった
Javaもその流れの延長
1990年代ころまではそれが良い感じだと信じられていたが
ところが、実装継承の乱用やカプセル化によるスコープの破壊・依存の伝播と交差(スパゲティー化)などによる視認性の悪さに信者も気付きはじめて紛糾(覚醒)中←いまここ
578デフォルトの名無しさん
2026/08/02(日) 01:12:43.57ID:8aR44OcI 多態も視認性悪くするな
579デフォルトの名無しさん
2026/08/02(日) 01:18:23.87ID:8aR44OcI 関数型に憧れる信者の初歩的な妄想の一つが
「C言語は関数を記述するからら関数型言語」
…orz
「C言語は関数を記述するからら関数型言語」
…orz
580デフォルトの名無しさん
2026/08/02(日) 01:36:26.63ID:8aR44OcI でも皮肉なことにオブジェクト指向の】最大の害は
思い込みの激しい信者が妄信する変てこなオレオレオブジェクト指向風実装を
宗教みたいに周りにまき散らして時に押し受けたり他人をけなしたり
迷惑をかけるところかな
それがまた害のあるオブジェクト指向の副作用てんこ盛りの方法だったりするから始末が悪い
思い込みの激しい信者が妄信する変てこなオレオレオブジェクト指向風実装を
宗教みたいに周りにまき散らして時に押し受けたり他人をけなしたり
迷惑をかけるところかな
それがまた害のあるオブジェクト指向の副作用てんこ盛りの方法だったりするから始末が悪い
581デフォルトの名無しさん
2026/08/02(日) 01:38:36.46ID:8aR44OcI 実はまともなソフトウエアをろくすっぽ書けないような奴にそういう輩が結構いたりする
オブジェクト指向の不思議あるある
これゆえ宗教じみてると気味悪がられる
オブジェクト指向の不思議あるある
これゆえ宗教じみてると気味悪がられる
582デフォルトの名無しさん
2026/08/02(日) 01:42:48.28ID:0QIwMaBf Option型は様々な形で扱われたり実装されたりしている
0~1個のコレクションとみなされたり
タグ付きの共用体とみなされたり
値が収容できる列挙型とみなされたり
モナドであったり
0~1個のコレクションとみなされたり
タグ付きの共用体とみなされたり
値が収容できる列挙型とみなされたり
モナドであったり
583デフォルトの名無しさん
2026/08/02(日) 01:52:51.43ID:WR5mZBSE584デフォルトの名無しさん
2026/08/02(日) 02:18:35.72ID:UZ8yL7UT >>567-568
それは違う
モナドは副作用を圏論の範囲内で扱うための手法であって、まさに参照透過性を副作用込みでも維持することを目標としている
ただ、副作用を完全に排除して圏論で全てを扱えるようにしなくても、境界を定める現実的なアプローチで関数型のメリットは享受できる
>>569-570
それも全く異なる
君が言っているのはテストすればプログラムが完璧になるという信仰の話だが、私が言っているのはそうではなくて、理論的にそれを裏付けることであるという違いがある
関数型言語でない言語では、関数が純粋関数であるかどうかは理論的には確認できず、実際に全コードを読まなければ把握できない
これは君が扱うような小さなプロジェクトでは現実的かもしれないが、ある程度以上のプロジェクトでは非現実的なコストとなる
>>571
圏論と結びつける必要がないということはなくて、プログラマがそれを意識するかどうかは脇に置いても、圏論がなければただサブルーチンを使うという話にまで退行してしまう
>>572
だから、純粋な圏論のみでプログラムを記述しよう、という話はしていない
あくまでその考え方を基礎に持つことで、例外的なケースを分離することができるというのが重要
それは違う
モナドは副作用を圏論の範囲内で扱うための手法であって、まさに参照透過性を副作用込みでも維持することを目標としている
ただ、副作用を完全に排除して圏論で全てを扱えるようにしなくても、境界を定める現実的なアプローチで関数型のメリットは享受できる
>>569-570
それも全く異なる
君が言っているのはテストすればプログラムが完璧になるという信仰の話だが、私が言っているのはそうではなくて、理論的にそれを裏付けることであるという違いがある
関数型言語でない言語では、関数が純粋関数であるかどうかは理論的には確認できず、実際に全コードを読まなければ把握できない
これは君が扱うような小さなプロジェクトでは現実的かもしれないが、ある程度以上のプロジェクトでは非現実的なコストとなる
>>571
圏論と結びつける必要がないということはなくて、プログラマがそれを意識するかどうかは脇に置いても、圏論がなければただサブルーチンを使うという話にまで退行してしまう
>>572
だから、純粋な圏論のみでプログラムを記述しよう、という話はしていない
あくまでその考え方を基礎に持つことで、例外的なケースを分離することができるというのが重要
585デフォルトの名無しさん
2026/08/02(日) 02:22:02.19ID:VoB7C6aX その後の『依存性逆転の原則』が答え
オブジェクト指向における従来の依存関係とは、
上位モジュールから下位モジュールへの方向性であり、
仕様定義を担う上位モジュールを、
詳細実装を担う下位モジュールから独立させて、
各下位モジュールを別個保存するというものだった。
この慣習で起こる様々な問題に対して、
『依存性逆転原則』は以下2点で決着をつけている、
①上位モジュールはいかなるものも下位モジュールから持ち込んではならない。双方とも抽象(具体例としてインターフェース)に依存するべきである。
②抽象は詳細に依存してはならない。詳細(具象的な実装内容)が抽象に依存するべきである。
この上位モジュールと下位モジュールの双方が抽象に依存しなければならないという内容は、
それまでの人々のオブジェクト指向の常識を覆しているものであった。
しかし現代のまともなプログラマーにとって『依存性逆転の原則』は浸透して常識になっている。
オブジェクト指向における従来の依存関係とは、
上位モジュールから下位モジュールへの方向性であり、
仕様定義を担う上位モジュールを、
詳細実装を担う下位モジュールから独立させて、
各下位モジュールを別個保存するというものだった。
この慣習で起こる様々な問題に対して、
『依存性逆転原則』は以下2点で決着をつけている、
①上位モジュールはいかなるものも下位モジュールから持ち込んではならない。双方とも抽象(具体例としてインターフェース)に依存するべきである。
②抽象は詳細に依存してはならない。詳細(具象的な実装内容)が抽象に依存するべきである。
この上位モジュールと下位モジュールの双方が抽象に依存しなければならないという内容は、
それまでの人々のオブジェクト指向の常識を覆しているものであった。
しかし現代のまともなプログラマーにとって『依存性逆転の原則』は浸透して常識になっている。
586デフォルトの名無しさん
2026/08/02(日) 02:25:42.84ID:2v+B+RZD >>584
圏論には何の価値もない、君は関数さえわかってない、君の圏論論は虚無だよ
圏論には何の価値もない、君は関数さえわかってない、君の圏論論は虚無だよ
587デフォルトの名無しさん
2026/08/02(日) 02:26:11.58ID:UZ8yL7UT588デフォルトの名無しさん
2026/08/02(日) 02:30:33.32ID:UZ8yL7UT589デフォルトの名無しさん
2026/08/02(日) 02:31:44.41ID:UZ8yL7UT590デフォルトの名無しさん
2026/08/02(日) 02:36:40.57ID:2v+B+RZD ただのflatMapで副作用が参照透過になるわけねえだろw
591デフォルトの名無しさん
2026/08/02(日) 02:38:43.52ID:t6DTwhyz592デフォルトの名無しさん
2026/08/02(日) 02:42:21.94ID:2v+B+RZD >>585
アンクルボブがそんなこと言ってクリーンアーキテクチャだとか言ってたけどグルーコードだらけで開発効率が落ちるだけと批判されてるのが今だと思うけどな、アンクルボブのコードはオブジェクト指向の悪い例だと思うわ、ケイシーやジョンから批判されてんじゃん
アンクルボブがそんなこと言ってクリーンアーキテクチャだとか言ってたけどグルーコードだらけで開発効率が落ちるだけと批判されてるのが今だと思うけどな、アンクルボブのコードはオブジェクト指向の悪い例だと思うわ、ケイシーやジョンから批判されてんじゃん
593デフォルトの名無しさん
2026/08/02(日) 02:44:40.57ID:UZ8yL7UT594デフォルトの名無しさん
2026/08/02(日) 02:45:07.91ID:2v+B+RZD >>591
圏論がflatMapなんて言ってねえわw
圏論がflatMapなんて言ってねえわw
595デフォルトの名無しさん
2026/08/02(日) 02:47:03.92ID:2v+B+RZD >>593
クリーンアーキテクチャエアプか?考え方じゃなくてコーディングの話だぞ
クリーンアーキテクチャエアプか?考え方じゃなくてコーディングの話だぞ
596デフォルトの名無しさん
2026/08/02(日) 03:16:08.47ID:UZ8yL7UT597デフォルトの名無しさん
2026/08/02(日) 03:16:32.64ID:2v+B+RZD お前ら…寝たのか…?おやすみなさい
598デフォルトの名無しさん
2026/08/02(日) 03:37:21.68ID:/d+TnyfF599デフォルトの名無しさん
2026/08/02(日) 03:40:13.39ID:/d+TnyfF600デフォルトの名無しさん
2026/08/02(日) 12:10:11.95ID:nBw0gVNF >>585
何の答え?
何の答え?
601デフォルトの名無しさん
2026/08/02(日) 12:29:25.86ID:H4NVQa6T オブジェクト指向は素晴らしいけど
うまく使わないと密結合になるなど問題を抱えていた話だよね
「クラス継承を使わない原則」と「依存関係逆転の原則」が皆によって得られた知見かな
うまく使わないと密結合になるなど問題を抱えていた話だよね
「クラス継承を使わない原則」と「依存関係逆転の原則」が皆によって得られた知見かな
602デフォルトの名無しさん
2026/08/02(日) 12:29:32.63ID:kF9MPm89603デフォルトの名無しさん
2026/08/02(日) 13:14:52.16ID:MwKjWdsN 曖昧さ、解釈の幅広さを与えていることが
様々な我流の源でもあるな
様々な我流の源でもあるな
604デフォルトの名無しさん
2026/08/02(日) 16:35:32.88ID:fG0Ij0sM605デフォルトの名無しさん
2026/08/02(日) 17:23:01.92ID:BWdG0d1V >>604
クラス継承は悪だから排除したプログラミング言語がたくさん増えてることも知らない無知かよ
クラス継承は悪だから排除したプログラミング言語がたくさん増えてることも知らない無知かよ
606デフォルトの名無しさん
2026/08/02(日) 18:04:37.29ID:MwKjWdsN 未だクラスベースオブジェクト指向の信奉者がいるんだな…
ちょっと驚き
ちょっと驚き
607デフォルトの名無しさん
2026/08/02(日) 19:41:30.52ID:DAnEVSkI だからクラスだけ使ってりゃいいだろ
継承が必要なことってあるかね?
継承が必要なことってあるかね?
608デフォルトの名無しさん
2026/08/02(日) 19:57:57.35ID:Bhxvj6Rw 疎結合になるインタフェース継承を使う
密結合になるクラス継承は使わない
密結合になるクラス継承は使わない
609デフォルトの名無しさん
2026/08/02(日) 20:21:07.76ID:zbpVdQn6 疎結合密結合だけ連呼してるのって
ファミコン持ってない子がマリオの最初のクリボー怖がってるようなもの
ファミコン持ってない子がマリオの最初のクリボー怖がってるようなもの
610デフォルトの名無しさん
2026/08/02(日) 20:34:22.76ID:2noVwyhr クラス継承が廃止された理由はメリットがなく弊害が大きいため
611デフォルトの名無しさん
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を除いて全ての言語にクラス継承はない
【クラス継承がない】Elixir、Go、Julia、Nim、Rust、Zig
【クラス継承がある】Kotlin(=Javaの後継)、Swift(=Objective-Cの後継)
つまり過去のしがらみでクラス継承を含めざるを得なかったKotlinとSwiftを除いて全ての言語にクラス継承はない
613デフォルトの名無しさん
2026/08/02(日) 22:20:23.48ID:XzXuo0pj おバカな比較だな
614デフォルトの名無しさん
2026/08/02(日) 22:29:52.08ID:DNLiyUpR マトモなプログラマーならクラス継承は不要という常識がある
その結果あらたな言語ではクラス継承は捨てられた
その結果あらたな言語ではクラス継承は捨てられた
615デフォルトの名無しさん
2026/08/02(日) 23:16:15.06ID:2v+B+RZD >>609
夏休みだからね
夏休みだからね
616デフォルトの名無しさん
2026/08/02(日) 23:20:13.91ID:MwKjWdsN クラスベースオブジェクト指向・継承の支持者って
反論されると中傷じみた揚げ足取りや子供のような攻撃的レスをするのはなぜだろう
反論されると中傷じみた揚げ足取りや子供のような攻撃的レスをするのはなぜだろう
617デフォルトの名無しさん
2026/08/02(日) 23:22:21.97ID:FWWKpB+C インターフェイス継承とhas-a関係の比較なら、has-a関係の方が疎結合になって望ましいことが多いというのは共通理解ということでいいん? 密結合が何が何でもダメなのかという点はさて措くとして。
618デフォルトの名無しさん
2026/08/02(日) 23:54:06.30ID:/d+TnyfF >>617
型とその値(インスタンス)がis-a関係
型と各機能(インタフェース継承)がhas-a関係で複数の機能を持つことができる
ちなみに型と型がis-a関係になると結合度が高くなりすぎて柔軟性を失い良いコードでなくなるため使われなくなった
型とその値(インスタンス)がis-a関係
型と各機能(インタフェース継承)がhas-a関係で複数の機能を持つことができる
ちなみに型と型がis-a関係になると結合度が高くなりすぎて柔軟性を失い良いコードでなくなるため使われなくなった
619デフォルトの名無しさん
2026/08/03(月) 00:13:28.44ID:tMfv5Lr+ 大人がしゃべってるところに子供が入ってきて
いきなり九九の暗唱を始める微笑ましさ
でもそれは限度がある
微笑ましいのは最初だけ
得意げになってるのかどうか知らんが
毎日毎日七の段唱えてみせて
そして明日はどうなるのかっていうと
また明日も七の段唱え始める
彼にとってはそれが世界の全てであるかのように
いきなり九九の暗唱を始める微笑ましさ
でもそれは限度がある
微笑ましいのは最初だけ
得意げになってるのかどうか知らんが
毎日毎日七の段唱えてみせて
そして明日はどうなるのかっていうと
また明日も七の段唱え始める
彼にとってはそれが世界の全てであるかのように
620デフォルトの名無しさん
2026/08/03(月) 00:32:15.74ID:kWohr3pl >>377でも同じこと書いたけど
Simulaの用途ではクラス継承がうまく機能してて
そのまま汎用の言語に持ち込んでしまったのが悲劇の始まり
うまく適用できる分野はあるし分かってC++/Javaで書くなら問題ないよ
Simulaの用途ではクラス継承がうまく機能してて
そのまま汎用の言語に持ち込んでしまったのが悲劇の始まり
うまく適用できる分野はあるし分かってC++/Javaで書くなら問題ないよ
621デフォルトの名無しさん
2026/08/03(月) 00:40:31.40ID:FxTwBOsj >>619
心に沁み入る良い詩を見た
心に沁み入る良い詩を見た
622デフォルトの名無しさん
2026/08/03(月) 01:27:30.45ID:JNZQf0TG >>620
Javaでも通常はクラス継承をできる限り避けてインタフェース継承だよ
Javaでも通常はクラス継承をできる限り避けてインタフェース継承だよ
623デフォルトの名無しさん
2026/08/03(月) 07:57:56.93ID:swaY03EK インターフェイス継承をhas-aと呼ぶと、C++では抽象クラスからの継承もhas-aということになってしまっておかしいと思うのですがどうでしょうか
624デフォルトの名無しさん
2026/08/03(月) 08:09:31.19ID:X2wQmTQ9 継承元やインターフェイスに近いクラスが当然持ってると思われるメンバーならまあ実装継承の形でもいいんだろうけれど
現実問題としてそういう場面が多いとは思えんってのが実際のところだわな。
現実問題としてそういう場面が多いとは思えんってのが実際のところだわな。
625デフォルトの名無しさん
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 そりゃまあ重複は悪!ってずっと言い続けてきたからな。
628デフォルトの名無しさん
2026/08/03(月) 13:56:21.94ID:9YacywFP629デフォルトの名無しさん
2026/08/03(月) 13:58:43.05ID:9YacywFP630デフォルトの名無しさん
2026/08/03(月) 14:49:07.35ID:aURwta2u has-aというのは、少なくとも一般的な用語法としては関連/集約/合成なんかを指す語だったと思うけど(あと人によってはC++のprivate継承なんかも入れる)。インターフェイス継承をhas-aとするなら関連/集約/合成には別の呼称をあてるん?
また、インターフェイス継承の場合、インターフェイスとそれを実装する型の間には部分型関係が成立している言語が多いと思うけど、部分型関係が成立しているのにis-a関係ではないというのは分かりづらくない?
一般的な用語法としては、インターフェイス継承はis-a関係の範疇に入れられてきたと思うし、has-aであるとする用語法ははじめて聞いたんだけど、最近はそういう用語法を支持する人が多いの?
また、インターフェイス継承の場合、インターフェイスとそれを実装する型の間には部分型関係が成立している言語が多いと思うけど、部分型関係が成立しているのにis-a関係ではないというのは分かりづらくない?
一般的な用語法としては、インターフェイス継承はis-a関係の範疇に入れられてきたと思うし、has-aであるとする用語法ははじめて聞いたんだけど、最近はそういう用語法を支持する人が多いの?
631デフォルトの名無しさん
2026/08/03(月) 15:46:25.23ID:XtLUC8MJ632デフォルトの名無しさん
2026/08/03(月) 16:00:48.79ID:qrGgpOwj >>630
インタフェースはそのインスタンスを作れないから狭い意味での型ではなく強いて言えばメタな型でしょう
一方でスーパークラスとそれをクラス継承したサブクラスはどちらもインスタンスを作れる型同士だから代替出来る点で明確にis-aになりますから状況がかなり違います
インタフェースの場合は例でよく出てくる例にあるように飛べるや鳴けるなど~できるといった機能や能力を表しますからそこに着目するとhas-aと解釈することもできて難しいところですね
インタフェースはそのインスタンスを作れないから狭い意味での型ではなく強いて言えばメタな型でしょう
一方でスーパークラスとそれをクラス継承したサブクラスはどちらもインスタンスを作れる型同士だから代替出来る点で明確にis-aになりますから状況がかなり違います
インタフェースの場合は例でよく出てくる例にあるように飛べるや鳴けるなど~できるといった機能や能力を表しますからそこに着目するとhas-aと解釈することもできて難しいところですね
633デフォルトの名無しさん
2026/08/03(月) 16:06:31.58ID:IhL2YRzY Wikipediaによると、どちらなのかいつもはっきりと決定できるものではない、だそうだ
is-a関係とは、異なる種類の階層の性質をもつ関係にhas-aがある。 オブジェクトと従属するオブジェクトの論理関係がis-aか、それともhas-aなのか、いつもはっきりと決定できるものではない。この曖昧さが、is-aのようなメタ言語的な用語を生み出した。
is-a関係とは、異なる種類の階層の性質をもつ関係にhas-aがある。 オブジェクトと従属するオブジェクトの論理関係がis-aか、それともhas-aなのか、いつもはっきりと決定できるものではない。この曖昧さが、is-aのようなメタ言語的な用語を生み出した。
634デフォルトの名無しさん
2026/08/03(月) 16:17:50.02ID:dSA2HLgy インタフェースはis-a関係ではないためUMLでは点線を用いて別の表記になり
実現(Realization)または実装(Implementation)と呼ぶ
実現(Realization)または実装(Implementation)と呼ぶ
635デフォルトの名無しさん
2026/08/03(月) 16:18:49.79ID:pgC4YmsR バカが必死www
636デフォルトの名無しさん
2026/08/03(月) 16:21:27.44ID:S13efKK6 なんでこんな簡単な区別もつかないんだろ
不思議で仕方がない
不思議で仕方がない
637デフォルトの名無しさん
2026/08/03(月) 16:27:03.07ID:oB+Q9YAn 人間て基本的に愚かなんだよお前さんも
10代の受験でどこの大学に受かったとか関係なく
10代の受験でどこの大学に受かったとか関係なく
638デフォルトの名無しさん
2026/08/03(月) 16:31:57.94ID:oSdBU5UO インタフェースは能力だもんな
is-aにならないのは当たり前すぎる
is-aにならないのは当たり前すぎる
639デフォルトの名無しさん
2026/08/03(月) 18:28:52.00ID:SCqddoxD 10億回まわすような世界だけど、
javaの場合、interfaceで呼び出すと遅いので実体を呼び出す。
ハイブリッド言語なので、設計は理想的なオブジェクト指向でも、
実装は冗長なところを回避する。実装継承は必須。
javaの場合、interfaceで呼び出すと遅いので実体を呼び出す。
ハイブリッド言語なので、設計は理想的なオブジェクト指向でも、
実装は冗長なところを回避する。実装継承は必須。
640デフォルトの名無しさん
2026/08/03(月) 18:59:44.76ID:ANyXg3sm >>639
interfaceで呼び出すと遅い、って欠陥言語じゃん
interfaceで呼び出すと遅い、って欠陥言語じゃん
641デフォルトの名無しさん
2026/08/03(月) 20:54:16.39ID:SCqddoxD 10億回まわす世界ですよ。ほんの数nsの違い。
nanosecondやpicosecondの世界。
nanosecondやpicosecondの世界。
642デフォルトの名無しさん
2026/08/03(月) 21:14:44.65ID:oB+Q9YAn643デフォルトの名無しさん
2026/08/03(月) 21:16:35.14ID:oB+Q9YAn いやいや速度が問題になるところでJavato継承って
池沼かよ
池沼かよ
644デフォルトの名無しさん
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
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切ってるのかな
ただのジャンプになるかインライン展開されそうだけど
ただのジャンプになるかインライン展開されそうだけど
646デフォルトの名無しさん
2026/08/03(月) 22:11:30.82ID:JgsmaqV6 C++だと仮想関数になるからvtable経由で遅くなる欠陥があるよな
Javaも同じ問題?
Javaも同じ問題?
647デフォルトの名無しさん
2026/08/03(月) 22:32:26.96ID:SCqddoxD JIT入ってるから10億回まわしてやっと秒レベルの差に収まってるのだと思う。
このロジックを入れたアプリが、ロジックの順番変えたり、いろいろやって2分以上から1:30未満まで
速くなった。
Vectorが正式に入ってくれば、もっと速くできそう。
このロジックを入れたアプリが、ロジックの順番変えたり、いろいろやって2分以上から1:30未満まで
速くなった。
Vectorが正式に入ってくれば、もっと速くできそう。
648デフォルトの名無しさん
2026/08/03(月) 22:37:44.84ID:O3vGqB4U 時間計測の比較だけかよ
どういう仕組みで遅くなるのか仕組みの違いの比較や
もしくは実行コードの違いの比較じゃないと雲をつかむような状況だな
どういう仕組みで遅くなるのか仕組みの違いの比較や
もしくは実行コードの違いの比較じゃないと雲をつかむような状況だな
649デフォルトの名無しさん
2026/08/03(月) 22:43:14.79ID:SCqddoxD 実測で、単体ではなく完成品現物が速くなればよいのだ。
650デフォルトの名無しさん
2026/08/03(月) 22:53:49.76ID:25eYOT4g651デフォルトの名無しさん
2026/08/03(月) 22:59:13.87ID:SCqddoxD 結局、JITと知恵比べしている状況。
あと、メモリデバイスは遅いので間接参照しない。
へたに手動でインライン展開しない。privateメソッドにまとめたほうが速い場合もある。
SIMDが効いたとしても、メモリデバイスの遅さを回避するほうが有効かも。
あと、メモリデバイスは遅いので間接参照しない。
へたに手動でインライン展開しない。privateメソッドにまとめたほうが速い場合もある。
SIMDが効いたとしても、メモリデバイスの遅さを回避するほうが有効かも。
652デフォルトの名無しさん
2026/08/03(月) 23:24:45.69ID:n5hwM9CL >>644
インタフェースは能力wだからis-aにならないらしいよww
インタフェースは能力wだからis-aにならないらしいよww
653デフォルトの名無しさん
2026/08/04(火) 02:04:49.29ID:1TbEgEXD そうだよ
複数の能力を合成して作っていくからhas-a
複数の能力を合成して作っていくから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円ショップあったよね、店の雰囲気が好きだったなぁ
656デフォルトの名無しさん
2026/08/04(火) 08:06:03.56ID:MF7Wc1oM UMLでもcan-doとis-aは表記が分かれてるね
657デフォルトの名無しさん
2026/08/04(火) 08:14:37.95ID:kynx1x39 言語にオブジェクト指向的な機能が付いてる最大のメリットは、コード事態に設計の意図を乗せる事ができるから、AIのサポートを効率よく促せるようになる事だと思う
実装当初の目的とは違うし、オンラインで書ける状況じゃないと全く恩恵を受けられないけども
実装当初の目的とは違うし、オンラインで書ける状況じゃないと全く恩恵を受けられないけども
658デフォルトの名無しさん
2026/08/04(火) 09:05:06.34ID:sdLXPmXh is-a関係であるか否かは多態性があるか否かでわかる
多態性があるかは静的型付き言語だと型を明示して
ソースコードをコンパイルできるかでわかる
動的型付き言語だとそういう確認手段がないから
動的型付き言語を普段使いしてると
is-a関係とhas-a関係の認識が曖昧になるかもなあ
言語によって人間の認識が変わるって話
そういう意味ではオブジェクト指向言語だけじゃなく
いろんな言語が世の中にあるその多様性が我々の知能の進化に
とって大事なことなのかも知れませんね
多態性があるかは静的型付き言語だと型を明示して
ソースコードをコンパイルできるかでわかる
動的型付き言語だとそういう確認手段がないから
動的型付き言語を普段使いしてると
is-a関係とhas-a関係の認識が曖昧になるかもなあ
言語によって人間の認識が変わるって話
そういう意味ではオブジェクト指向言語だけじゃなく
いろんな言語が世の中にあるその多様性が我々の知能の進化に
とって大事なことなのかも知れませんね
659デフォルトの名無しさん
2026/08/04(火) 09:22:24.98ID:NazBoNS2660デフォルトの名無しさん
2026/08/04(火) 09:39:34.51ID:sdLXPmXh 意味不明という言葉を使うやつ全員アホです
661デフォルトの名無しさん
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だというのは、従来の一般的な用語法からは外れると思うんだけどね。
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だというのは、従来の一般的な用語法からは外れると思うんだけどね。
662デフォルトの名無しさん
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 こういう抽象論に凝るやつってたいてい
本当にそのシステムにその拡張性が必要か?ってことを全く考慮しないバカなんだよな。
本当にそのシステムにその拡張性が必要か?ってことを全く考慮しないバカなんだよな。
665デフォルトの名無しさん
2026/08/04(火) 11:16:37.72ID:mYYmweY0 >>664
そこが重要
インタフェースだけあればクラスは不要という結論がプログラミング言語界で定まった
そのため新規のモダン言語ではクラスはなくなりインタフェースのみになった
もちろんそれら各言語の方針は全く異なる
インタフェースといっても命名のない構造的インタフェース型付けをとる言語もある
そこが重要
インタフェースだけあればクラスは不要という結論がプログラミング言語界で定まった
そのため新規のモダン言語ではクラスはなくなりインタフェースのみになった
もちろんそれら各言語の方針は全く異なる
インタフェースといっても命名のない構造的インタフェース型付けをとる言語もある
666デフォルトの名無しさん
2026/08/04(火) 12:02:42.27ID:VaBkcE80 などとis-aとhas-aの区別も出来ないバカが言っており
667デフォルトの名無しさん
2026/08/04(火) 19:10:42.09ID:B10jENxf 毎度毎度の「所有権の複製」の流れ
あばれる障碍者の介護のお時間
あばれる障碍者の介護のお時間
668デフォルトの名無しさん
2026/08/04(火) 19:34:38.47ID:FOhAU+4l クラス継承はis-a関係だが密結合になる欠陥を持つ
インタフェース継承もis-a関係だが密結合を生まない
だからクラス継承はモダン言語で廃止された
インタフェース継承もis-a関係だが密結合を生まない
だからクラス継承はモダン言語で廃止された
669デフォルトの名無しさん
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がスローされます。
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がスローされます。
670デフォルトの名無しさん
2026/08/04(火) 21:45:52.55ID:aYVJb6Xd 静的型付け言語なら実行前に検出してコンパイルエラーなどに出来そうだが動的型付け言語?
671デフォルトの名無しさん
2026/08/04(火) 22:02:30.42ID:vUOhznv3 最初はJITもなかったし設計上ありでは
これが教材ならあかんけど
これが教材ならあかんけど
672デフォルトの名無しさん
2026/08/04(火) 22:09:38.26ID:HV6nfrtS 言語仕様に欠陥があると
例えばここにはCloneableしか来ないと宣言できないパターンや
あるいはここに来るのはCloneableのみと宣言してないのにそのメソッドcloneを使っていてもコンパイルエラーにできないパターンが有り得る
そうすると実行時エラーや実行時例外へ
例えばここにはCloneableしか来ないと宣言できないパターンや
あるいはここに来るのはCloneableのみと宣言してないのにそのメソッドcloneを使っていてもコンパイルエラーにできないパターンが有り得る
そうすると実行時エラーや実行時例外へ
673デフォルトの名無しさん
2026/08/04(火) 22:50:44.98ID:hmGVON1e Objectはすべてのclassに継承されているし、Objectもcloneできないといけないので、
そうならざるを得なかったのでしょう。
基本的にはsuper.clone()だけで全部やってくれる。
これのExceptionをテストしようとか、coverageを100%にしようとかすると、めんどくさい。
結局、super.clone()をラップして外にだしてmockできるようにした。
そうならざるを得なかったのでしょう。
基本的にはsuper.clone()だけで全部やってくれる。
これのExceptionをテストしようとか、coverageを100%にしようとかすると、めんどくさい。
結局、super.clone()をラップして外にだしてmockできるようにした。
674デフォルトの名無しさん
2026/08/04(火) 23:17:43.64ID:fsSMf8oQ 親クラスがclone可能なのに派生クラスがclone不可能とかリスコフ姉さんに怒られそう
複製できないフィールド足しちゃったなら仕方ないけど
複製できないフィールド足しちゃったなら仕方ないけど
675デフォルトの名無しさん
2026/08/04(火) 23:34:33.18ID:DoD/Y+Fk >>665
それよく勘違いされますが、実は低級プログラマー界隈でのみ信じられてる間違った言説なんですよ
事実、Google, Apple, Microsoft, Facebookなど上級プログラマーの多い会社では今でもクラス継承がフル活用されていますから
ただ上級プログラマーは低級プログラマーがクラス継承を使いこなせず問題を引き起こすこも熟知していたため、クラス継承を簡単に使わせないようにするためのマイナス面の啓蒙も積極的に行ってきました
それを「銀の弾丸」として勘違いした一部の低級プログラマーが「インターフェースがあればクラスは不要」といった間違った言説を広めていったのかも知れませんね
それよく勘違いされますが、実は低級プログラマー界隈でのみ信じられてる間違った言説なんですよ
事実、Google, Apple, Microsoft, Facebookなど上級プログラマーの多い会社では今でもクラス継承がフル活用されていますから
ただ上級プログラマーは低級プログラマーがクラス継承を使いこなせず問題を引き起こすこも熟知していたため、クラス継承を簡単に使わせないようにするためのマイナス面の啓蒙も積極的に行ってきました
それを「銀の弾丸」として勘違いした一部の低級プログラマーが「インターフェースがあればクラスは不要」といった間違った言説を広めていったのかも知れませんね
676デフォルトの名無しさん
2026/08/04(火) 23:39:01.86ID:9ju4gPcr >>675
クラス継承を積極的に使うことはありません
クラス継承を積極的に使うことはありません
677デフォルトの名無しさん
2026/08/04(火) 23:51:30.91ID:3M2aqqZR >>675
Googleが作ったGoもクラス継承を排除してるぜ
Googleが作ったGoもクラス継承を排除してるぜ
678デフォルトの名無しさん
2026/08/04(火) 23:54:34.64ID:GxoXqRG7 コンポジション、デリゲートで同等のことはできても
継承ですっきり書ける事実もある
おかしくなるのはだいたいが設計や使い方を限定して提示できてない
壊しにくるやつは何をやっても壊しにくるけども
継承ですっきり書ける事実もある
おかしくなるのはだいたいが設計や使い方を限定して提示できてない
壊しにくるやつは何をやっても壊しにくるけども
679デフォルトの名無しさん
2026/08/05(水) 00:21:23.36ID:0sbTicnL > Googleが作ったGoもクラス継承を排除してるぜ
こういう、童貞が女の口説き方教えてくれるようなレス多いよな
毎度毎度、聞きかじりの一本やりを振り回すだけなんだけども
こういう、童貞が女の口説き方教えてくれるようなレス多いよな
毎度毎度、聞きかじりの一本やりを振り回すだけなんだけども
680デフォルトの名無しさん
2026/08/05(水) 08:06:36.53ID:1U9S2HDq フレームワーク側のコードとユーザー側のコードはかなり分かれてるから、
多少重複があっても重複を許した方が開発上コード把握がしやすいって話になる。
継承を最大限利用しようって発想は重複を変に嫌悪するのがそもそもの間違いの始まり。
多少重複があっても重複を許した方が開発上コード把握がしやすいって話になる。
継承を最大限利用しようって発想は重複を変に嫌悪するのがそもそもの間違いの始まり。
681デフォルトの名無しさん
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とかしょーもない原則だわな。リスコフ置換原則による判断のがよっぽど真っ当だわ
683デフォルトの名無しさん
2026/08/05(水) 09:56:08.55ID:gIzU+5Lo is-a, has-aは、原則ではなく単なる類型化だと思う。is-a関係だからリフコフの置換原則に気をつけようとなるわけで、is-a、has-aの区別はより基本的な部分に位置づけられていると思う。
684デフォルトの名無しさん
2026/08/05(水) 10:23:32.08ID:zSmn+YkX >>683
それは違う
その反例でよく出てくる例
「正方形 is-a 長方形」は正しいが
これをクラス継承で正しくリフコフの置換原則を満たすようすると破綻する
もちろん正解はクラス継承を使わずにインタフェース継承を使おう
それは違う
その反例でよく出てくる例
「正方形 is-a 長方形」は正しいが
これをクラス継承で正しくリフコフの置換原則を満たすようすると破綻する
もちろん正解はクラス継承を使わずにインタフェース継承を使おう
685デフォルトの名無しさん
2026/08/05(水) 10:57:01.59ID:Lqp3iR9N686デフォルトの名無しさん
2026/08/05(水) 11:00:11.82ID:AJIi08In クラス継承は内部構造に依存する実装継承なので様々な問題を引き起こすのよ
インタフェース継承を使えば「正方形 is-a 長方形」も扱えて大丈夫ね
インタフェース継承を使えば「正方形 is-a 長方形」も扱えて大丈夫ね
687デフォルトの名無しさん
2026/08/05(水) 11:22:27.96ID:5TKy8oas そもそもクラスをわざわざ継承しなきゃいけない使い道が一つも思い当たらん
688デフォルトの名無しさん
2026/08/05(水) 11:42:49.80ID:QAJgOxaA >>686
>インタフェース継承を使えば「正方形 is-a 長方形」も扱えて大丈夫ね
これまた低級プログラマーらしい?いや複おじ特有の勘違いだなぁ
リスコフ置換原則を満たせないなら「正方形 is-a 長方形」ではないんだから
インタフェース継承を使ったところで「正方形 is-a 長方形」を扱えるわけないじゃん
>インタフェース継承を使えば「正方形 is-a 長方形」も扱えて大丈夫ね
これまた低級プログラマーらしい?いや複おじ特有の勘違いだなぁ
リスコフ置換原則を満たせないなら「正方形 is-a 長方形」ではないんだから
インタフェース継承を使ったところで「正方形 is-a 長方形」を扱えるわけないじゃん
689デフォルトの名無しさん
2026/08/05(水) 11:44:19.16ID:cnlEpeGm is-a関係というのは部分型関係の単なる言い換えだから、クラス継承だろうがインターフェイス継承だろうが継承すれば型システム上の部分型関係(is-a関係)は成立する。部分型関係であれば、上位型を部分型で代替してもそのことを理由とする「型付け・型検査エラーは」発生しない。
リスコフの置換原則は、(型付け・型検査上の置換可能性よりさらに厳しい)仕様上の置換可能性に焦点を当てた概念であって、たとえば長方形と正方形の例で言えば、「幅と高さに異なる値を取ることができる」という長方形の不変条件を正方形はみたさないから、その不変条件がプログラムにおいて意味を持つ限り、正方形を長方形の部分型とすることは(言語仕様上は可能でも)リスコフの置換原則違反と評価される。リスコフの置換原則違反の状態はis-a関係に期待されがちな意味論をみたさない状態だから、論者によってはリスコフの置換原則をみたすことをもis-a関係の概念に含めることもある(685はおそらくそういう整理)。
こう考えていたのだけれど、違うかな。だから、インターフェイス継承であっても、別途リスコフの置換原則違反でないかはチェックする必要があるし、それが大変だから、できればhas-a関係にしたいねという話だと理解していたんだが。
リスコフの置換原則は、(型付け・型検査上の置換可能性よりさらに厳しい)仕様上の置換可能性に焦点を当てた概念であって、たとえば長方形と正方形の例で言えば、「幅と高さに異なる値を取ることができる」という長方形の不変条件を正方形はみたさないから、その不変条件がプログラムにおいて意味を持つ限り、正方形を長方形の部分型とすることは(言語仕様上は可能でも)リスコフの置換原則違反と評価される。リスコフの置換原則違反の状態はis-a関係に期待されがちな意味論をみたさない状態だから、論者によってはリスコフの置換原則をみたすことをもis-a関係の概念に含めることもある(685はおそらくそういう整理)。
こう考えていたのだけれど、違うかな。だから、インターフェイス継承であっても、別途リスコフの置換原則違反でないかはチェックする必要があるし、それが大変だから、できればhas-a関係にしたいねという話だと理解していたんだが。
690デフォルトの名無しさん
2026/08/05(水) 11:57:45.29ID:2KYdrJHo 正方形 is 長方形はimmutableなら耐えられるはず
辺を個別に変更する関数があると破綻する
辺を個別に変更する関数があると破綻する
691デフォルトの名無しさん
2026/08/05(水) 12:04:26.78ID:CtTuj3KZ 共通の扱いをしたいからそれを各型に継承する
正方形 is-a 長方形の例でも面積など共通の扱いが考えられるだろう
クラス継承は過剰に内部構造まで継承するため上手く扱えない
インタフェース継承は内部構造と独立だから上手く扱える
正方形 is-a 長方形の例でも面積など共通の扱いが考えられるだろう
クラス継承は過剰に内部構造まで継承するため上手く扱えない
インタフェース継承は内部構造と独立だから上手く扱える
692デフォルトの名無しさん
2026/08/05(水) 14:50:18.14ID:QqJG+xyM693デフォルトの名無しさん
2026/08/05(水) 14:57:41.56ID:TbS3tCk3 長方形だけを扱うなら継承でもインターフェースでもいいんだろうけど、
後々三角形とか他の図形が追加されて、正多角形の外角の値とか凹多角形に対して直線が交わる回数とかの処理が必要になった時に困るかもね
後々三角形とか他の図形が追加されて、正多角形の外角の値とか凹多角形に対して直線が交わる回数とかの処理が必要になった時に困るかもね
694デフォルトの名無しさん
2026/08/05(水) 15:23:13.52ID:mqOuu755695デフォルトの名無しさん
2026/08/05(水) 15:28:42.34ID:QtBLts9E >>693
常にインタフェース継承を使うといいね
常にインタフェース継承を使うといいね
696デフォルトの名無しさん
2026/08/05(水) 19:48:17.40ID:DhWu+3pz697デフォルトの名無しさん
2026/08/06(木) 08:10:51.86ID:SzYEKU/h >>696
元々長方形だけのつもりで設計されてたシステムに後々「〇角形にも対応しろ」と来るわけだ
四角しか見てない段階でn角形で設計するのは予知能力者
そもそもこれは例え話で実際は「中空長方形に対応しろ」「非ユークリッドの四角形に対応しろ」とか何が来るか分からない
元々長方形だけのつもりで設計されてたシステムに後々「〇角形にも対応しろ」と来るわけだ
四角しか見てない段階でn角形で設計するのは予知能力者
そもそもこれは例え話で実際は「中空長方形に対応しろ」「非ユークリッドの四角形に対応しろ」とか何が来るか分からない
698デフォルトの名無しさん
2026/08/06(木) 08:31:28.82ID:NzVFZZ1n てか要件定義でなんで3角にこだわるの?って普通言われるだろ
何やりたいのかわからんが、GUI系統の話なら結局四角の領域とってその中に3角描くだけとかやるのが普通だと思うわ。
何やりたいのかわからんが、GUI系統の話なら結局四角の領域とってその中に3角描くだけとかやるのが普通だと思うわ。
699デフォルトの名無しさん
2026/08/06(木) 09:04:31.59ID:SzYEKU/h700デフォルトの名無しさん
2026/08/06(木) 09:13:33.69ID:NzVFZZ1n まあいいけど、オブジェクト指向周りの話が糞担ってた理由の一つとして
そういう実際のコードとかけ離れた極論ばっかり出回りまくったってのがあると思ってるよ。
そういう実際のコードとかけ離れた極論ばっかり出回りまくったってのがあると思ってるよ。
701デフォルトの名無しさん
2026/08/06(木) 11:28:34.36ID:q3GYSFaK702デフォルトの名無しさん
2026/08/06(木) 11:44:38.23ID:z1eXPwSy そんなもんいちいちクラスにするからややこしくなる一方だよ
703デフォルトの名無しさん
2026/08/06(木) 13:13:48.71ID:NzVFZZ1n 一般に同じものでもレイヤーによって取り扱いなんて異なるからな。
将棋の駒なんてUI上はクラス作るだろうが計算レイヤーじゃ単なるenumかbit操作だわ
将棋の駒なんてUI上はクラス作るだろうが計算レイヤーじゃ単なるenumかbit操作だわ
704デフォルトの名無しさん
2026/08/06(木) 13:21:54.58ID:cVtYlWEi 何作るにもクラス使っていいが、何しに継承すんだよ?ってことよ
将棋の駒を別々にクラス作ったって構わんが
それをチェスにまで発展させたときにそれを継承なんかしねーだろ?
一から作れよっての
将棋の駒を別々にクラス作ったって構わんが
それをチェスにまで発展させたときにそれを継承なんかしねーだろ?
一から作れよっての
705デフォルトの名無しさん
2026/08/06(木) 15:28:22.82ID:3bfmBwGV 駒を継承して歩や金を作るんだぞ
歩を継承して金を作るわけないやん
チェスとコードを共有したい場合があるなら
駒を継承して将棋の駒とチェスの駒を作るんだぞ
歩を継承して金を作るわけないやん
チェスとコードを共有したい場合があるなら
駒を継承して将棋の駒とチェスの駒を作るんだぞ
706デフォルトの名無しさん
2026/08/06(木) 15:38:38.15ID:3bfmBwGV ただ将棋やチェスのように駒の種類や振る舞いが変化する可能性がほとんどないものをわざわざオブジェクト指向で作ろうとは思わないけどな
707デフォルトの名無しさん
2026/08/06(木) 18:07:22.64ID:ShnnMPJM は!将棋とかチェスをオブジェクト指向で設計すると、なんかおもしろそう。
これはやってみたい。
これはやってみたい。
708デフォルトの名無しさん
2026/08/06(木) 19:35:14.43ID:aEe+BJLl 共通機能に対してインタフェースを用意する
各々にそれを実装する
各々にそれを実装する
709デフォルトの名無しさん
2026/08/06(木) 19:57:18.97ID:cVtYlWEi 結局オブジェクト指向で何作る?ってことになる
要らんかったんでしょ
要らんかったんでしょ
710デフォルトの名無しさん
2026/08/06(木) 22:11:54.25ID:fWEfOKEw 元々オブジェクト指向自体にはクラスもインタフェースも存在しない
オブジェクトが内部にプロパティを持つカプセル化とメッセージパッシングつまり呼び出せるメソッドを持つことで成り立っている
メソッド呼び出しはオブジェクトの種類ごとに固有で同名メソッドであっても別物なので結果的にポリモーフィズムの一種を形成する
以上がオブジェクト指向
オブジェクトが内部にプロパティを持つカプセル化とメッセージパッシングつまり呼び出せるメソッドを持つことで成り立っている
メソッド呼び出しはオブジェクトの種類ごとに固有で同名メソッドであっても別物なので結果的にポリモーフィズムの一種を形成する
以上がオブジェクト指向
711デフォルトの名無しさん
2026/08/06(木) 22:13:42.33ID:fWEfOKEw いわゆる継承機能を持つクラスは上記の機能に加えて実装継承になるクラス継承機能を加えたもの
実装継承は既に挙げられているように本質的な問題を抱えているため最近はオブジェクト指向言語であってもクラスを採用しない言語が増えた
実装継承は既に挙げられているように本質的な問題を抱えているため最近はオブジェクト指向言語であってもクラスを採用しない言語が増えた
712デフォルトの名無しさん
2026/08/06(木) 22:17:06.40ID:fWEfOKEw インタフェースは内部実装には踏み込まずにメッセージパッシングのためのメソッド関数のシグネチャだけを統一すること
これにより同じインタフェースを継承していれば異なる型のオブジェクトであっても統一的に呼び出すことができる
インタフェース名による抽象型を用いてプログラムを書くことで特定の型に依存せずにコードの共通化が可能になる
これにより同じインタフェースを継承していれば異なる型のオブジェクトであっても統一的に呼び出すことができる
インタフェース名による抽象型を用いてプログラムを書くことで特定の型に依存せずにコードの共通化が可能になる
713デフォルトの名無しさん
2026/08/06(木) 22:49:32.54ID:o26N+Sd0 小学生用教科書音読するのやめてもろて
714デフォルトの名無しさん
2026/08/06(木) 23:00:37.38ID:fWEfOKEw このインタフェース抽象型を用いた共通コードの関数群は特定の型やその内部実装に依存しない
目的に徹した抽象的なコードになり可読性や保守性にも優れている
そこでインタフェースの定義に付随してその関数群も一緒に提供されることがありデフォルト実装と呼ばれている
共通コードを親クラスに書くとその内部実装に依存して密結合になってしまうがインタフェースのデフォルト実装に書けば疎結合でコードの共通化が可能になる
目的に徹した抽象的なコードになり可読性や保守性にも優れている
そこでインタフェースの定義に付随してその関数群も一緒に提供されることがありデフォルト実装と呼ばれている
共通コードを親クラスに書くとその内部実装に依存して密結合になってしまうがインタフェースのデフォルト実装に書けば疎結合でコードの共通化が可能になる
715デフォルトの名無しさん
2026/08/06(木) 23:08:29.03ID:ypLlg2yd インターフェイスは内部実装に踏み込まないという前提ならコードの共通化には繋がらないのではないかというのが一点。あと、上で挙げられていた長方形と正方形の例みたいな問題はインターフェイスの継承だからといって回避できるわけではないよねというのがもう一点。
インターフェイスの継承は広い範囲で使える手法だけど、決して万能というわけではないよね。
>>714
デフォルト実装なら疎結合という理屈はよくわからないな。継承先のクラスでそのコードを呼び出すのなら通常のクラス継承と変わらないのでは。
インターフェイスの継承は広い範囲で使える手法だけど、決して万能というわけではないよね。
>>714
デフォルト実装なら疎結合という理屈はよくわからないな。継承先のクラスでそのコードを呼び出すのなら通常のクラス継承と変わらないのでは。
716デフォルトの名無しさん
2026/08/06(木) 23:27:01.10ID:fWEfOKEw >>715
まずコードの共通化とは異なる型同士で行われる
クラスを用いたコードの共通化はクラス継承で行えるが内部実装も継承してしまうため密結合になる
インタフェースを用いたコードの共通化はデフォルト実装などで行われるが特定の型に一切依存せず内部実装と無関係なので疎結合になる
密結合より疎結合が好ましいため後者の方法でのコードの共通化が好まれるようになった
特に複数のインタフェースを継承する型同士のコードの共通化は各インタフェースのメソッド全てを利用できるため万能でありつつ疎結合である
まずコードの共通化とは異なる型同士で行われる
クラスを用いたコードの共通化はクラス継承で行えるが内部実装も継承してしまうため密結合になる
インタフェースを用いたコードの共通化はデフォルト実装などで行われるが特定の型に一切依存せず内部実装と無関係なので疎結合になる
密結合より疎結合が好ましいため後者の方法でのコードの共通化が好まれるようになった
特に複数のインタフェースを継承する型同士のコードの共通化は各インタフェースのメソッド全てを利用できるため万能でありつつ疎結合である
717デフォルトの名無しさん
2026/08/06(木) 23:57:42.62ID:ShnnMPJM BUGとか設計がバカな以外で、密結合が問題おこしたことってあるのかねぇ。
たしかに中途半端な素人プログラマがとんでもないコードを書くことはあるけど。
それはインターフェースだとかなんとかいっても回避できないし。
たしかに中途半端な素人プログラマがとんでもないコードを書くことはあるけど。
それはインターフェースだとかなんとかいっても回避できないし。
718デフォルトの名無しさん
2026/08/07(金) 00:14:34.07ID:VqWA3aKV インタフェースを用いたコードの共通化は
・型の内部構造に依存せずに実現できる
・つまり共通の内部構造を持たない型同士もコードの共通化ができる
・コードが抽象化されて読み書きもメンテナンスもしやすくなる
・インタフェースを多重継承した型同士に対して多機能なコードの共通化もできる
これらの裏返しがクラス継承を用いる場合の欠点
・型の内部構造に依存せずに実現できる
・つまり共通の内部構造を持たない型同士もコードの共通化ができる
・コードが抽象化されて読み書きもメンテナンスもしやすくなる
・インタフェースを多重継承した型同士に対して多機能なコードの共通化もできる
これらの裏返しがクラス継承を用いる場合の欠点
719デフォルトの名無しさん
2026/08/07(金) 00:15:46.65ID:CvabndPC javaのabstract classなんかはフツーに有用よ
継承によって実装を再利用するのなんかありきたりだし
何の問題もなく納品まで行くよ
だいたいjavaの標準ライブラリにAbstractXxxxってクラスどんだけあると思ってんだ
継承によって実装を再利用するのなんかありきたりだし
何の問題もなく納品まで行くよ
だいたいjavaの標準ライブラリにAbstractXxxxってクラスどんだけあると思ってんだ
720デフォルトの名無しさん
2026/08/07(金) 00:24:04.32ID:7w0/kkuA 標準のライブラリは非互換になっても嫌だから
説明外の使い方しないよう気をつけるのに
プロジェクトが用意したクラスは
なんであんな壊しにくるんだろうかと考えると
ドキュメンテーションが整備できてないから?
説明外の使い方しないよう気をつけるのに
プロジェクトが用意したクラスは
なんであんな壊しにくるんだろうかと考えると
ドキュメンテーションが整備できてないから?
721デフォルトの名無しさん
2026/08/07(金) 00:26:19.07ID:eKQ3CelP >717
あるって言えばある
元々継承された事など考えてない局所的運用のつもりで作ったクラスが
知らんうちにいろいろ機能付け足されていてそうなった
だからsealed classってのが必要になったんだなと思ったw
あるって言えばある
元々継承された事など考えてない局所的運用のつもりで作ったクラスが
知らんうちにいろいろ機能付け足されていてそうなった
だからsealed classってのが必要になったんだなと思ったw
722デフォルトの名無しさん
2026/08/07(金) 00:29:09.04ID:pUMSIAhd インターフェイス・抽象クラスは実装を持たない以上、派生先が実装に依存するということも生じ得ず、したがって疎結合になるーーというのならまだ分かる。しかし、インターフェイス・抽象クラスのデフォルト実装に派生先が依存しているにもかかわらず、それは疎結合だというのはおかしいんじゃないかなぁ。その理屈だとmixin的なクラスからの継承なら疎結合ということになりそうだけど、そういう線引き?
>>717
密結合が絶対にいけないものだとは別に思わないけど、仕様の追加・変更等があったときの影響範囲が広くなってしまいがちだから、どちらでも構わないなら疎結合にしておきたいくらいのスタンスの人が多いのでは。
>>717
密結合が絶対にいけないものだとは別に思わないけど、仕様の追加・変更等があったときの影響範囲が広くなってしまいがちだから、どちらでも構わないなら疎結合にしておきたいくらいのスタンスの人が多いのでは。
723デフォルトの名無しさん
2026/08/07(金) 00:47:07.52ID:Sfi7rrxO 一般的に抽象クラスとインタフェースは、どちらも抽象メソッドと具象メソッドを用ち、具象メソッドに共通コードを書き、抽象メソッドは継承した側が独自のコードを書く点で同じ。
違いは、抽象クラスが共通プロパティとして変数を持てる点で、そこが同じ内部構造になるため密結合になる点と、それゆえ多重継承できないもしくは問題を抱える点が異なる。
ちなみに共通プロパティを各々の用途で必要な形でアクセスする抽象メソッドへ置き換えることで、共通プロパティをなくして抽象クラスをインタフェースへ同機能のまま置き換えることができる。
したがって一般的には抽象クラスを廃止することができる。
クラスや抽象クラスを持たない言語でも共通コード化が支障なく行なえているのはこのため。
違いは、抽象クラスが共通プロパティとして変数を持てる点で、そこが同じ内部構造になるため密結合になる点と、それゆえ多重継承できないもしくは問題を抱える点が異なる。
ちなみに共通プロパティを各々の用途で必要な形でアクセスする抽象メソッドへ置き換えることで、共通プロパティをなくして抽象クラスをインタフェースへ同機能のまま置き換えることができる。
したがって一般的には抽象クラスを廃止することができる。
クラスや抽象クラスを持たない言語でも共通コード化が支障なく行なえているのはこのため。
724デフォルトの名無しさん
2026/08/07(金) 00:52:58.43ID:CvabndPC キミ一人だけ教科書読みながらレスしてない?
無理矢理話に入ってこなくていいんよ経験ないんなら
無理矢理話に入ってこなくていいんよ経験ないんなら
725デフォルトの名無しさん
2026/08/07(金) 01:05:33.02ID:vTI6cbxd >>723
その認識、実を言うと継承を使いこなせない低級プログラマーにありがちな勘違いなんです!
抽象クラスをデフォルト実装を伴うインターフェースに置き換えたからといって問題は自動的に解消されません
抽象クラスを設計する際と同じ注意が必要です
その認識、実を言うと継承を使いこなせない低級プログラマーにありがちな勘違いなんです!
抽象クラスをデフォルト実装を伴うインターフェースに置き換えたからといって問題は自動的に解消されません
抽象クラスを設計する際と同じ注意が必要です
726デフォルトの名無しさん
2026/08/07(金) 01:08:10.91ID:vwx5Yjb7 >>722
インタフェースを利用するAさんとBさんとCさんがいたとしても互いに疎結合になるのはわかるよね?
その時にインタフェースを用いてよく使われる共通処理があったとしてそれを関数化してライブラリにしたとしても状況は変わらないよね?
だってその共通ライブラリはAさんとBさんとCさんの内部実装のいずれにも依存していない
つまり疎結合のまま変わっていない
その共通ライブラリをインタフェースのデフォルト実装としても状況は変わらず疎結合のままなんだよ
インタフェースを利用するAさんとBさんとCさんがいたとしても互いに疎結合になるのはわかるよね?
その時にインタフェースを用いてよく使われる共通処理があったとしてそれを関数化してライブラリにしたとしても状況は変わらないよね?
だってその共通ライブラリはAさんとBさんとCさんの内部実装のいずれにも依存していない
つまり疎結合のまま変わっていない
その共通ライブラリをインタフェースのデフォルト実装としても状況は変わらず疎結合のままなんだよ
727デフォルトの名無しさん
2026/08/07(金) 01:39:22.17ID:Un55LN2Z >>725
共通する内部構造を持つ抽象クラスを持たないインタフェースに置き換えると内部構造が異なる型の間でもコードの共通化ができるようになる点で優れているのよ
共通する内部構造を持つ抽象クラスを持たないインタフェースに置き換えると内部構造が異なる型の間でもコードの共通化ができるようになる点で優れているのよ
728デフォルトの名無しさん
2026/08/07(金) 02:50:17.21ID:U/67iL3L interfaceとextendsでは目的が違いますしね。
defaultで(抽象的)実装の継承が可能になったけど、目的が異なれば代替にはならない。
extendsでしかできないことはextendsを使う。
interfaceの問題は、ArrayListをListで受けてほしいのにListを使ってくれないやつが多い。
newが一番の問題かもしれない。コンストラクタは可能な限り隠ぺいするようにしてる。
defaultで(抽象的)実装の継承が可能になったけど、目的が異なれば代替にはならない。
extendsでしかできないことはextendsを使う。
interfaceの問題は、ArrayListをListで受けてほしいのにListを使ってくれないやつが多い。
newが一番の問題かもしれない。コンストラクタは可能な限り隠ぺいするようにしてる。
729デフォルトの名無しさん
2026/08/07(金) 03:19:58.61ID:AM0eFUAQ >>728
それはJavaやライブラリの仕様の問題よ
それはJavaやライブラリの仕様の問題よ
730デフォルトの名無しさん
2026/08/07(金) 06:26:08.78ID:RQgCXCUQ 言語の自由度を減らせば減らすほど、言語が無能化低速化していく
731デフォルトの名無しさん
2026/08/07(金) 08:10:18.85ID:n4dYaKzH732デフォルトの名無しさん
2026/08/07(金) 09:06:22.97ID:rdE+Gqi9 同じように見えるデフォルト実装を含むインターフェースの継承でも
Goでは発生しないがRustやJavaでは発生する問題というのもある
それを避けるために必要な知識は結局のところクラス継承の適切な使い方と同じ知識
Goでは発生しないがRustやJavaでは発生する問題というのもある
それを避けるために必要な知識は結局のところクラス継承の適切な使い方と同じ知識
733デフォルトの名無しさん
2026/08/07(金) 09:25:32.08ID:HrHq5Wpj 共通する知識は当然あるが
実装継承による問題を全て回避できるインタフェース継承がオススメ
実装継承による問題を全て回避できるインタフェース継承がオススメ
734デフォルトの名無しさん
2026/08/07(金) 09:44:58.88ID:Uht+oJcm インターフェイス継承は疎結合でクラス継承は密結合というお題目で意識されているのは、親子クラス間の結合性であって、子クラス同士の結合性ではないはずだが。なので、>>726はかなり的外れなことを書いている。
デフォルト実装を持つインターフェイスからの継承も疎結合だというなら、mixin的なクラスからの継承も疎結合ということになる。というか、デフォルト実装の人の主張を一般的な用語に置き換えて翻訳すると、「mixin的なクラスを含む形でインターフェイスの概念を拡張し、かつ、その場合は疎結合と呼ぶことにしよう」ということになる。継承を使うときの設計方針としては別に間違った内容ではないから、あとはインターフェイスや疎結合の概念規定をそのように拡張(希薄化)することの是非よね。個人的にはかなり違和感があるが。
デフォルト実装を持つインターフェイスからの継承も疎結合だというなら、mixin的なクラスからの継承も疎結合ということになる。というか、デフォルト実装の人の主張を一般的な用語に置き換えて翻訳すると、「mixin的なクラスを含む形でインターフェイスの概念を拡張し、かつ、その場合は疎結合と呼ぶことにしよう」ということになる。継承を使うときの設計方針としては別に間違った内容ではないから、あとはインターフェイスや疎結合の概念規定をそのように拡張(希薄化)することの是非よね。個人的にはかなり違和感があるが。
735デフォルトの名無しさん
2026/08/07(金) 10:42:50.98ID:7dWaDfSl736デフォルトの名無しさん
2026/08/07(金) 22:37:29.54ID:U/67iL3L Why extends is evil の例では、実装継承の問題ではなく、ただのBUGを騒ぎ立てているだけだった。
しかもそれに続く解決策はさらに問題を増やしているだけでなにも解決しておらず、
どんどん劣化していく悲しいプログラムであった。
しかもそれに続く解決策はさらに問題を増やしているだけでなにも解決しておらず、
どんどん劣化していく悲しいプログラムであった。
737デフォルトの名無しさん
2026/08/07(金) 23:45:46.15ID:tO1xNKB7738デフォルトの名無しさん
2026/08/08(土) 10:02:43.53ID:oprPEGXD >>730
お前はアセンブラ使ってろ
お前はアセンブラ使ってろ
739デフォルトの名無しさん
2026/08/08(土) 10:07:56.91ID:spTYGRdW >>737
全然違う。結合度というのは依存関係に関する概念であって、構造が同じかどうかを指す概念ではない。子クラスは親クラスに依存しているから親子クラスの結合は相対的に密といえるが、子クラス同士の間には直接の依存関係がないから密結合とは言わない。同じ親クラスに依存するという点を指して広く密結合と表現する場合もないわけではないが、それはあくまで比喩的表現にすぎない。
デフォルト実装は「内部」構造ではないという整理にしたいのかもしれないが、子クラスからデフォルト実装をよべばそこに依存関係は生じるわけで、その点は密結合の問題と呼ばれるものと本質的に変わらない。
「インターフェイス継承はクラス継承より疎結合になりやすい」というお題目自体は間違っていないが、本質的な点が理解できていないので、そのお題目の根拠として主張している内容はすべておかしい。
全然違う。結合度というのは依存関係に関する概念であって、構造が同じかどうかを指す概念ではない。子クラスは親クラスに依存しているから親子クラスの結合は相対的に密といえるが、子クラス同士の間には直接の依存関係がないから密結合とは言わない。同じ親クラスに依存するという点を指して広く密結合と表現する場合もないわけではないが、それはあくまで比喩的表現にすぎない。
デフォルト実装は「内部」構造ではないという整理にしたいのかもしれないが、子クラスからデフォルト実装をよべばそこに依存関係は生じるわけで、その点は密結合の問題と呼ばれるものと本質的に変わらない。
「インターフェイス継承はクラス継承より疎結合になりやすい」というお題目自体は間違っていないが、本質的な点が理解できていないので、そのお題目の根拠として主張している内容はすべておかしい。
740デフォルトの名無しさん
2026/08/08(土) 11:27:30.58ID:7ubHOiIT >>739
それは全然違うよ
インタフェースのデフォルト実装は特定の具象型に依存しない形で書かれている
つまりインタフェースを満たす限りどんな具象型が来ても動作する抽象的なコードのみが書かれてます
この点でクラス継承のコードとは根本的に異なっていて抽象化に成功したデフォルト実装が非常に優れているんだよ
それは全然違うよ
インタフェースのデフォルト実装は特定の具象型に依存しない形で書かれている
つまりインタフェースを満たす限りどんな具象型が来ても動作する抽象的なコードのみが書かれてます
この点でクラス継承のコードとは根本的に異なっていて抽象化に成功したデフォルト実装が非常に優れているんだよ
741デフォルトの名無しさん
2026/08/08(土) 11:43:21.98ID:Kbew53D8 >>740
違う
違う
742デフォルトの名無しさん
2026/08/08(土) 12:08:52.29ID:P6fLsnJV743デフォルトの名無しさん
2026/08/08(土) 13:01:49.87ID:+EuIu3YL744デフォルトの名無しさん
2026/08/08(土) 13:07:04.61ID:frHhNa93 そこがクラス継承が使われなくなった理由だもんな
古い言語や古いフレームワークは仕方ないが
古い言語や古いフレームワークは仕方ないが
745デフォルトの名無しさん
2026/08/08(土) 13:10:44.79ID:6a6ImxRY defaultによる抽象実装が便利なのだが、
extendsをinterfaceにも使用するのでextendsはなくならない。
evilを唱えるプログラマがいる限り、まともな設計も望めない。
extendsをinterfaceにも使用するのでextendsはなくならない。
evilを唱えるプログラマがいる限り、まともな設計も望めない。
746デフォルトの名無しさん
2026/08/08(土) 13:28:56.58ID:8mOEFJbx 劣ったクラス継承をなくして必要なことを代替できるようになった点がデカいよね
747デフォルトの名無しさん
2026/08/08(土) 13:32:00.80ID:9m56rqSa 議論がぜんぜん深まらないなw
748デフォルトの名無しさん
2026/08/08(土) 14:45:31.88ID:CJefRDfr みんなど素人に毛が生えたか生えないかのレベルだから
思い込みの主張も多いし
思い込みの主張も多いし
749デフォルトの名無しさん
2026/08/08(土) 14:46:30.42ID:lplOXTlj 思い込み連呼系障碍者と、それを介護する人々っていういつもの風景だから
750デフォルトの名無しさん
2026/08/08(土) 14:53:10.50ID:CJefRDfr 明確な理論や客観的な判断基準のない曖昧な論点が多いしな
つい見た目や印象(俺にとっていい感じ)便利そうという個人的印象に左右されるし
継承なんて昔は差分プログラミングで規模抑制できるって言ってもてはやされたんだぜ
視認性の悪さはオブジェクト指向の理解が足りないって避難されたし
カプセル化も概念が分かりやすい分変な流布の仕方して弊害あるし
つい見た目や印象(俺にとっていい感じ)便利そうという個人的印象に左右されるし
継承なんて昔は差分プログラミングで規模抑制できるって言ってもてはやされたんだぜ
視認性の悪さはオブジェクト指向の理解が足りないって避難されたし
カプセル化も概念が分かりやすい分変な流布の仕方して弊害あるし
751デフォルトの名無しさん
2026/08/08(土) 15:00:21.56ID:CJefRDfr エンタープライズなオブジェクト指向がもてはやされていた頃かかれたコードを振り返ってみると目も当てられない
あれ誰がメンテするんだろうな、目が潰れる
しかも短期間入場した外注が後先考えずクラスと継承を駆使して書き散らかしてすぐ居なくなったり
あれ誰がメンテするんだろうな、目が潰れる
しかも短期間入場した外注が後先考えずクラスと継承を駆使して書き散らかしてすぐ居なくなったり
752デフォルトの名無しさん
2026/08/08(土) 15:11:06.44ID:lplOXTlj まあね
それなんよな実際は
継承だの疎結合密結合だの言う以前に
一個の単体のクラスですでに立派なクソになっているのが事実
何を関数化するのか?と同様に
何をクラス化するのか?もまたセンスとか知性が問われる
結局ね、そこなんよOOPの問題は
クラスがどうだの
密結合がどうだの言う前に
単に単なる一世代のクラス設計で大幅に狂いうるんよ
ウルトラウンコエンタープライズクラスがいきなりやってくるんよ
銀の弾丸の逆概念、すべてを飲み込む魔の物、それがいきなり大の字になって寝転がってるんよ
それなんよな実際は
継承だの疎結合密結合だの言う以前に
一個の単体のクラスですでに立派なクソになっているのが事実
何を関数化するのか?と同様に
何をクラス化するのか?もまたセンスとか知性が問われる
結局ね、そこなんよOOPの問題は
クラスがどうだの
密結合がどうだの言う前に
単に単なる一世代のクラス設計で大幅に狂いうるんよ
ウルトラウンコエンタープライズクラスがいきなりやってくるんよ
銀の弾丸の逆概念、すべてを飲み込む魔の物、それがいきなり大の字になって寝転がってるんよ
753デフォルトの名無しさん
2026/08/08(土) 15:32:04.58ID:CJefRDfr まずIDE立ち上げて
Class:
とコーディングする。
変数が必要になったらinstance 変数menberを都度増やし、結果結構多数つくる
一応安全のためアクセス権をチマチマ設定してカプセル化する(依存が変化したときどうメンテするかは深く考えない
処理はメソッドとして記述し外部から呼んでいるものはpublicにしとく(どれが外から必要/不要になるかは設計が進むに応じ都度直す)
いくつかのClass間で似たようなインスタンス変数やメソッドがあることに気が付いたら基底クラスを新設し、継承により定義を共有する。
内部であるいは外部から参照するinstance変数やmethodのscopeはネストした階層的で明確なscopeとはならず
extent独立に存在する外部的・共有変数・状態変数のようにアクセスし、method 呼び出しと合わせて依存がプログラム全体の中で網の目にように入り組んで飛び交う
用もないのにnewでインスタンスを生成し動的プログラミングをしたと悦に入る
継承はクラス定義のクロスファイル依存になりマルでファイル間でgotoのように定義が飛ぶしし
初期コーディングは夢中で定義を増設して何とか書いたけど、分かりにくいバグが入ったし
今後拡張やメンテはどうなるかしったこっちゃない
Class:
とコーディングする。
変数が必要になったらinstance 変数menberを都度増やし、結果結構多数つくる
一応安全のためアクセス権をチマチマ設定してカプセル化する(依存が変化したときどうメンテするかは深く考えない
処理はメソッドとして記述し外部から呼んでいるものはpublicにしとく(どれが外から必要/不要になるかは設計が進むに応じ都度直す)
いくつかのClass間で似たようなインスタンス変数やメソッドがあることに気が付いたら基底クラスを新設し、継承により定義を共有する。
内部であるいは外部から参照するinstance変数やmethodのscopeはネストした階層的で明確なscopeとはならず
extent独立に存在する外部的・共有変数・状態変数のようにアクセスし、method 呼び出しと合わせて依存がプログラム全体の中で網の目にように入り組んで飛び交う
用もないのにnewでインスタンスを生成し動的プログラミングをしたと悦に入る
継承はクラス定義のクロスファイル依存になりマルでファイル間でgotoのように定義が飛ぶしし
初期コーディングは夢中で定義を増設して何とか書いたけど、分かりにくいバグが入ったし
今後拡張やメンテはどうなるかしったこっちゃない
754デフォルトの名無しさん
2026/08/08(土) 15:37:30.48ID:CJefRDfr ついでに多態でまさかと思うようなこった演算子オーバーロードしてみる
755デフォルトの名無しさん
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になっちゃいそう
テーブルのカラム数が1000になっちゃいそう
758デフォルトの名無しさん
2026/08/08(土) 19:42:26.95ID:XumPC71+ コードの共通化ができればいいんだよ
同じ機能を持つオブジェクトに対してなら
「違う型でも気にせず同じメソッドで呼び出せる」
これだけ
クラスはオーバースペックで要らん
同じ機能を持つオブジェクトに対してなら
「違う型でも気にせず同じメソッドで呼び出せる」
これだけ
クラスはオーバースペックで要らん
759デフォルトの名無しさん
2026/08/08(土) 21:00:40.27ID:/I0tii2j c++の悪夢再びかよ
俺様テンプレートなんて御免被りたい
俺様テンプレートなんて御免被りたい
760デフォルトの名無しさん
2026/08/08(土) 21:19:57.82ID:uA0cyR7l クラスはオーバースペックではなく、悪い機能を持ち、良い機能が足りない。
メソッドはインタフェースだけあれば事足りる。
メソッドはインタフェースだけあれば事足りる。
761デフォルトの名無しさん
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:8KyDn8ze765デフォルトの名無しさん
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 クラス継承がない点では優れてるかもな
768デフォルトの名無しさん
2026/08/08(土) 23:29:29.38ID:imUIN2v0 クロージャの引数に別のクロージャを与えるんだよ
キャプチャした変数の参照をその別のクロージャの引数として与えれば任意の操作ができて無限のメソッドを持ったのと同じ
クラスと比べて足りないのはクラス継承だがこれは要らないだろう
キャプチャした変数の参照をその別のクロージャの引数として与えれば任意の操作ができて無限のメソッドを持ったのと同じ
クラスと比べて足りないのはクラス継承だがこれは要らないだろう
769デフォルトの名無しさん
2026/08/09(日) 00:01:30.05ID:JT9ZId2N770デフォルトの名無しさん
2026/08/09(日) 00:02:48.24ID:JT9ZId2N てか「コードの共通化」って何?
771デフォルトの名無しさん
2026/08/09(日) 00:06:16.10ID:gdR+8y5b オブジェクト指向はカプセル化だけでいい。
継承や多態性は複雑さをもたらすだけ
継承や多態性は複雑さをもたらすだけ
772デフォルトの名無しさん
2026/08/09(日) 00:10:58.62ID:vvVnqz6j クラスベースオブジェクト指向は実はぴったり合う用途が結構少なく
結局、変数の寄せ集め的に使われがち
結局、変数の寄せ集め的に使われがち
773デフォルトの名無しさん
2026/08/09(日) 01:02:00.85ID:jPvgDPIE774デフォルトの名無しさん
2026/08/09(日) 02:17:01.77ID:WNzqdyeu オブジェクト指向はオブジェクトを扱うが、
オブジェクトは関係性の集まりである。
集まりを扱うことになるが、集まりは関係性のことなので、
オブジェクト指向は関係性(≒射)しか扱っていない。
圏論的オブジェクト指向はそうなる。
実装論は別問題だ。
モナド則がチューリングマシンに似ているので、実装論はモナド則を使うことなるだろう。
モナド則は、左単位律・右単位律・結合律からなる。
オブジェクトは関係性の集まりである。
集まりを扱うことになるが、集まりは関係性のことなので、
オブジェクト指向は関係性(≒射)しか扱っていない。
圏論的オブジェクト指向はそうなる。
実装論は別問題だ。
モナド則がチューリングマシンに似ているので、実装論はモナド則を使うことなるだろう。
モナド則は、左単位律・右単位律・結合律からなる。
775デフォルトの名無しさん
2026/08/09(日) 02:19:23.91ID:WNzqdyeu とりあえず、お盆休みはjava上で圏論的オブジェクト指向の実装を実験するつもり。
776デフォルトの名無しさん
2026/08/09(日) 07:20:20.11ID:sXG6VIk6 >>775
それなら少なくともクラス依存でない言語でやれよ
それなら少なくともクラス依存でない言語でやれよ
777デフォルトの名無しさん
2026/08/09(日) 09:28:53.98ID:gOhRk29T778デフォルトの名無しさん
2026/08/09(日) 11:18:25.45ID:I/6SIwVU 「構造体 + メソッド = クラス」
779デフォルトの名無しさん
2026/08/09(日) 11:27:23.27ID:M5hCU3ys >>778
本質的なものが足りない
本質的なものが足りない
780デフォルトの名無しさん
2026/08/09(日) 11:58:00.12ID:XjKMTRVK 一番大事なのは不変条件だと思うけどね。不変条件を維持する必要があるもの=オブジェクトというイメージ。そして不変条件を維持するための方法論としていろいろなアプローチが発案されていて、その優劣が比較検討されているということだと思っているけど。
カプセル化なんかはかなり広い場面で有用な優れたアプローチと考えられる。最近は型システムの力を借りるという方向性が有力な感じなのかなと思っているけど。
カプセル化なんかはかなり広い場面で有用な優れたアプローチと考えられる。最近は型システムの力を借りるという方向性が有力な感じなのかなと思っているけど。
781デフォルトの名無しさん
2026/08/09(日) 12:09:07.35ID:M5hCU3ys どんだけ的はずれなんだよ
782デフォルトの名無しさん
2026/08/09(日) 12:10:09.54ID:M5hCU3ys 近年まれに見るとんちんかんなオレオレオブジェクト指向だな
脳に障害でもあるのかな
脳に障害でもあるのかな
783デフォルトの名無しさん
2026/08/09(日) 13:08:41.11ID:xE5u1KOD784デフォルトの名無しさん
2026/08/09(日) 13:36:16.16ID:XjKMTRVK オブジェクト指向を不変条件の観点から捉えるというのは少なくとも現在有力な考え方の一つではあると思うし、そんなに突飛なことを書いたつもりはないんだけどな。
個人的にはオブジェクト指向についてはC++的なそれ(カプセル化・継承・多相性)よりもアラン・ケイ流のメッセージ・パッシングのイメージの方に親近感を覚えるが、メッセージ・パッシングというのは各オブジェクトの自律性を前提とするモデルであり、各オブジェクトの自律性はその不変条件によって規定される。構造体とそれにアクセスする関数の組み合わせとオブジェクトとを区別する基準は、オブジェクトはそのライフタイムを通じて自らの不変条件を維持しなければならないという点に求めることができ、だからこそコンストラクタ/イニシャライザ、あるいはそのような位置付けの関数が重視される。カプセル化は不変条件を維持するための最も主要な手法ではあるが、あくまでも手段的な位置付けであって、カプセル化によらずに不変条件を維持できる場合には必要ない場合もありうる。
要は、オブジェクトの自律性の拠り所を何に求めるかという話だと思うんだが。
個人的にはオブジェクト指向についてはC++的なそれ(カプセル化・継承・多相性)よりもアラン・ケイ流のメッセージ・パッシングのイメージの方に親近感を覚えるが、メッセージ・パッシングというのは各オブジェクトの自律性を前提とするモデルであり、各オブジェクトの自律性はその不変条件によって規定される。構造体とそれにアクセスする関数の組み合わせとオブジェクトとを区別する基準は、オブジェクトはそのライフタイムを通じて自らの不変条件を維持しなければならないという点に求めることができ、だからこそコンストラクタ/イニシャライザ、あるいはそのような位置付けの関数が重視される。カプセル化は不変条件を維持するための最も主要な手法ではあるが、あくまでも手段的な位置付けであって、カプセル化によらずに不変条件を維持できる場合には必要ない場合もありうる。
要は、オブジェクトの自律性の拠り所を何に求めるかという話だと思うんだが。
785デフォルトの名無しさん
2026/08/09(日) 14:12:22.72ID:M5hCU3ys 構造体メンバやプロパティーのアクセス修飾と同等で
オブジェクト指向の要件とは異なる
オブジェクト指向の要件とは異なる
786デフォルトの名無しさん
2026/08/09(日) 14:45:19.32ID:SJycK8D5 不変条件とかメジャーライブラリしか使うなって言ってるのと同じだから
787デフォルトの名無しさん
2026/08/09(日) 16:28:49.58ID:XjKMTRVK 要件という位置付けにするかどうかはどうでもいいが、不変条件の概念とライブラリの間に何の関係が?
788デフォルトの名無しさん
2026/08/09(日) 17:21:48.45ID:9hJYqNd/ PLCの世界だと周辺機器とのやり取りや、ほかのプログラムともやり取りは
窓口となる決まったアドレス空間使って、そこのデータの読み書きで済ます
ま、処理上はそれが当たり前だけど、その仕組みを言語でいちいち記述してやってくってのは
間違ったポリコレの流れと同じように見える
窓口となる決まったアドレス空間使って、そこのデータの読み書きで済ます
ま、処理上はそれが当たり前だけど、その仕組みを言語でいちいち記述してやってくってのは
間違ったポリコレの流れと同じように見える
789デフォルトの名無しさん
2026/08/09(日) 17:41:47.30ID:FqPFsPYJ790デフォルトの名無しさん
2026/08/09(日) 17:47:26.34ID:M5hCU3ys >>789
なんでデータ構造を「抽象」などと大げさに呼ぶのかね
なんでデータ構造を「抽象」などと大げさに呼ぶのかね
791デフォルトの名無しさん
2026/08/09(日) 17:55:36.49ID:L0f9FpTb >>790
ADTすら知らんやつをオブジェクト指向スレで発見
ADTすら知らんやつをオブジェクト指向スレで発見
792デフォルトの名無しさん
2026/08/09(日) 18:10:11.39ID:M5hCU3ys 内部データや変数を外からは見せず関数や操作を外部に見せたら
なにをどう抽象化しているの?
プログラミングで一般的な局所化のセオリーとどう違うの?
なにをどう抽象化しているの?
プログラミングで一般的な局所化のセオリーとどう違うの?
793デフォルトの名無しさん
2026/08/09(日) 18:11:50.01ID:M5hCU3ys 抽象化と仰々しく呼んでいるけど、
特に何も抽象化などしていないよ
特に何も抽象化などしていないよ
794デフォルトの名無しさん
2026/08/09(日) 18:21:12.47ID:Y95hzy9u >>792
そのデータ型の内部構成や実装を隠蔽できるという最高のメリットがあるから抽象データ型と呼ばれている
そのデータ型の内部構成や実装を隠蔽できるという最高のメリットがあるから抽象データ型と呼ばれている
795デフォルトの名無しさん
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 例えばハッシュマップは抽象データ型
様々なアルゴリズムと内部構成が考えられる
実際に環境ごとに異なっている
同じ環境でも改善アルゴリズムに更新されることもある
つまり現実のデータ型は様々でバラバラだ
それにも関わらず
利用する側は気にせずに利用できる
インタフェースは定まっているからだ
現実のデータ型は様々バラバラだが抽象データ型としては定まっている
ゆえに抽象データ型として存在している
様々なアルゴリズムと内部構成が考えられる
実際に環境ごとに異なっている
同じ環境でも改善アルゴリズムに更新されることもある
つまり現実のデータ型は様々でバラバラだ
それにも関わらず
利用する側は気にせずに利用できる
インタフェースは定まっているからだ
現実のデータ型は様々バラバラだが抽象データ型としては定まっている
ゆえに抽象データ型として存在している
798デフォルトの名無しさん
2026/08/09(日) 18:55:41.83ID:M5hCU3ys プログラムでは、下位階層のサブルーチンまたは関数で詳細なデータ構造や具体的な処理を実装し、
それを参照する上位のルーチンや関数では、アプリケーションレイヤに近づけた上位階層の機能・データ構造を実現しあたかも抽象度を上げていく。
その時下位階層から上位階層に見せるべきでないデータ構造や関数機能は隠ぺいし外部インターフェースのみを上に提供する。
オブジェクト指向において、オブジェクトとはある意味データ型であるが、その具体的なデータ構造や内部処理は隠ぺいし、
外部からデータ構造に対して行うべき処理や機能(メソッド)の外部インターフェースを上位階層に提供し、
その階層を重ね抽象度を上げるようにしてアプリレイヤの機能を実現する
なぜそう言えないのアホンダラ
それを参照する上位のルーチンや関数では、アプリケーションレイヤに近づけた上位階層の機能・データ構造を実現しあたかも抽象度を上げていく。
その時下位階層から上位階層に見せるべきでないデータ構造や関数機能は隠ぺいし外部インターフェースのみを上に提供する。
オブジェクト指向において、オブジェクトとはある意味データ型であるが、その具体的なデータ構造や内部処理は隠ぺいし、
外部からデータ構造に対して行うべき処理や機能(メソッド)の外部インターフェースを上位階層に提供し、
その階層を重ね抽象度を上げるようにしてアプリレイヤの機能を実現する
なぜそう言えないのアホンダラ
799デフォルトの名無しさん
2026/08/09(日) 18:58:43.21ID:M5hCU3ys オツムが抽象的な思考に向ていないんだよ。
それはつまりソフトウエアの素養もないってことなんだよ
だからインチキオブジェクト指向のまやかしにコロッと騙されて
今でも信じて変なクソコード書いてんだよ
それはつまりソフトウエアの素養もないってことなんだよ
だからインチキオブジェクト指向のまやかしにコロッと騙されて
今でも信じて変なクソコード書いてんだよ
800デフォルトの名無しさん
2026/08/09(日) 19:01:47.44ID:M5hCU3ys まあ >>798 は理想に過ぎないがな
801デフォルトの名無しさん
2026/08/09(日) 19:02:13.80ID:Ef6yeDFk 的ハズレだな
ハッシュマップは抽象データ型であるがオブジェクト指向でない言語にも存在していてオブジェクト指向とは無関係
抽象データ型(ADT)はオブジェクト指向とは独立して成立する重要概念
ハッシュマップは抽象データ型であるがオブジェクト指向でない言語にも存在していてオブジェクト指向とは無関係
抽象データ型(ADT)はオブジェクト指向とは独立して成立する重要概念
802デフォルトの名無しさん
2026/08/09(日) 19:05:27.69ID:M5hCU3ys ん?俺に言ってるのか?アンカー不明
803デフォルトの名無しさん
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
オブジェクト指向でない言語にも存在していたらオブジェクト指向とは無関係になるロジックがわからん
お前の言葉を借りるならオブジェクト指向はオブジェクト指向言語とは独立して成立する重要概念
と言えるのではないかな
オブジェクト指向でない言語にも存在していたらオブジェクト指向とは無関係になるロジックがわからん
お前の言葉を借りるならオブジェクト指向はオブジェクト指向言語とは独立して成立する重要概念
と言えるのではないかな
806デフォルトの名無しさん
2026/08/09(日) 19:43:06.75ID:913d68PH ハッシュマップもデータ構造のバリエーション多い
807デフォルトの名無しさん
2026/08/09(日) 19:51:10.69ID:KYy+D1W+808デフォルトの名無しさん
2026/08/09(日) 19:59:07.11ID:AbDa2BM7 >>806
オープンアドレス法とかチェイン法とかの話かな?
それらはデータ構造よりも細かい実装方法の違いだからアルゴリズムだね
抽象データ型 : 連想配列 → データ構造 : ハッシュマップ → アルゴリズム : オープンアドレス法
オープンアドレス法とかチェイン法とかの話かな?
それらはデータ構造よりも細かい実装方法の違いだからアルゴリズムだね
抽象データ型 : 連想配列 → データ構造 : ハッシュマップ → アルゴリズム : オープンアドレス法
809デフォルトの名無しさん
2026/08/09(日) 20:10:38.83ID:xE5u1KOD810デフォルトの名無しさん
2026/08/09(日) 20:14:09.16ID:XjKMTRVK 有理数自体は抽象データ型としても具象データ型としても定義できるけど、可能な操作・インターフェイスから定義すれば抽象データ型になるということでは。
ADTって書き方だと、抽象データ型のことか代数的データ型のことか紛らわしくない? 文脈でわかると言われればそれまでだけど。
ADTって書き方だと、抽象データ型のことか代数的データ型のことか紛らわしくない? 文脈でわかると言われればそれまでだけど。
811デフォルトの名無しさん
2026/08/09(日) 20:21:54.07ID:AbDa2BM7 有理数は数学の概念だからね
抽象データ型がふさわしい
ハッシュ関数を使ってハッシュ有理数を作ったらそれはデータ構造と呼んで良い、俺が許す
抽象データ型がふさわしい
ハッシュ関数を使ってハッシュ有理数を作ったらそれはデータ構造と呼んで良い、俺が許す
812デフォルトの名無しさん
2026/08/09(日) 20:30:52.56ID:N9AdAIBx813デフォルトの名無しさん
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 代数的データ型の使用によって意味する表現が直感的にわかりやすくなった
そのパターンマッチングの使用によって従来の複雑で見にくかった比較コードの可読性が飛躍的に向上した
そのパターンマッチングの使用によって従来の複雑で見にくかった比較コードの可読性が飛躍的に向上した
816デフォルトの名無しさん
2026/08/09(日) 22:41:09.59ID:J2RxAYiI 俺は頻繁に複数の言語を使うけど
パターンマッチングだけは無理ゲー
覚えられないし、頭切り替えられない
パターンマッチングだけは無理ゲー
覚えられないし、頭切り替えられない
817デフォルトの名無しさん
2026/08/09(日) 22:46:41.02ID:FMP/XAfw パターンマッチングは最も分かりやすい方法
他に分かりやすい方法はない
他に分かりやすい方法はない
818デフォルトの名無しさん
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 パターンマッチと多様性による拡張は全く別の話だろ?何で混じってんだ?
パターンマッチってヌルチェック分が減るくらいのメリットしか感じないが。
パターンマッチってヌルチェック分が減るくらいのメリットしか感じないが。
821デフォルトの名無しさん
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:6I1q9E5W824デフォルトの名無しさん
2026/08/10(月) 10:30:38.60ID:OJYaBrhY 無知の知
なかなかないがリアルでも複数人から指摘があったら
いったん立ち止まったほうがいいよ
なかなかないがリアルでも複数人から指摘があったら
いったん立ち止まったほうがいいよ
825デフォルトの名無しさん
2026/08/10(月) 10:33:54.21ID:SxBlpbRs826デフォルトの名無しさん
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
お薬は飲んだのか?
お薬は飲んだのか?
830デフォルトの名無しさん
2026/08/10(月) 11:17:51.58ID:5L0sF5Lh 代数的データ型含めた型による分岐はオブジェクト指向的ではないからな
そういうのを使わない場合はパターンマッチングって分岐のネストが1つ減らせるくらいの認識で間違ってないよ
デストラクチャリングくらいなら今はどの言語でもほぼ不自由無くできるようになってるからね
そういうのを使わない場合はパターンマッチングって分岐のネストが1つ減らせるくらいの認識で間違ってないよ
デストラクチャリングくらいなら今はどの言語でもほぼ不自由無くできるようになってるからね
831デフォルトの名無しさん
2026/08/10(月) 11:19:35.55ID:IJpWneca イテレータなどのメソッドのチェーン記法に対しても
しょうもないシンタックスにこだわるなと言い出す人から難しくてわからんと言い出す人までいるからね
抽象度が上がることに無関心な人とついていけない人
しょうもないシンタックスにこだわるなと言い出す人から難しくてわからんと言い出す人までいるからね
抽象度が上がることに無関心な人とついていけない人
832デフォルトの名無しさん
2026/08/10(月) 11:26:35.56ID:aEysYjjF 構造的パターンマッチングが強力な言語というと、OCamlとかHaskellとかScalaとかRustとかのイメージかな。あまりよくは知らないが。
自分はPythonがほとんどなので、match文は結構頑張っているとは思うんだけど、後付けの悲しさというのはちょっと感じてしまうな。
自分はPythonがほとんどなので、match文は結構頑張っているとは思うんだけど、後付けの悲しさというのはちょっと感じてしまうな。
833デフォルトの名無しさん
2026/08/10(月) 13:01:57.83ID:UlMDA3mw 例えて言うならwhileループしかない言語を使っていた人がforループのある言語を使ってforループってすげぇんだぞすげぇんだぞって言いふらしてるのを見てる感覚
こういう場合は「ふふ、そうだね、便利だよね」と同意するに限る
こういう場合は「ふふ、そうだね、便利だよね」と同意するに限る
834デフォルトの名無しさん
2026/08/10(月) 13:42:59.99ID:Qgth9NBt 言語によってパターンマッチングの対応に差がありすぎるんだよな
マッチ構文でしか使えない言語
変数に値が入って来る所全てでパターンマッチングできる言語
プログラミングの半分はパターンマッチングになる
だから印象に差が出るわけだ
マッチ構文でしか使えない言語
変数に値が入って来る所全てでパターンマッチングできる言語
プログラミングの半分はパターンマッチングになる
だから印象に差が出るわけだ
835デフォルトの名無しさん
2026/08/10(月) 17:24:47.96ID:tTkWr3IH んなもんDBの役割sql書け
836デフォルトの名無しさん
2026/08/10(月) 18:47:26.51ID:Lvv/Ghlb ふふ、そうだね、DB便利だよね
837デフォルトの名無しさん
2026/08/10(月) 18:52:18.32ID:w/FafCdL トランザクションもなしにDBとな!?
838デフォルトの名無しさん
2026/08/10(月) 19:30:33.57ID:rQq0mL7U >>835
パターンマッチングが何なのか理解してなくて草
パターンマッチングが何なのか理解してなくて草
839デフォルトの名無しさん
2026/08/10(月) 20:05:01.41ID:8E9eSdss SQLでのパターンマッチングはワイルドカードや正規表現を使って文字列が対象
プログラミング言語でのパターンマッチングは言語が扱う様々な構造が対象
代わりにならないね
プログラミング言語でのパターンマッチングは言語が扱う様々な構造が対象
代わりにならないね
840デフォルトの名無しさん
2026/08/10(月) 20:21:23.14ID:nsaXa9+H > OCamlとかHaskellとかScalaとかRustとか
Rustだけ弱くて草
Rustだけ弱くて草
841デフォルトの名無しさん
2026/08/10(月) 20:29:48.74ID:OJYaBrhY 適用範囲や記述量でみたらScalaもたいがいよ
静的に解決できる分Rustのが健全で強い
静的に解決できる分Rustのが健全で強い
842デフォルトの名無しさん
2026/08/11(火) 08:36:21.13ID:RFQ5dWjp 圏論的オブジェクト指向の実装論を考えてみて、
コンテキストの問題が浮上した。
オブジェクト指向で、どーしよーもないプログラムが書かれてしまうのは、
コンテキストをきちんと把握できていないからではないかと考える。
コンテキストを「場」と考えるならば、場の量子論的な、場のオブジェクト指向が必要だろう。
javaだけみても、module,package,class,instance,method(classとinstanceにある)は、場だ。
コンテキストの問題が浮上した。
オブジェクト指向で、どーしよーもないプログラムが書かれてしまうのは、
コンテキストをきちんと把握できていないからではないかと考える。
コンテキストを「場」と考えるならば、場の量子論的な、場のオブジェクト指向が必要だろう。
javaだけみても、module,package,class,instance,method(classとinstanceにある)は、場だ。
843デフォルトの名無しさん
2026/08/11(火) 08:58:21.81ID:RFQ5dWjp 場のオブジェクト指向。interfaceを演算子にみたててみようかと思う。これは関手だよね。
844デフォルトの名無しさん
2026/08/11(火) 09:08:40.52ID:tHxEKinL 動くものができたら、また来てね。
845デフォルトの名無しさん
2026/08/11(火) 09:19:00.36ID:rJPEdwaw スゲー妄想だな、ソフトウエアは実際には作れなさそうな人
846デフォルトの名無しさん
2026/08/11(火) 09:25:56.80ID:QVjJhsr4 いやまぁ、ちゃんと動くものが出てくるなら評価するにやぶさかではないよ。圏論とかよく知らないから、それっぽい用語を雰囲気で使っているだけの人なのか、ちゃんとした理論的なバックグラウンドがある主張をこちらが理解できていないだけなのか区別つかんのよね。
847デフォルトの名無しさん
2026/08/11(火) 09:28:49.75ID:f2F+qnzO みんなが日常的に使ってるあるシステムはおれがメインで開発に携わったものだよ
848デフォルトの名無しさん
2026/08/11(火) 09:36:48.54ID:rJPEdwaw 水洗トイレとか?
849デフォルトの名無しさん
2026/08/11(火) 10:35:43.79ID:vPKmGjvF 昔からこういう手合いはいるのよね、不完全性定理がどうこう言ってif文書いただけでしたみたいな人
850デフォルトの名無しさん
2026/08/11(火) 11:10:02.52ID:+qIuTycP 何でも無理やりに結び付けて使いにくいものが出来上がる例は現実にあるよね
例えば代数的データ型とオブジェクト指向は独立した話で普通は無関係
代数的データ型の列挙(和)の実装は通常
unionをタグ付きに拡張するか
enumをデータ付きに拡張するか
結局どちらも同じものになって実装されている言語が普通
ところがなぜか無理やりにオブジェクト指向のclassでこれを実装する言語があるよ
何でもかんでもclassを使うのは常軌を逸していると思う
例えば代数的データ型とオブジェクト指向は独立した話で普通は無関係
代数的データ型の列挙(和)の実装は通常
unionをタグ付きに拡張するか
enumをデータ付きに拡張するか
結局どちらも同じものになって実装されている言語が普通
ところがなぜか無理やりにオブジェクト指向のclassでこれを実装する言語があるよ
何でもかんでもclassを使うのは常軌を逸していると思う
851デフォルトの名無しさん
2026/08/11(火) 12:03:22.99ID:rJPEdwaw ついでに相対論もゲーデルの不完全性定理もフェルマーの最終定理も
味噌もくそも全部有名な法則や理論、定理どころをを入れとけってんだ
味噌もくそも全部有名な法則や理論、定理どころをを入れとけってんだ
852デフォルトの名無しさん
2026/08/11(火) 12:05:09.87ID:rJPEdwaw 全ての内部ルーチンや関数を高い汎用性を持たせようとするとコストが爆上がりして現実的に実現不可能になるのと似てるな
853デフォルトの名無しさん
2026/08/11(火) 12:30:25.46ID:RFQ5dWjp 関手すなわちFunctorはjavaにあるわけだし、場のオブジェクト指向の理論を考えてみるのも楽しい。
場ってのはfieldだし、classはfield持ってるしね。
場にメッセージを投げるとなんらかの変化や反応があるわけだ。
オブジェクトは、モノとか対象ではなく、場であるという理論。
場に現れる関係性の集まりがオブジェクト。
場ってのはfieldだし、classはfield持ってるしね。
場にメッセージを投げるとなんらかの変化や反応があるわけだ。
オブジェクトは、モノとか対象ではなく、場であるという理論。
場に現れる関係性の集まりがオブジェクト。
854デフォルトの名無しさん
2026/08/11(火) 12:31:06.52ID:kSQ/OYL7855デフォルトの名無しさん
2026/08/11(火) 12:35:02.85ID:oZGwM7c8 あいつには論理なんてもんは最初からないぞ
自分が欲しい結論に対する必死のチェリーピックしかしないから
自分が欲しい結論に対する必死のチェリーピックしかしないから
856デフォルトの名無しさん
2026/08/11(火) 12:35:28.85ID:RFQ5dWjp 不完全性定理はプログラムに最初から入っているし、
相対性理論はGPSだけでなく、結構使うだろ?
相対性理論はGPSだけでなく、結構使うだろ?
857デフォルトの名無しさん
2026/08/11(火) 12:39:40.57ID:u6T6/4BA858デフォルトの名無しさん
2026/08/11(火) 12:41:48.77ID:rJPEdwaw オブジェクト指向ってなぜあたおかホイホイなんだろう
859デフォルトの名無しさん
2026/08/11(火) 12:49:18.30ID:oZGwM7c8 そやね
さらに言うと、OOPやったことないようなやつが発言してくるのが不思議でしゃあない
さらに言うと、OOPやったことないようなやつが発言してくるのが不思議でしゃあない
860デフォルトの名無しさん
2026/08/11(火) 12:49:45.66ID:rJPEdwaw >>856
不完全性定理は様々なところに現れるが、オブジェクト指向は不完全性定理に基づいた仕組みではないだろ
GPSは相対性理論に配慮が要るが、それは実現するソフトウエアの処理内容の話で、オブジェクト指向とは独立だろ
想像を絶する頭の悪さだな
不完全性定理は様々なところに現れるが、オブジェクト指向は不完全性定理に基づいた仕組みではないだろ
GPSは相対性理論に配慮が要るが、それは実現するソフトウエアの処理内容の話で、オブジェクト指向とは独立だろ
想像を絶する頭の悪さだな
861デフォルトの名無しさん
2026/08/11(火) 12:54:30.57ID:rJPEdwaw862デフォルトの名無しさん
2026/08/11(火) 13:06:24.55ID:RFQ5dWjp 頭悪い人多いね。じっさいに設計とか開発とかしてないんだろうけど。
電流は高速だが、電子はカタツムリ程度の速さでしか流れない、という時代に
追いつけてないんだね。
電流は高速だが、電子はカタツムリ程度の速さでしか流れない、という時代に
追いつけてないんだね。
863デフォルトの名無しさん
2026/08/11(火) 13:08:56.59ID:5BpLrLdu >>850
オブジェクト指向自体は階層構造を仮定していないがクラスで階層構造を前提とした
代数的データ型も階層構造ではないがResultの子供をSuccessとFailureだとみなせば一段の階層構造とみなせる
階層構造ならクラスと同じだから代数的データ型はクラスの一種だ
オブジェクト指向自体は階層構造を仮定していないがクラスで階層構造を前提とした
代数的データ型も階層構造ではないがResultの子供をSuccessとFailureだとみなせば一段の階層構造とみなせる
階層構造ならクラスと同じだから代数的データ型はクラスの一種だ
864デフォルトの名無しさん
2026/08/11(火) 13:09:46.93ID:RFQ5dWjp 高速->光速
865デフォルトの名無しさん
2026/08/11(火) 13:40:18.81ID:OedHObPX なんでもクラスとして扱う腐ったゴミ言語がある
866デフォルトの名無しさん
2026/08/11(火) 14:43:43.18ID:mnSwjBYG オブジェクト指向と関係ないことまでクラスを使うならそれはクラス信者
867デフォルトの名無しさん
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 クラスを作ったらモデリングしてる気になれるんじゃないか
トランザクションスクリプトの処理を必要もなくあちこちの
クラスに分散してるのを良く見かける
ドメインモデルを作った気になってるんじゃないかね
とっ散らかったトランザクションスクリプトでしかないのに
トランザクションスクリプトの処理を必要もなくあちこちの
クラスに分散してるのを良く見かける
ドメインモデルを作った気になってるんじゃないかね
とっ散らかったトランザクションスクリプトでしかないのに
870デフォルトの名無しさん
2026/08/11(火) 18:36:11.29ID:FvPMsPLL871デフォルトの名無しさん
2026/08/11(火) 18:50:53.71ID:vPKmGjvF >>870
トランザクションスクリプトは基本分ける必要ないと思ってる
だってトランザクションスクリプトなんだもん
メソッド内にドバッと処理を書いておしまいで良い
たとえば、テーブルごとにDaoクラスを作ってDBアクセスをDaoクラスでやるとか
処理をServiceクラスやLogicクラスに書いて分散させてトランザクションスクリプトの中で
インスタンス生成して実行してるだけとか
処理を分けて個別にテストしてるならまだしも本当にわけてるだけのものがあるんよ
わりとたくさん
トランザクションスクリプトは基本分ける必要ないと思ってる
だってトランザクションスクリプトなんだもん
メソッド内にドバッと処理を書いておしまいで良い
たとえば、テーブルごとにDaoクラスを作ってDBアクセスをDaoクラスでやるとか
処理をServiceクラスやLogicクラスに書いて分散させてトランザクションスクリプトの中で
インスタンス生成して実行してるだけとか
処理を分けて個別にテストしてるならまだしも本当にわけてるだけのものがあるんよ
わりとたくさん
872デフォルトの名無しさん
2026/08/11(火) 19:28:28.20ID:YtoEwpFL >>871
それってベタに書くか1層メソッド設けるかの違いでしかないからチーム内の決めの話
たとえばユーザ入力や外部連携などトランザクションが複数ステップに渡るケースなら
ステートマシンにして中でうまくSagaやTCCなんかで不可分にしてくれる構造にするとか
こういうのならクラスを導入する意義はある
それってベタに書くか1層メソッド設けるかの違いでしかないからチーム内の決めの話
たとえばユーザ入力や外部連携などトランザクションが複数ステップに渡るケースなら
ステートマシンにして中でうまくSagaやTCCなんかで不可分にしてくれる構造にするとか
こういうのならクラスを導入する意義はある
873デフォルトの名無しさん
2026/08/11(火) 19:37:36.57ID:vPKmGjvF >>872
ちょ待てよ、質問されて答えたんだから
まずは答えてくれてありがとうとか教えてくれてありがとうとか
そういうのはないのか、質問して答えてもらってそれはこうだと言う
お前のそういうところが俺は好き
ちょ待てよ、質問されて答えたんだから
まずは答えてくれてありがとうとか教えてくれてありがとうとか
そういうのはないのか、質問して答えてもらってそれはこうだと言う
お前のそういうところが俺は好き
874デフォルトの名無しさん
2026/08/11(火) 19:51:35.55ID:rJPEdwaw あーっ!
875デフォルトの名無しさん
2026/08/11(火) 20:16:39.86ID:RFQ5dWjp classは「場」。そう考えてみた。
そうすると、「演算」とは何か、となった。
演算はテンソル積で、結果が「時空間」。
つまり、既に計算済みなのが「場」ということになる。
まず、計算モデルからだな。
classが入ってくる前のsmalltalkだし、ほぼLispの世界に突入中。
そうすると、「演算」とは何か、となった。
演算はテンソル積で、結果が「時空間」。
つまり、既に計算済みなのが「場」ということになる。
まず、計算モデルからだな。
classが入ってくる前のsmalltalkだし、ほぼLispの世界に突入中。
876デフォルトの名無しさん
2026/08/11(火) 20:29:50.56ID:muID62IF877デフォルトの名無しさん
2026/08/11(火) 22:32:33.27ID:1VnbLn/U 現実のシステムは非同期でやらざるを得ない
オブジェクト指向本来のメッセージパッシングも非同期
オブジェクト指向本来のメッセージパッシングも非同期
878デフォルトの名無しさん
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 非同期タスクがオブジェクト
その非同期タスク間のチャネルでメッセージパッシング
これで本来のオブジェクト指向になる
その非同期タスク間のチャネルでメッセージパッシング
これで本来のオブジェクト指向になる
882デフォルトの名無しさん
2026/08/11(火) 23:58:55.78ID:Par7S+YE クラスという不自然なものより生きてるオブジェクトらしくていいな
883デフォルトの名無しさん
2026/08/12(水) 01:11:59.79ID:RaymRvVC アラン・ケイ「オブジェクトとは、生物の細胞やネットワーク上の個々のコンピュータのようもの、そしてそれらのコミュニケーションは専らメッセージによって行なわれるもの、と考えていました。」
「つまり、メッセージングは最初から存在していたのですが、プログラミング言語でメッセージングを実用的かつ効率的に行う方法を見つけるまでには時間がかかりました。」
オブジェクトは非同期タスクと捉えたほうが本来のオブジェクトに近そう
関数メソッド呼び出しによるメッセージパッシングは当時の実用的かつ効率的な妥協案の位置付けとみることもできる
今は非同期タスク間でチャネルを使って真にメッセージパッシングできるようになった
「つまり、メッセージングは最初から存在していたのですが、プログラミング言語でメッセージングを実用的かつ効率的に行う方法を見つけるまでには時間がかかりました。」
オブジェクトは非同期タスクと捉えたほうが本来のオブジェクトに近そう
関数メソッド呼び出しによるメッセージパッシングは当時の実用的かつ効率的な妥協案の位置付けとみることもできる
今は非同期タスク間でチャネルを使って真にメッセージパッシングできるようになった
884デフォルトの名無しさん
2026/08/12(水) 03:51:48.62ID:QPjIEWYB アランケイが言うオブジェクトは生きてるイメージだからなるほどね
885デフォルトの名無しさん
2026/08/12(水) 08:09:34.92ID:1z/8k8uI 人間がハルシネーションを起こしているw
886デフォルトの名無しさん
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 弊スレのハル夫くんは権威でしか物事を判断しない人だから由来に拘るのもその一種であろう
889デフォルトの名無しさん
2026/08/12(水) 09:16:47.46ID:9ViW8s/t 権威もチェリーピックだから常にハルシネーション
890デフォルトの名無しさん
2026/08/12(水) 09:29:21.73ID:huopapQG オブジェクト指向スレでアランケイを誰も知らない扱いするのはさすがにムリがあるのでは。
891デフォルトの名無しさん
2026/08/12(水) 09:42:29.29ID:L2Pmm9KH 語源探ることに意味はないってことを言ってるのにさらにしょーもないところを掘り出すってところがほんとバカだよね
892デフォルトの名無しさん
2026/08/12(水) 09:48:21.35ID:huopapQG オブジェクト指向とはどのような考え方かを議論するときに、アランケイが提示したモデルは後にC++等によって提示されたモデルとともに現在でも参照されるものなんだが。意味がないというのはよく分からんな。
893デフォルトの名無しさん
2026/08/12(水) 10:13:57.94ID:K2gu1pkE >>892
みんな知ってるようなこと書かれても
だから何? としか思わないっしょ
赤信号は止まれの合図だと言ってるようなもので
で? それがどうしたの? って思うじゃん
独立した実行主体関連で話広げられる?
オブジェクトはAIのエージェントを示唆してたんだよ! なんだってーーキバヤシ!! みたいな話でもいいよ
みんな知ってるようなこと書かれても
だから何? としか思わないっしょ
赤信号は止まれの合図だと言ってるようなもので
で? それがどうしたの? って思うじゃん
独立した実行主体関連で話広げられる?
オブジェクトはAIのエージェントを示唆してたんだよ! なんだってーーキバヤシ!! みたいな話でもいいよ
894デフォルトの名無しさん
2026/08/12(水) 10:30:47.86ID:Fjk7LUU4895デフォルトの名無しさん
2026/08/12(水) 10:46:44.84ID:sWXSphY4 >>893
みんなが知っているような話を、誰も知らない話扱いしている人が居たらツッコまれるのは当然では。
アクターモデルについてモダンな言語がどうアプローチしているかとか、不変条件の位置付けとか、それなりに話の広がりにも寄与しているように見えるが。
みんなが知っているような話を、誰も知らない話扱いしている人が居たらツッコまれるのは当然では。
アクターモデルについてモダンな言語がどうアプローチしているかとか、不変条件の位置付けとか、それなりに話の広がりにも寄与しているように見えるが。
896デフォルトの名無しさん
2026/08/12(水) 10:57:12.89ID:K2gu1pkE897デフォルトの名無しさん
2026/08/12(水) 10:59:17.27ID:0ui1V5YL この状況で「誰も知らない話扱いしている人が居た」なんて解釈してるのがお前ひとりであり
そこらへんがみんなより一周以上周回遅れなところなんだよなあ
これ以上恥かく前に、もう黙っといたら?
そこらへんがみんなより一周以上周回遅れなところなんだよなあ
これ以上恥かく前に、もう黙っといたら?
898デフォルトの名無しさん
2026/08/12(水) 11:12:04.92ID:iRjqhTBy >>883
先取りした概念だったけど時代がようやく追いついた感じかね
提唱された本来のオブジェクト
アラン・ケイ「オブジェクトとは生物の細胞やネットワーク上の個々のコンピュータのようもの」
↓
当時の制約からとりあえず広まったオブジェクト
「クラス型のオブジェクト」
↓
現代のオブジェクト
「チャネルでメッセージパッシングし合う非同期タスク」
先取りした概念だったけど時代がようやく追いついた感じかね
提唱された本来のオブジェクト
アラン・ケイ「オブジェクトとは生物の細胞やネットワーク上の個々のコンピュータのようもの」
↓
当時の制約からとりあえず広まったオブジェクト
「クラス型のオブジェクト」
↓
現代のオブジェクト
「チャネルでメッセージパッシングし合う非同期タスク」
899デフォルトの名無しさん
2026/08/12(水) 11:53:33.48ID:4vADr3qE >>897
>>887が「アランケイの話なんか持ち出しても今では誰も知らなくなったどうでもいい語源持ち出すようなもんだろ」としているが。
>>896
アランケイのオブジェクト指向はアクターモデルと相当程度同質的なアイデアと一般に理解されていると思うが。
もちろん、両者が概念として同じというわけではないし、オブジェクト指向の概念はアランケイ流の理解だけではないけれども、モダンな言語がアクターモデルに対してどのようなアプローチをしているかの話をするときに「それはアクターモデルの話だからオブジェクト指向とは関係ない話ですね」とはならんでしょ。少なくとも、アランケイ流のオブジェクト指向の考え方の延長線上に位置付けるという話の展開は普通にありうると思うが。
>>887が「アランケイの話なんか持ち出しても今では誰も知らなくなったどうでもいい語源持ち出すようなもんだろ」としているが。
>>896
アランケイのオブジェクト指向はアクターモデルと相当程度同質的なアイデアと一般に理解されていると思うが。
もちろん、両者が概念として同じというわけではないし、オブジェクト指向の概念はアランケイ流の理解だけではないけれども、モダンな言語がアクターモデルに対してどのようなアプローチをしているかの話をするときに「それはアクターモデルの話だからオブジェクト指向とは関係ない話ですね」とはならんでしょ。少なくとも、アランケイ流のオブジェクト指向の考え方の延長線上に位置付けるという話の展開は普通にありうると思うが。
900デフォルトの名無しさん
2026/08/12(水) 12:08:36.49ID:1z/8k8uI 本質を自分の頭で考え捉える力がなく
権威や既存の理論に弱くてそれを無理やり結び付けているのよ
要するに頭の弱い権威論者
権威や既存の理論に弱くてそれを無理やり結び付けているのよ
要するに頭の弱い権威論者
901デフォルトの名無しさん
2026/08/12(水) 12:13:20.43ID:I2M7VnZy 非同期書けないやつ多いもんな
使ってるやつも常にawaitして同期的にしちゃう程度が多い
使ってるやつも常にawaitして同期的にしちゃう程度が多い
902デフォルトの名無しさん
2026/08/12(水) 12:17:34.07ID:1z/8k8uI メッセージパッシングでソフトウエアを記述しやすいいかと言ったら、書きにくいのよ、
かつて有名だったコンセプトだが過去の栄光・権威でいまやobsolateなの
アクターモデルでソフトウエアを記述しやすいかといったら書きにくいのよ
で、クラスベースオブジェクト指向はどうかというと、弊害が多くて見直されるようになった
そうやって、結局オブジェクト指向はオワコンでは?
というのがスレの趣旨で
そこに場の理論だのテンソルだの相対論だの、オブジェクト指向に無関係な理論持ちだして無理と結び付けようとして
オブジェクト指向の権威付けそしたいの?有用だと正当化したいの?
そのずれっぷりがつくずくこの人頭りーなーという印象しか周りに与えないわけ
かつて有名だったコンセプトだが過去の栄光・権威でいまやobsolateなの
アクターモデルでソフトウエアを記述しやすいかといったら書きにくいのよ
で、クラスベースオブジェクト指向はどうかというと、弊害が多くて見直されるようになった
そうやって、結局オブジェクト指向はオワコンでは?
というのがスレの趣旨で
そこに場の理論だのテンソルだの相対論だの、オブジェクト指向に無関係な理論持ちだして無理と結び付けようとして
オブジェクト指向の権威付けそしたいの?有用だと正当化したいの?
そのずれっぷりがつくずくこの人頭りーなーという印象しか周りに与えないわけ
903デフォルトの名無しさん
2026/08/12(水) 12:21:05.07ID:ULZPq25m 現実にGoルーチンやRustの非同期タスクで書かれることが増えたね
904デフォルトの名無しさん
2026/08/12(水) 12:22:27.62ID:1z/8k8uI 本人はすごい理論を考えているつもりなのかもしれないけど
オブジェクト指向と関係のない別の分野の李厘の名前持ち出したって
たぶん頭空っぽで自分の力では具体的なこと何も考えていないんだろうなって、
ソフトウエアやプログラミングについて何も考えていないど素人なんだろうな
物理屋に憧れていたアタオカなんだろうなって印象しか伝わってこないの
オブジェクト指向と関係のない別の分野の李厘の名前持ち出したって
たぶん頭空っぽで自分の力では具体的なこと何も考えていないんだろうなって、
ソフトウエアやプログラミングについて何も考えていないど素人なんだろうな
物理屋に憧れていたアタオカなんだろうなって印象しか伝わってこないの
905デフォルトの名無しさん
2026/08/12(水) 12:23:45.48ID:1z/8k8uI 別の分野の李厘 → 別の分野の理論
906デフォルトの名無しさん
2026/08/12(水) 12:25:31.85ID:1z/8k8uI 医者に行って診察うけてお薬お飲みよ
放っておくと悪化するかもの
放っておくと悪化するかもの
907デフォルトの名無しさん
2026/08/12(水) 12:29:20.01ID:yTKb2Zm2908デフォルトの名無しさん
2026/08/12(水) 12:54:56.66ID:aDZQdKrq ふふ、オブジェクト指向を「系」の問題すれば、不完全性定理や相対性理論が入ってくるのは
あたりまえ。
コンテキストの問題と捉えれば、「場」も入ってくるし、量子アルゴリズムも考えているので
(場の)量子論があたりまえ。
昨夜は、乗法だけで加法も行えるところまでいったが、素因数分解までには至らなかった。
なんのためにやっているか、といえば、マルチスレッドの効率化とか並列処理のため。
オブジェクト指向言語は、いたるところでMonadが使われているため、圏論も重要。
理想的な概念と実装のギャップを埋めるため。
あたりまえ。
コンテキストの問題と捉えれば、「場」も入ってくるし、量子アルゴリズムも考えているので
(場の)量子論があたりまえ。
昨夜は、乗法だけで加法も行えるところまでいったが、素因数分解までには至らなかった。
なんのためにやっているか、といえば、マルチスレッドの効率化とか並列処理のため。
オブジェクト指向言語は、いたるところでMonadが使われているため、圏論も重要。
理想的な概念と実装のギャップを埋めるため。
909デフォルトの名無しさん
2026/08/12(水) 12:56:48.25ID:1z/8k8uI こいつめ、お遊びでやっているなw
言葉遊び
言葉遊び
910デフォルトの名無しさん
2026/08/12(水) 12:59:05.36ID:1z/8k8uI そういや以前、屁理屈こねてオブジェクト指向はオチンポだーと叫んで止まない輩がスレにいたが
あれと同類だな、もしかして本人かw
あれと同類だな、もしかして本人かw
911デフォルトの名無しさん
2026/08/12(水) 13:02:57.12ID:1z/8k8uI なお、メッセージドライバーに相当するメソッドにはエルミート性がないので
空間にエネルギーの揺らぎが発生し確率的に反粒子が生成される
空間にエネルギーの揺らぎが発生し確率的に反粒子が生成される
912897
2026/08/12(水) 13:35:19.22ID:0ui1V5YL >>899
> 「アランケイの話なんか持ち出しても今では誰も知らなくなったどうでもいい語源持ち出すようなもんだろ」としているが。
それを読んだうえでそう判断したのがお前一人だということ
言わなきゃわからないのが怖いわ
> 「アランケイの話なんか持ち出しても今では誰も知らなくなったどうでもいい語源持ち出すようなもんだろ」としているが。
それを読んだうえでそう判断したのがお前一人だということ
言わなきゃわからないのが怖いわ
913デフォルトの名無しさん
2026/08/12(水) 13:50:57.76ID:4vADr3qE 圏論が云々という話と、アランケイ流のオブジェクト指向の話は全然別の話なんだが。味噌をよく知らない人が、味噌とクソを一緒の扱いにしていたというオチ?
>>912
正直言われても分からないんだけどね。それが「誰も知らない話扱いしている人が居た」ということでないなら、どういう意味なん? 説明してみ?
「アランケイ流のオブジェクト指向自体は誰でも知っていることだけど、『どうでもいい』ことのたとえとして『今では誰も知らなくなった』としているだけ」とかそういう方向性で頑張るん?
>>912
正直言われても分からないんだけどね。それが「誰も知らない話扱いしている人が居た」ということでないなら、どういう意味なん? 説明してみ?
「アランケイ流のオブジェクト指向自体は誰でも知っていることだけど、『どうでもいい』ことのたとえとして『今では誰も知らなくなった』としているだけ」とかそういう方向性で頑張るん?
914デフォルトの名無しさん
2026/08/12(水) 14:39:13.16ID:K2gu1pkE >>913
本当にわからんの? 引き際つかなくなってうざ絡みしてるだけにも見えるけどどっち?
本当にわからんの? 引き際つかなくなってうざ絡みしてるだけにも見えるけどどっち?
915デフォルトの名無しさん
2026/08/12(水) 14:40:14.52ID:K2gu1pkE 文章読解の方法を吾輩が教えてしんぜようか? どうする? 俺に頭下げてお願いしてみるか? プライドと知性の等価交換だ
916デフォルトの名無しさん
2026/08/12(水) 15:04:56.62ID:rtq6aJj0 非同期タスク系が成功している要因は1つのCPUで数十万タスクを動かせる軽量さにある
スレッドはリソースが大きくて切り替えコストも嵩んでたくさん動かせない
そこで動かすマルチスレッド数はCPUが持つスレッド数に限定してその上で大量の非同期タスクを切り替えする基盤を持つ言語が増えてきた
異なるスレッド上にいるかもしれない他の非同期タスクへのメッセージパッシングは安全軽量なチャネル機構が解決した
従来のオブジェクト同士のメッセージパッシングを非同期並列に対応するには同じ問題を抱えてしまう
オブジェクトを非同期タスクと捉え直すことで現実的に解決できるようになった
スレッドはリソースが大きくて切り替えコストも嵩んでたくさん動かせない
そこで動かすマルチスレッド数はCPUが持つスレッド数に限定してその上で大量の非同期タスクを切り替えする基盤を持つ言語が増えてきた
異なるスレッド上にいるかもしれない他の非同期タスクへのメッセージパッシングは安全軽量なチャネル機構が解決した
従来のオブジェクト同士のメッセージパッシングを非同期並列に対応するには同じ問題を抱えてしまう
オブジェクトを非同期タスクと捉え直すことで現実的に解決できるようになった
917デフォルトの名無しさん
2026/08/12(水) 17:38:37.07ID:1z/8k8uI 突っ込む気力も失せる
918デフォルトの名無しさん
2026/08/12(水) 17:54:25.13ID:V4/DHKYo だからマルチスレッドで多数のオブジェクトを配置して勝手に独立制御させるってのは
ツールで構築すりゃ済むこと
ツールで構築すりゃ済むこと
919デフォルトの名無しさん
2026/08/12(水) 18:08:38.99ID:1z/8k8uI これがZ世代か…
920デフォルトの名無しさん
2026/08/12(水) 18:35:03.97ID:tKvq8T9K マルチスレッド上で軽量タスクをM:Mスケジューリングする仕組みを備えた言語が増えていってるよな
通信やDBなどI/Oバウンド解決のため非同期ならこれが現状で最善の解
通信やDBなどI/Oバウンド解決のため非同期ならこれが現状で最善の解
921デフォルトの名無しさん
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年前ですよ、お兄さんがた
async/awaitの方が多いように思うけどな
OSが非同期IOの機能を持ってるからそれを使えば
非同期処理はシングルスレッドでできるわけでぇ
スレッド作る必要がないわけでぇ
C10K問題ももう27年前ですよ、お兄さんがた
923デフォルトの名無しさん
2026/08/12(水) 20:41:16.19ID:K2gu1pkE .NETはTaskという形で処理を抽象化はしたけど
IOバウンドの処理は非同期IOを使って
CPUバウンドの処理は昔ながらのスレッドプールに投げるだけだ
軽量スレッドは要らないんじゃねってなって無いのよね
IOバウンドの処理は非同期IOを使って
CPUバウンドの処理は昔ながらのスレッドプールに投げるだけだ
軽量スレッドは要らないんじゃねってなって無いのよね
924デフォルトの名無しさん
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+929デフォルトの名無しさん
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 まったく、何言ってんのかわからんダッフンダ野郎と
品性下劣なやつしかいない、俺はもっと知的でジェントルな感じでやっていきたいんだ
品性下劣なやつしかいない、俺はもっと知的でジェントルな感じでやっていきたいんだ
933デフォルトの名無しさん
2026/08/12(水) 21:43:36.27ID:WFZso4nL チャネルでメッセージパッシングする非同期タスクは本来の生きてるオブジェクトだな
他からメッセージが来ない間も動作していてもいい
クラスによるオブジェクトはメッセージが来た時だけ値が読まれたり書き換えられたりする生きてないオブジェクト
他からメッセージが来ない間も動作していてもいい
クラスによるオブジェクトはメッセージが来た時だけ値が読まれたり書き換えられたりする生きてないオブジェクト
934デフォルトの名無しさん
2026/08/12(水) 22:15:52.47ID:JlmtHOiP 非同期タスクはアラン・ケイが言うところのオブジェクトではないぞ
935デフォルトの名無しさん
2026/08/12(水) 22:19:09.31ID:CRJD+Z1o チャネルでメッセージを送受するする主体だから非同期タスクはオブジェクト
936デフォルトの名無しさん
2026/08/12(水) 22:24:37.37ID:JlmtHOiP それ「引数でメッセージを送受スルスル主体だから関数はオブジェクト」と言ってるのと大差ない
馬鹿さ加減がわかったかな?
馬鹿さ加減がわかったかな?
937デフォルトの名無しさん
2026/08/12(水) 22:32:07.30ID:oX4uPmCf Goルーチンとか普通にチャネルでやりとりするオブジェクトだろ
違うと言うならこの場合どれがオブジェクトなんだ?
違うと言うならこの場合どれがオブジェクトなんだ?
938デフォルトの名無しさん
2026/08/12(水) 22:46:33.52ID:1z/8k8uI >>932
∧_∧
\(‘ω’)/
\ \
\γ∩ミ――
/⊂::⊃))
/ 乂∪彡
∧_∧
\(‘ω’)/
\ \
\γ∩ミ――
/⊂::⊃))
/ 乂∪彡
939デフォルトの名無しさん
2026/08/12(水) 22:59:57.76ID:GwWbjnXc 他のgoroutineからチャネルで受信して
処理して必要なら他のgoroutineへチャネルで送信
このようなことを繰り返すgoroutineたちはオブジェクトでしょうね
処理して必要なら他のgoroutineへチャネルで送信
このようなことを繰り返すgoroutineたちはオブジェクトでしょうね
940デフォルトの名無しさん
2026/08/12(水) 23:57:06.26ID:8u01qLwS 言葉遊びはそのくらいにしろ
941デフォルトの名無しさん
2026/08/13(木) 00:02:51.12ID:bfn0NcCg ゴールーチンをオブジェクトじゃないと主張する人はそこで何がオブジェクトなの?
それを明らかにしないと説得力ないよ
それを明らかにしないと説得力ないよ
942デフォルトの名無しさん
2026/08/13(木) 00:17:59.71ID:zSTcUfCT ろくなものを作れず挫折したやつらがそれっぽいキーワード並べて知ったかで議論してるつもりのオワコンスレ
プログラム技術に全く貢献しない
プログラム技術に全く貢献しない
943デフォルトの名無しさん
2026/08/13(木) 00:25:01.08ID:TisD6Us4 病的シッタカくん一人と
それをケアする介護人多数って感じで見てた
それをケアする介護人多数って感じで見てた
944デフォルトの名無しさん
2026/08/13(木) 10:11:04.79ID:iAL6RhQH945デフォルトの名無しさん
2026/08/13(木) 10:52:13.75ID:pdAcKRXu 入力された値を出力の値に変換する処理が関数型の処理だ
入力 → Function → 出力
オブジェクト指向ではこの計算をやっていることに等しい
(入力, 現在の状態) → Function → (出力, 新しい状態)
Functionと状態をセットにして入力と出力を関数型のようにしたものがオブジェクト指向だ
入力 → (Function, 状態) → 出力
状態とセットになったFunctionをメソッドを言い
そうでないFunctionを関数と言う
つまりだ、オブジェクトとは入力を出力に変換するしくみのことで状態を持つことができるものだ
入力 → Function → 出力
オブジェクト指向ではこの計算をやっていることに等しい
(入力, 現在の状態) → Function → (出力, 新しい状態)
Functionと状態をセットにして入力と出力を関数型のようにしたものがオブジェクト指向だ
入力 → (Function, 状態) → 出力
状態とセットになったFunctionをメソッドを言い
そうでないFunctionを関数と言う
つまりだ、オブジェクトとは入力を出力に変換するしくみのことで状態を持つことができるものだ
946デフォルトの名無しさん
2026/08/13(木) 10:54:40.86ID:pdAcKRXu goroutineはオブジェクトが動作する環境で
オブジェクトはgoroutineで動作するstructだ
goのstructはメソッドを持てるからね
オブジェクトはgoroutineで動作するstructだ
goのstructはメソッドを持てるからね
947デフォルトの名無しさん
2026/08/13(木) 11:11:22.61ID:eYqUgJwM >>946
structにする必要はないからそこでstructは使われない
goroutineの中の多数の色んな変数全てが状態
それらの変数群をカプセル化しているのはgoroutine
だからgoroutineがオブジェクトだね
structにする必要はないからそこでstructは使われない
goroutineの中の多数の色んな変数全てが状態
それらの変数群をカプセル化しているのはgoroutine
だからgoroutineがオブジェクトだね
948デフォルトの名無しさん
2026/08/13(木) 11:43:14.50ID:pdAcKRXu >>947
goroutineがオブジェクトだとしたら
goroutineだけで自分宛てのメッセージを受け取れないといけないけど
できないでしょ、メッセージを受信するにはchannelが必要でしょ
だからgoroutineはオブジェクトではなくてオブジェクトを動作させるものでしかないのよ
goroutineがオブジェクトだとしたら
goroutineだけで自分宛てのメッセージを受け取れないといけないけど
できないでしょ、メッセージを受信するにはchannelが必要でしょ
だからgoroutineはオブジェクトではなくてオブジェクトを動作させるものでしかないのよ
949デフォルトの名無しさん
2026/08/13(木) 11:48:41.44ID:OkMuvviv950デフォルトの名無しさん
2026/08/13(木) 11:52:03.39ID:pdAcKRXu951デフォルトの名無しさん
2026/08/13(木) 11:53:44.54ID:pdAcKRXu バナナは黄色いからレモンと同じで甘いか酸っぱいかの違いしか無いと言ってるようなもの
952デフォルトの名無しさん
2026/08/13(木) 12:03:07.63ID:BRdiQaRp >>950
structでオブジェクトを作ろうとしたら関数呼び出しでやり取りすることになるわけで
チャネルと関数呼び出しを無視するのは短絡的思考で間違ってるだけの気がする
どちらも同じポジションでメッセージパッシングの実現の方法が異なるだけに過ぎない
structでオブジェクトを作ろうとしたら関数呼び出しでやり取りすることになるわけで
チャネルと関数呼び出しを無視するのは短絡的思考で間違ってるだけの気がする
どちらも同じポジションでメッセージパッシングの実現の方法が異なるだけに過ぎない
953デフォルトの名無しさん
2026/08/13(木) 12:11:25.88ID:pdAcKRXu >>952
structであればメソッドを呼ぶけど
goroutineだとchannelを通じてメッセージを受信しないといけないよね
メッセージを受信できるものがオブジェクトだとするならば
メソッドを持てないstructはオブジェクトではないよね
channelがないgoroutineはオブジェクトではないとわかるよね
実現の方法が異なるだけに過ぎないからね
structであればメソッドを呼ぶけど
goroutineだとchannelを通じてメッセージを受信しないといけないよね
メッセージを受信できるものがオブジェクトだとするならば
メソッドを持てないstructはオブジェクトではないよね
channelがないgoroutineはオブジェクトではないとわかるよね
実現の方法が異なるだけに過ぎないからね
954デフォルトの名無しさん
2026/08/13(木) 12:23:27.96ID:GUqamXem structだけでは動作できないから実態としてはループ処理込みでgoroutineだよね
使い勝手かんがえるとメソッドにあたる関数内で
応答用チャネルを動的につくって結果はチャネルで返すスタイルにする
ループのチャネルへ引数と応答用チャネルの組を渡すかんじ
外からみたら非同期動作する旧来のオブジェクト
使い勝手かんがえるとメソッドにあたる関数内で
応答用チャネルを動的につくって結果はチャネルで返すスタイルにする
ループのチャネルへ引数と応答用チャネルの組を渡すかんじ
外からみたら非同期動作する旧来のオブジェクト
955デフォルトの名無しさん
2026/08/13(木) 12:33:17.72ID:ZomTNthP >>953
structだけでは無理だが
structに紐付ける関数を設けるとメッセージパッシングできる
goroutineだけでは無理だが
goroutineにチャネルを設けるとメッセージパッシングできる
状況は同じじゃないか
structもgoroutineもオブジェクト
goroutineは非同期にも対応したオブジェクト
structだけでは無理だが
structに紐付ける関数を設けるとメッセージパッシングできる
goroutineだけでは無理だが
goroutineにチャネルを設けるとメッセージパッシングできる
状況は同じじゃないか
structもgoroutineもオブジェクト
goroutineは非同期にも対応したオブジェクト
956デフォルトの名無しさん
2026/08/13(木) 12:43:30.37ID:pdAcKRXu >>955
データとメソッドは違うでしょ
データとメソッドが組み合わされることによってオブジェクトができるが
データそのものはオブジェクトではない
goroutineとchannelは違うでしょ
goroutineとchannelが組み合わされることによってオブジェクトができるとするならば
それの構成要素であるgoroutineがオブジェクトではないとわかるよね
データとメソッドは違うでしょ
データとメソッドが組み合わされることによってオブジェクトができるが
データそのものはオブジェクトではない
goroutineとchannelは違うでしょ
goroutineとchannelが組み合わされることによってオブジェクトができるとするならば
それの構成要素であるgoroutineがオブジェクトではないとわかるよね
957デフォルトの名無しさん
2026/08/13(木) 12:54:57.08ID:pdAcKRXu goroutineは並行処理のしくみ
オブジェクトはメッセージをやり取りするしくみ
そのように考えると、どちらかというとchannelの方がオブジェクトに近い
オブジェクトはメッセージをやり取りするしくみ
そのように考えると、どちらかというとchannelの方がオブジェクトに近い
958デフォルトの名無しさん
2026/08/13(木) 12:55:55.97ID:ZHeRnCsL >>956
structやclassはデータに過ぎないけどオブジェクトだよ
structやclassはデータに過ぎないけどオブジェクトだよ
959デフォルトの名無しさん
2026/08/13(木) 12:57:16.84ID:ZHeRnCsL960デフォルトの名無しさん
2026/08/13(木) 13:06:27.96ID:pdAcKRXu >>958
goのstructやJavaのclassはメソッドを持てるから単なるデータはないよ
goのstructやJavaのclassはメソッドを持てるから単なるデータはないよ
961デフォルトの名無しさん
2026/08/13(木) 13:15:03.01ID:pdAcKRXu >>959
オブジェクトはメッセージをやり取りするしくみだと考えると
goroutineはメッセージを受信するしくみでもなんでもないから
オブジェクトではないよね、メッセージを受信できるchannelの方がオブジェクトに近いよねって話
君は何を言ってるかと言うと状態を持つからgoroutineはオブジェクトなんだって話かな
それはオブジェクトの状態ではなくてただのスタックの状態だから
オブジェクトではないってことで良い
オブジェクトはメッセージをやり取りするしくみだと考えると
goroutineはメッセージを受信するしくみでもなんでもないから
オブジェクトではないよね、メッセージを受信できるchannelの方がオブジェクトに近いよねって話
君は何を言ってるかと言うと状態を持つからgoroutineはオブジェクトなんだって話かな
それはオブジェクトの状態ではなくてただのスタックの状態だから
オブジェクトではないってことで良い
962デフォルトの名無しさん
2026/08/13(木) 13:16:21.38ID:pdAcKRXu 次スレ立てるかな
963デフォルトの名無しさん
2026/08/13(木) 13:17:52.65ID:GUqamXem そんな言葉遊びしてうれしい?
旧来のOOPしたいなら組み合わせることになるんだから
答えはでないでしょ
旧来のOOPしたいなら組み合わせることになるんだから
答えはでないでしょ
964デフォルトの名無しさん
2026/08/13(木) 13:24:32.74ID:YnMcjGbx structはメソッドを設けられる
goroutineはチャネルを設けられる
設けるとメッセージを受け取れるため
どちらもオブジェクトとしての条件を満たしている
goroutineはチャネルを設けられる
設けるとメッセージを受け取れるため
どちらもオブジェクトとしての条件を満たしている
965デフォルトの名無しさん
2026/08/13(木) 13:37:01.34ID:pdAcKRXu >>964
goroutineにチャネルは設けられないよ
goroutineは並行処理の単位でしかないからね
goroutineの上で何かを動かすことはできるけど
それはgoroutine上の何かがやってることでgoroutineは何もしてない
まな板の上で魚を捌けるけどまな板が魚を捌けるとは言えないでしょ
お魚さんがそう言ってました
goroutineにチャネルは設けられないよ
goroutineは並行処理の単位でしかないからね
goroutineの上で何かを動かすことはできるけど
それはgoroutine上の何かがやってることでgoroutineは何もしてない
まな板の上で魚を捌けるけどまな板が魚を捌けるとは言えないでしょ
お魚さんがそう言ってました
966デフォルトの名無しさん
2026/08/13(木) 13:47:31.97ID:Azd87Eut メソッドを持たないclassはオブジェクトですか?
チャネルを持たないgoroutineはオブジェクトですか?
classとgoroutineの立ち位置は同じかな
チャネルを持たないgoroutineはオブジェクトですか?
classとgoroutineの立ち位置は同じかな
967デフォルトの名無しさん
2026/08/13(木) 13:47:56.59ID:pdAcKRXu968デフォルトの名無しさん
2026/08/13(木) 13:57:14.35ID:DgufQVX8 恒等写を持ち、指示可能であればオブジェクトと考えてます。
969デフォルトの名無しさん
2026/08/13(木) 14:06:18.99ID:DgufQVX8 写->射。
登録しておかなきゃな。
データは自己同一性を持つし、指示可能であれば(データ)オブジェクトです。
このデータオブジェクト自身がメッセージに反応してれれば楽、というのがオブジェクト指向でしょう。
登録しておかなきゃな。
データは自己同一性を持つし、指示可能であれば(データ)オブジェクトです。
このデータオブジェクト自身がメッセージに反応してれれば楽、というのがオブジェクト指向でしょう。
970デフォルトの名無しさん
2026/08/13(木) 14:09:26.70ID:ZWCB+fEg 皆の意見をまとめると少なくとも
struct+methodは同期オブジェクト
coroutine+channelは非同期オブジェクト
ここまでは合意してるようね
struct+methodは同期オブジェクト
coroutine+channelは非同期オブジェクト
ここまでは合意してるようね
971デフォルトの名無しさん
2026/08/13(木) 14:15:11.98ID:wgoxHMXH goについては全く知らないので話題に参加するつもりはないのだけれど、同期 / 非同期がオブジェクトについての区別概念だと位置付けられるとちょっと引っ掛かりを覚える。
972デフォルトの名無しさん
2026/08/13(木) 14:23:55.33ID:DgufQVX8 実装論として同期/非同期はあっても、オブジェクト指向そのものではないと思う。
最強なのは現時点でtensor flowだと思っている。tensorをobjectとすれば、object flowだ。
最強なのは現時点でtensor flowだと思っている。tensorをobjectとすれば、object flowだ。
973デフォルトの名無しさん
2026/08/13(木) 14:26:43.98ID:SUbJY/Ng Go以外もコルーチンになってる非同期タスクは同じ立ち位置だからGo固有の話ではない
わかりやすい代表としてGroutineが出てきてるだけだろ
わかりやすい代表としてGroutineが出てきてるだけだろ
974デフォルトの名無しさん
2026/08/13(木) 14:33:06.42ID:pdAcKRXu975デフォルトの名無しさん
2026/08/13(木) 14:35:30.81ID:TMxGUo7v976デフォルトの名無しさん
2026/08/13(木) 14:39:12.95ID:pdAcKRXu977デフォルトの名無しさん
2026/08/13(木) 14:42:52.16ID:3yw+gA4E ほんとしょーもないスレの流れだけど、オブジェクト指向の話ってずっと昔からこうなんだよね
978デフォルトの名無しさん
2026/08/13(木) 14:43:59.46ID:pdAcKRXu >>975
当時の実装の限界が原因だったとするなら
いまのSmalltalkのメッセージパッシングは非同期になってないとおかしいよね
でもいまのSmalltalkでも同期だから当時の実装の限界だけが原因ではないとわかるでしょ
アホはお前
当時の実装の限界が原因だったとするなら
いまのSmalltalkのメッセージパッシングは非同期になってないとおかしいよね
でもいまのSmalltalkでも同期だから当時の実装の限界だけが原因ではないとわかるでしょ
アホはお前
979デフォルトの名無しさん
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
お前こそアラン・ケイの空想に実利を求めるなよ、現実見ろ
お前こそアラン・ケイの空想に実利を求めるなよ、現実見ろ
983デフォルトの名無しさん
2026/08/13(木) 15:43:56.27ID:gV1G4aKo 当時はともかく現状は非同期使わないと実用的ではない状況があるのだから、
同期だけに対応すればいいのは逃げでしょう。
同期だけに対応すればいいのは逃げでしょう。
984デフォルトの名無しさん
2026/08/13(木) 16:43:05.65ID:pdAcKRXu985デフォルトの名無しさん
2026/08/13(木) 16:45:27.84ID:L7dCP8zT986デフォルトの名無しさん
2026/08/13(木) 17:25:07.03ID:IH8EwqGv アランケイの時代と違ってCPUパワーありまくってんだから
手続き型のポーリング処理で多数のオブジェクト扱えてしまう時代
手続き型のポーリング処理で多数のオブジェクト扱えてしまう時代
987デフォルトの名無しさん
2026/08/13(木) 17:38:56.38ID:7YbFHBHY >>986
普通の企業ではなくお金が有り余っていてルーズな経営でも許されるところならそうなのね
普通の企業ではなくお金が有り余っていてルーズな経営でも許されるところならそうなのね
988デフォルトの名無しさん
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年、アラン・ケイのオブジェクト指向の概念が巷間に流布された
歴史的に見るとクラスが最も正当なオブジェクトなんよ
アラン・ケイのオブジェクト指向の概念はスピンオフみたいなもので
オブジェクト指向の本編ではないことに注意が必要です
1967年、最初のオブジェクト指向言語Simula 67が開発された
Simula 67にはクラス、オブジェクト、継承があった
1981年、アラン・ケイのオブジェクト指向の概念が巷間に流布された
歴史的に見るとクラスが最も正当なオブジェクトなんよ
アラン・ケイのオブジェクト指向の概念はスピンオフみたいなもので
オブジェクト指向の本編ではないことに注意が必要です
991デフォルトの名無しさん
2026/08/13(木) 20:07:13.59ID:pdAcKRXu オブジェクト指向の歴史を語ろうか
1967年、最初のオブジェクト指向言語Simula 67が開発された
Simula 67にはクラス、オブジェクト、継承があった
1981年、アラン・ケイのオブジェクト指向の概念が巷間に流布された
歴史的に見るとクラスが最も正当なオブジェクトなんよ
アラン・ケイのオブジェクト指向の概念はスピンオフみたいなもので
オブジェクト指向の本編ではないことに注意が必要です
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 オブジェクト指向が何だって?そんなウンチク糞の役にも立たねえ
さっさと仕事しろ!バカチンが
さっさと仕事しろ!バカチンが
995デフォルトの名無しさん
2026/08/13(木) 20:22:21.04ID:ld2wxsJZ C++みたいなゴミ言語をありがたがってる人に言われても
996デフォルトの名無しさん
2026/08/13(木) 20:23:28.72ID:beXELhsO >>995
ゴミのお前に言われても
ゴミのお前に言われても
997デフォルトの名無しさん
2026/08/13(木) 20:38:47.60ID:KM+mBY8f 非同期って言葉使う俺すごーいって陶酔して
自己満足でオブジェクト指向と関連つけているだけにしか見えん
要するに知的障害でもあるのかという感じ
自己満足でオブジェクト指向と関連つけているだけにしか見えん
要するに知的障害でもあるのかという感じ
998デフォルトの名無しさん
2026/08/13(木) 20:39:20.71ID:KM+mBY8f999デフォルトの名無しさん
2026/08/13(木) 20:44:17.79ID:eOBsoStn >>992
四季が近いね
四季が近いね
1000デフォルトの名無しさん
2026/08/13(木) 20:44:45.67ID:eOBsoStn 非同期オブジェクトの実現方法か
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 754日 22時間 52分 26秒
新しいスレッドを立ててください。
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
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.io/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.io/login
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【サッカー】U-21日本代表、韓国に敗れアジア大会銀メダル チケット完売の決勝戦…16年ぶり優勝逃す [ゴアマガラ★]
- 【野球】セ・リーグ G 2-5 DB [10/3] 阪神タイガース初のセ・リーグ連覇達成 DeNA5割以上確定 巨人2位でシーズン終了 [鉄チーズ烏★]
- 【実況】アジア大会 男子サッカー決勝 『日本 vs 韓国』 TBS系 19:30~ [冬月記者★]
- 【サッカー】アジア大会 決勝 U-21日本代表、韓国戦スタメン発表! 準決勝から10名を入れ替え 大関や横山を起用【TBS】 [阿弥陀ヶ峰★]
- 経済同友会、「金融所得課税の強化」提言…税・社会保険料の負担大きい年収400万円までの世帯支援に活用 [首都圏の虎★]
- 【北海道】登山中「体調不良で動けない」フランス語でSOS、60代くらいの外国人夫婦が遭難し女性死亡、みぞれ降る悪天候の武華山 北見 [ぐれ★]
- とらせん 見物 4
- 【U-NEXT/地上波ほか】アジア競技大会2026・サッカー競技総合 ★29【愛知・名古屋】
- 【U-NEXT/地上波ほか】アジア競技大会2026・サッカー競技総合 ★28【愛知・名古屋】
- 【U-NEXT/地上波ほか】アジア競技大会2026・サッカー競技総合 ★27【愛知・名古屋】
- とらせん 見物 3
- 巨専】
- 🏡しおめぐわんだーらんど👊👶🤜
- 【実況】博衣こよりのえちえちこんこよ高校2026-3年目春-🧪☆3
- サッカー決勝日本対韓国 [535650357]
- 【高市悲報】お前らが「ヤシガニ」について知っていること🤔 [616817505]
- 「ふじたことね」👈(・o・🍬)たこさん🐙見つけたのら~🏰
- 【高市悲報】過失割合自動車側7割、自転車側3割の事故がコチラwwwwwwwwww [856698234]