探検


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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2026/08/13(木) 14:38:03.02ID:pdAcKRXu
前スレ
オブジェクト指向はオワコン?
https://mevius.5ch.io/test/read.cgi/tech/1721393540/
577デフォルトの名無しさん
垢版 |
2026/08/22(土) 20:54:26.25ID:MVi0Z0Uj
>>576
やるじゃん
2026/08/22(土) 21:01:59.15ID:oTrAIGCX
>>576
2つの問題
手動組み合わせよりも漏れが起きない自動計算へ
固定一覧の内蔵よりも外から任意の注入へ
2026/08/22(土) 21:05:27.36ID:qikEO/T7
まだやってんの?
暇だねぇ
2026/08/22(土) 21:06:49.77ID:T7yt1axc
あいまいな仕様から、あくまでも圏論的オブジェクト指向設計の例なので、
めんどーなことは、やらん。なんにしても酔っていて眠い。寝ると思う笑。
2026/08/22(土) 22:14:47.24ID:pI2Hq+2i
>>574
errorやpathやtest dataなどとりあえず&'static strはよくあるけど変更の対応は大した手間ではないよ
2026/08/22(土) 23:33:06.51ID:Y7IH6tUx
>>580
外から受け取り算出する設計に変えないと
見るに堪えないコードになってるよ

内部がこのマジックナンバーとか
private int gcd15015() {
var num1 = this.value;
var num2 = 15015;

この大量の手書きとか
Map.entry(3 * 5 * 7 * 11, "FizzBuzzPopJazz"),
Map.entry(3 * 5 * 7 * 13, "FizzBuzzPopRock"),
Map.entry(3 * 5 * 11 * 13, "FizzBuzzJazzRock"),
Map.entry(3 * 7 * 11 * 13, "FizzPopJazzRock"),
Map.entry(5 * 7 * 11 * 13, "BuzzPopJazzRock"),
Map.entry(3 * 5 * 7 * 11 * 13, "FizzBuzzPopJazzRock")
2026/08/22(土) 23:40:54.46ID:qikEO/T7
>>576
頭悪w
組み合わせで済むだろうにw
2026/08/23(日) 01:30:12.22ID:iasgGq5L
へんな時間に寝たのでいちど起きてしまった。
ふ。仕様を逸脱しないようにすると全部書かざるを得ないわけよ。
仕様の不備はおれのせいじゃない、確認したしな。
こういう頭の悪いクライアントは多い。さてまた寝よう。
2026/08/23(日) 01:43:05.40ID:6kU/xY28
>>584
仕様は簡単
自然数を1から順に文字列へ変換せよ
3で割り切れる時はFizz
5で割り切れる時はBuzz
7で割り切れる時はPop
11で割り切れる時はJazz
13で割り切れる時はRock
17で割り切れる時はFolk
それぞれを順に並べたものとする
例えば255はFizzBuzzFolkへ変換せよ
いずれにも該当しないときは自然数そのまま文字列にせよ
586デフォルトの名無しさん
垢版 |
2026/08/23(日) 09:34:37.37ID:F3OUjFLN
>>584
文字列の結合を静的にやるか動的にやるかは設計判断

こういう手順でこうしろと仕様で書かれてるとおりにやればできるならそれはただの作業であって設計ではない

将来を見越して未知のものに判断を下すのが設計、その設計の指針となるのが保守性など

君は文字列を静的に結合してコードに直書きする設計をした
君の設計は条件の追加のコストが高くつくものだった
それが事実

仕様が悪い、クライアントの頭が悪いと言っているけど実際は君の頭が悪い
2026/08/23(日) 09:39:21.38ID:RCO/sdz3
そもそもFizzBuzzJazzなどの結合文字列なんか用意する必要はないよな
たまたまFizzとBuzzとJazzだけで割り切れた時に順に追記してFizzBuzzJazzが自然に生成されるだけだよな
588デフォルトの名無しさん
垢版 |
2026/08/23(日) 09:41:36.69ID:F3OUjFLN
>>585
余裕でした
https://paiza.io/projects/EQ6Ekb-JbXcRHV3gg290tg
2026/08/23(日) 09:51:42.61ID:SzWuQqoT
>>588
最悪なコードだな
漏れがあるかどうかも不明
保守性も悪い
590デフォルトの名無しさん
垢版 |
2026/08/23(日) 10:24:03.77ID:F3OUjFLN
>>589
そういうこと言うな、言わん方が良い、お前のためだ
2026/08/23(日) 10:40:47.40ID:M+PVsTq+
こんな感じのダサいけど読みやすいコードじゃダメなん? Pythonユーザーはこんな感じで書く人が多いんじゃないかなと思うんだけど。
https://www.ideone.com/h3xXoq
2026/08/23(日) 10:47:39.45ID:Dec9exUR
>>591
それだと本来のFizzBuzzが動かないので失格
いくつまで処理するのか何を表示するのかは外部から与えられる
形式は自由でいいけど3→Fizzと5→Buzzが与えられた時は本来のFizzBuzzの動作
2026/08/23(日) 11:00:54.37ID:M+PVsTq+
こういうこと? 仕様を外部から与えられる方が柔軟なのはわかるけど、読みづらいから個人的にはあまり好きではないかな。
https://www.ideone.com/zSoAzy
2026/08/23(日) 11:18:44.40ID:/SMVVWF/
おまえらコバロより劣るコード書いてんじゃんwww
2026/08/23(日) 12:00:59.91ID:iH5V9eFJ
>>591
generatorにする必要ないでしょ

for i in range(1, 21):
 print( fizzbuzz(i) )

spec/ruleを受け取るときは1回だけ処理するために
generatorにするのもありかもしれないけど>>593はそうなってない
2026/08/23(日) 12:13:29.29ID:iasgGq5L
>>587
そういう考えで勝手に仕様を変更されるからバグが発生するのですよ。
仕様どおりに作らないと検収もあがらない。
2026/08/23(日) 12:16:09.07ID:iasgGq5L
マジックナンバーは、このマジックナンバーの意味がわからないやつは触れるべからずという呪文。
2026/08/23(日) 12:21:27.38ID:/SMVVWF/
>>596
仕様が誤りって事もあるんだよ?
2026/08/23(日) 12:30:15.64ID:iH5V9eFJ
特定のリニアな変化に対する局所最適化の話だけになってるから
もう少し違うバリエーションを考えたら?
よくあるのはこういうやつ
- Variation according to digits
- 7Boom
- Fizz-Buzz-Woof
https://xapn.github.io/fizz-buzz/#fizz-buzz-variations
2026/08/23(日) 12:31:16.30ID:iasgGq5L
>>568
だからこそ、確認を取ったにもかかわらず、その仕様でGOされたわけ笑
2026/08/23(日) 12:32:45.51ID:LXYwYlQF
バカな船頭が自己満で繰り広げたゴミコードの墓場だね
602デフォルトの名無しさん
垢版 |
2026/08/23(日) 12:39:24.70ID:F3OUjFLN
>>600
君のいう仕様とはどういうこと?
どう実装すればいいかを他人に教えてもらうことが仕様なの?
君は自分ができなかったことを他人のせいにしてるだけだよ
2026/08/23(日) 12:39:48.34ID:M+PVsTq+
>>595
必要というか、fizzbuzzという概念の捉え方次第じゃない? 上の方の例では大体、1, 2, Fizz, 4,... という出力をするものとしてfizzbuzz概念が捉えられているみたいだったから、Pythonで表現するときにgeneratorにするのは比較的自然な考え方だと思うけど。
595のように、単一の数値を単一の文字列に変換する関数・ルールとしてfizzbuzz概念を捉えるのであれば、それはそれでありだとは思うけど、それだけの話なのでは?
2026/08/23(日) 12:45:26.71ID:DMCqliCM
クソみたいな他人の作った仕様でゴミみたいなサンプルコード書くんじゃなく、自分が普段使いできる簡単なツールでも作れよ
今時の小学生ですら簡単なゲームくらい作ってるんだぞ。情けないなあ
2026/08/23(日) 12:47:28.81ID:/SMVVWF/
最小公倍数の範囲で繰り返すだけの出力処理にオブジェクト指向もなにもあったもんじゃ無いだろ
もう使ってる処理言語がオブジェクト指向言語なんだからそれで答えは出てる
ここまで来てもオブジェクト指向がオワコンだと言う事の答えが何も示されていない
2026/08/23(日) 12:48:46.54ID:iasgGq5L
今回は、場のオブジェクト指向の試験を兼ねて作成した。
この試験の結果、出力されるものは2つの異なる(量子)統計が混在するもので、
場(ルール)と合わせて全体をみれば可逆である。
streamは個別の値が流れるわけではなく、streamという全体が演算される。
streamは可逆であり、双対性がある。可逆な中間操作をバインドして繋げばよい。
これはXXXを変えれば演算が行われるということであり、フロー型のさらに次世代を予想させる。
いいすぎな表現だが、簡単にいえば、演算は行われずに演算の結果が得られる。
2026/08/23(日) 12:49:54.67ID:HWzbbtqX
「>>605は認識能力が足りません」までは読んだ
2026/08/23(日) 12:50:38.64ID:/SMVVWF/
むしろ設計次第で毒にも薬にもなるって証明にはなったかもな
2026/08/23(日) 12:53:14.80ID:iasgGq5L
>>604
仕様と設計をごっちゃにしてるね。
ちゃんと会社やって仕事したことないんじゃない?
610デフォルトの名無しさん
垢版 |
2026/08/23(日) 12:56:45.45ID:F3OUjFLN
>>609
仕様がわからないと言い訳たれてんのは君だけ

他の人は言われなくても文字列を動的に結合すれば
仕様変更に強いと自分で判断してそうしてる
プログラマとしての能力を持ってるからできること

そうしてくれと言われてできるのはあたりまえでそれは作業でしかない
自分は確認を取った、それでGOされたというのも作業員でしか通用しない言い訳だよね
君は作業員としてしか仕事したことないんじゃない?
2026/08/23(日) 13:03:04.51ID:/SMVVWF/
>>609
仕様→設計→コーディング
2026/08/23(日) 13:04:01.05ID:/SMVVWF/
コードには設計が現れているだろw
2026/08/23(日) 13:05:56.08ID:/SMVVWF/
コードが悪い=設計が悪い
614デフォルトの名無しさん
垢版 |
2026/08/23(日) 13:08:55.68ID:F3OUjFLN
>>611
左様
2026/08/23(日) 13:13:24.37ID:iasgGq5L
>>610
仕様を逸脱したら損害が発生するんだよ。会社経営したことないだろ。
616デフォルトの名無しさん
垢版 |
2026/08/23(日) 13:21:09.56ID:F3OUjFLN
>>615
君はFizzBuzzの課題で文字列を動的に結合したら仕様を逸脱して損害が発生して会社の経営が危なくなると思っているのかい、大変だね
2026/08/23(日) 13:28:56.47ID:iasgGq5L
>>616
くすくす。
手元に詭弁の本があるけど、教科書通りの展開だね笑。
2026/08/23(日) 13:29:48.18ID:/SMVVWF/
理屈に合わない仕様なら、むしろ仕様を訂正させるw
619デフォルトの名無しさん
垢版 |
2026/08/23(日) 13:36:03.60ID:F3OUjFLN
>>617
そうかい、その本の余白に俺との思い出も書き残しておいてくれよ
620デフォルトの名無しさん
垢版 |
2026/08/23(日) 13:39:32.97ID:F3OUjFLN
仕様で決めるのは目的であって方法でも手段でもないからね
文字列の結合方法を仕様で決められてもなあ
2026/08/23(日) 14:04:47.40ID:HWzbbtqX
FIzZBuzzで重箱隅これだけもめて、書いたのはゴミコードって
この人たち本当にこの分野で食べているのだろうか…謎
622デフォルトの名無しさん
垢版 |
2026/08/23(日) 14:32:48.12ID:QvCbW4h1
顧客は無知なもんだから
2026/08/23(日) 14:38:22.96ID:/SMVVWF/
動けばいいんだよ
だからコバロで書いてコピペして仕事が完了
624デフォルトの名無しさん
垢版 |
2026/08/23(日) 14:50:41.16ID:QvCbW4h1
コバロって何
2026/08/23(日) 14:59:42.81ID:wVoNaoye
>>624
無知かアスペかどっちか
2026/08/23(日) 15:06:20.12ID:HWzbbtqX
やっぱなwナンチャってソフトウエアエンジニアの巣窟だったかw
2026/08/23(日) 15:28:12.05ID:KkX4SDMy
仕様で決めるのは目的であって方法じゃない、って話なら
結局設計って「どの変更をどこに閉じ込めるか」を決めることなんじゃねえの
FizzBuzzなら3→Fizzを7→Pop追加しても一箇所で済むようにするとか
そういうのが保守性の正体だろ
2026/08/23(日) 15:30:54.39ID:KkX4SDMy
ただ変更に強いって言い方も雑なんだよな
Fizz Buzz Popが増える変更には強くても
倍数じゃなくて桁に3が入ってたらFizzに変わったら全部崩れるかもしれない
何の変更に対して局所化してるか、まで言わないと意味ない
2026/08/23(日) 15:33:32.71ID:KkX4SDMy
そう考えると設計の良し悪しって
変更するときにどこまで見に行かされるかでかなり決まる気がする
何についてのコードか
何に依存してるか
どこ直せばいいか
何テストすればいいか
これが近所だけ見て分かるコードは楽
2026/08/23(日) 15:34:15.40ID:tl6J+3gQ
>>628
3で割れる数だけFizzを出力する、例 9 FizzFizz
5等も同様
2026/08/23(日) 15:37:49.27ID:KkX4SDMy
逆に一箇所直すのに
親クラス見て
interface見て
DI設定見て
Factory見て
Listener見て
どこでoverrideされてるか検索して
みたいになるとキツい
コード量じゃなくて探索範囲がでかい
632デフォルトの名無しさん
垢版 |
2026/08/23(日) 15:39:26.68ID:QvCbW4h1
関数にしてその中でご自由にどうぞでええやん
2026/08/23(日) 15:44:28.67ID:KkX4SDMy
そうなるとあれ
それって昔OOPが解決しようとしてた問題じゃなかったっけ
データとそれを操作する処理をオブジェクトに閉じ込めて
内部知らなくても使えるようにするって話だろ
本来は局所化するための仕組みだったはず
2026/08/23(日) 15:48:19.79ID:KkX4SDMy
なのに実際のOOPコードだと
継承
動的ディスパッチ
DI
Observer
ORM
フレームワークのライフサイクル
とか乗りまくって
そのオブジェクトが何するか知るために全然違う場所見に行く羽目になるんだよな
635デフォルトの名無しさん
垢版 |
2026/08/23(日) 15:50:25.49ID:F3OUjFLN
お前らほんまFizzBuzz好きやなあ
俺はそんなお前らが好きだ
2026/08/23(日) 15:52:04.46ID:KkX4SDMy
つまりオブジェクトが情報を閉じ込める箱じゃなくて
依存関係を集めるハブになっちゃったのが問題なんじゃね
UserServiceとかOrderManagerとかいう名前だけ局所的で
中身はDBもメールも決済もログもイベントも何でも触るやつ
2026/08/23(日) 15:55:00.72ID:KkX4SDMy
そう考えるとOOPは変更に強いじゃなくて
カプセル化がうまくいってれば変更に強いなんじゃね
クラス使ってるだけでは何も保証されないどころか
継承とかshared mutable stateで逆に非局所化することもある
2026/08/23(日) 15:56:09.08ID:/SMVVWF/
仕様が変われば設計だって変わるのは当たり前だ
なんでも予測して変更に耐えられる設計なんて存在しないから
変更があるとすれば固定値や特定条件とかくらい、それ以上は仕様からやり直し
2026/08/23(日) 15:58:32.65ID:KkX4SDMy
で最近のGoとかRustとか見てると
クラスを捨てたというよりデータメソッド、interface、trait、所有権、可変性をバラして必要なものだけ組み合わせる方向なんだよな
昔class一個に背負わせてた責務を分解してるように見える
640デフォルトの名無しさん
垢版 |
2026/08/23(日) 16:00:04.51ID:F3OUjFLN
>>392
そうね、flatMapは平坦化できることと要素数を変えられるのが特徴

モダンな言語だとジェネレータがあるからflatMapの出番はない気がする
ジェネレータがない言語だとflatMapを使うと良い感じ

たとえば組み合わせを列挙するコードはジェネレータで書くとこう

IEnumerable<ImmutableQueue<T>> CombinationGeneratorStyle<T>(ImmutableQueue<T> queue) {
 return F(queue, ImmutableQueue<T>.Empty);
 
 IEnumerable<ImmutableQueue<T>> F(ImmutableQueue<T> q, ImmutableQueue<T> r) {
  yield return r;

  for (; !q.IsEmpty; q = q.Dequeue()) {
   foreach (var sub in F(q.Dequeue(), r.Enqueue(q.Peek()))) {
    yield return sub;
   }
  }
 }
}
2026/08/23(日) 16:00:38.10ID:HWzbbtqX
class原理主義・第一主義よりは良くなってきたし面白くなってきたよな
どう発展していくかな
642デフォルトの名無しさん
垢版 |
2026/08/23(日) 16:00:48.79ID:F3OUjFLN
>>640
flatMapで書くとこう

IEnumerable<ImmutableQueue<T>> CombinationMonadicStyle<T>(ImmutableQueue<T> queue) {
 return F(queue, ImmutableQueue<T>.Empty);

 IEnumerable<ImmutableQueue<T>> F(ImmutableQueue<T> q, ImmutableQueue<T> r) {
  return new[] { r }.Concat(
   For(q, x => !x.IsEmpty, x => x.Dequeue())
    .SelectMany(x => F(x.Dequeue(), r.Enqueue(x.Peek()))));
 }
}

IEnumerable<T> For<T>(T seed, Func<T, bool> hasNext, Func<T, T> next) {
 return hasNext(seed)
  ? new[] { seed }.Concat(
   new[] { seed }
    .SelectMany(x => For<T>(next(x), hasNext, next)))
  : [];
}
2026/08/23(日) 16:04:01.11ID:KkX4SDMy
じゃあOOPオワコンって
オブジェクトとかカプセル化がオワコンなんじゃなくて
クラス作って継承とポリモーフィズムで世界をモデル化すれば
自然と変更に強い設計になる
っていう古典的OOP観がオワコンなんじゃね?
局所性を作るために生まれたOOPが
使い方次第で非局所性の発生源になった、という話なら割と筋通る気がする
644デフォルトの名無しさん
垢版 |
2026/08/23(日) 16:05:08.08ID:+hvJAYKo
クラスは不要
クラスは時代遅れ
2026/08/23(日) 16:10:43.94ID:xuiTfLZn
classを全否定するつもりは無いけどstructとmethodだけでいいし特に継承はオブジェクト指向の負の遺産
2026/08/23(日) 16:14:12.45ID:HWzbbtqX
>>643
「局所性を作るために生まれたOOP」って
また陳説が登場したぞ

ほんとOOPSって人によって受け止め方や解釈や利用(悪用)のされ方が
まちまちでそれがまた混乱の一因なんだよな
2026/08/23(日) 16:16:35.09ID:/SMVVWF/
大きな仕様変更は関係が変わるんだからそりゃあ既存の設計じゃ満たせないのは当たり前
万能な設計なんて無いんだからそれをオブジェクト指向のせいにするのはお門違いだ
2026/08/23(日) 16:19:21.65ID:iasgGq5L
classでなくともよいのだが、関係性の集まりを指示できる対象が必要となる。
これを「場」とみなせば、
場のオブジェクト指向は、場にメッセージを投げ入れると何らかの反応があったり/なかったりするもの、
ということになる。
場の演算子が反応すれば、observableが返ってくる/かもしれない。
2026/08/23(日) 16:24:20.60ID:HWzbbtqX
ひー
2026/08/23(日) 16:32:26.38ID:iasgGq5L
場のオブジェクト指向が目指すところは可逆演算(可逆計算)と量子コンピューティングだ。
場は「局所」ではない。関数型計算の究極形だろう(理想)。
場の計算理論の前に、数学そのものの正体が場の(量子)情報理論であると考え中。
2026/08/23(日) 16:32:53.18ID:QbJdGCa2
>>643
>クラス作って継承とポリモーフィズムで世界をモデル化すれば
>自然と変更に強い設計になる
90~00年頃の考え方だよね

変わりやすい部分と変わりにくい部分を見極めて
どういう種類の変更に強くするか取捨選択する必要がある
オブジェクト指向に限った話ではない

FizzBuzzを動的文字列結合で解決する話も
3と5と両方で割り切れるならWYAAAYYY!! にするような変更にはめっぽう弱いのと同じ
2026/08/23(日) 16:37:17.16ID:QbJdGCa2
>>645
struct + method => classですから

継承が負の遺産じゃなくて間違った継承の使い方が負の遺産
今使ってるGUIはみんな継承の産物
2026/08/23(日) 16:45:22.29ID:HWzbbtqX
GUI FWは継承がうまくいった稀な応用だと思うが
2026/08/23(日) 16:50:32.37ID:/SMVVWF/
特定用途に偏った設計が別の特定用途に整合できるはずが無いんだよね
最初からそれ以外の用途では使わないなら
それは良いも悪いも無いからね
2026/08/23(日) 16:52:50.80ID:/SMVVWF/
オブジェクト指向は万能みたいな夢を騙るから失敗してるとか訳の分からない話をし出す
どんなソフトウェア技法だって万能なんか無い
2026/08/23(日) 16:55:54.03ID:HWzbbtqX
クラス(カプセル化)、動的インスタンス(動的extent)、継承、多態といったもので
プログラムを現すモデルとして実は適していなかったおそれがあると思う
2026/08/23(日) 17:10:09.30ID:/SMVVWF/
おまえら、気づかないうちにクラスメソッド使いまくってるじゃんw
2026/08/23(日) 17:20:57.83ID:iasgGq5L
まとめて計算させるためには素数を使う。
可逆性は確認できたが、量子アルゴリズムはそのうち考えることにして、
javaのThreadPoolで高速化できるか、オーバーヘッドのほうが大きいか確認してみようと思う。
2026/08/23(日) 17:21:26.65ID:vDqnQhmn
>>656
動的extentって何だ?
例えばC++のdynamic_extentはオプション指向と関係ないように
概念を話すときに特定の言語でのみ通用する用語は使わないでほしい
2026/08/23(日) 17:22:54.82ID:iasgGq5L
まとめて計算させるためには素数を使う。
可逆性は確認できたが、量子アルゴリズムはそのうち考えることにして、
javaのThreadPoolで高速化できるか、オーバーヘッドのほうが大きいか確認してみようと思う。
2026/08/23(日) 17:24:02.54ID:iasgGq5L
ち、ミスった。ボタン押し間違いで二重投稿になった。
2026/08/23(日) 17:33:30.22ID:4FpMaXiD
>>657
そのクラスメソッドはどの意味?
インスタンスが反応するインスタンスメソッドではなくクラスが反応するクラスメソッドという意味?
2026/08/23(日) 17:35:18.42ID:HWzbbtqX
>>659
動的extent - Google 検索
ttps://www.google.com/search?q=%E5%8B%95%E7%9A%84extent&hl=ja

無知の自慢か

オプション指向が逆に分からん
2026/08/23(日) 17:42:19.56ID:IZSLg4J0
>>663
君がおかしい
その検索でも複数の異なる意味が出てくる
どの意味で君が用いているのか説明しないといけない局面
2026/08/23(日) 17:43:22.91ID:HWzbbtqX
extent って日本人では使い人少ない感じがするな
life time ならよく使われる。変数の life time など

動的life timeを持つ変数 、インスタンス
2026/08/23(日) 17:44:22.00ID:HWzbbtqX
>>664
ねぇextentもしらないで人に絡むのやめない?
2026/08/23(日) 17:46:21.02ID:HWzbbtqX
かれはscopeくらいならワカルかな。
これも知らぬと絡んできたらプロログらミングのど素人ちゃん確定だ
2026/08/23(日) 17:49:29.05ID:K/xiM3u4
>>663
そこに出てくるどの意味かね?
Lispだと動的extentはスコープを抜けると消えるローカル変数束縛のこと
C++だと動的extentは配列や連続体の要素数がコンパイル時ではなく実行時に決まること
2026/08/23(日) 17:49:59.43ID:HWzbbtqX
もうそういう人たちがクラスだオジェクトだ言ってんだよな
変な時代になったもんだ
2026/08/23(日) 17:55:43.74ID:HWzbbtqX
>>668
その両方がそれぞれextentの種別だよ
下のC++のはあきらかに動的じゃないだろ、言われなきゃわからんとは…

extentはお前が書いた「特定の言語でのみ通用する用語」はない
プログラムの変数やメモリの内容の生存期間に関する一般的な用語だよ

なんでおれがど素人講座ここでやtらなきゃならん
ぶつぶつ、少し反省して無知の知にまで至れ

変数のextent - Google 検索
ttps://www.google.com/search?q=%E5%A4%89%E6%95%B0%E3%81%AEextent&&hl=ja&source=hp

AI による概要
プログラミングにおいて変数のエクステント(extent)とは、その変数がメモリ上に存在し、値を保持している生存期間(有効期間)のことです。
プログラムの中で名前がどこから見えるかを表す「スコープ(有効範囲)」とは区別されます。
エクステントの種類
静的エクステント(Static):プログラムの開始から終了までずっとメモリに存在します。
自動エクステント(Automatic):関数やブロックの実行が始まった時に作られ、終わると消えます。
動的エクステント(Dynamic):プログラムの実行中に明示的な割り当てと解放を行って管理します。

スコープとの違い
スコープ:名前を参照できる範囲(どこで書けるか)
エクステント:メモリに存在している期間(いつ使えるか)たとえば、C言語の static 付きローカル変数は、スコープは関数内だけですが、
エクステントはプログラム全体(静的)になります。

以下略
2026/08/23(日) 17:58:05.85ID:HWzbbtqX
プログラミングのすそ野が広がったってことだな
すそ野といえばまだ耳障り良いが、底辺だわ
2026/08/23(日) 17:59:02.41ID:HWzbbtqX
あと、リンケージっていう大切な概念があんだよね
絶対に知らないだろうけど
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があるだろうに
馬鹿垂れが!
なんとなくとはなんだなんとなくとは
そんなんで開発してたら周りに迷惑かけるぞ
■ このスレッドは過去ログ倉庫に格納されています

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