探検


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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2026/08/13(木) 14:38:03.02ID:pdAcKRXu
前スレ
オブジェクト指向はオワコン?
https://mevius.5ch.io/test/read.cgi/tech/1721393540/
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."
2026/08/24(月) 01:50:09.37ID:YY0Bkc3V
おっと、「無知の知」が何のことか知らないかもしれないが
2026/08/24(月) 01:52:28.36ID:YY0Bkc3V
>>772 それに
extent is a diarect of lifetime とか書いてあった?
2026/08/24(月) 01:53:40.31ID:tjHHW3WH
C/C++ではlifetimeおよびstoragedurationが正式用語だな

ISO/IEC 9899、JIS X 3010「プログラム言語C」
ISO/IEC 14882、JIS X 3014「プログラム言語C++」

オブジェクトは,その生存期間を決定する記憶域期間(storageduration)をもつ。
記憶域期間は,静的記憶域期間,自動記憶域期間,及び割付け記憶域期間の3種類とする。
オブジェクトの生存期間(lifetime)とは,オブジェクトに対して記憶域の確保が保証されている,プログラム実行の一部分をいう。
オブジェクトは,生存期間を通じて存在し,一定のアドレスをもち,最後に格納された値を保持する。
2026/08/24(月) 01:54:55.54ID:tjHHW3WH
C#でもいずれもlifetime

ECMA-334 "C# Language Specification"
JIS X 3015「プログラム言語C#」
Microsoft Docs
2026/08/24(月) 01:56:14.03ID:YY0Bkc3V
>>775
C++ Storage Extent (Variable Lifetime) とかさん散見するぞ

「正式用語」だとどこに明記されていた
2026/08/24(月) 01:59:02.21ID:YY0Bkc3V
こんなところにも書いてあった、きょうまで知らなんだ

ttps://www.cqpub.co.jp/try/kijidb/yougo/san.htm
2026/08/24(月) 02:01:08.78ID:+DQpda2q
ソース >>775 >>776 も出たから公式はlifetimeで確定やな
extentは非公式なのだろう
2026/08/24(月) 02:01:12.92ID:YY0Bkc3V
知らないんだよ。それをないない言ってんだよ
アホだから
2026/08/24(月) 02:03:29.13ID:YY0Bkc3V
知らないのは、まあしょうがない

知らないことを、無いことだと決めつけるのは、いわゆるバカ
2026/08/24(月) 02:03:29.42ID:+DQpda2q
ID:YY0Bkc3Vがextentの公式ソースを出せればまだ逆転のチャンスもある
現状では公式はlifetimeが示されてる
2026/08/24(月) 02:05:27.53ID:YY0Bkc3V
>>782
そういうのを悪魔の証明っていうんだよ
「宇宙人がいないと証明してみと」など
子どもが口喧嘩でよく使う詭弁だよ
784デフォルトの名無しさん
垢版 |
2026/08/24(月) 02:07:42.66ID:PTJtZFr3
どうやら分かったぞ
変数extentはLispの方言らしい
他ではlifetime
だからISOやJISなど公式はlifetimeになってるとのこと
2026/08/24(月) 02:09:52.22ID:YY0Bkc3V
C、C++、C# などの言語で、extent も life timeもしばしな使われる
しかしどっちが公式用語だと定義した公式文章は
目にしたことはない

それを知らない人が「extentと言わない」と言っているだけ
以上だ
2026/08/24(月) 02:11:38.13ID:PTJtZFr3
>>785
既に公式ソースでlifetimeと示されてるのだからあきらめなされ
2026/08/24(月) 02:12:21.93ID:YY0Bkc3V
変数のextentはLispの方言か? - Google 検索
https://www.google.com/search?q=%E5%A4%89%E6%95%B0%E3%81%AEextent%E3%81%AFLisp%E3%81%AE%E6%96%B9%E8%A8%80%E3%81%8B%EF%BC%9F&hl=ja&source=hp

違います。変数のエクステント(extent)は、Lispの方言ではなく、プログラミング言語一般で使われる「変数の生存期間(メモリ上に存在し続ける時間)」を表す専門用語です。 [1, 2]
多くの場合、空間的な有効範囲である「スコープ(scope)」と対比して使われます。 [3, 4]
## スコープとエクステントの違い

* スコープ (Scope): 変数名がコード内のどこから見える(アクセスできる)かという空間的な範囲(有効範囲)
* エクステント (Extent): 変数がメモリ上で存在し続ける(値が保持される)時間的な長さ(生存期間/ライフタイム) [1, 2, 4, 5]

## 主なエクステントの種類

* 動的エクステント (Dynamic extent): その束縛を作ったフォームや関数を実行している期間だけ存在するもの
* 実質的無限エクステント (Indefinite extent): 関数を抜けた後も、データが参照され続ける限りメモリに残り続けるもの(クロージャなど) [5, 6, 7]

Lisp(特に[Common Lisp](https://ja.wikipedia.org/wiki/Common_Lisp)など)の仕様書(ANSI Common Lispなど)で「スコープとエクステント」が明確に定義されて詳細に解説されているため、Lisp特有の概念のように誤解されやすいですが、元々は計算機科学の一般的な用語です。 [5, 8]
より詳しく知りたい内容はありますか?

* Common Lispでの厳密な定義と解説
* 他の言語(CやPythonなど)での生存期間との比較

知りたいアプローチを選んで教えてください。

(リンク略)
2026/08/24(月) 02:13:29.60ID:YY0Bkc3V
せめてさ、無知の知にくらい至れよ

そうじゃないとサル以下の知性だぞ
2026/08/24(月) 02:14:26.30ID:YY0Bkc3V
自分がサル以下の知性だと示すのに
何でこんなにレスを長引かせるかな
2026/08/24(月) 02:14:44.27ID:PTJtZFr3
>>785
あともう一点
extentとは言わない、と言われてるのではなくて
変数を伴わなければextentにそんな意味はない、でしょ
そこを改変したらダメよ
2026/08/24(月) 02:17:51.26ID:44BTsNfK
少なくともC++で動的extentと言ったら配列などの要素数が実行時に決まること
std::dynamic_extentとして公式に定義されてます
2026/08/24(月) 02:18:35.16ID:YY0Bkc3V
>>790
またいい加減なことを
そしたら「Storage Extent bound from a symbol」とか普通に言うけど
どうすんのよ
2026/08/24(月) 02:19:33.13ID:YY0Bkc3V
>>791
あれは名前で誤解を受ける人が多いと今回思った
2026/08/24(月) 02:21:01.31ID:YY0Bkc3V
何であんな名前にしたんだろう
由緒を知らん
2026/08/24(月) 02:21:38.07ID:KXRsacg9
CもC++も規格で決まっていてISO/IECとJISになってるよ
もちろん公式にlifetime
■ このスレッドは過去ログ倉庫に格納されています

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