探検


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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2026/08/13(木) 14:38:03.02ID:pdAcKRXu
前スレ
オブジェクト指向はオワコン?
https://mevius.5ch.io/test/read.cgi/tech/1721393540/
2026/08/23(日) 17:59:19.29ID:M+PVsTq+
何となく雰囲気は分かるんだけど、説明なしに使えるほど共通理解が成立している語ではないような気がするけどなぁ……。率直なところ、>>656の「動的インスタンス(動的extent)」と>>663の説明も整合してないように思うんだが。スコープなんかも名前空間の意味で使っている人が居たりするし、ここら辺の語は問題が起きたら意味のすり合わせをした方が無難だと思うよ。
2026/08/23(日) 18:01:33.96ID:HWzbbtqX
>>673
なんとなくしかわからないならほんと勉強を基礎からひっしにやらないとまともなエンジニアのレベルに追いつかないぞ
それはお前自身のことだから百歩譲ってまかせるとしてだな
自分が無知なのに他人が悪いみたいなに絡むのはなぜじゃ
せいかくもくさっているのか?
2026/08/23(日) 18:02:55.68ID:EWaz+NdE
>>670
それは変数のextentだね
最初からそう言いなさい
C++20で導入された動的extentは別の意味
動的extentだと各自が脳内に思い浮かべることが異なることをようやく理解できたかな?
2026/08/23(日) 18:03:08.49ID:HWzbbtqX
いんすたんすにだって変数と同様にlife timがあるだろうに
馬鹿垂れが!
なんとなくとはなんだなんとなくとは
そんなんで開発してたら周りに迷惑かけるぞ
2026/08/23(日) 18:05:17.28ID:EWaz+NdE
>>676
変数のextentを言いたかったのではないの?
それはインスタンスのextentとは同一でないよ
2026/08/23(日) 18:06:42.18ID:HWzbbtqX
>>675
>C++20で導入された動的extentは別の意味

あのなあ、変数やobjectのextentは、高水準言語が深化した
数十年前からあるプログラミングの基本概念なの

おまえがC++20について言っているような「特定の言語でのみ通用する用語」ではないの
2026/08/23(日) 18:08:38.48ID:HWzbbtqX
>>677
ばかw
何て言ったらいいんだ、こういう馬鹿にw
extentはstatic extentを持ちglobal scopeを持つ変数またはオブジェクトの宣言
2026/08/23(日) 18:10:26.18ID:HWzbbtqX
>>679 誤記
× extentはstatic extentを持ちglobal scopeを持つ変数またはオブジェクトの宣言
○ externはstatic extentを持ちglobal scopeを持つ変数またはオブジェクトの宣言

自分がたまたま知っている擁護に、知らない概念を無理と対応付けないほうが良い

キミ、ソフトウエアに適正ないかも知れない
2026/08/23(日) 18:12:00.07ID:kSpVm1vf
>>679
>> extentはstatic extentを持ちglobal scopeを持つ変数またはオブジェクトの宣言

唐突に何だそりゃ?
extentに限定詞が付かないと静的グローバルだと??
2026/08/23(日) 18:12:03.63ID:HWzbbtqX
オブジェクト信奉者って、こういうレベルの層が多いんだろうな
どうりでぐちゃぐちゃなコードが量産されるわけだ
2026/08/23(日) 18:13:38.09ID:kSpVm1vf
>>680
externキーワードがありそういった宣言が可能な言語の話をしてる?
一般用語ではないからそれでは混乱するぞ
2026/08/23(日) 18:14:25.88ID:HWzbbtqX
>>681
>>680 でexternに誤記訂正してるけど
○ externはstatic extentを持ちglobal scopeを持つ変数またはオブジェクトの宣言
それでも、意味わかんないだろw

少しプログラミングを勉強してある人にはわかるハズのことなんだけれどもね
2026/08/23(日) 18:15:21.58ID:/SMVVWF/
まあ、クラスなんてネームスペースだけあれば良いかったんだよね
2026/08/23(日) 18:16:47.20ID:HWzbbtqX
>>683 きみ、かわいそうなくらいど素人だね。
プログラミンのみならず、頭の回転も悪いみたいだし
ここでextern, extent, scope, static, global それぞれ何か長々説明しろっていうのか?
もう笑うしかない
子ども電話相談室じゃないぞw俺は
2026/08/23(日) 18:16:52.87ID:aJFAwnCP
俺は理解できたよ
ID:HWzbbtqXは脳内に勝手な想定や限定や仮定が存在するがそれを言語化して他人に伝えることができない典型的なダメ人間であると
2026/08/23(日) 18:18:01.59ID:HWzbbtqX
>>685
namespaneはscopeを区切るだけなんだよ
extentには関係ない。

オブジェクト信奉者って、こういうレベルの層か
2026/08/23(日) 18:19:29.44ID:HWzbbtqX
>>687
また変な人が出て来たw
2026/08/23(日) 18:19:36.72ID:aJFAwnCP
>>688
それは正しい
これまでの発言はダメ
2026/08/23(日) 18:20:02.90ID:HWzbbtqX
>>690
理解できなかっただけだろ
2026/08/23(日) 18:20:26.21ID:/SMVVWF/
>>688
は?
関係ないが?
何言ってんの君
2026/08/23(日) 18:21:40.52ID:HWzbbtqX
ひえー
ど素人たちに取り囲まれたw
2026/08/23(日) 18:23:17.74ID:M+PVsTq+
>>663と>>670でも説明がズレているように、多義的に使われうる語なんだから、疑義が出たら自分がどの意味で使っているのかは説明した方がいいというだけのことなんだが。
プログラミング一般の用語としてスコープとエクステントを対置するというのはまぁ分かるけど、そこにいきなりexternが出てくるというのは正直よく分かんないな。
2026/08/23(日) 18:28:26.49ID:H8lujsG7
複数の異なる意味がある用語を使ってしまうことはよくあること
それを指摘されたらこの意味だと説明することで会話や会議や商談が進む
今回のような逆ギレで暴れる人は嫌われる
2026/08/23(日) 18:29:14.42ID:H8lujsG7
>>694
同感
2026/08/23(日) 18:31:33.29ID:HWzbbtqX
>>695
extenの概念すら知らないで何でそんなに偉そうなの?
2026/08/23(日) 18:33:16.99ID:/SMVVWF/
慌てず綴りくらいちゃんと書いて
2026/08/23(日) 18:38:25.76ID:HWzbbtqX
>>698
そうだな。

extentやscopeも知らずにオブジェクト指向を語るって
どういうことよ?
2026/08/23(日) 18:46:38.55ID:/SMVVWF/
つか全く別の話だよね?
701デフォルトの名無しさん
垢版 |
2026/08/23(日) 18:47:53.90ID:+EvqEEFr
extentは範囲や程度を意味する一般的な単語なのでプログラミング分野に限っても多様な意味で使われている
今回の「動的extent」も指摘があったようにC++では「動的な範囲」を持つこと意味する
つまり配列などの要素数が静的ではなく実行時に決まることを表している
2026/08/23(日) 18:49:09.14ID:HWzbbtqX
>>700
いや関連があってすごい重要なんだよ、わかりませんか。

それがワカルとこれまで流行ってきたオブジェクト指向の問題点の
ある面がまずかったと感じられる
2026/08/23(日) 18:51:43.25ID:HWzbbtqX
もう初歩からの質問があってもご遠慮したい
俺にとって発展性がない
2026/08/23(日) 18:52:47.67ID:/SMVVWF/
時間と空間の違いって解釈したんだが
705デフォルトの名無しさん
垢版 |
2026/08/23(日) 18:53:31.71ID:+EvqEEFr
ID:HWzbbtqX氏はextentを時間的な範囲つまり期間だけを指すと誤解していると思われる
2026/08/23(日) 18:53:46.51ID:HWzbbtqX
「範囲や程度を意味する」って何よw
2026/08/23(日) 18:55:42.10ID:HWzbbtqX
>>704
あるいみそうとも言えるけど、もっと併用な日本語なら
見える範囲と存在基幹という言い方が適するかな

>>705 それがまさにextentの概念だよ
2026/08/23(日) 18:56:19.44ID:/SMVVWF/
グーグルAIの答えは
プログラム言語(プログラミング)における extent と scope は、どちらも変数やオブジェクトが「どこで、いつまで有効か」を扱いますが、概念が明確に分かれています。一言で言うと、scope は「場所(空間)」であり、extent は「時間(寿命)」です。
2026/08/23(日) 18:56:22.27ID:HWzbbtqX
程度を意味する
…なんだろう
2026/08/23(日) 18:57:28.00ID:HWzbbtqX
>>708
そのとおりじゃん。
それを君らは知らず無頓着に日ごろプログラム書いてんのかとあきれたわけよ
2026/08/23(日) 18:59:22.70ID:HWzbbtqX
君らにお願いだけど、基礎的な概念については教科書やWEBや生成AIで勉強してから
議論に臨んでほしい
2026/08/23(日) 18:59:35.65ID:/SMVVWF/
で、scopeはプログラム書く時に静的に決めるけど、extentはそれこそ動的に決まるからコード上で静的に書くには別のやり方になるんじゃないの?
2026/08/23(日) 19:00:03.42ID:VaEt5gsH
ぶっちゃけ一部のお爺ちゃんしか知らない死語
分類法が微妙すぎて意味をなさなくなったんじゃねーのかな
714デフォルトの名無しさん
垢版 |
2026/08/23(日) 19:01:09.45ID:+EvqEEFr
>>707
違う
extentは広さや範囲を意味する単語
時間の範囲を意味することもあるがそれは期間などの限定を添えなければ伝わらない
C++のdynamic extentは期間ではなく領域のサイズが実行時に決まること
2026/08/23(日) 19:01:17.90ID:HWzbbtqX
>>712
まったくちがうよ
これだけかいたのに無駄だった、もういいよ君は


>>713
コンパイラーの専門書などでは普通に使われているよ
2026/08/23(日) 19:03:31.08ID:HWzbbtqX
>>714
そりゃC++ 20のdynamic_extenの固有な話だろ
なぜextentという単語を使ったかはよく分からんが、extent「も」制御しているからかな
2026/08/23(日) 19:03:36.23ID:/SMVVWF/
>>715
そんな答えじゃ誰も分からないんだけど?
2026/08/23(日) 19:05:39.03ID:/SMVVWF/
概念が違う同士が平行線でw
2026/08/23(日) 19:05:55.80ID:HWzbbtqX
dynamic(allocation)&extent(control???)みたいな意味かね
どこぞに原点があるかもな しらんが
2026/08/23(日) 19:07:43.35ID:HWzbbtqX
>>717
俺に分かんねワナンネって子ども電話相談室みたいに言ってないで
プログラミング言語におけるscopeとextentの基礎について丁寧に調べてくれないかな
2026/08/23(日) 19:08:39.59ID:/SMVVWF/
>>720
だから調べたけど、君と概念が違うんだけどw
722デフォルトの名無しさん
垢版 |
2026/08/23(日) 19:09:32.49ID:GL/OuKQX
>>656
動的インスタンスってなんですか?
その話で静的インスタンスと区別する必要あるの?
2026/08/23(日) 19:09:53.75ID:HWzbbtqX
>>721 調べた結果得られた答えが これか
「scopeはプログラム書く時に静的に決めるけど、extentはそれこそ動的に決まるからコード上で静的に書くには別のやり方」
2026/08/23(日) 19:10:54.08ID:HWzbbtqX
>>722
googleでもいいいから基礎概念はまず調べて
2026/08/23(日) 19:11:21.84ID:/SMVVWF/
>>723
コードを時系列に並べる書き方って確立かれてないから面倒だなぁってw
2026/08/23(日) 19:13:14.31ID:HWzbbtqX
日本語おk?
2026/08/23(日) 19:15:01.58ID:/SMVVWF/
オブジェクトがある時間存在してるかどうかを保証する方法ってどう書くんだろ?
2026/08/23(日) 19:17:12.81ID:/SMVVWF/
先祖がヌルポと戦って来た歴史から未だに解決しない問題だよぉ
729デフォルトの名無しさん
垢版 |
2026/08/23(日) 19:26:03.06ID:s5u0XSsl
extentの英語の意味は「広さ」「広がり」がベースで「範囲」「限度」「程度」を意味する単語だよ
そこに時間的な意味は含まれてない
むしろ空間的な意味が原義
だからプログラミング言語によっては時間的な意味では使われない普遍的な単語
2026/08/23(日) 19:27:21.45ID:/SMVVWF/
>>729
>>708
2026/08/23(日) 19:29:47.73ID:HWzbbtqX
ttps://nolongerset.com/scope-vs-extent-in-vba/
2026/08/23(日) 19:30:28.92ID:HWzbbtqX
ttps://www.lix.polytechnique.fr/~liberti/public/computing/prog/lisp/cltl/clm/node43.html
2026/08/23(日) 19:31:32.62ID:HWzbbtqX
もう、子ども電話相談室のオジサンとかコテ張るかw

しないけどw
734デフォルトの名無しさん
垢版 |
2026/08/23(日) 19:34:50.96ID:s5u0XSsl
>>730
C++の場合
静的なextentは静的に広がりが決まる連続体のこと
動的なextentは動的に広がりか決まる連続体のこと
前者は具体的な要素数がコンパイル時に決まるので具体的な要素数を書く場所で
後者は具体的な要素数がコンパイル時に決まらないことを示すstd::dynamic_extentを使うんだよ
2026/08/23(日) 19:38:42.12ID:HWzbbtqX
「広がり」っていう言葉が適しているのか?
2026/08/23(日) 19:39:06.05ID:M+PVsTq+
英単語としてのextentは程度・範囲という意味であり、プログラミング一般用語として、scopeと対置的に用いられる場合のextentは、名前束縛やオブジェクトの「寿命・ライフタイム」の意味で用いられるのが一般的。決して死語とかではなくて、今でも使われる重要な基本概念といえる。ここら辺までは一応共通理解といって良いと思う。
そこから進んで(ライフタイムの意味の)extentの分類として>>670で挙げられているような自動/動的/静的という三分法が、説明なしで通用するほど一般的な共通理解かというとちょっと疑わしくて、C言語的な感覚からはこの三分法はわかりやすいのだけど、たとえば>>663は三分法でいうところの自動extentの意味で、動的extentという語を用いているように見える。だから疑義が出たら説明の必要があるくらいの概念だと思うけどね。

この手の話でいうと、個人的にはスコープ(プログラムテキストの範囲)と名前空間(名前束縛の集合)の概念が混用されがちなのが気になることが多いかな。文脈でわかると言えば分かるんだけど。
2026/08/23(日) 19:39:17.56ID:/SMVVWF/
どのAIに聞いても
scopeは空間で、extentは時間(期間)
だって答えるよ
2026/08/23(日) 19:40:21.35ID:HWzbbtqX
C++ std::dynamic_extent 広がり 連続体 - Google 検索
ttps://www.google.com/search?q=C%2B%2B+std%3A%3Adynamic_extent+%E5%BA%83%E3%81%8C%E3%82%8A+%E9%80%A3%E7%B6%9A%E4%BD%93&hl=ja

「広がり」 「連続体」 検索で見当らないが
造語?
2026/08/23(日) 19:41:42.55ID:vGPmWGdI
lifetimeでええやん
2026/08/23(日) 19:41:52.22ID:HWzbbtqX
>>737
そうだな。
そこに疑い持つ段階で、ああこの人素人なんだなと
バレちゃうわけよ
2026/08/23(日) 19:42:00.06ID:/SMVVWF/
静的extentってもプログラムの生存期間とイコールなだけだよなぁ
2026/08/23(日) 19:44:03.25ID:HWzbbtqX
>>739
なんかねぇ言語処理系の分野ではextentってよくいうのよ
lifetimeの方が砕けた言い方になるけど
たぶん Bindも含めて論じてたからじゃないかなと想像してる
2026/08/23(日) 19:45:42.76ID:HWzbbtqX
>>741
基本的にはその通りなんだけれど、
ただし動的メモリ管理の言語のsymbolへのBindの話だとちょっとちがってくる
まぁコマけーこたー君らには関係ないかもだけど
2026/08/23(日) 19:50:31.78ID:LyvdCiRX
四種類あります

【Static lifetime】
プログラム開始から終了まで存在する。
静的変数やグローバル変数が該当。
メモリはプログラムのロード時に確保され、終了時に解放される。
例(C言語):
static int counter = 0; // プログラム全体で生存

【Automatic lifetime】
関数やブロックの実行中だけ存在する。
ローカル変数(スタック上に確保される)が該当。
関数終了時に自動的に解放される。
例(C言語):
void func() {
int x = 10; // 関数終了と同時に消える
}

【Dynamic lifetime】
実行時に明示的に確保し、明示的に解放するまで存在する。
ヒープ領域を使う動的メモリ確保が該当。
例(C言語):
int *p = malloc(sizeof(int)); // 確保
*p = 42;
free(p); // 解放

【Temporary lifetime】
式の評価中だけ存在する一時オブジェクト。
C++ 等の一時オブジェクトや、関数の戻り値として生成される値など。
例(C++):
std::string s = std::string("Hello") + " World"; // 加算結果は一時オブジェクト
2026/08/23(日) 20:01:56.91ID:HWzbbtqX
>>744
その分類では、C,C+の演算過程の値や関数の戻り値を第4のTemporary lifetimeとして分類しているけど
それらは通常CPUレジスタ上に割付けられる。

構造体を返す関数の戻り値は、言語処理系の設計ポリシーにより何種類かあるが
・レジスターにのせて返せるものはレジスターで返す
・callee側に隠れ静的領域を確保しておいてそこに構造体戻り値を格納しポインターをかえす(再帰呼び出し不可)
・caller側の変数領域に隠れ領域を確保しておいてそのpoinerをcaller - callee間の隠れ引数でやり取りする
など、

したがって、バイナリレベルで厳密に見ると、演算過程の値や関数の戻り値は
ちょっと違ったextentをもつともいえる
2026/08/23(日) 20:03:31.84ID:HWzbbtqX
まあいいやこういう議論ができる椰子を5chですっかり見かけなくなったな
最近は素人バッカで寂しいことだ
2026/08/23(日) 20:08:24.38ID:LEbYCREd
>>745
アホか
それは特定の実行環境における特定の実装方法に過ぎない
それらのライフタイムの概念は抽象的なものだぞ
2026/08/23(日) 20:10:03.03ID:HWzbbtqX
>>747
だからバイナリレベルでって書いてるだろ
再帰呼び出し不可とか蒸発しちゃうとか色々違いがあるんだよ
2026/08/23(日) 20:10:42.58ID:/SMVVWF/
で、そのそれぞれのextentを安全に扱える事を保証する書き方ってあるの?
ってのが>>712
2026/08/23(日) 20:12:21.25ID:HWzbbtqX
そりゃまた全然別の話だな
安全に扱える事の保証まで話を飛ばした覚えはないぞ
2026/08/23(日) 20:17:01.44ID:nqebcotO
>>749
Rustのlifetimeの概念は存在する場所を指す参照の有効性まで保証するためメモリ安全性まで保証される
2026/08/23(日) 20:19:52.55ID:/SMVVWF/
>>751
ほぇ〜
ちょっとRust習って来る
2026/08/23(日) 20:29:57.00ID:/SMVVWF/
Rustはオブジェクト指向言語じゃ無いとか言ってるけど、全然オブジェクト指向じゃん
なんだよ騙されたわ
2026/08/23(日) 20:43:32.46ID:bYMp4j3g
>>753
何を勘違いしてる?
Rustは公式にオブジェクト指向プログラミングを名乗りサポートしている言語

Rust公式本 第18章
Object-Oriented Programming Features
https://doc.rust-lang.org/book/ch18-00-oop.html
2026/08/23(日) 21:07:13.20ID:8BxqUOBF
>>753
Rustはオブジェクト指向言語として秀逸で書きやすいよ
クラスはなくクラス継承機能は排除されているためそこがらみの諸問題に陥らずに済むよ
756デフォルトの名無しさん
垢版 |
2026/08/23(日) 21:37:34.30ID:QvCbW4h1
マルチパラダイム言語だよ
2026/08/23(日) 22:28:26.34ID:ZAzIf/3C
多くの言語がマルチパラダイムなので機能的に備えているかどうかの話になる
Rustはオブジェクト指向プログラミングや関数型プログラミングなど多数に分類されている
2026/08/23(日) 22:50:38.05ID:RAuysaEg
>>599 java
https://ideone.com/pC1BHy
・OOP名物の(?)継承でなんとかするやつ
・あんまりなんとかしようとしすぎると苦しいやつ
2026/08/23(日) 22:54:24.86ID:FmydbG/s
で結局>>656の「動的インスタンス(動的extent)」のくだりは何が言いたかったわけ?
動的なインスタンスじゃなく静的なインスタンスならプログラムを表すモデルとして適していたということなの?
2026/08/23(日) 23:28:35.98ID:pEBnUgcx
静的なインスタンスって何?
コンパイル時点でインスタンスを生成すること?
2026/08/23(日) 23:49:43.23ID:FmydbG/s
>>760
俺もわからないよ
動的インスタンスと書いてあるからには静的インスタンスがたぶんあるんだろうと
そこが分かれば何が言いたかったのか少しは理解できるのかもしれないという期待を込めて聞いてる
2026/08/24(月) 00:01:55.87ID:fk+XdLZ4
>>715
>コンパイラーの専門書などでは普通に使われているよ
何ていう本?
有名どころ5〜6冊調べてみたけど1冊も使われてなかった
少し古めのやつでもみんなlifetimeという用語だった
2026/08/24(月) 00:25:28.72ID:7vbS4728
文脈から言えば、おそらく
静的インスタンス=静的extentを持つインスタンス、
動的インスタンス=動的extentを持つインスタンスで、
動的extentの意味については>>670または>>630に依拠するということなんだろうと思うけど。
>>656の文脈で妥当な用語かどうかは何とも。
2026/08/24(月) 00:26:58.71ID:7vbS4728
失礼、630じゃなくて>>663だね。
2026/08/24(月) 00:33:36.60ID:XdmkfJiJ
>>763
Google検索に依拠はおかしいだろ
C++の動的extentが出て来て動的サイズの意味になる
lifetimeの意味ではなくなるぞ
2026/08/24(月) 01:13:41.24ID:7vbS4728
>>765
あくまでも寿命・lifetimeの意味の中での話なので、>>663について言えば「関数や処理の実行が始まってから、その処理が終了してスコープを抜けるまでの間だけ存在・有効である期間」の部分ということになるんでしょ。>>670でいう(変数のextentだけど)自動extentに相当するやつ
2026/08/24(月) 01:35:33.81ID:YY0Bkc3V
>>670
>エクステントの種類
>静的エクステント(Static):プログラムの開始から終了までずっとメモリに存在します。
>自動エクステント(Automatic):関数やブロックの実行が始まった時に作られ、終わると消えます。
>動的エクステント(Dynamic):プログラムの実行中に明示的な割り当てと解放を行って管理します。
2026/08/24(月) 01:35:52.80ID:Oc4AU0Vk
>>766
変数のextentならわかる
変数を伴わずにその意味のextentの用例はない
変数のextentと言うべきだ
2026/08/24(月) 01:37:01.20ID:Oc4AU0Vk
>>767
エクステントにそんな意味はない
2026/08/24(月) 01:44:46.87ID:YY0Bkc3V
ttps://en.wikipedia.org/wiki/Scope_(computer_programming)

ttps://prl.khoury.northeastern.edu/blog/2019/09/05/lexical-and-dynamic-scope/
2026/08/24(月) 01:48:27.94ID:YY0Bkc3V
自分が知らないことだからと言って
この世にそんなことは存在しないというのは
無知の知にすら至っていないということ
2026/08/24(月) 01:48:54.26ID:HGyeQfyA
extentは方言なのよ
もちろん公式にはlifetime

ISO/IEC 9899:2017. p.30
"The lifetime of an object is the portion of program execution during which storage is guaranteed to be reserved for it."
■ このスレッドは過去ログ倉庫に格納されています