C言語って設計が悪いから難しく感じるだけ
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
2026/03/24(火) 10:14:24.22ID:iaVEWJjC ポインタが難しいわけでもないし、単に分かりにくい設計が諸悪の根源。
2デフォルトの名無しさん
2026/03/24(火) 10:17:56.34ID:iaVEWJjC K&Rを今読んでいてそう感じます。
3デフォルトの名無しさん
2026/03/24(火) 11:25:17.12ID:+hX31Nmn int main(argc, argv)
int argc;
char **argv;
{
return main(argc, argv);
}
int argc;
char **argv;
{
return main(argc, argv);
}
4デフォルトの名無しさん
2026/03/24(火) 16:59:55.39ID:iaVEWJjC 例えば、
int (*p)[10];
とかいう表記が最悪。
int (*p)[10];
とかいう表記が最悪。
5デフォルトの名無しさん
2026/03/24(火) 19:07:52.20ID:dTqNOQ9b C++の.hファイルとcppファイルが分かれてるだけで勉強する気失せる
6デフォルトの名無しさん
2026/03/24(火) 23:41:15.90ID:4RNA5ClM 俺からは一つだけ
char* ptr_something;
この作法だけが正しい
俺以外全員間違い
char* ptr_something;
この作法だけが正しい
俺以外全員間違い
7デフォルトの名無しさん
2026/03/25(水) 08:40:44.64ID:NTvTvHA2 エセ職人スレ
2026/03/25(水) 13:07:39.68ID:idN2Bxou
>>3
ANSI版を嫁
ANSI版を嫁
9デフォルトの名無しさん
2026/03/26(木) 13:47:31.74ID:q1C4x9ZJ >>6
お前複数の宣言で事故るタイプ
お前複数の宣言で事故るタイプ
2026/03/26(木) 16:35:25.34ID:ZMuTo2I4
>>4
int p[][10];
int p[][10];
2026/03/26(木) 17:41:34.69ID:HYl7uPT4
C言語からの推奨移行先Rustの場合
T 型T
&T 型Tへの参照
長さが不定なもの
[T] 型Tのスライス値
[&T] 型&Tのスライス値
&[T] 型Tのスライス参照
&[&T] 型&Tのスライス参照
長さが固定なもの
[T; N] 型T長さNの配列値
[&T; N] 型&T長さNの配列値
&[T; N] 型T長さNの配列参照
&[&T; N] 型&T長さNの配列参照
このように[&T]角括弧の内部に&が来るため区別しやすい
T 型T
&T 型Tへの参照
長さが不定なもの
[T] 型Tのスライス値
[&T] 型&Tのスライス値
&[T] 型Tのスライス参照
&[&T] 型&Tのスライス参照
長さが固定なもの
[T; N] 型T長さNの配列値
[&T; N] 型&T長さNの配列値
&[T; N] 型T長さNの配列参照
&[&T; N] 型&T長さNの配列参照
このように[&T]角括弧の内部に&が来るため区別しやすい
12デフォルトの名無しさん
2026/03/26(木) 21:28:53.50ID:Qpr66Kdr [[T; M]; N]
13デフォルトの名無しさん
2026/03/26(木) 21:29:45.57ID:Qpr66Kdr [[T]; N]
[[T; M]]
[[T; M]]
14デフォルトの名無しさん
2026/03/26(木) 23:39:18.32ID:ai1mHsgg >>10
それが等価なのは引数の宣言だけ
それが等価なのは引数の宣言だけ
15デフォルトの名無しさん
2026/03/26(木) 23:41:42.57ID:ai1mHsgg C23からのアトリビュートの宣言もかなりの闇
各種コンパイラ独自実装のアトリビュート宣言よりだいぶマシとはいえ中途半端にセマンティクス保存しようとして闇った
各種コンパイラ独自実装のアトリビュート宣言よりだいぶマシとはいえ中途半端にセマンティクス保存しようとして闇った
16デフォルトの名無しさん
2026/03/27(金) 00:17:17.87ID:vbJQvJ18 よくこんな意味がわからない記号操れるな感心
17デフォルトの名無しさん
2026/03/27(金) 00:39:46.85ID:DyQoFlgK ポインタは便利
2026/03/27(金) 07:59:03.05ID:czUbq4AE
参照も欲しいけどな
2026/03/27(金) 10:20:18.62ID:IuqLSoe9
クソソースが作りにくい分だけ、C言語は設計が優れているといえなくもない
オブジェクト思考言語は美しいコードを生成できる反面、非常に難解なソースも量産できてしまう
世の中にあるクソソースでも、C言語だと理解してやろうという気持ちになれるけど
オブジェクト思考言語のクソソースは理解する気が起きないどころか殺意を感じる
オブジェクト思考言語は美しいコードを生成できる反面、非常に難解なソースも量産できてしまう
世の中にあるクソソースでも、C言語だと理解してやろうという気持ちになれるけど
オブジェクト思考言語のクソソースは理解する気が起きないどころか殺意を感じる
2026/03/27(金) 10:35:39.69ID:/adP+HZw
クラスがないRustは分かりやすい
2026/03/27(金) 10:51:28.26ID:/ab4OUXT
>>14
まさに設計が悪い例だな
まさに設計が悪い例だな
22デフォルトの名無しさん
2026/03/27(金) 12:46:59.20ID:t++aEQp8 >>15
[[]]で囲むキモい文法はC++から借りたものではあるが、C++のアトリビュートも仕様腐ってるから何とも言えない無念さ
C++のキレイなところだけ輸入するのがC標準委員会の方針でなかったのかよ…
[[]]で囲むキモい文法はC++から借りたものではあるが、C++のアトリビュートも仕様腐ってるから何とも言えない無念さ
C++のキレイなところだけ輸入するのがC標準委員会の方針でなかったのかよ…
23デフォルトの名無しさん
2026/03/27(金) 12:48:23.02ID:t++aEQp8 通常の言語と違って年々ゴミになっていく類稀なる発展をするC
24デフォルトの名無しさん
2026/03/28(土) 12:21:20.72ID:rz9WNfgC >>11
これも大概だろ
これも大概だろ
2026/03/28(土) 13:19:25.20ID:gdYalcvN
int *p, *q; // c
var p, q *int // go
var p, q *int // go
2026/03/28(土) 15:43:10.47ID:IcEr9v0h
int *p; 派と
int* p; 派が居るけど
前者は int *p, *q; 出来るのに
後者は int* p, q; で詰む
int* p; 派が居るけど
前者は int *p, *q; 出来るのに
後者は int* p, q; で詰む
2026/03/28(土) 15:58:42.04ID:/NjMiNwB
仕様とクセの折り合いをつけて
int* p; int* q;
int* p; int* q;
28デフォルトの名無しさん
2026/03/28(土) 17:06:21.66ID:bSm0koos void func(int a[]);
funcの定義内で、引数 a を使う場合、a[i] などと書きます。
void func2(void (*g)(void));
func2の定義内で、引数 g を使う場合、g() だけでなく (*g)() とも書くことができるそうです。
配列と関数の場合で整合性がとれていないように思います。
funcの定義内で、引数 a を使う場合、a[i] などと書きます。
void func2(void (*g)(void));
func2の定義内で、引数 g を使う場合、g() だけでなく (*g)() とも書くことができるそうです。
配列と関数の場合で整合性がとれていないように思います。
29デフォルトの名無しさん
2026/03/28(土) 19:00:06.62ID:19qhTXg6 >>28
それはCのcallableは関数ポインタだから
関数名を使っても関数ポインタに変換される。
だからなんなら(*****g)()でもok
また宣言の中の配列宣言子はポインタに読み替えられるから、int a[42]であろうとint *aと同じ
中に数字書くのは飾りです
但し配列宣言子内にstatic とか書くと意味が出るのでこれも注意
クソだな!!
それはCのcallableは関数ポインタだから
関数名を使っても関数ポインタに変換される。
だからなんなら(*****g)()でもok
また宣言の中の配列宣言子はポインタに読み替えられるから、int a[42]であろうとint *aと同じ
中に数字書くのは飾りです
但し配列宣言子内にstatic とか書くと意味が出るのでこれも注意
クソだな!!
2026/03/28(土) 19:33:58.12ID:/NjMiNwB
2026/03/28(土) 19:40:23.77ID:/NjMiNwB
いや、29の話が全てで、30は要らなそうですね、、、
32デフォルトの名無しさん
2026/03/29(日) 09:25:03.78ID:WM1+84P1 >>28
void func(void){}
に対して
void func2(void (*g)(void));
を使うとき
func2(func); と呼ぶ派と
func2(&func); と呼ぶ派が居るらしい
void func(void){}
に対して
void func2(void (*g)(void));
を使うとき
func2(func); と呼ぶ派と
func2(&func); と呼ぶ派が居るらしい
33デフォルトの名無しさん
2026/03/29(日) 14:40:17.31ID:Nafr56OV int *f();
int (*pf)();
という宣言を考えます。この宣言に含まれる「*」や「()」は演算子ではないですよね。実際に演算を行うわけではないからです。
ですが、K&Rにこれについて以下のような説明があります。
* is a prefix operator and it has lower precedence than (), so parentheses are necessary to force the proper association.
これは演算子ではない記号「*」、「()」の優先順位を考えています。
これはおかしくないですか?
int (*pf)();
という宣言を考えます。この宣言に含まれる「*」や「()」は演算子ではないですよね。実際に演算を行うわけではないからです。
ですが、K&Rにこれについて以下のような説明があります。
* is a prefix operator and it has lower precedence than (), so parentheses are necessary to force the proper association.
これは演算子ではない記号「*」、「()」の優先順位を考えています。
これはおかしくないですか?
34デフォルトの名無しさん
2026/03/29(日) 14:44:14.10ID:Nafr56OV もし、これらにも優先順位を考えるのであれば、
「int」と「*」と「()」の優先順位も考えなければならないはずです。
「int」と「*」と「()」の優先順位も考えなければならないはずです。
35デフォルトの名無しさん
2026/03/29(日) 14:51:49.17ID:Nafr56OV あ、その後に、
「dcl」という関数が書いてあります。これは、「int (*daytab)[13]」が入力されると「daytab: pointer to array[13] of int」という出力を作る関数のようです。
この関数を解読すれば、精密にCでの記法を理解できますね。
「dcl」という関数が書いてあります。これは、「int (*daytab)[13]」が入力されると「daytab: pointer to array[13] of int」という出力を作る関数のようです。
この関数を解読すれば、精密にCでの記法を理解できますね。
2026/03/29(日) 16:01:27.13ID:zcXFJxx/
&a == &a[0]
37デフォルトの名無しさん
2026/03/29(日) 16:07:19.25ID:USBE/Vop 30年以上前にfj.comp.lang.cでフレーム起こしながらやってたような不毛すぎる議論で草
やっぱ引導渡さないとダメだこのクソ言語
やっぱ引導渡さないとダメだこのクソ言語
2026/03/29(日) 19:06:16.10ID:dW2XAb/Z
話題に鮮度がなくて食いつけないよ・・・
初学者はこんなスレ立ててないで黙ってひっそりと独学してください
初学者はこんなスレ立ててないで黙ってひっそりと独学してください
39デフォルトの名無しさん
2026/03/29(日) 19:44:42.45ID:60xioQbF >>36
型も一緒なの?
型も一緒なの?
2026/03/29(日) 19:47:43.35ID:60xioQbF
>>37-38
残念だが 5ch がお�hる
残念だが 5ch がお�hる
41デフォルトの名無しさん
2026/03/30(月) 18:06:41.81ID:VsAnrdcH char (*(*x())[])();
char (*(*x[3])())[5];
上の宣言を解読せよ。
char (*(*x[3])())[5];
上の宣言を解読せよ。
42デフォルトの名無しさん
2026/03/30(月) 21:09:55.85ID:PRAX/oWX わざと難読化したのを書いて言語がクスという言うスレ
2026/03/30(月) 21:34:19.04ID:0h8bFcOt
こんなの無限にできるだろ
char (*(*(*(*(*x[3])())[5] )));
char (*(*(*(*(*x[3])())[5] )));
44デフォルトの名無しさん
2026/03/31(火) 02:19:57.63ID:XWIEtcEp >>41
char (*(*x())[])();
x is fun ret ptr of array of ptr to fun ret char.
char (*(*x[3])())[5];
x is array 3 of ptr to fun ret ptr to array 5 of char.
かな?
char (*(*x())[])();
x is fun ret ptr of array of ptr to fun ret char.
char (*(*x[3])())[5];
x is array 3 of ptr to fun ret ptr to array 5 of char.
かな?
45デフォルトの名無しさん
2026/03/31(火) 02:39:01.36ID:XWIEtcEp じゃあ俺からも問題
xの宣言
int (*(*x[3]) [[A]] (double)) [[B]] [5];
を読み下せ
xの宣言
int (*(*x[3]) [[A]] (double)) [[B]] [5];
を読み下せ
46デフォルトの名無しさん
2026/03/31(火) 10:00:53.38ID:KKs2VdCx なぞなぞ言語
47デフォルトの名無しさん
2026/03/31(火) 11:02:05.53ID:XWIEtcEp signalとかqsort_rとかなぞなぞ解かないと使えない関数もあるので…
48デフォルトの名無しさん
2026/03/31(火) 11:04:18.42ID:XWIEtcEp あとはpthread、特にpthread cleanup handlerあたりはかなりなぞなぞ
2026/03/31(火) 23:41:51.12ID:spN5Do5t
gets("(σ・∀・)σ"); // Segmentation fault
50デフォルトの名無しさん
2026/04/01(水) 17:51:10.06ID:3UTfV8wO >>45
アトリビュートは闇…
アトリビュートは闇…
2026/04/01(水) 20:05:24.77ID:uzR/ljvY
アルゴリズムは苦手だけどなそなそは得意
52デフォルトの名無しさん
2026/04/01(水) 23:08:41.35ID:8lGTkqWR 人間がコンピューターに寄り添う優しい言語
それがC
かわりにコンピューターも全力でがんばってくれる
それがC
かわりにコンピューターも全力でがんばってくれる
2026/04/15(水) 21:01:40.39ID:KTOGvwbf
こうやればステップ数少なくなるから速く動くんじゃね?
と書いたコードがびっくりするほど遅くて
やっぱり妙な書き方しない方がまともだと学んだ
と書いたコードがびっくりするほど遅くて
やっぱり妙な書き方しない方がまともだと学んだ
54デフォルトの名無しさん
2026/04/15(水) 21:45:10.88ID:Shlgqzec どの命令がどんな速度で実行されるかを学んだ方がいい
ステップ数が短い命令は、複雑なことを簡単な命令でこなすように作ってあるから
むしろ時間がかかる
ステップ数が短い命令は、複雑なことを簡単な命令でこなすように作ってあるから
むしろ時間がかかる
55デフォルトの名無しさん
2026/04/17(金) 15:19:45.09ID:Ph1ijPva DJNZ
56デフォルトの名無しさん
2026/04/17(金) 15:21:27.98ID:Ph1ijPva stsb
ldsb
ldsb
57デフォルトの名無しさん
2026/04/18(土) 13:49:14.41ID:HlEIpBul xor a,a
2026/04/20(月) 06:21:40.12ID:p1bOR+Kk
2026/04/20(月) 14:29:08.22ID:+xN4UTBC
switch(x){
case 0:
break;
label1:
case 1:
break;
case 2:
x=1;
goto label1;
break;
default:
break;
}
case 0:
break;
label1:
case 1:
break;
case 2:
x=1;
goto label1;
break;
default:
break;
}
60デフォルトの名無しさん
2026/05/04(月) 23:05:10.83ID:loKn+pyl61デフォルトの名無しさん
2026/05/04(月) 23:43:52.89ID:S7DHTU1B だからってなんだよ
2026/05/05(火) 07:24:50.94ID:IgpYxfA3
Cの楽しさを知りたければIOCCCの作品でも読んでみればいい
63デフォルトの名無しさん
2026/05/05(火) 10:34:17.51ID:pUcfUdxA >>61
ハードウェアとのやりとりが多いので、ハードウェア寄りのプログラミング言語になっている。
ハードウェアとのやりとりが多いので、ハードウェア寄りのプログラミング言語になっている。
2026/05/05(火) 13:40:19.79ID:sd/Q4g2J
全ての言語はunlambdaと同様の難読化が可能。なぜならSKIコンビネータからの遺伝だから。
2026/05/05(火) 19:07:15.16ID:JPdT+3XD
K&R時代のC言語を体験してみよう
2026/05/06(水) 16:32:37.85ID:mBI68MGx
ポインタはデータまたは関数そのものではなくそのデータまたは関数のアドレスを意味する
簡単に聞こえるし簡単だと思っていたらいつか足をすくわれるのがパターン
簡単に聞こえるし簡単だと思っていたらいつか足をすくわれるのがパターン
67💾キモじじい ◆Rn9d66GbJRuf
2026/05/06(水) 16:35:45.09ID:4i0fkMKP メモリマップとかI/Oマップとか一度でも見たことあるのか?サル。
68💾キモじじい ◆Rn9d66GbJRuf
2026/05/06(水) 16:43:14.10ID:4i0fkMKP >>66
間違ってないね。
間違ってないね。
69デフォルトの名無しさん
2026/05/06(水) 18:22:41.41ID:Oi8nJDg6 Cは「ちょっと高度なアセンブラ」なんだよ
人間の読みやすさなんて考えてない
人間の読みやすさなんて考えてない
2026/05/06(水) 19:00:06.93ID:usSUIi60
>>66
違うよ
ある変数があるとして
そこへのポインタこそ変数そのものなんだよ
値の方は変数ではない
これは代入すればわかる
ポインタがあればその指してる先を書き換えることができる
値があってそれを書き換えても変数の中身は書き換わらない
つまり
ポインタが変数
値は変数ではない
違うよ
ある変数があるとして
そこへのポインタこそ変数そのものなんだよ
値の方は変数ではない
これは代入すればわかる
ポインタがあればその指してる先を書き換えることができる
値があってそれを書き換えても変数の中身は書き換わらない
つまり
ポインタが変数
値は変数ではない
71💾キモじじい ◆Rn9d66GbJRuf
2026/05/06(水) 19:18:31.75ID:D9NyPKEC2026/05/06(水) 19:47:04.16ID:AibCcjOg
変数の実体はポインタであってるよ
だから関数に渡して結果を入れてもらう時もポインタを渡さなければならない
だから関数に渡して結果を入れてもらう時もポインタを渡さなければならない
74💾キモじじい ◆Rn9d66GbJRuf
2026/05/06(水) 19:57:37.43ID:D9NyPKEC >>73
おい、サル。
int x; /* これが変数でなく */
int *xp; /* これだけが変数だ */
と言いたいのか?
おい、サル。
int x; /* これが変数でなく */
int *xp; /* これだけが変数だ */
と言いたいのか?
75デフォルトの名無しさん
2026/05/06(水) 20:07:27.37ID:frK1nPOq >>74
小学生ですか?
変数(容れ物)と値の区別を学びましょう
コードの中でxと書いてもそれは値として取り扱われ変数としては取り扱われない
だから例えば関数にxを渡してもそれは変数を渡したことにならず値だけが渡る
変数とはアドレスのことです
そのため変数を受け渡すにはアドレスが必要
関数へ受け渡すときは&xなどになる
小学生ですか?
変数(容れ物)と値の区別を学びましょう
コードの中でxと書いてもそれは値として取り扱われ変数としては取り扱われない
だから例えば関数にxを渡してもそれは変数を渡したことにならず値だけが渡る
変数とはアドレスのことです
そのため変数を受け渡すにはアドレスが必要
関数へ受け渡すときは&xなどになる
2026/05/06(水) 20:31:07.75ID:mBI68MGx
変数と変数の値と変数のアドレスが正しく理解できてない
2026/05/06(水) 20:45:06.04ID:mBI68MGx
MOV EAX, [0x12345678]
メモリの内容を 4バイト読み込んで EAX に入れるIA-32のニーモニックだけど
これをよく考えたら変数、変数の値、変数のアドレスの違いがわかる
メモリの内容を 4バイト読み込んで EAX に入れるIA-32のニーモニックだけど
これをよく考えたら変数、変数の値、変数のアドレスの違いがわかる
78💾キモじじい ◆Rn9d66GbJRuf
2026/05/06(水) 21:25:45.53ID:D9NyPKEC >>75
読め、サル。
int x; /* このアドレスにintを格納 */
int *xp; /* このアドレスにintが書かれたアドレスを格納 */
読め、サル。
int x; /* このアドレスにintを格納 */
int *xp; /* このアドレスにintが書かれたアドレスを格納 */
80デフォルトの名無しさん
2026/05/07(木) 10:15:21.67ID:4vHwfolo ポインタとか要らねーだろ
遅くなる?関係ねーよ
CPUのパワーでぶん回しゃ良いだけだ
遅くなる?関係ねーよ
CPUのパワーでぶん回しゃ良いだけだ
81デフォルトの名無しさん
2026/05/07(木) 10:43:12.99ID:amqD74Kk 無限ループですらCPUパワーで解決しそうな勢いだ
2026/05/07(木) 11:31:49.50ID:z4cyO/69
L[1-3]キャッシュに乗るとポインタでもレジスタでもなくなる
2026/05/07(木) 12:22:34.52ID:TMOwDbsl
>>80
パイソンやれよ
パイソンやれよ
84💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 12:24:52.05ID:qEvGZHut Lispだろ。
85💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 18:29:13.85ID:q4SIgGnv2026/05/07(木) 22:25:45.93ID:B9rL4/lJ
int a[4] = {};
a == &a[0]; ←意味わかる
(a+1) == &a[1]; ←微妙だが一応意味わかる
a == (void*)&a; ←????
a == &a[0]; ←意味わかる
(a+1) == &a[1]; ←微妙だが一応意味わかる
a == (void*)&a; ←????
87💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 22:57:42.45ID:q4SIgGnv そのaという配列変数のアドレスは32ビットCPUなら32ビットの値、64ビットCPUなら64ビットの値だろ?
88💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 23:00:47.69ID:q4SIgGnv アドレスの値はchar*でもint*でも同じ。当然void*でも同じ。
89💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 23:07:16.73ID:q4SIgGnv 互換性のないポインタ同士を比較するとウォーニングがでるからそれを抑制するためにvoid*にキャストしているだけだと思うよ。
90💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 23:23:39.55ID:q4SIgGnv 本当はchar**とvoid**にも互換性があってほしいんだがないんだよ。void*としかない。
91デフォルトの名無しさん
2026/05/07(木) 23:45:06.14ID:amqD74Kk a + 4 == (void *)(&a + 1)
92💾キモじじい ◆Rn9d66GbJRuf
2026/05/07(木) 23:54:34.19ID:q4SIgGnv sizeof(int)と書こう。
2026/05/08(金) 16:59:33.40ID:jFFlox80
俺はすごいじじいだけど
C言語を初めて見たときは画期的だと思ったよ。
まだ世の中がMS-DOSじゃなくてCP/Mのパソコンあたりがでていた時のことだ。
そのころやっていたのは、CNC装置そのもので、8086が5つ乗っていたと思う。
CNCのNCプログラム実行部は全部アセンブリ言語で書かれていて、UIだけ高級言語のPL/M86で
書かれていたよ。 このPL/MとCが全然違うんだな。
スタックの積み方が違う。いわゆる関数コールが PascalのABIだし
ポインタは Based変数というものがあるがポインタに対してBased でint配列や 構造体配列のポインタを定義する。
ポインタ+1しても中身は1しか増えないから、 +sizeof(struct KOZOTAN) を足してやらないといけないとかで
Cは+1するだけで勝手にサイズが足されるから合理的だと思ったけどな。
C言語を初めて見たときは画期的だと思ったよ。
まだ世の中がMS-DOSじゃなくてCP/Mのパソコンあたりがでていた時のことだ。
そのころやっていたのは、CNC装置そのもので、8086が5つ乗っていたと思う。
CNCのNCプログラム実行部は全部アセンブリ言語で書かれていて、UIだけ高級言語のPL/M86で
書かれていたよ。 このPL/MとCが全然違うんだな。
スタックの積み方が違う。いわゆる関数コールが PascalのABIだし
ポインタは Based変数というものがあるがポインタに対してBased でint配列や 構造体配列のポインタを定義する。
ポインタ+1しても中身は1しか増えないから、 +sizeof(struct KOZOTAN) を足してやらないといけないとかで
Cは+1するだけで勝手にサイズが足されるから合理的だと思ったけどな。
94デフォルトの名無しさん
2026/05/08(金) 17:02:55.94ID:jDCLnraE アセンブラだってサイズ分インクリするけど
2026/05/09(土) 01:25:27.84ID:/SzbkRKm
>>75
その「変数とはアドレスのこと」というのは機械語で考えればわかりやすいよね
静的な変数なら絶対アドレス
動的な変数なら相対アドレスになる
キモじじみたいに機械語を知らないと
「変数とはアドレスのこと」を理解できない
その「変数とはアドレスのこと」というのは機械語で考えればわかりやすいよね
静的な変数なら絶対アドレス
動的な変数なら相対アドレスになる
キモじじみたいに機械語を知らないと
「変数とはアドレスのこと」を理解できない
96💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 01:46:14.16ID:6d+vv6Vz ・静的な変数はヒープ上
・動的な変数はスタック上
どちらもメインメモリ上でありどちらもアドレスである点は同じ。
・任意のアドレスをフルビットで表すのが絶対アドレス
・任意のアドレスをあるアドレスからの相対位置で表すのが相対アドレス
俺はZ80の機械語でインベーダーゲームを書いたしm68kの機械語ではもっと山ほど色々書いた。
結論:サルには機械語は無理。
・動的な変数はスタック上
どちらもメインメモリ上でありどちらもアドレスである点は同じ。
・任意のアドレスをフルビットで表すのが絶対アドレス
・任意のアドレスをあるアドレスからの相対位置で表すのが相対アドレス
俺はZ80の機械語でインベーダーゲームを書いたしm68kの機械語ではもっと山ほど色々書いた。
結論:サルには機械語は無理。
97💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 01:50:11.28ID:6d+vv6Vz あ、動的がヒープで静的はbssセクションとかだな。
98💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 01:53:24.66ID:6d+vv6Vz ん?動的なメモリでなく動的な変数って書いてあるから錯覚したけど動的な変数ってなんだ?やっぱりCのauto変数のことだよな?
2026/05/09(土) 04:07:45.96ID:+volYkQ2
>>96
マルキューでは書いていない若造かよ
マルキューでは書いていない若造かよ
100💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 04:09:43.00ID:6d+vv6Vz Z80って書いてあるだろ、サル。
101デフォルトの名無しさん
2026/05/09(土) 04:12:46.78ID:+volYkQ2 ゼッパチだけ??
当時究極の8bit CPUと評されたマルキューでも書いていないなら若造か雑魚
当時究極の8bit CPUと評されたマルキューでも書いていないなら若造か雑魚
102💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 04:31:22.07ID:6d+vv6Vz 例えばシャープは200ラインと400ラインとテレビが3つとも映るディスプレイを作った。一方 FM-7 はテレビはおろか400ラインにすらGRAMの増設と共に専用ディスプレイが必要だった。ましてスーパーインポーズなんて望めるわけがない。
セルフリロケータブルコード以外に6809でしかできないことを言ってみろよサル。究極の8bit CPU以前に8bit CPU自体は知ってんのかサル。
セルフリロケータブルコード以外に6809でしかできないことを言ってみろよサル。究極の8bit CPU以前に8bit CPU自体は知ってんのかサル。
103デフォルトの名無しさん
2026/05/09(土) 04:42:14.75ID:+volYkQ2104💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 04:47:39.90ID:6d+vv6Vz CPU評価ボードなんてどのパソコンにも何枚でも挿せるがサルには理解できないかもな。
105デフォルトの名無しさん
2026/05/09(土) 05:00:01.29ID:+volYkQ2 やっぱり当時の常識を知らない若造だったか
FM-8/FM-7は発売当初から6809二つのデュアルCPU搭載機種だ
FM-8/FM-7は発売当初から6809二つのデュアルCPU搭載機種だ
106💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 05:03:50.25ID:6d+vv6Vz CPU評価ボードが理解を超えてるのかサル。当然Z80カードも理解を超えてるんだろうなサル。
107デフォルトの名無しさん
2026/05/09(土) 05:13:53.06ID:+volYkQ2108💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 05:17:47.58ID:6d+vv6Vz 理論上X1にもPC-88にも6809カードを2枚挿すことはごく容易いはずだって言ってるんだがサルには難しいか?
109💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 05:42:41.46ID:6d+vv6Vz はい、論破。次のサル来い。
Z80だけでなく6809でも書かなければならないものって「売り物のゲーム」以外になにがあるの?
Z80だけでなく6809でも書かなければならないものって「売り物のゲーム」以外になにがあるの?
110デフォルトの名無しさん
2026/05/09(土) 05:47:06.33ID:+volYkQ2 >>108
やはり分かっていないようだな
FM-8/7には現実にZ80カードが発売されていて挿して使えていた
しかしそんな話ではなくFM-8/7には6809CPUが2つ標準搭載されていた
だからデュアルCPUを活用したプログラムはそのまま標準環境で動いて誰もが使えていた
やはり分かっていないようだな
FM-8/7には現実にZ80カードが発売されていて挿して使えていた
しかしそんな話ではなくFM-8/7には6809CPUが2つ標準搭載されていた
だからデュアルCPUを活用したプログラムはそのまま標準環境で動いて誰もが使えていた
111💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 05:56:40.92ID:6d+vv6Vz 標準環境でデュアルCPUなら標準環境用のソフトがそれを採用しやすいのはわかるよ?でもそれは商売の話。標準環境以外の話は?つまりコンピュータ工学は?サルには無理?
112デフォルトの名無しさん
2026/05/09(土) 06:14:19.27ID:+volYkQ2 当時両方の機械語で書いていたならば
何もかも汚いZ80と何もかも美しい6809の格差も常識だろ
それ以前に当時の市販のマイコン状況すら知らなかったキモじじいは実際には若造だからそういう常識も理解できないのだろうが
何もかも汚いZ80と何もかも美しい6809の格差も常識だろ
それ以前に当時の市販のマイコン状況すら知らなかったキモじじいは実際には若造だからそういう常識も理解できないのだろうが
113💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 06:28:45.68ID:6d+vv6Vz じゃあさ、こういう話はどうだ?俺は学生時代、6809のように美しい68000を搭載したシャープX68000に、自作のTMS320C25カードを挿して自作のアブソリュートアセンブラを作って、みたいな話。
114デフォルトの名無しさん
2026/05/09(土) 06:50:23.78ID:d0g52L0e >>95
>「変数とはアドレスのこと」を理解できない
まだ間違ったことを主張し続けているのか
変数と変数のアドレスを正しく理解できてない
変数とは値を保存するためのエリアであり、保存したい内容によってサイズがかわる
変数のアドレスとは変数の先頭アドレスを指すだけ
メモリの1000Hからはじまる2バイトの変数があったとする
変数は1000Hと1001H
変数の値は1000Hと1001Hに書かれた内容
変数のアドレスは1000H
>「変数とはアドレスのこと」を理解できない
まだ間違ったことを主張し続けているのか
変数と変数のアドレスを正しく理解できてない
変数とは値を保存するためのエリアであり、保存したい内容によってサイズがかわる
変数のアドレスとは変数の先頭アドレスを指すだけ
メモリの1000Hからはじまる2バイトの変数があったとする
変数は1000Hと1001H
変数の値は1000Hと1001Hに書かれた内容
変数のアドレスは1000H
115💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 07:00:40.75ID:6d+vv6Vz 間違ってないけどアドレス4桁?
116デフォルトの名無しさん
2026/05/09(土) 07:04:17.29ID:d0g52L0e 8ビット時代の人間にもわかりやすいだろう?
117💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 07:05:02.24ID:6d+vv6Vz うん。
118デフォルトの名無しさん
2026/05/09(土) 07:15:53.64ID:+volYkQ2119💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 07:24:28.06ID:6d+vv6Vz >>118
実行時じゃなくてコンパイル時な。
実行時じゃなくてコンパイル時な。
120デフォルトの名無しさん
2026/05/09(土) 08:02:59.98ID:+volYkQ2 >>119
目が悪いのかね?
目が悪いのかね?
121💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 08:29:09.18ID:6d+vv6Vz >>120
じゃあコンパイル時?リンク時?
じゃあコンパイル時?リンク時?
122デフォルトの名無しさん
2026/05/09(土) 09:09:18.92ID:d0g52L0e123デフォルトの名無しさん
2026/05/09(土) 09:22:17.46ID:+volYkQ2124デフォルトの名無しさん
2026/05/09(土) 09:55:37.01ID:d0g52L0e >>123
変数のアドレスで変数が一意に決まるとしても
変数と変数のアドレスは違うものである
マイナンバーで日本での個人が一意に決まるとしても
個人とマイナンバーは違うもの
「変数とはアドレスのこと」というのは
「個人とはマイナンバーのこと」と同じぐらいに無理がある
変数のアドレスで変数が一意に決まるとしても
変数と変数のアドレスは違うものである
マイナンバーで日本での個人が一意に決まるとしても
個人とマイナンバーは違うもの
「変数とはアドレスのこと」というのは
「個人とはマイナンバーのこと」と同じぐらいに無理がある
125デフォルトの名無しさん
2026/05/09(土) 09:55:46.98ID:v4KHc9uZ >>96
むしろ猿のほうが機械語楽でしょ
絶対アドレスと相対アドレスさえわかってりゃいいだけだしね
オブジェクト指向とか余計なこと考えずとも
全部メモリ空間だけを見てメモリ空間のデータを主役にしてプログラム組んでいけばいいからなぁ
むしろ猿のほうが機械語楽でしょ
絶対アドレスと相対アドレスさえわかってりゃいいだけだしね
オブジェクト指向とか余計なこと考えずとも
全部メモリ空間だけを見てメモリ空間のデータを主役にしてプログラム組んでいけばいいからなぁ
126💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 10:18:33.39ID:6d+vv6Vz C++を英語の第1版で学んだ人間相手になに言ってんの?
127💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 10:23:43.82ID:6d+vv6Vz K島さん(現准教授)の主催した輪講だよ。今、憎悪が集中してるあいつもいたよ?他はK村さんとかA川さんとか。
128デフォルトの名無しさん
2026/05/09(土) 10:45:29.73ID:v4KHc9uZ 複数の変数名を用意して
それら全部同じアドレス参照してる組み方してれば、くだらない変数=アドレス論とかアホでしかないが
それら全部同じアドレス参照してる組み方してれば、くだらない変数=アドレス論とかアホでしかないが
129デフォルトの名無しさん
2026/05/09(土) 10:57:09.46ID:gb2wIFAe 老人しかいない・・・
130💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 11:00:18.59ID:6d+vv6Vz コンパイル時ではなくリンク時に決定されるものもある。グローバル変数やグローバル関数の実体だ。リンク時に見つからなければエラーになる。重複していてもエラーになる。
131💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 11:06:19.74ID:6d+vv6Vz >>128
それ、どうやってやんの?
それ、どうやってやんの?
132💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 11:31:30.01ID:6d+vv6Vz グローバル変数やグローバル関数の実体だけでなく構造体のメンバ変数のオフセットもリンク時に決定されるようになっていればOO言語でも修正を加えたファイルだけを再コンパイルすればいいようにできたはず。もちろんデニス・リッチーがあの時代にそんなことを心配してくれていたはずもない。
133💾キモじじい ◆Rn9d66GbJRuf
2026/05/09(土) 11:34:27.08ID:6d+vv6Vz >>128
ねえねえ、同じ値のポインタを沢山用意するの?
ねえねえ、同じ値のポインタを沢山用意するの?
134デフォルトの名無しさん
2026/05/09(土) 12:46:27.64ID:Zy18Nh/Z135デフォルトの名無しさん
2026/05/09(土) 19:30:13.13ID:5Ty6Srkh voidポインタに加減算はやめたほうがいいです
136デフォルトの名無しさん
2026/05/09(土) 22:00:36.03ID:NBGqd586 a == (void*)&a;
の意味ほんとわからん
神がそう定めたからとしか説明できない
の意味ほんとわからん
神がそう定めたからとしか説明できない
137デフォルトの名無しさん
2026/05/09(土) 22:51:33.48ID:d0g52L0e138デフォルトの名無しさん
2026/05/09(土) 23:50:16.41ID:GVIVSwJQ139デフォルトの名無しさん
2026/05/10(日) 00:07:32.66ID:Y8y1B3+/ 変数のアドレスもコロコロ変わるものなんだよ
知らなかったの?
知らなかったの?
140デフォルトの名無しさん
2026/05/10(日) 00:27:13.35ID:4u5Uf5a6 移動式GCをしない限り
変数のアドレスはその有効期間ずっと変わらない
変数のアドレスはその有効期間ずっと変わらない
141デフォルトの名無しさん
2026/05/10(日) 00:47:42.91ID:5QP6GCUy 変数名は特定の番地につけられた名前の印象
スタックに置かれたローカル変数などは別だけど
スタックに置かれたローカル変数などは別だけど
142デフォルトの名無しさん
2026/05/10(日) 00:48:54.60ID:tUpLoUZY 変数と変数名は
143デフォルトの名無しさん
2026/05/10(日) 00:50:36.84ID:tUpLoUZY ごめんなさい
途中で投稿してしまいました
変数というとかなり曖昧で、住所不定にも思える
途中で投稿してしまいました
変数というとかなり曖昧で、住所不定にも思える
144デフォルトの名無しさん
2026/05/10(日) 00:51:18.70ID:9aOTzBVn >>141
スタック上の変数は相対アドレスとして不変
スタック上の変数は相対アドレスとして不変
145デフォルトの名無しさん
2026/05/10(日) 00:54:05.85ID:tUpLoUZY146デフォルトの名無しさん
2026/05/10(日) 02:42:12.60ID:9aOTzBVn147💾キモじじい ◆Rn9d66GbJRuf
2026/05/10(日) 02:51:10.90ID:M7hm4HsA sp相対がアドレスでないと思うのなんで?
148💾キモじじい ◆Rn9d66GbJRuf
2026/05/10(日) 02:55:10.43ID:M7hm4HsA 関数が呼び出された瞬間に積まれるスタックフレーム内にスタックポインタからの相対アドレスとしてアクセスするんでしょ?それが「変数=アドレス」でないと思う人いるの?
149デフォルトの名無しさん
2026/05/10(日) 03:35:00.53ID:sR74bWY+ C言語の言語仕様で定義されてないものは、動いているシステムで
たまたまそう実装されているだけ
register宣言された変数のアドレスはどうなるんだ?
最近の賢いコンパイラならregister宣言がなくてもレジスタに割り当てる
ことができる変数ならレジスタを使うだろう
変数=アドレスなんて馬鹿な考えはさっさと捨てましょう
たまたまそう実装されているだけ
register宣言された変数のアドレスはどうなるんだ?
最近の賢いコンパイラならregister宣言がなくてもレジスタに割り当てる
ことができる変数ならレジスタを使うだろう
変数=アドレスなんて馬鹿な考えはさっさと捨てましょう
150デフォルトの名無しさん
2026/05/10(日) 03:53:01.14ID:sR74bWY+ そもそもC言語の仕様にスタックなんて概念はない
151デフォルトの名無しさん
2026/05/10(日) 03:53:04.56ID:O5xWWWft 変数はアドレスで合ってる
一時的な変数で他からアクセスされない条件ならば
一度もメモリに戻すことなくレジスタ上だけで済ませられるだけの話
一時的な変数で他からアクセスされない条件ならば
一度もメモリに戻すことなくレジスタ上だけで済ませられるだけの話
152💾キモじじい ◆Rn9d66GbJRuf
2026/05/10(日) 03:57:38.46ID:M7hm4HsA でもフォン・ノイマン・アーキテクチャ以外にC言語ってあるの?データフローってなにでプログラム書くの?
153デフォルトの名無しさん
2026/05/10(日) 04:27:47.24ID:sR74bWY+ コンパイラがローカル変数をスタックに置くことが多いのは手軽で便利で速いからそうしているだけ
ヒープに置いて管理する実装があったとしても問題ない
そもそもIBMの往年のSystem370とかだとハードがサポートするスタックが存在しないが
それにもGCCが移植されているらしい
ヒープに置いて管理する実装があったとしても問題ない
そもそもIBMの往年のSystem370とかだとハードがサポートするスタックが存在しないが
それにもGCCが移植されているらしい
154デフォルトの名無しさん
2026/05/10(日) 04:36:43.44ID:y8TXZMUb スタックに置こうがビープに置こうがその変数の有効期間はアドレス固定で変わることがない
155デフォルトの名無しさん
2026/05/10(日) 11:42:51.73ID:fh8OS9ra156デフォルトの名無しさん
2026/05/10(日) 11:59:15.79ID:sdPo2w2T157デフォルトの名無しさん
2026/05/10(日) 12:14:31.88ID:chag2lR2158デフォルトの名無しさん
2026/05/10(日) 13:11:27.35ID:xEIKXTky159デフォルトの名無しさん
2026/05/10(日) 13:18:01.25ID:QSOcTc++ ポインタなんてメモリに格納されている数値がアドレスかどうかの話だけなのに
160デフォルトの名無しさん
2026/05/10(日) 13:20:44.26ID:LDF9Hgbz 馬鹿しかいない
161デフォルトの名無しさん
2026/05/10(日) 14:43:32.67ID:kzIu4TAJ 『変数のアドレスは途中で変わらない』
という常識を知らない人はコンパイラにアセンブリ出力させて見てみるといい
変数のアドレスはアセンブリコードの中のオペランドとして埋め込まれている
実行中に変わることはない
という常識を知らない人はコンパイラにアセンブリ出力させて見てみるといい
変数のアドレスはアセンブリコードの中のオペランドとして埋め込まれている
実行中に変わることはない
162デフォルトの名無しさん
2026/05/10(日) 14:48:25.63ID:ihfry+TW 自分で正当化してるところがキモい 5chで架空の像マウントが自分にとっての全てという姿勢が現実を生きていない
今時ハラスメントが当たり前みたいに言ってるやつは会社では絶滅してるのだが何十年も前に社会人だったという人間なのか
今時ハラスメントが当たり前みたいに言ってるやつは会社では絶滅してるのだが何十年も前に社会人だったという人間なのか
163デフォルトの名無しさん
2026/05/10(日) 14:54:20.33ID:4FzEqhBY >>137
Rustは最悪ですね判ります
Rustは最悪ですね判ります
164デフォルトの名無しさん
2026/05/10(日) 15:27:56.97ID:Jxl6VU1k >>161
>『変数のアドレスは途中で変わらない』
『変数の本質はアドレス』や『変数はアドレス』からかなり後退したなw
『変数のアドレスは途中で変わらない場合がある』なら間違ってないよww
>変数のアドレスはアセンブリコードの中のオペランドとして埋め込まれている
必ずそうなるわけじゃないんだよ
>『変数のアドレスは途中で変わらない』
『変数の本質はアドレス』や『変数はアドレス』からかなり後退したなw
『変数のアドレスは途中で変わらない場合がある』なら間違ってないよww
>変数のアドレスはアセンブリコードの中のオペランドとして埋め込まれている
必ずそうなるわけじゃないんだよ
165デフォルトの名無しさん
2026/05/10(日) 18:13:31.79ID:q1uqJAP4 変数のアドレスは変わらない発言の件
私は正しいと思っている者ですが何を絡まれているのかがちょっとよく分からない。話題の次元が合ってない?
グローバル変数なら特定の絶対アドレスを対象に値を格納・取得する
ローカル変数なら呼ばれた関数用に確保されたスタックフレーム上の特定のオフセットアドレスを対象に値を格納・取得する(アドレスを必要としないレジスタ変数については今回議論の中心ではない様なので除外してます)
int変数ならintの値を、int*変数ならポインタ値を、特定のアドレスを対象に格納・取得。
Cのコードを翻訳した時に、これらの動作となる機械コードが出力されると思ってます。
一方、アドレスが途中で変わると言う主張は私には例がイメージができないです、、、
私は正しいと思っている者ですが何を絡まれているのかがちょっとよく分からない。話題の次元が合ってない?
グローバル変数なら特定の絶対アドレスを対象に値を格納・取得する
ローカル変数なら呼ばれた関数用に確保されたスタックフレーム上の特定のオフセットアドレスを対象に値を格納・取得する(アドレスを必要としないレジスタ変数については今回議論の中心ではない様なので除外してます)
int変数ならintの値を、int*変数ならポインタ値を、特定のアドレスを対象に格納・取得。
Cのコードを翻訳した時に、これらの動作となる機械コードが出力されると思ってます。
一方、アドレスが途中で変わると言う主張は私には例がイメージができないです、、、
166デフォルトの名無しさん
2026/05/10(日) 18:36:26.64ID:7nKR88AY >>165
>アドレスを必要としないレジスタ変数については今回議論の中心ではない様なので除外してます
今回の議論の中心は「変数とはアドレスのこと」かどうかですよ
アドレスを必要としない変数があるということは「変数とはアドレスのことではない」という結論には同意済みなんですかね?
>アドレスを必要としないレジスタ変数については今回議論の中心ではない様なので除外してます
今回の議論の中心は「変数とはアドレスのこと」かどうかですよ
アドレスを必要としない変数があるということは「変数とはアドレスのことではない」という結論には同意済みなんですかね?
167デフォルトの名無しさん
2026/05/10(日) 19:04:31.76ID:q1uqJAP4 ここまでの議論はレジスタ変数の言及ではないと思っているので(質の悪い質問に対する質の悪いAI回答のように)同意はできませんね
168デフォルトの名無しさん
2026/05/10(日) 19:12:32.76ID:gKBzqDxA169デフォルトの名無しさん
2026/05/10(日) 19:17:20.48ID:q1uqJAP4 >>166はレジスタ変数の事をどう思ってるの
170デフォルトの名無しさん
2026/05/10(日) 20:58:48.74ID:sdPo2w2T アドレスを変動させる仕組みASLR
このせいで変数の配置場所がコロコロ変わる
変わってもOSが変わった場所を覚えてくれるので、ソフトはそれを考慮せずポインタで扱える
が、アドレスは明確に変動しているのだ
馬鹿がポインタ=アドレス=変数は不変と勘違いしている
このせいで変数の配置場所がコロコロ変わる
変わってもOSが変わった場所を覚えてくれるので、ソフトはそれを考慮せずポインタで扱える
が、アドレスは明確に変動しているのだ
馬鹿がポインタ=アドレス=変数は不変と勘違いしている
171デフォルトの名無しさん
2026/05/10(日) 21:05:39.60ID:sdPo2w2T 他のアプリが割り込んだためにページングファイルに退避され
また戻った時に同じメモリ空間に戻されるわけもなく
絶対アドレスで指定したらおかしくなるわな
マイコンやってるならそう思ってもいいが
絶対アドレスでアクセスしていいならわざわざポインタも変数も使わず直接メモリ叩けばよいが
そんな時代ではない
また戻った時に同じメモリ空間に戻されるわけもなく
絶対アドレスで指定したらおかしくなるわな
マイコンやってるならそう思ってもいいが
絶対アドレスでアクセスしていいならわざわざポインタも変数も使わず直接メモリ叩けばよいが
そんな時代ではない
172デフォルトの名無しさん
2026/05/10(日) 22:38:55.27ID:bhoD44N2 おもしろい議論してるねぇ。
論理アドレスと物理アドレス(メモリやレジスタやネットワーク上のストレージなど)を考えるなら、
変数の論理アドレスは変わらないが物理アドレスは動的かもしれない。
そのC言語は、必ずしも物理マシン上だけに実装されているとは限らない。みたことないけど。
C言語が扱っているのは、そのC言語実装上の論理アドレスでしょう。
ちょっと、粘菌でできたCPUとメモリを考えてみたい。論理アドレスを維持できるのだろうか。
論理アドレスと物理アドレス(メモリやレジスタやネットワーク上のストレージなど)を考えるなら、
変数の論理アドレスは変わらないが物理アドレスは動的かもしれない。
そのC言語は、必ずしも物理マシン上だけに実装されているとは限らない。みたことないけど。
C言語が扱っているのは、そのC言語実装上の論理アドレスでしょう。
ちょっと、粘菌でできたCPUとメモリを考えてみたい。論理アドレスを維持できるのだろうか。
173デフォルトの名無しさん
2026/05/10(日) 23:26:59.52ID:q1uqJAP4 >>170-171
OSが行うスワップイン・アウトなどで物理アドレスは変わるかもしれないけど論理アドレスは変わらないからC言語コードからは気にする必要ないよ
変数の論理アドレスは不変だ、変数を参照するポインタが扱うのは論理アドレスだからその点安心して使ってね
どちらかといえばローカル変数のアドレスを戻り値として返さない(関数終了時に変数は消滅するから)とかを気をつけてね
しかしASLRなんて技術があるんだね、すごいね。気にしたことがなかった
OSが行うスワップイン・アウトなどで物理アドレスは変わるかもしれないけど論理アドレスは変わらないからC言語コードからは気にする必要ないよ
変数の論理アドレスは不変だ、変数を参照するポインタが扱うのは論理アドレスだからその点安心して使ってね
どちらかといえばローカル変数のアドレスを戻り値として返さない(関数終了時に変数は消滅するから)とかを気をつけてね
しかしASLRなんて技術があるんだね、すごいね。気にしたことがなかった
174デフォルトの名無しさん
2026/05/10(日) 23:31:10.52ID:DGXyzFW8175デフォルトの名無しさん
2026/05/10(日) 23:34:39.01ID:qr9klzI1 >>167
別にレジスタ変数じゃなくても対応するアドレスが存在しない変数なんていくらでもあるでしょ?
別にレジスタ変数じゃなくても対応するアドレスが存在しない変数なんていくらでもあるでしょ?
176デフォルトの名無しさん
2026/05/10(日) 23:53:28.28ID:C4KpyFRF >>175
変数には必ずアドレスがあることが保証される
だから&varnameで必ずアドレスを得られる
その上で、アドレスが使われていない場合、もしくは、最適化でアドレスが最終的に必要とされない場合、
メモリ上に置かれずにレジスタ上だけで済まるなどしてもよい自由も保証される
変数には必ずアドレスがあることが保証される
だから&varnameで必ずアドレスを得られる
その上で、アドレスが使われていない場合、もしくは、最適化でアドレスが最終的に必要とされない場合、
メモリ上に置かれずにレジスタ上だけで済まるなどしてもよい自由も保証される
177デフォルトの名無しさん
2026/05/10(日) 23:57:59.61ID:bhoD44N2 粘菌CPUはジョークではないが、C言語って高級言語ではなく高級アセンブラ言語なのだから、
物理ソースに(直接)アクセスできなければ意味はない。
なんらかの一般的なOS上で使うC言語ならともかく、
組み込み用のC言語になると、物理的なハードにアクセスするので、
変数とかポインタとか実行コードとかの動作は自分で保証しないといけない。
物理ソースに(直接)アクセスできなければ意味はない。
なんらかの一般的なOS上で使うC言語ならともかく、
組み込み用のC言語になると、物理的なハードにアクセスするので、
変数とかポインタとか実行コードとかの動作は自分で保証しないといけない。
178デフォルトの名無しさん
2026/05/11(月) 00:31:42.27ID:WWe4evK5179デフォルトの名無しさん
2026/05/11(月) 00:59:12.70ID:2zfH/cwg180デフォルトの名無しさん
2026/05/11(月) 01:14:09.98ID:TDpg2Hvx >>179
変数の実行時のメモリアドレスは変わらない
実行途中で変化しない
だからこそ変数のアドレスをそのへんの配列や構造体その他にプログラムが勝手に保存してもよい
変数のアドレスは変わらないから後でそれを用いてもよい
もちろん関数内のstaticでない変数が関数を離脱すると無効になる件は本件とは独立した話として注意を要する
変数の実行時のメモリアドレスは変わらない
実行途中で変化しない
だからこそ変数のアドレスをそのへんの配列や構造体その他にプログラムが勝手に保存してもよい
変数のアドレスは変わらないから後でそれを用いてもよい
もちろん関数内のstaticでない変数が関数を離脱すると無効になる件は本件とは独立した話として注意を要する
181デフォルトの名無しさん
2026/05/11(月) 04:00:48.33ID:UHoXqmUk まとめるとこんな感じか
変数の有効期限内での変数のアドレスは原則として変更されない
ASLRはプロセス生成時にデータのアドレスをランダム化するだけで
変数の有効期限内でのアドレスは固定となる
ただしグローバル変数だとしてもvolatile宣言されてないものは
最適化により特定の部分でレジスタに割り当てられる可能性がある
仮想記憶で物理アドレスがかわることがあったとしても
プロセスから見える変数の有効期限内での論理アドレスは変更されない
変数の有効期限内での変数のアドレスは原則として変更されない
ASLRはプロセス生成時にデータのアドレスをランダム化するだけで
変数の有効期限内でのアドレスは固定となる
ただしグローバル変数だとしてもvolatile宣言されてないものは
最適化により特定の部分でレジスタに割り当てられる可能性がある
仮想記憶で物理アドレスがかわることがあったとしても
プロセスから見える変数の有効期限内での論理アドレスは変更されない
182デフォルトの名無しさん
2026/05/11(月) 11:51:04.96ID:83zRqP8M そういう理解の仕方はポインタのポインタでつまづくからやめれ
183デフォルトの名無しさん
2026/05/11(月) 12:22:54.77ID:BjPsWtVC わざとややこしくしてるヤツがいるなw
184デフォルトの名無しさん
2026/05/11(月) 13:48:36.16ID:VWseMxak 変数=アドレスっつってるやつだけが、自分の知ってる狭い世界だけ見て主張してるだけだからなぁ
マシン語もCも直接絶対アドレスを扱えてしまうんだから
いつのまにか物理アドレスと変数アドレスと分けて言いだして恥さらし
マシン語もCも直接絶対アドレスを扱えてしまうんだから
いつのまにか物理アドレスと変数アドレスと分けて言いだして恥さらし
185デフォルトの名無しさん
2026/05/11(月) 13:51:20.13ID:VWseMxak だからこそポインタという機能で、そういう危険な物理アドレス意識しないまま連続アドレスとして扱えるように工夫されてるのに、そういう土俵の上だけしか見えなくて、変数=アドレスなんか言ってるから間抜け
186デフォルトの名無しさん
2026/05/11(月) 15:19:04.32ID:ozjQEcPs187デフォルトの名無しさん
2026/05/11(月) 17:06:21.12ID:DaaryO5f >>184
メモリに格納されている値を数値、文字コード、メモリの番地として扱うかどうかはOSとプログラム次第の話だが、C言語とUNIXはOSの仕様が先にある話だ。
メモリに格納されている値を数値、文字コード、メモリの番地として扱うかどうかはOSとプログラム次第の話だが、C言語とUNIXはOSの仕様が先にある話だ。
188デフォルトの名無しさん
2026/05/11(月) 17:51:52.74ID:VWseMxak C言語はUNIX専用でも何でもないけど?
PC-88や98 DOS/Vやwinやマイコンで使われてる
PC-88や98 DOS/Vやwinやマイコンで使われてる
189デフォルトの名無しさん
2026/05/11(月) 18:00:30.99ID:Ox4sgKHR >>188
C言語のこと何もわかってねえな
C言語のこと何もわかってねえな
190デフォルトの名無しさん
2026/05/11(月) 21:30:26.39ID:Nzb6NYIT >>185
間違ってる
ポインタにそんな機能はない
それはOSの役目
仮想アドレス空間も持つOS環境ではそこで動くユーザプロセスは仮想アドレスのみで動く
物理アドレスを知ることもできず物理アドレスを意識することさえない
そこには仮想アドレスしかない
変数も仮想アドレスしか持たない
間違ってる
ポインタにそんな機能はない
それはOSの役目
仮想アドレス空間も持つOS環境ではそこで動くユーザプロセスは仮想アドレスのみで動く
物理アドレスを知ることもできず物理アドレスを意識することさえない
そこには仮想アドレスしかない
変数も仮想アドレスしか持たない
191デフォルトの名無しさん
2026/05/11(月) 21:51:14.45ID:+fatS4qB 頭悪そう
ポインタのポインタってのがある時点で、変数の場所のアドレスが変わることを示してるってのに
ポインタのポインタってのがある時点で、変数の場所のアドレスが変わることを示してるってのに
192デフォルトの名無しさん
2026/05/11(月) 22:37:13.63ID:EsnJ0dnK ポインタのポインタのポインタのポインタのポインタのポインタ
193デフォルトの名無しさん
2026/05/11(月) 23:13:01.37ID:a+RXV+Ng194デフォルトの名無しさん
2026/05/11(月) 23:18:24.37ID:MKuUSvDq 愉快犯に付き合うのは時間を浪費するだけ
195デフォルトの名無しさん
2026/05/11(月) 23:56:02.44ID:Gifj3ORT ポインタ自体も変数だ
何かのアドレスを保持する変数
ポインタのポインタはその変数(ポインタ)のアドレスを保持する変数
何かのアドレスを保持する変数
ポインタのポインタはその変数(ポインタ)のアドレスを保持する変数
196デフォルトの名無しさん
2026/05/12(火) 02:08:36.16ID:pJQZEhk+ 時間の無駄
197デフォルトの名無しさん
2026/05/12(火) 12:05:15.78ID:hVHmjsCD AIに、変数=アドレスですかって聞いてみなw
198デフォルトの名無しさん
2026/05/12(火) 15:18:18.19ID:k3W0pFRt 機械科のCの授業のテキストが要点をまとめたようなスライドで、それをノートに取って、演習をやるんだけどAIに聞かないと正解率がゼロとか15問中1とか。テストでできる気がしない。ダブルポインタでのlinked listの書き換えとか、関数のポインタを引数に渡すあたり。AIがなかった頃はみんな授業で理解してたのかな
199デフォルトの名無しさん
2026/05/12(火) 16:25:48.58ID:v7lo+dU+ C言語の要素だけで考えてるからパズルになる
メモリイメージを把握してたらなんてことはない
逆に言うとそういう感覚がないなら活用できないし危険
機械科ならさわりでいいからマシン語もいっしょに学習してみては
メモリイメージを把握してたらなんてことはない
逆に言うとそういう感覚がないなら活用できないし危険
機械科ならさわりでいいからマシン語もいっしょに学習してみては
200デフォルトの名無しさん
2026/05/12(火) 16:37:52.48ID:CQESEVeb ノート取るよりもコード書いて動かす方がよさそうだけど
201デフォルトの名無しさん
2026/05/12(火) 18:51:32.24ID:z/Qt2SIu >>198
>ダブルポインタでのlinked listの書き換えとか、関数のポインタを引数に渡すあたり
前者は文法覚えたての初級者ができなくても全然問題ないが
後者は基礎なのでできないとまずい
高校ならともかく大学の話なら授業だけで理解できると思うのは間違い
一般的に偏差値の高い大学ほどその傾向が強い
>ダブルポインタでのlinked listの書き換えとか、関数のポインタを引数に渡すあたり
前者は文法覚えたての初級者ができなくても全然問題ないが
後者は基礎なのでできないとまずい
高校ならともかく大学の話なら授業だけで理解できると思うのは間違い
一般的に偏差値の高い大学ほどその傾向が強い
202デフォルトの名無しさん
2026/05/12(火) 19:45:58.38ID:UKUkkRNH *p … ポインタ
**p … ポポインタ
***p … ポポポインタ
**p … ポポインタ
***p … ポポポインタ
203デフォルトの名無しさん
2026/05/12(火) 20:33:17.59ID:hVHmjsCD ボインと命名すればよかったのに
204デフォルトの名無しさん
2026/05/13(水) 00:09:38.39ID:gffYywze >>198
main関数のargvも実質ダブルポインタでchar *argv[]ではなくchar **argvとも書ける
K&R本の図がわかりやすかった思い出
https://imgur.com/a/l2qqJXK
先生やAIがいい図を描いてくれればいいんだけど
main関数のargvも実質ダブルポインタでchar *argv[]ではなくchar **argvとも書ける
K&R本の図がわかりやすかった思い出
https://imgur.com/a/l2qqJXK
先生やAIがいい図を描いてくれればいいんだけど
205デフォルトの名無しさん
2026/05/13(水) 09:40:14.84ID:gV574Y85 K&RはまさにCを設計した人の本ですね。アマゾンで見たら書評のpros & conがすごい極端。理解できるかどうかわからないけどkindleで1500円くらいで買えるので買ってみるです。ありがとうございます
206デフォルトの名無しさん
2026/05/13(水) 11:58:22.99ID://o0RJ80 学習本を買うならできるなら実物を見ながら検討した方がいい
自分が理解している事、自分がわからない事を説明してあるページを見て
自分に合う本なのか確認すべし
大昔なら柴田望洋の本を買っておけば大体間違いなしという感じだったが
今はどうなのか知らない
自分が理解している事、自分がわからない事を説明してあるページを見て
自分に合う本なのか確認すべし
大昔なら柴田望洋の本を買っておけば大体間違いなしという感じだったが
今はどうなのか知らない
207デフォルトの名無しさん
2026/05/13(水) 20:38:40.01ID:UpUyi1rI >>205
ANSI Cが基本だ。
ANSI Cが基本だ。
208デフォルトの名無しさん
2026/05/13(水) 20:46:57.06ID:o9u5JvGB 歳とると思い込みがコントロールできなくなるよね
205はそもそも2ndでしょ
205はそもそも2ndでしょ
209デフォルトの名無しさん
2026/05/14(木) 09:07:53.43ID:XV0UuxkJ 「ダブルポインタ」だれが言い始めたのか知らんがこの用語を使う香具師は判ってない香具師
判ってる香具師は正しくポインタノポインタと言う
判ってる香具師は正しくポインタノポインタと言う
210💾キモじじい ◆Rn9d66GbJRuf
2026/05/14(木) 09:14:42.55ID:wRuFTQJM211デフォルトの名無しさん
2026/05/14(木) 20:47:39.32ID:Zqzv4ota >>209
それは本当にそう
C言語でウンザリすることベスト10に入る
・ダブルポインタと言い出す初心者
・ポインタの説明記事を書いちゃう初心者
・ポインタと配列を混同する初心者
:
それは本当にそう
C言語でウンザリすることベスト10に入る
・ダブルポインタと言い出す初心者
・ポインタの説明記事を書いちゃう初心者
・ポインタと配列を混同する初心者
:
212デフォルトの名無しさん
2026/05/14(木) 21:19:23.94ID:xRz71k34 元はといえばC言語の仕様が悪い
Rustなら
・生ポインタと参照の区別がある
・配列は静的固定サイズNを伴った型
・スライスは動的サイズを伴った型
なので
例えば文字列の配列への参照なら&[&str; N]型
文字列のスライスへの参照なら&[&str]型
それらの要素一つへの参照なら&&str型
これらがCでは**char型などに縮退されてしまうのが辛い
Rustなら
・生ポインタと参照の区別がある
・配列は静的固定サイズNを伴った型
・スライスは動的サイズを伴った型
なので
例えば文字列の配列への参照なら&[&str; N]型
文字列のスライスへの参照なら&[&str]型
それらの要素一つへの参照なら&&str型
これらがCでは**char型などに縮退されてしまうのが辛い
213デフォルトの名無しさん
2026/05/14(木) 22:09:20.90ID:Y81e4q3P typedefやマクロ活用すれば分かりやすくはなるけど
型の互換があればそのままやりとりできるし
書けちゃうのがよくないってことだよね
でも16ビット機で開発できる高級アセンブラと考えたら十分かな
複雑なことはC++でという流れだし
型の互換があればそのままやりとりできるし
書けちゃうのがよくないってことだよね
でも16ビット機で開発できる高級アセンブラと考えたら十分かな
複雑なことはC++でという流れだし
214デフォルトの名無しさん
2026/05/14(木) 22:32:39.76ID:J0/3AA29 >>211
それはC言語の初心者にうんざりさせられることワースト10
それはC言語の初心者にうんざりさせられることワースト10
215デフォルトの名無しさん
2026/05/14(木) 23:04:30.23ID:nVJjyR+X ダブルポインタって英語圏で確立された用語が輸入されただけやで
MITやスタンフォードのCS講義でも普通に使われてるんだがお前ら大丈夫か?
MITやスタンフォードのCS講義でも普通に使われてるんだがお前ら大丈夫か?
216デフォルトの名無しさん
2026/05/15(金) 08:34:22.66ID:SE3UM+4l C言語でうんざりさせられる所
1. 宣言
void (*f[10])(int);
void (*f)(int)[10];
2. プリプロセッサ
馬鹿な使い方をすれば混乱の極み
3. 実装依存
f1() + f2()
関数内部で同じグローバル変数を使ってたりすると...
1. 宣言
void (*f[10])(int);
void (*f)(int)[10];
2. プリプロセッサ
馬鹿な使い方をすれば混乱の極み
3. 実装依存
f1() + f2()
関数内部で同じグローバル変数を使ってたりすると...
217デフォルトの名無しさん
2026/05/15(金) 08:45:19.72ID:SE3UM+4l ああ、間違えているw
218デフォルトの名無しさん
2026/05/15(金) 11:40:01.76ID:0MfJ9N7a C言語の設計が悪いんじゃなくて、C言語を教える時にコンピュータについて教えないのが悪いだけ
C言語は隠ぺいしてないだけだよ
C言語は隠ぺいしてないだけだよ
219デフォルトの名無しさん
2026/05/15(金) 12:01:03.50ID:0MfJ9N7a220デフォルトの名無しさん
2026/05/15(金) 12:01:49.61ID:0MfJ9N7a221デフォルトの名無しさん
2026/05/15(金) 22:58:48.13ID:0bPGiVOv 柴田望洋ってまだ生きてるの?
222💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/16(土) 03:41:14.36ID:dNhOVJjS223デフォルトの名無しさん
2026/05/16(土) 04:15:01.15ID:OxkUY+FM Cの本はK&RとCプログラミング専門課程しか覚えてない
224デフォルトの名無しさん
2026/05/16(土) 08:50:26.09ID:gpo9RdSK 自分はANSI C(C89)が最新の時期にK&R2ndその他を手に取り、その後の追加仕様はWebで補給する形を取っている
今新規で学ぶ人はどのような学習スタイルが最適なのだろう。最新C(C23)をカバーしながら言語自体と適用例を学べる本って無さそうだし、Webだけで学ぶのは常に資料が変容するイメージがあって学習達成感を得にくいと思うんだ
今新規で学ぶ人はどのような学習スタイルが最適なのだろう。最新C(C23)をカバーしながら言語自体と適用例を学べる本って無さそうだし、Webだけで学ぶのは常に資料が変容するイメージがあって学習達成感を得にくいと思うんだ
225デフォルトの名無しさん
2026/05/16(土) 09:08:17.04ID:M0okmgCq 機械語やってるとCは処理系の説明書だけで十分
226デフォルトの名無しさん
2026/05/16(土) 09:09:06.52ID:ice6SjA9 C言語なんか、アセンブラをラップするだけの言語なんだから、設計も糞も無いだろ
227デフォルトの名無しさん
2026/05/16(土) 11:03:25.86ID:9v1K/5l7 馬鹿ってそう感じてたのか
228デフォルトの名無しさん
2026/05/16(土) 13:03:51.17ID:DqJBhPbG Cで脆弱性だらけのプログラムを書くやつが多いのはK&Rのせい
今では非推奨の書き方も多用されてるから新規で学ぶ人用の本ではない
歴史的書物として経験者が読むもの
今では非推奨の書き方も多用されてるから新規で学ぶ人用の本ではない
歴史的書物として経験者が読むもの
229デフォルトの名無しさん
2026/05/16(土) 14:05:26.82ID:JbTEwvtj 今となっては特殊組み込み以外はC使わずにRustがいいよ
230デフォルトの名無しさん
2026/05/16(土) 15:55:48.45ID:D4Up5ilO カニ飯リッチ
231デフォルトの名無しさん
2026/05/16(土) 21:09:13.89ID:l+TnFtsR Cは文法が糞
ザイログ形式のニモニックのまま高級言語化してほしい
ザイログ形式のニモニックのまま高級言語化してほしい
232デフォルトの名無しさん
2026/05/17(日) 00:21:38.18ID:sZl86DxD >>231
76H
76H
233デフォルトの名無しさん
2026/05/17(日) 08:15:32.05ID:hzDNIoZ4 なぜかC9H(Ret)だけ覚えてる
初見の関数どこで関数が終るのか目星をつけるのは今でも変わらないね
初見の関数どこで関数が終るのか目星をつけるのは今でも変わらないね
234💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/18(月) 03:58:06.70ID:X5sfaAzO 🎯👈👈👈👈👈
🤜💥ABC💯🌴
↑PCG: Programmable
🤜💥ABC💯🌴
↑PCG: Programmable
235💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/18(月) 04:00:32.21ID:X5sfaAzO 🎯👈👈👈👈👈
🤜💥ABC💯🌴
↑PCG: Programmable Character Generator
↑by X1シリーズ
🤜💥ABC💯🌴
↑PCG: Programmable Character Generator
↑by X1シリーズ
236デフォルトの名無しさん
2026/05/18(月) 11:26:46.08ID:5A1Ebijf237デフォルトの名無しさん
2026/05/18(月) 12:01:12.39ID:jQf+jbSy voidさんの本か
読んでみたいような読みたくないような
読んでみたいような読みたくないような
238デフォルトの名無しさん
2026/05/18(月) 21:43:34.88ID:GU18Es67 止めとけ
本がでた頃に2chに本人がきたけど本の内容酷評されたりおちょくられたりで撃退されてたw
本がでた頃に2chに本人がきたけど本の内容酷評されたりおちょくられたりで撃退されてたw
239デフォルトの名無しさん
2026/05/18(月) 22:44:51.38ID:3S4Q09d6 1. Effective C
2. Modern C
3. SEI CERT C Coding Standard
Effective Cは第2版がModern Cは第3版が出てる
SEI CERT C Coding StandardはWebで読める
2. Modern C
3. SEI CERT C Coding Standard
Effective Cは第2版がModern Cは第3版が出てる
SEI CERT C Coding StandardはWebで読める
240デフォルトの名無しさん
2026/05/18(月) 23:47:15.86ID:zqbhNErD おすすめ情報元紹介ありがとうございます。
英語文献はブラウザで翻訳できるところは読むようになりました。洋書を読む方は自分で翻訳ですか、すごいですね、、、
英語文献はブラウザで翻訳できるところは読むようになりました。洋書を読む方は自分で翻訳ですか、すごいですね、、、
241デフォルトの名無しさん
2026/05/20(水) 00:32:16.01ID:K4ijhElN 俺はCをやるにあたって「はじめての8086」を読めと言われた
「はじめての486」も併せて買ったけど積ん読した
「はじめての486」も併せて買ったけど積ん読した
242デフォルトの名無しさん
2026/05/20(水) 00:39:25.62ID:7EfSCYUZ 6502がいちばんおもしろかったなぁ。
243デフォルトの名無しさん
2026/05/20(水) 00:45:15.30ID:iGvoShit 初めて読むマシン語、8086、486ナツカシス
244💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/20(水) 01:23:44.91ID:aoS52wMR 4004で電卓戦争やってた人いますか?
245デフォルトの名無しさん
2026/05/20(水) 10:35:47.92ID:VmWwNsDH246デフォルトの名無しさん
2026/05/20(水) 21:23:12.52ID:Z0u59BFL >>242
だがCをインプリメントするとしたら最悪なCPUだよなあ
だがCをインプリメントするとしたら最悪なCPUだよなあ
247デフォルトの名無しさん
2026/05/20(水) 21:45:21.76ID:ZgHSF/QP >>246
ゼロページが変数として使える最強やないか
ゼロページが変数として使える最強やないか
248デフォルトの名無しさん
2026/05/23(土) 13:44:55.22ID:ULl5YR4s 09良いよね
http://www.st.rim.or.jp/~nkomatsu/mc680x/MC6809.html
http://www.st.rim.or.jp/~nkomatsu/mc680x/MC6809.html
249デフォルトの名無しさん
2026/05/23(土) 19:04:49.27ID:p40Ic9M9 ざいろぐちゃん
もすちゃん
もとらちゃん
もすちゃん
もとらちゃん
250デフォルトの名無しさん
2026/05/23(土) 21:41:01.42ID:skqHV7XZ Abstract Data type(ADT)を使ってstackとqueueを、固定長配列、動的配列、linked listで書く演習をやっている。逆ポーランド記法の電卓とか括弧の対応が正しいかというやつ。コードを読めば一応わかるけど一から書けといわれたら無理。stackとqueueは3種類の方法で自在に書けないと試験合格は難しいらしい。もう、6パターンまる覚えするためにひたすら書いているけどいちいちmakeするのが面倒くさい。
来週からはビット演算。そのあとI/Oと標準/数学ライブラリとやって、これでCは一旦終わり。後期からはアセンブラ。どんどん難しくなるんだけど方向性が情報系とは逆な気がする。あっちはあっちで大変そうだけど。
来週からはビット演算。そのあとI/Oと標準/数学ライブラリとやって、これでCは一旦終わり。後期からはアセンブラ。どんどん難しくなるんだけど方向性が情報系とは逆な気がする。あっちはあっちで大変そうだけど。
251デフォルトの名無しさん
2026/05/23(土) 21:57:34.46ID:TIyii4ui へー、高度なことやってるねー。MIT系の教科書かなぁ。
252デフォルトの名無しさん
2026/05/23(土) 22:13:45.25ID:fvZ+wgIe なんか80年代の教育内容だね
Secure Codingについては学んでるんだろうか
Secure Codingについては学んでるんだろうか
253デフォルトの名無しさん
2026/05/23(土) 23:18:15.41ID:YY7E06NG Securityについては、interface(ヘッダ)とimplematation(.cの実体)を使って、high cohesionとlow couplingを意識しろくらいことしか学んでないです。もっと高度なやり方があるんだと思いますが、今のところ応用まで手が出ないです。。。
254デフォルトの名無しさん
2026/05/23(土) 23:29:27.66ID:j4Q0q/xv それはまあCの普通の書き方というか昔々からのよくある設計の方針みたいな話で、セキュアコーディングとは何ら関係ない
本質的にはCに限った話でもないし、もっと言えばその回答は何も言ってないのと同じくらい内容がない
大体ヘッダとソース使ってってCならそらそうだろw
本質的にはCに限った話でもないし、もっと言えばその回答は何も言ってないのと同じくらい内容がない
大体ヘッダとソース使ってってCならそらそうだろw
255デフォルトの名無しさん
2026/05/23(土) 23:41:36.02ID:mQjs53zr セキュアコーディングという私の知らない概念かあるんですね。これから習う内容に入っていれば良いんだけど
256デフォルトの名無しさん
2026/05/23(土) 23:46:06.27ID:gde19rTM メモリを直接操作できる故の話よね
いうてOSやマシン語の知見も必要だし人間が気をつけるにも限界があるから
現実的にはコンパイラや周辺ツールを活用するのが常套(いまならAIもある)
体系だって学ぶ以上に指摘くらって得るものが大きい
いうてOSやマシン語の知見も必要だし人間が気をつけるにも限界があるから
現実的にはコンパイラや周辺ツールを活用するのが常套(いまならAIもある)
体系だって学ぶ以上に指摘くらって得るものが大きい
257💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/23(土) 23:52:28.24ID:cAwIaPoW 構造体型のtypedef宣言とそれを操作する関数のプロトタイプ群をヘッダで宣言してエクスポートする。実体はソースに書く。継承なしのカプセル化であり「データ抽象化」と呼ばれるものである。
258デフォルトの名無しさん
2026/05/23(土) 23:54:43.44ID:CG4aH5xK error handlingて項目が今後の項目にあった。assert.hやsignal.hなど。これがセキュアコーディングの入り口かな? 今はここまで手を広げられないけど
259デフォルトの名無しさん
2026/05/24(日) 00:04:44.66ID:tzxvC/3+ いまはいったん忘れていいよ
後期でアセンブラ着手しだしたら
毎日のようにある脆弱性のニュースと頭の中でつながるから
後期でアセンブラ着手しだしたら
毎日のようにある脆弱性のニュースと頭の中でつながるから
260デフォルトの名無しさん
2026/05/24(日) 00:10:43.42ID:PG7LhSHM >>257
ADTの前方宣言の構造体(incomplete)てやつですね。まさに写経中。freeするのがムズイ。別の関数でmallocしたのをきちんと順を追ってfreeしてやるのが難しい。意識せずにできなきゃいけないんだろうけど。パターンだからそのうち覚えられるかなあ
ADTの前方宣言の構造体(incomplete)てやつですね。まさに写経中。freeするのがムズイ。別の関数でmallocしたのをきちんと順を追ってfreeしてやるのが難しい。意識せずにできなきゃいけないんだろうけど。パターンだからそのうち覚えられるかなあ
261デフォルトの名無しさん
2026/05/24(日) 00:33:21.14ID:YAn8aOoG 解放を忘れたり解放して場所を指したまま使ってしまったり人間はミスをする
特に複雑化して込み合ってくると見落としてミスる
だから現実にセキュリティホールなどが知らぬ間に生じて発見されて悪用されてきた
今はメモリ管理など含めた多くの問題の安全性を言語レベルで保証してくれるRust言語が登場したから移行できるなら移行すべきだけどね
特に複雑化して込み合ってくると見落としてミスる
だから現実にセキュリティホールなどが知らぬ間に生じて発見されて悪用されてきた
今はメモリ管理など含めた多くの問題の安全性を言語レベルで保証してくれるRust言語が登場したから移行できるなら移行すべきだけどね
262💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/24(日) 01:53:35.07ID:fAG7NgfK >>260
異なる型の2つの構造体が相互にリンクを持ち合う時、そして俺の知る限りその時にのみ、構造体のタグによる前方参照が必要。
他は別にtypedefした構造体を普通の型としてインスタンスを宣言するだけ。newは芋蔓式に次から次へと下請けのnewを呼ぶだろうしdeleteも同様。
頑張れ。
異なる型の2つの構造体が相互にリンクを持ち合う時、そして俺の知る限りその時にのみ、構造体のタグによる前方参照が必要。
他は別にtypedefした構造体を普通の型としてインスタンスを宣言するだけ。newは芋蔓式に次から次へと下請けのnewを呼ぶだろうしdeleteも同様。
頑張れ。
263💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/24(日) 02:31:18.42ID:fAG7NgfK ある構造体を型としてtypedefしようと思えば、もしそのメンバーとして別の構造体型が用いられていればその構造体型もその時点でtypedefされていなければならない。それをするためにはその別の構造体型のtypedefが行われている別のヘッダをインクルードするのが普通で、それは芋蔓式のインクルードになる。ヘッダの多重インクルード対策は簡単なので問題は起こらないと思う。
264💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/24(日) 02:37:41.10ID:fAG7NgfK ていうかC++もそうでしょ?
265デフォルトの名無しさん
2026/05/24(日) 12:03:35.04ID:xUBIupda typedef struct { A a; } B;
typedef struct { int i; } A;
typedef struct { int i; } A;
266デフォルトの名無しさん
2026/05/24(日) 12:06:00.15ID:xUBIupda struct A_;
typedef struct { struct A_ a; } B;
typedef struct A_ A;
typedef struct { struct A_ a; } B;
typedef struct A_ A;
267デフォルトの名無しさん
2026/05/24(日) 13:09:36.52ID:s4jEs3HF268デフォルトの名無しさん
2026/05/24(日) 13:22:13.47ID:Qix84Ywx // とあるソース.c
#include "B.h" // Bを使いたい
┗#include "A.h" // BはAを使うのでB.h内部でA.hをインクルードする
#include "A.h" // すでにB.hのなかでA.hがインクルードされているのでインクルードガードにより重複よみこみされない
#include "B.h" // Bを使いたい
┗#include "A.h" // BはAを使うのでB.h内部でA.hをインクルードする
#include "A.h" // すでにB.hのなかでA.hがインクルードされているのでインクルードガードにより重複よみこみされない
269デフォルトの名無しさん
2026/05/24(日) 13:37:30.43ID:Qix84Ywx // 相互参照はインクルードでは対応できないで前方宣言する
struct B;
struct A { …, B *b, … };
struct B { …, A *a, … };
struct B;
struct A { …, B *b, … };
struct B { …, A *a, … };
270💾キモバカじじい ◆Rn9d66GbJRuf
2026/05/24(日) 13:46:03.43ID:fAG7NgfK こんな感じにできない?(うろ覚え)
typedef struct tag_1
{
struct tag_2* ptr2;
} Type1;
typedef struct tag_2
{
struct tag_1* ptr1;
} Type2;
typedef struct tag_1
{
struct tag_2* ptr2;
} Type1;
typedef struct tag_2
{
struct tag_1* ptr1;
} Type2;
271デフォルトの名無しさん
2026/05/24(日) 14:59:47.15ID:/jkmbLum オンラインのコンパイラでしか試してないけどC++も
class A { class B *b; };
class B { class A *a; };
みたいな記法は許容されてるな
Cはtypedefしないと毎回structが必要になるから省略できるC++とは標準スタイルが違いそう
class A { class B *b; };
class B { class A *a; };
みたいな記法は許容されてるな
Cはtypedefしないと毎回structが必要になるから省略できるC++とは標準スタイルが違いそう
272デフォルトの名無しさん
2026/05/24(日) 22:21:11.99ID:h/YQfM5+ C言語が難しいなんて思うやつは、C++を少しでも知ったら発狂して自殺しそうw
273デフォルトの名無しさん
2026/05/25(月) 09:43:47.28ID:a1IT/WC2 >>270
こういう書き方大っ嫌い
こういう書き方大っ嫌い
274デフォルトの名無しさん
2026/05/25(月) 12:27:59.47ID:ZVLpVWSF 後方参照を許さないC言語が時代遅れなことに気づかないとな
Cコンパイラしか提供されない組み込み環境なら仕方ないが
そうでないならC言語を今すぐ捨てるべきだ
Cコンパイラしか提供されない組み込み環境なら仕方ないが
そうでないならC言語を今すぐ捨てるべきだ
275デフォルトの名無しさん
2026/05/26(火) 19:02:11.19ID:4AYldPgi >>274
C言語はUNIX用のプログラミング言語なんだが?
C言語はUNIX用のプログラミング言語なんだが?
276デフォルトの名無しさん
2026/05/26(火) 22:23:22.62ID:/r0Ypo2p x 設計が悪い
o 設計がシンプル
o 設計がシンプル
277デフォルトの名無しさん
2026/05/26(火) 23:21:22.65ID:GWUdZZ4M 設計が悪いも何も、ポータブルなアセンプラとして計算機に寄り添う形で設計してあって、それは今も変わらないのでは
今となっては古いと言われればそうかもしれないけど、古いことは別に何も悪いことじゃない
今となっては古いと言われればそうかもしれないけど、古いことは別に何も悪いことじゃない
278デフォルトの名無しさん
2026/05/27(水) 08:17:35.98ID:08gSGm1k アセンブラはカッタルイからこんなん作ったよ
なレベルの言語に文句言ってもなぁ
なレベルの言語に文句言ってもなぁ
279デフォルトの名無しさん
2026/05/27(水) 09:54:13.42ID:sb5fUGY6 もともとのC言語はハードウェアの性能を100%出せることを前提に設計されているから
機種依存がわんさかとある言語
機種依存がわんさかとある言語
280デフォルトの名無しさん
2026/05/27(水) 10:10:20.11ID:088jDWOf >>279
UNIXの仕様を想定して作られたC言語は、別のOSでは前提条件が違っていて勝手にC言語を移植されて問題になった。
UNIXの仕様を想定して作られたC言語は、別のOSでは前提条件が違っていて勝手にC言語を移植されて問題になった。
281デフォルトの名無しさん
2026/05/27(水) 10:13:32.14ID:zw6fajFz アセンブラがかったるいからと言って
{とか
}とか
=>とか醜い表現使うなっての
{とか
}とか
=>とか醜い表現使うなっての
282デフォルトの名無しさん
2026/05/27(水) 11:03:05.79ID:sb5fUGY6 自分の知らないC言語のようだ
283デフォルトの名無しさん
2026/05/27(水) 11:13:41.19ID:vt0HUY+p #define begin {
#define end }
#define end }
284デフォルトの名無しさん
2026/05/27(水) 13:28:13.51ID:B9J/OP7Y ゲーッ。17章も参照のこと。
285デフォルトの名無しさん
2026/05/30(土) 01:28:49.19ID:Jsn+beB5 begin/endをdefineするのは懐かしいなぁ。
やったよねぇ、Pascal風の言語にしちゃうやつ。
おれはstructuerにfunction入れてsmalltalk風に使ってた。C++できる以前。
やったよねぇ、Pascal風の言語にしちゃうやつ。
おれはstructuerにfunction入れてsmalltalk風に使ってた。C++できる以前。
286デフォルトの名無しさん
2026/05/30(土) 07:01:10.70ID:m3T0RFG6 プリプロセッサの素晴らしく駄目な使い方だな
287デフォルトの名無しさん
2026/05/30(土) 09:48:01.35ID:XQCyRiRg288デフォルトの名無しさん
2026/05/30(土) 10:50:22.35ID:Jsn+beB5 pascal風の簡易DSLをヘッダーだけで作成して、
最上位の業務階層は、簡易DSLで保守。
pascal部隊もいたので。
最上位の業務階層は、簡易DSLで保守。
pascal部隊もいたので。
289デフォルトの名無しさん
2026/05/30(土) 11:01:27.30ID:Jsn+beB5 可読性の問題だよねぇ。C言語でも効率より可読性をとれば、わかりやすくはなる。
だけど高級アセンブラなので、効率がよく可読性の高い「設計と構築」が求められる。
だけど高級アセンブラなので、効率がよく可読性の高い「設計と構築」が求められる。
290デフォルトの名無しさん
2026/05/30(土) 11:10:01.49ID:Jsn+beB5 プリプリプロセッサを作らないならば、
プリプロセッサだけで効率と可読性を求める。
プリプロセッサだけで効率と可読性を求める。
291デフォルトの名無しさん
2026/05/30(土) 11:17:37.55ID:lVeD90kH ラダー回路が最高
292デフォルトの名無しさん
2026/05/30(土) 12:08:02.72ID:U80OJ//1 初期のC++がただのプリプロセッサだったというのは皮肉
293デフォルトの名無しさん
2026/05/30(土) 16:06:18.89ID:x3RS+DzD ポインタと配列の違いとかまあ微妙だわな。全部ポインタでええやろとは思う
294デフォルトの名無しさん
2026/05/30(土) 17:23:34.48ID:QKLBXZIC さらにポインタはintの使い方の一つという扱いで補って、あれアセンブラのままがシンプルでよかったかな?
295デフォルトの名無しさん
2026/05/30(土) 19:05:09.28ID:fcUvegOR intじゃ代替出来んわな
296デフォルトの名無しさん
2026/05/30(土) 19:22:21.90ID:QKLBXZIC ちょっと厳しかったですか
やっぱりポインタが持つ型というものは、生成コードに間接的にしか表れませんが偉大ですね
やっぱりポインタが持つ型というものは、生成コードに間接的にしか表れませんが偉大ですね
297デフォルトの名無しさん
2026/05/30(土) 20:00:52.87ID:OeNHKzAz まあunsigned charとかintとか設計悪いよな
i8 <- 8bit符号あり整数
u64 <- 64bit符号なし整数
な感じで、i8/i16/i32/i64、u8/u16/u32/u64、f32/f64とかでええやろ
ポインタ型も最初からpi8/pvoidみたいなの使えるようにしとけ
構造体やクラス(C++)もあるから*は必要だが
i8 <- 8bit符号あり整数
u64 <- 64bit符号なし整数
な感じで、i8/i16/i32/i64、u8/u16/u32/u64、f32/f64とかでええやろ
ポインタ型も最初からpi8/pvoidみたいなの使えるようにしとけ
構造体やクラス(C++)もあるから*は必要だが
298デフォルトの名無しさん
2026/05/30(土) 20:57:47.70ID:XFlMbqow >>297
C言語はUNIXを作るために作ったと何度、言われればわかるのか?
C言語はUNIXを作るために作ったと何度、言われればわかるのか?
299デフォルトの名無しさん
2026/05/30(土) 21:34:36.66ID:m3T0RFG6 メモリが56KBとかのマシンで作られた言語だからな
仕様なんて必要最低限しかない
仕様なんて必要最低限しかない
300デフォルトの名無しさん
2026/05/30(土) 21:53:42.53ID:m3T0RFG6 もともとの仕様な
301デフォルトの名無しさん
2026/05/30(土) 22:33:31.82ID:fcUvegOR こういう>>297みたいな「dmrより俺の方が分かってる」みたいな手合いって世界中にいるんだろうな
誰かのやった仕事に対して何十年も経った立場からキャンキャン吠えるとかそんな恥知らずなマネよく出来るなw
誰かのやった仕事に対して何十年も経った立場からキャンキャン吠えるとかそんな恥知らずなマネよく出来るなw
302デフォルトの名無しさん
2026/05/31(日) 00:13:03.27ID:A0lcmmAm 仕様の解釈に柔軟性を持たせたから今でも現役で残っているとも言える
303デフォルトの名無しさん
2026/05/31(日) 11:59:55.21ID:iw1445Th >ポインタ型も最初からpi8/pvoidみたいなの使えるようにしとけ
>構造体やクラス(C++)もあるから*は必要だが
矛盾してるな
構造体aのポインタをpaとするルールを入れろと言ってるようなもの
それなら*aと何も変わらん
>構造体やクラス(C++)もあるから*は必要だが
矛盾してるな
構造体aのポインタをpaとするルールを入れろと言ってるようなもの
それなら*aと何も変わらん
304デフォルトの名無しさん
2026/06/01(月) 05:02:59.72ID:nDSJqHbn 結局上流の仕様を深く考えられる俺たちがC言語設計しとけばだいぶ世の中変わったよなあって話だな
ポインタ一つとってもvoid*でポイドポインタにキャストできる利便性と引き換えに本来の型情報喪失っていう致命的なミスしてるしメモリバグの要因になってる
当時の人は何を思ったのやら
ポインタ一つとってもvoid*でポイドポインタにキャストできる利便性と引き換えに本来の型情報喪失っていう致命的なミスしてるしメモリバグの要因になってる
当時の人は何を思ったのやら
305デフォルトの名無しさん
2026/06/01(月) 07:31:28.81ID:HZwAN0EX だから、アセンブラ直接使いたくなかっただけだから
変数の型なんてレジスタの延長としか考えて無いんだよ
変数の型なんてレジスタの延長としか考えて無いんだよ
306デフォルトの名無しさん
2026/06/01(月) 07:36:06.85ID:RuL1T6Db Cコンパイラしかない組み込み環境でないのならC言語を今すぐ捨てろ
ちゃんとした強い型付け言語を使え
ちゃんとした強い型付け言語を使え
307デフォルトの名無しさん
2026/06/01(月) 08:28:53.94ID:Um4FaBea むかし某旧帝大の講義でヌルポインタを全ビットゼロのポインタのことだとか説明してるのを聴いたときは
所詮日本ってこの程度なんだなあとガッカリしたな
所詮日本ってこの程度なんだなあとガッカリしたな
308デフォルトの名無しさん
2026/06/01(月) 09:15:17.64ID:Y8Ze0X4r309デフォルトの名無しさん
2026/06/01(月) 09:28:24.03ID:UpLtcaM+310デフォルトの名無しさん
2026/06/01(月) 09:43:30.17ID:2Fig2KkG #define NULL ((void *)0)
だもんなあ
しかし、アドレス 0 が有効なアドレスであるシステムならまた違った値になっているだろう
だもんなあ
しかし、アドレス 0 が有効なアドレスであるシステムならまた違った値になっているだろう
311デフォルトの名無しさん
2026/06/01(月) 10:53:28.39ID:zavtC8M7 #define break exit(-1)
312デフォルトの名無しさん
2026/06/01(月) 12:41:39.70ID:z7Brjm4N >>306
Rustと以外でおすすめある?
Rustと以外でおすすめある?
313デフォルトの名無しさん
2026/06/01(月) 12:43:04.75ID:orNocmRO314デフォルトの名無しさん
2026/06/01(月) 12:45:46.65ID:Y/faLFgX CPUのアーキテクチャ次第だからヌルポは0じゃ無くて定義次第
315デフォルトの名無しさん
2026/06/01(月) 12:46:30.75ID:orNocmRO >>314
なるへそ
なるへそ
316デフォルトの名無しさん
2026/06/01(月) 13:08:32.64ID:Um4FaBea317デフォルトの名無しさん
2026/06/01(月) 13:15:11.22ID:Ud3VbC+T318デフォルトの名無しさん
2026/06/01(月) 13:29:41.12ID:Gju4oLNk319デフォルトの名無しさん
2026/06/01(月) 13:58:22.88ID:Ud3VbC+T >>318
C言語の規格書 ISO/IEC9899 にて
NULLポインタは値0と定められています
CPUアーキテクチャとは一切無関係です
プログラミング言語Cが定めているためどのCPUアーキテクチャにおいても同じ値0です
C言語の規格書 ISO/IEC9899 にて
NULLポインタは値0と定められています
CPUアーキテクチャとは一切無関係です
プログラミング言語Cが定めているためどのCPUアーキテクチャにおいても同じ値0です
320デフォルトの名無しさん
2026/06/01(月) 14:44:22.09ID:4HzhGRP/321デフォルトの名無しさん
2026/06/01(月) 15:00:03.91ID:1czkfGd6 ゼロ番地にアクセス出来ないとかモトローラ系とかディスってる?
322デフォルトの名無しさん
2026/06/01(月) 20:01:08.52ID:2Fig2KkG >>319
どのCの規格書だ?C89、C99、C11のドラフトっぽいもので確認すると
stddef.h の所で以下のように記述されている
The macros are
NULL
which expands to an implementation-defined null pointer constant; and ...
どのCの規格書だ?C89、C99、C11のドラフトっぽいもので確認すると
stddef.h の所で以下のように記述されている
The macros are
NULL
which expands to an implementation-defined null pointer constant; and ...
323322
2026/06/01(月) 20:29:11.18ID:2Fig2KkG すまぬ
C11の 6.3.2.3 Pointers の 3 に以下の詰があった
確かに 0、もしくは void * にキャストされた 0 だわ
An integer constant expression with the value 0, or such an expression cast to type
void *, is called a null pointer constant.
C11の 6.3.2.3 Pointers の 3 に以下の詰があった
確かに 0、もしくは void * にキャストされた 0 だわ
An integer constant expression with the value 0, or such an expression cast to type
void *, is called a null pointer constant.
324デフォルトの名無しさん
2026/06/01(月) 20:41:19.52ID:zG8I8hLe C11まだ導入してないな
C99には移行したけど
C99には移行したけど
325デフォルトの名無しさん
2026/06/01(月) 20:46:31.22ID:OMUIYmd4326デフォルトの名無しさん
2026/06/01(月) 20:50:25.71ID:A/7+PPzR >>325
数値0と定められている
数値0と定められている
327デフォルトの名無しさん
2026/06/01(月) 22:32:22.49ID:zavtC8M7 ほんまかいな!?
328デフォルトの名無しさん
2026/06/01(月) 22:49:47.77ID:2Fig2KkG >>325
ただのシンボルだという事は知らなかったわ
実装依存の話だが、仮想記憶のあるモダンOSならユーザーアドレス空間の0ページ目は潰しておいて
ページフォールトが発生するようにしているから、内部でもNULLは0にしているのがほとんどだろう
ただのシンボルだという事は知らなかったわ
実装依存の話だが、仮想記憶のあるモダンOSならユーザーアドレス空間の0ページ目は潰しておいて
ページフォールトが発生するようにしているから、内部でもNULLは0にしているのがほとんどだろう
329デフォルトの名無しさん
2026/06/01(月) 23:43:43.01ID:J16IyJIp null pointer constantとnull pointerは別のもの
330デフォルトの名無しさん
2026/06/02(火) 00:24:25.45ID:LrQcnY0k331デフォルトの名無しさん
2026/06/02(火) 02:23:41.62ID:mtjv5G02 整数0をnullポインタとするがnullポインタのビット表現は全ビット0とは限らない
となっているけど今現在nullポインタのビット表現が全0でない処理系は一つも存在しない
となっているけど今現在nullポインタのビット表現が全0でない処理系は一つも存在しない
332デフォルトの名無しさん
2026/06/02(火) 02:50:41.26ID:+gLw9u1V >>325
nullポインタの内部実装が全0以外の現在も使われているCPUを教えてくれまいか
nullポインタの内部実装が全0以外の現在も使われているCPUを教えてくれまいか
333デフォルトの名無しさん
2026/06/02(火) 09:18:16.49ID:G0ij1AX5 ポインタをメタ情報+アドレス(いわゆるfat pointer)で表現する系とか想定してそう
メタ情報は型IDとかサイズを保持してvoid *だとメタ情報も含めて0になる
メタ情報は型IDとかサイズを保持してvoid *だとメタ情報も含めて0になる
334デフォルトの名無しさん
2026/06/02(火) 12:11:29.47ID:pjjvj95o c/c++って情報更新しなくて古い知識で語ってる場合がよくある
335デフォルトの名無しさん
2026/06/03(水) 21:17:01.74ID:pyJ8HP8Y c11を理解せずにc99ぐらいで止まってる老害は多い。ちょうどJavaのヌルポで老害があぶり出されるのと同じ。
昔から老害の不勉強は変わらない
昔から老害の不勉強は変わらない
336デフォルトの名無しさん
2026/06/04(木) 00:04:22.85ID:m+R0LwSW 車載制御ソフト開発のときはマイコンメーカが提供するコンパイラの縛りはあったかも
337デフォルトの名無しさん
2026/06/04(木) 00:55:02.05ID:BbHFCyvu ワシはC89じゃ
いやマジで
いやマジで
338デフォルトの名無しさん
2026/06/04(木) 01:31:06.95ID:Ta60b9dy 実務じゃ環境指定もあるもんな
339デフォルトの名無しさん
2026/06/04(木) 11:42:33.60ID:GSMyaSRc AIにどの規格で書いて欲しいか頼めば書いてくれるやろ。しょーもない。
340デフォルトの名無しさん
2026/06/05(金) 00:33:28.57ID:SwS5NgPl 俺はC99
構造体の変数初期化で
.member=true
使いたいためだけ
それを除けばAPIは89でもいいや
しかし、俺らの生まれる前の規格まだ使ってるのなんとも言えん
89年って、、、
構造体の変数初期化で
.member=true
使いたいためだけ
それを除けばAPIは89でもいいや
しかし、俺らの生まれる前の規格まだ使ってるのなんとも言えん
89年って、、、
341デフォルトの名無しさん
2026/06/05(金) 00:34:17.79ID:SwS5NgPl342デフォルトの名無しさん
2026/06/05(金) 06:28:59.17ID:bexxxAm9 当時自分の生息圏ではルネサスのNEC系32bit 16bitが多かった
今もC89対応コメント//等一部C99対応という状況みたい
日本企業だからJIS規格に追従なのかも、そしてJISのCは実質C99止まり
同じ車載といっても画面表示系という話になれば状況は全く異なるでしょうが
今もC89対応コメント//等一部C99対応という状況みたい
日本企業だからJIS規格に追従なのかも、そしてJISのCは実質C99止まり
同じ車載といっても画面表示系という話になれば状況は全く異なるでしょうが
343デフォルトの名無しさん
2026/06/05(金) 07:06:59.37ID:3SHpKq3x 仕事場で使われている処理系ってどこのやつが多いんだろ?
昔はGreen Hills一択だったが
昔はGreen Hills一択だったが
344デフォルトの名無しさん
2026/06/05(金) 07:14:42.79ID:3SHpKq3x 昔じゃなくて大昔か
345デフォルトの名無しさん
2026/06/07(日) 02:46:14.18ID:G31AiZvV346デフォルトの名無しさん
2026/06/07(日) 09:25:07.35ID:rVXMWcgY347デフォルトの名無しさん
2026/06/07(日) 12:28:46.24ID:S9aP1pou Geminiに相談
348デフォルトの名無しさん
2026/06/07(日) 14:12:21.08ID:4m4/B3eh 問題が起きたときに責任転嫁できる相手がいることが重要
349デフォルトの名無しさん
2026/06/08(月) 06:22:21.19ID:gzPGpD/Z だからいまだにファックス使ってるんだよな
350デフォルトの名無しさん
2026/06/08(月) 23:02:38.62ID:a61iFu3f Green Hillsのコンパイラの話とか詳しく聞きたいなあ。
もう5chの存在意義ってこういう話題くらいじゃない?
もう5chの存在意義ってこういう話題くらいじゃない?
351デフォルトの名無しさん
2026/06/09(火) 13:00:45.86ID:RY2x18eX GHS懐かしい
コンパイラが変わる移植作業でビットフィールドの順序が逆になるから並べ替えを行った記憶がある
その時の片方のコンパイラがGHSだったかも
pragmaで変更できる場合もあるけどその時は無理で並び替えたんだと思う
コンパイラが変わる移植作業でビットフィールドの順序が逆になるから並べ替えを行った記憶がある
その時の片方のコンパイラがGHSだったかも
pragmaで変更できる場合もあるけどその時は無理で並び替えたんだと思う
352デフォルトの名無しさん
2026/06/09(火) 16:41:30.15ID:d6n81evb Green Hills絶賛使用中だよ
車載だと多いんじゃないか
車載だと多いんじゃないか
353デフォルトの名無しさん
2026/06/09(火) 18:14:34.00ID:0PE+fusR グリーンヒルズ懐かしいな
昔、組み込みやってた頃に触ったっけ
昔、組み込みやってた頃に触ったっけ
354デフォルトの名無しさん
2026/06/09(火) 21:26:28.07ID:TNICk9r6 コンパイラの選定や環境設定は自分でやってないので特に覚えているような事はないかも
つまり印象に残るようなトラブルはゼロだったという意味ね
グリーンヒルズは下手な人がアセンブラで書くよりもいいコードを出すということは耳にしていた
つまり印象に残るようなトラブルはゼロだったという意味ね
グリーンヒルズは下手な人がアセンブラで書くよりもいいコードを出すということは耳にしていた
355デフォルトの名無しさん
2026/06/10(水) 12:14:20.63ID:JzwuglLS >>345
典型的なAIで造った文に観えるが
典型的なAIで造った文に観えるが
356デフォルトの名無しさん
2026/06/10(水) 15:43:52.98ID:Ly8k5LPa ポインタを!ptrみたいに否定演算子でナル判定するのってお前ら的にはどう?
357デフォルトの名無しさん
2026/06/10(水) 18:00:38.08ID:gQT8+tu+358デフォルトの名無しさん
2026/06/10(水) 18:02:04.40ID:YY0HuvZT 別にどうも
359デフォルトの名無しさん
2026/06/10(水) 18:17:21.69ID:Zdw9zzEn360デフォルトの名無しさん
2026/06/10(水) 18:44:09.01ID:MHpuHtRb NULL安全でないC言語は使うのをやめるようにと米政府が表明してから脱Cを進めてるよね
361デフォルトの名無しさん
2026/06/10(水) 19:23:16.14ID:8t/e6lAQ362デフォルトの名無しさん
2026/06/12(金) 20:43:39.95ID:sEpK+LU8 esp32とかマイコンベンダーもrust推してる
363デフォルトの名無しさん
2026/06/12(金) 21:05:39.25ID:06UPCiPG Cコンパイラしか使えない一部の組み込み環境があるけど
そうでないならRustを使った方が良いね
そうでないならRustを使った方が良いね
364デフォルトの名無しさん
2026/06/12(金) 22:08:42.76ID:qQKLRWIu なぜかRustは誰も使ってないからなあ
365デフォルトの名無しさん
2026/06/12(金) 22:31:46.36ID:9rVj1NJY 周囲や知人で誰も!?
珍しい偏った環境だな
珍しい偏った環境だな
366デフォルトの名無しさん
2026/06/13(土) 16:27:37.02ID:CGZmbi53 5chのおっきいおともだちをのぞく
367デフォルトの名無しさん
2026/06/13(土) 18:17:05.96ID:6Z0SGq+Y char*みたいにポインタなのにリテラルも入るとゆうガイジ仕様
368デフォルトの名無しさん
2026/06/13(土) 21:15:51.71ID:vppH1Zg0 アセンブラを楽に使いたいって発想で作られた言語だから型と言う概念が曖昧なんだよ
369デフォルトの名無しさん
2026/06/13(土) 21:42:28.61ID:DArC+J4H370デフォルトの名無しさん
2026/06/14(日) 07:44:35.26ID:4EJ924Q0 char*に文字列リテラルが入っているわけではなく
文字列リテラルへのポインタでしょ?
文字列リテラルへのポインタでしょ?
371デフォルトの名無しさん
2026/06/14(日) 10:30:58.50ID:m8XTSxro いや、アドレスサイズに収まるデータならリテラルだろうが入るだろw
372デフォルトの名無しさん
2026/06/14(日) 11:07:50.71ID:UVmnEvyc 入るから入れちゃうおじさんにはちょっと難しい言語なんだと思う
373デフォルトの名無しさん
2026/06/14(日) 11:09:39.26ID:+misnZ54 配列もポインタとして機能するてそれじゃコード見ただけでコピーか参照を渡してるのかわからんやろ
さすがにゴミ仕様すぎ
cに関わってたケントンプンもgoでこのうんこ仕様使ってないしなんでこんなことになったんや
さすがにゴミ仕様すぎ
cに関わってたケントンプンもgoでこのうんこ仕様使ってないしなんでこんなことになったんや
374デフォルトの名無しさん
2026/06/14(日) 12:56:05.18ID:m8XTSxro だから、アセンブラ面倒くさいでお気楽に作ったトランスレータだからだよw
375デフォルトの名無しさん
2026/06/14(日) 14:13:13.23ID:LMHlkHJq それ
アセンブラすっ飛ばしてCやるにも相応の理解がいる
アセンブラすっ飛ばしてCやるにも相応の理解がいる
376デフォルトの名無しさん
2026/06/14(日) 15:32:42.51ID:4EJ924Q0377デフォルトの名無しさん
2026/06/14(日) 16:47:36.04ID:LcBqA+Ud C言語の開発に携わったケントンプンw
378デフォルトの名無しさん
2026/06/14(日) 17:47:46.47ID:60UGl0Dj アセンブラをラダーのように進化させたうえで
構造化すりゃ最高なんだが
構造化すりゃ最高なんだが
379デフォルトの名無しさん
2026/06/15(月) 09:35:44.11ID:f9fZDmww もはやCがアセンブラみたいな扱いされとるわ
380デフォルトの名無しさん
2026/06/15(月) 11:53:58.19ID:+eswDgG7 将来的にAIがアセンブラ吐き出すよりCを吐き出す方がいいよな
381デフォルトの名無しさん
2026/06/15(月) 13:09:03.14ID:ytEbROtp AI利用でC言語のコードを吐き出させるのはリスクが高すぎてほとんど行われていない
安全が保証されてほぼ同じ速さで動くRustが使われている
安全が保証されてほぼ同じ速さで動くRustが使われている
382デフォルトの名無しさん
2026/06/15(月) 13:15:51.98ID:+eswDgG7 それがリスクなら最初からAIなんか使っちゃだめだよね
383デフォルトの名無しさん
2026/06/15(月) 13:21:06.12ID:Kg9cUovC AIにとっても人間にとっても強い型付け言語が書きやすい
Cのような弱い型付け言語は実行デバッグに陥りやすいため
Cのような弱い型付け言語は実行デバッグに陥りやすいため
384デフォルトの名無しさん
2026/06/15(月) 13:42:16.29ID:Ts3qBACt AIによる手抜きコーディングに対するプログラミング言語ごとの耐性が異なるってことは、AIコーディング時代を迎えるにあたっての知っておくべき現代プログラマーの基礎知識であり、リテラシーなんだよ。
385デフォルトの名無しさん
2026/06/15(月) 16:53:58.81ID:d20nqYsF リーナスがc以外に唯一認めた言語だしesp32とかマイコンもrust向けツールチェーン出してるから組込もどんどんrust移行が増えてる
386デフォルトの名無しさん
2026/06/15(月) 17:25:11.40ID:pvgjMWMI ここにまでRust応援隊が来てるw
387デフォルトの名無しさん
2026/06/15(月) 18:59:23.76ID:9C6xlFtz そもそもrustはC言語の代替として作られたものであるから速やかに移行することが望ましい
懐古趣味でもないかぎりわざわざ質の低い骨董品に固執する理由がない
懐古趣味でもないかぎりわざわざ質の低い骨董品に固執する理由がない
388デフォルトの名無しさん
2026/06/15(月) 19:24:35.51ID:w/g/uR42 Rustを使いこなせるようになった人は100%がCに戻りたくないけど
Rustの抽象的なコーディングのしやすさを会得できない人と食わず嫌いな人が残ってるよ
Rustの抽象的なコーディングのしやすさを会得できない人と食わず嫌いな人が残ってるよ
389デフォルトの名無しさん
2026/06/15(月) 23:47:14.40ID:XkTC9+Vi Rustの学習コストはCプログラマにはかなり高いそうだねえ
390デフォルトの名無しさん
2026/06/15(月) 23:59:25.80ID:9PXYcxLc391デフォルトの名無しさん
2026/06/16(火) 01:10:32.72ID:oLagFGp9 rustは自動型推論もあるからcと比べたらだいぶ楽よな
式で返せるのもなんかかっこいいし
式で返せるのもなんかかっこいいし
392デフォルトの名無しさん
2026/06/16(火) 08:21:53.13ID:53U3iy+w ドットネットに慣れたらRustもちょい使いにくいけどな
派生、継承、オーバーライドをトレイトベースで書くことになる
でも、組み込みやってるとドットネット使えんからCかRustでええや!となる不思議
案件によって言語の得手不得手があって苦手だわ
適材適所な言語選ぶんじゃなくて一個で済ませたい
派生、継承、オーバーライドをトレイトベースで書くことになる
でも、組み込みやってるとドットネット使えんからCかRustでええや!となる不思議
案件によって言語の得手不得手があって苦手だわ
適材適所な言語選ぶんじゃなくて一個で済ませたい
393デフォルトの名無しさん
2026/06/16(火) 09:14:58.18ID:PDaa9uHw includeでまずつまずく
じゃぁ何をincludeすりゃ足りるのか
それで疲れ果てて終わる
最近の開発環境も拡張機能の巣窟で、そこでめんどくせーってなる
じゃぁ何をincludeすりゃ足りるのか
それで疲れ果てて終わる
最近の開発環境も拡張機能の巣窟で、そこでめんどくせーってなる
394デフォルトの名無しさん
2026/06/16(火) 09:58:09.71ID:JPJ54/AT いいこと思いついた!
Rustでウェブブラウザとか作ったら安心安全じゃね?
Rustでウェブブラウザとか作ったら安心安全じゃね?
395デフォルトの名無しさん
2026/06/16(火) 09:58:58.78ID:cUp8nnj3 >>392
クラスの派生、継承、オーバーライドは現在は悪設計とされている
だからモダンな言語Go・Rust・Nim・Zigなどにはクラスが存在しない
言語仕様からクラスを排除することで良い言語になってる
クラスの派生、継承、オーバーライドは現在は悪設計とされている
だからモダンな言語Go・Rust・Nim・Zigなどにはクラスが存在しない
言語仕様からクラスを排除することで良い言語になってる
396デフォルトの名無しさん
2026/06/16(火) 11:00:51.24ID:gSxq/Hmp FireFoxがRustですんごいことになるからもう少し待て
397デフォルトの名無しさん
2026/06/16(火) 11:24:57.63ID:JPJ54/AT398デフォルトの名無しさん
2026/06/16(火) 11:33:43.05ID:OvWs1uo5399デフォルトの名無しさん
2026/06/16(火) 11:45:37.85ID:Ej06GfG5 Servoを使ったVersoというのがあったはず
400デフォルトの名無しさん
2026/06/16(火) 11:51:29.16ID:7u4fMq6Y ChromeもEdgeもFireFoxいずれも部分的にRust化を進めている
新たな機能や改善のため作り直す機能から順に進めてる
どのWebブラウザも長期間にわたってハイブリッド状態が続くだろう
新たな機能や改善のため作り直す機能から順に進めてる
どのWebブラウザも長期間にわたってハイブリッド状態が続くだろう
401デフォルトの名無しさん
2026/06/16(火) 12:29:30.21ID:FYq/akyN Rustの話題はRustスレでやれば、興味をもってくれる人が多いのに
ここではスレ違いなだけなんだぜ
ここではスレ違いなだけなんだぜ
402デフォルトの名無しさん
2026/06/16(火) 17:22:49.57ID:51B0Lg7r オブジェクト指向はオワコンみたいな事言う奴に限って
なぜオワコンなのか説明出来ない
なぜオワコンなのか説明出来ない
403デフォルトの名無しさん
2026/06/16(火) 17:40:00.90ID:HIkC1MzW オブジェクト指向は重要だからRustなどモダンな言語でも採用している
オワコンはクラス継承があるクラス
オワコンはクラス継承があるクラス
404デフォルトの名無しさん
2026/06/16(火) 21:48:54.37ID:r4r2eM1y とりあえずrustのことは忘れような
ここはCのスレだ
rustの話をするならCの話を巻き込んでしよう
ここはCのスレだ
rustの話をするならCの話を巻き込んでしよう
405デフォルトの名無しさん
2026/06/16(火) 22:19:33.69ID:FO3SxX/N ^^
406デフォルトの名無しさん
2026/06/18(木) 01:06:12.05ID:2jzoAy97 >>393
関数名で検索すれば出るだろアホか
関数名で検索すれば出るだろアホか
407デフォルトの名無しさん
2026/06/18(木) 01:08:01.07ID:2jzoAy97408デフォルトの名無しさん
2026/06/18(木) 08:41:15.73ID:GdAiJdcw Rust応援隊の書き込みを真に受けちゃダメ
409デフォルトの名無しさん
2026/06/18(木) 12:16:49.52ID:tb3qMF6M スクリプト言語から来た人たちですらRustはメモリが自動解放されるからCと違って楽と言ってるもんな
410デフォルトの名無しさん
2026/06/18(木) 12:57:23.50ID:3VnC9rE9411デフォルトの名無しさん
2026/06/18(木) 13:15:41.42ID:K0evV8DH まともな言語は関数や型を使う時
その名前空間を宣言する
Cだと名前空間とは別のヘッダー名でインクルードの怪奇
その名前空間を宣言する
Cだと名前空間とは別のヘッダー名でインクルードの怪奇
412デフォルトの名無しさん
2026/06/18(木) 14:13:15.56ID:wiB36zBv 何かをしたいって時に、なぜあるかどうかもわからん関数名を知ることが出来るってんだね?
頭悪い馬鹿がいるもんだ
頭悪い馬鹿がいるもんだ
413デフォルトの名無しさん
2026/06/18(木) 14:22:06.36ID:hmMEYxJt414デフォルトの名無しさん
2026/06/18(木) 14:25:01.15ID:9cwoZf6Y makefileとかゆううんこどうにかならんの
415デフォルトの名無しさん
2026/06/18(木) 14:44:57.42ID:SVVqmSVU ならない
それはCに限ったもんじゃないし
それはCに限ったもんじゃないし
416デフォルトの名無しさん
2026/06/18(木) 14:51:23.22ID:FwVJv7Xn 今のプログラミング言語はライブラリなどの依存関係を自動的に正しく解決するからmakefileのようなものは不要
417デフォルトの名無しさん
2026/06/18(木) 16:12:33.98ID:sOUMtDS+ 漢は黙ってコンパイラ直接起動
418デフォルトの名無しさん
2026/06/18(木) 20:14:50.81ID:OUo0Uc8m パイ直
419デフォルトの名無しさん
2026/06/19(金) 15:59:03.97ID:wvohrjnQ autoconfだっけmakefileつくるやつ
420デフォルトの名無しさん
2026/06/19(金) 16:19:30.86ID:1YSLjldX autoconfがconfigure作ってconfigureがmakefile作るはず
./configure
,/make
./make install
最後にこれやったのいつだろう
./configure
,/make
./make install
最後にこれやったのいつだろう
421デフォルトの名無しさん
2026/06/19(金) 16:19:54.99ID:Itp1SF9t そう
新規プロジェクトならCMake使いまっし
新規プロジェクトならCMake使いまっし
422デフォルトの名無しさん
2026/06/19(金) 17:03:36.27ID:SV4DyR21 最初はアセンブラで長ったらしく書いてたことをまとめて書けるようになって感動したな
それでいて滅多に余計なこともしないから、効率面でも申し分なかった
それでいて滅多に余計なこともしないから、効率面でも申し分なかった
423デフォルトの名無しさん
2026/06/20(土) 12:29:38.21ID:QVDBf7mS アセンブラ使ってた感覚があると
while(*dst++ = *src++);
最強よね
while(*dst++ = *src++);
最強よね
424デフォルトの名無しさん
2026/06/21(日) 09:28:53.05ID:qfN6AuxN volatileないと最適化されてバイトアクセスでなくなる罠
425デフォルトの名無しさん
2026/06/21(日) 09:29:32.07ID:wYdgkh3W 俺がUNIX作るためにCを設計するなら所有権システムとビルドシステムは作り込むと思うね
ちなみに、人間を作るなら盲腸は削除するし歯は生え変わるように設計すると思うよ
ちなみに、人間を作るなら盲腸は削除するし歯は生え変わるように設計すると思うよ
426デフォルトの名無しさん
2026/06/21(日) 09:29:46.55ID:qfN6AuxN スマン勝手にcharだと空目したわ
427デフォルトの名無しさん
2026/06/21(日) 09:56:16.17ID:QIdUqy6R >>425
C言語誕生当初のメモリ搭載容量は約32KB。貴方の気概に感服します
C言語誕生当初のメモリ搭載容量は約32KB。貴方の気概に感服します
428デフォルトの名無しさん
2026/06/21(日) 11:44:27.36ID:sXbVer3A ていうかそもそもUNIXを書くため作られたとかじゃないよね
429デフォルトの名無しさん
2026/06/21(日) 12:13:15.56ID:Q2mR8a67 もともとはワードマシンであるPDP-7で使っていた型無し言語であったB言語があり
バイトマシンのPDP-11のためにcharやintなどの型が産まれNewB言語になり
更に構造体などが追加されてC言語になったと理解している
バイトマシンのPDP-11のためにcharやintなどの型が産まれNewB言語になり
更に構造体などが追加されてC言語になったと理解している
430デフォルトの名無しさん
2026/06/21(日) 12:18:44.67ID:Q2mR8a67 もともとB言語もNewB言語もC言語もどれもUNIXのために作られた言語でもある
431デフォルトの名無しさん
2026/06/21(日) 18:02:47.48ID:OQp7GUn5 最初はスクリプト言語だったよね?
432デフォルトの名無しさん
2026/06/21(日) 19:20:55.04ID:j0p+y8i+433デフォルトの名無しさん
2026/06/21(日) 19:23:44.05ID:j0p+y8i+ >>318
日本語おかしくね?
日本語おかしくね?
434デフォルトの名無しさん
2026/06/21(日) 19:33:05.56ID:aOp6LZRx unix自体金の亡者でうんこ
435デフォルトの名無しさん
2026/06/25(木) 16:18:07.85ID:wlWeKQvT 赤帽
436デフォルトの名無しさん
2026/06/25(木) 18:59:45.86ID:2/zplXnE C言語一極集中はよくない
437デフォルトの名無しさん
2026/06/26(金) 15:03:51.31ID:eLb+uMzH 赤い旗募金横領
438デフォルトの名無しさん
2026/06/27(土) 07:05:04.17ID:65kHVXtG439デフォルトの名無しさん
2026/06/27(土) 18:27:51.14ID:YNxNTHEk 初めてJSに触れたときクラスなくてビビったけど今はあるんだよな
クラスないとかマジでJS以下じゃん
つまり女子幼稚園児。かわいい。
クラスないとかマジでJS以下じゃん
つまり女子幼稚園児。かわいい。
440デフォルトの名無しさん
2026/06/27(土) 19:35:14.62ID:xemxRbmp zig rust goも幼稚園児
441デフォルトの名無しさん
2026/06/27(土) 22:49:55.18ID:XVxBbNIh442デフォルトの名無しさん
2026/06/28(日) 00:35:33.38ID:llZHv8Q+ >>441
sealed classにしといたらいいと思うけれども
sealed classにしといたらいいと思うけれども
443デフォルトの名無しさん
2026/06/28(日) 03:11:37.04ID:QF2WBXy4 豚の耳に真珠
444デフォルトの名無しさん
2026/06/28(日) 03:35:41.22ID:/7kRm4wN >>442
おっしゃる通りクラス継承を完全に禁止するsealed classやfinal classのみ使うのが正しい
しかしそれはclass自体が完全に不要であることを意味する
なぜならクラス継承以外の必要なオブジェクト指向プログラミングの機能はclass以外も備えているからだ
GoやNimやRustやZigなど新たな言語がclassのみ採用しなかった理由がそれ
おっしゃる通りクラス継承を完全に禁止するsealed classやfinal classのみ使うのが正しい
しかしそれはclass自体が完全に不要であることを意味する
なぜならクラス継承以外の必要なオブジェクト指向プログラミングの機能はclass以外も備えているからだ
GoやNimやRustやZigなど新たな言語がclassのみ採用しなかった理由がそれ
445デフォルトの名無しさん
2026/06/28(日) 07:34:21.80ID:yH7Apu6o classを継承できなかったら存在価値がない。
単純に抽象化の設計ミスだと思いますね。
単純に抽象化の設計ミスだと思いますね。
446デフォルトの名無しさん
2026/06/28(日) 07:53:42.45ID:2VTQVmsl クラスとかゆううんこが採用されたのも今や黒歴史
447デフォルトの名無しさん
2026/06/28(日) 08:06:46.53ID:ZGnDkuNH448デフォルトの名無しさん
2026/06/28(日) 10:39:49.96ID:7lywShnK449デフォルトの名無しさん
2026/06/28(日) 15:44:04.19ID:yH7Apu6o 継承できないと、統一した処理ができなくなるなー。
objectiveC/C++/C#/Javaといろいろ使ってきたけど、
継承がメインだなぁ。俺の設計はね。
意味によってまとめた抽象化ね。
objectiveC/C++/C#/Javaといろいろ使ってきたけど、
継承がメインだなぁ。俺の設計はね。
意味によってまとめた抽象化ね。
450デフォルトの名無しさん
2026/06/28(日) 15:50:16.11ID:KgdYT8h9 インターフェースの継承と実装の継承の区別という語り尽くされた話
初心者じゃないのにこれわかってない奴は引退したほうがいい
初心者じゃないのにこれわかってない奴は引退したほうがいい
451デフォルトの名無しさん
2026/06/28(日) 16:06:46.39ID:hbVepLi7 >>449
クラス継承ではなくインターフェース継承を使いなさい
クラス継承ではなくインターフェース継承を使いなさい
452デフォルトの名無しさん
2026/06/28(日) 16:40:07.30ID:yH7Apu6o 基本はinterfaceのimplementとabstract classの実装だが、
速さや利便性が必要で、実装を継承せざるを得ないところもあるしねぇ。
40年もOOPSやってると特に密結合だからって困るようなことにはならない。
触られて困るところはprivateにしてるし。
というか、作業用class以外はimmutableだし。
速さや利便性が必要で、実装を継承せざるを得ないところもあるしねぇ。
40年もOOPSやってると特に密結合だからって困るようなことにはならない。
触られて困るところはprivateにしてるし。
というか、作業用class以外はimmutableだし。
453デフォルトの名無しさん
2026/06/28(日) 16:44:29.81ID:2VTQVmsl サンクコストと老化で新しいものが受けつけなくなる
454デフォルトの名無しさん
2026/06/28(日) 17:00:27.10ID:d78YP/10 どうせひとりでしょぼいクラスライブラリ作ってるだけで大規模プロジェクトで開発した経験ないだろ
あと40年前ってJava登場前でデザインパターンの概念もない
ほんとにその当時からOOPやってたんなら先進的だが、そこから進化できなかった化石ジジイ
あと40年前ってJava登場前でデザインパターンの概念もない
ほんとにその当時からOOPやってたんなら先進的だが、そこから進化できなかった化石ジジイ
455デフォルトの名無しさん
2026/06/28(日) 17:49:17.50ID:rR1NkrT7 事実としてメジャーOSのネイティブGUIはすべて実装継承ベース
実装継承が悪なんじゃなく実装継承を適切に使いこなせない開発者が悪
実装継承が悪なんじゃなく実装継承を適切に使いこなせない開発者が悪
456デフォルトの名無しさん
2026/06/28(日) 18:02:27.43ID:7RIIBmwV457デフォルトの名無しさん
2026/06/28(日) 20:46:07.70ID:agDjI1je GUIはもちろんインターフェース継承が好ましい
クラス継承とは異なりインターフェース継承は各GUIが備える様々な機能ごとに個別に問題なく多重継承できる
クラス継承とは異なりインターフェース継承は各GUIが備える様々な機能ごとに個別に問題なく多重継承できる
458デフォルトの名無しさん
2026/06/28(日) 22:52:26.03ID:yH7Apu6o Why extends is evil を読んでみたけど、
そりゃ、設計がおかしい。あたりまえな話。
extendsの問題ではなく、extendsを正しく扱えないプログラマの問題だった。
そりゃただのバグですって。
javaは初心者でもバグを出さないように使えるのが基本だから、extendsを禁止してもよいだろう。
c/c++は、メモリ管理からなにから自己責任だから、
c言語を通ってきたプログラマなら何使っても大丈夫なほどに鍛えられる笑。
はずなのだが、とんでもないCプログラムをよくみかける。
そんなシステムで生活しとるわけですね。こわいね。
そりゃ、設計がおかしい。あたりまえな話。
extendsの問題ではなく、extendsを正しく扱えないプログラマの問題だった。
そりゃただのバグですって。
javaは初心者でもバグを出さないように使えるのが基本だから、extendsを禁止してもよいだろう。
c/c++は、メモリ管理からなにから自己責任だから、
c言語を通ってきたプログラマなら何使っても大丈夫なほどに鍛えられる笑。
はずなのだが、とんでもないCプログラムをよくみかける。
そんなシステムで生活しとるわけですね。こわいね。
459デフォルトの名無しさん
2026/06/28(日) 23:46:54.34ID:T2mV/HCF460デフォルトの名無しさん
2026/06/29(月) 00:41:38.91ID:n43HoUbf 既存言語の後継言語を除くと
新たなプログラミング言語全てでclassが言語仕様にない
class継承のない世界は既に実現されている
新たなプログラミング言語全てでclassが言語仕様にない
class継承のない世界は既に実現されている
461デフォルトの名無しさん
2026/06/29(月) 01:00:52.09ID:/SBoD75G クラスがないとプログラミングできないダメな人は古い言語しか使ったことのない老害だけだよ
462デフォルトの名無しさん
2026/06/29(月) 03:47:27.26ID:XgZrefaR 別に難しくないし
463デフォルトの名無しさん
2026/06/29(月) 03:57:43.07ID:nEovP2UU 頭が固くなってしまって難しいと思い込んでるから邪悪なクラス継承を捨てられないんだろうね
464デフォルトの名無しさん
2026/06/29(月) 13:11:26.03ID:I5uS6m71465デフォルトの名無しさん
2026/06/29(月) 13:15:51.61ID:mUiv8gBt そもそもC言語なんで言語機能として継承はない
話しても無駄
話しても無駄
466デフォルトの名無しさん
2026/06/29(月) 13:27:32.28ID:N3v0aa5l 時代はScalaだな
467デフォルトの名無しさん
2026/06/29(月) 15:18:19.76ID:CNmS1g/x Scratchとかイイよね
468デフォルトの名無しさん
2026/06/29(月) 16:16:42.46ID:1LuJ74DJ マクロがあれば何でもできる
469デフォルトの名無しさん
2026/06/29(月) 16:52:53.62ID:mUiv8gBt C言語のマクロはチューリング完全ではないのでなんでもは出来ない
470デフォルトの名無しさん
2026/06/29(月) 19:23:22.41ID:t6ntXMKU ま、classの継承すらまともに書けないのは問題だ。
初心者には邪悪にみえるのだろうが、C言語を超える邪悪な言語はない。
悪魔のような言語で、ほぼほぼメモリを壊しながら気づかれずに動いてるものしかみたことがない笑。
初心者には邪悪にみえるのだろうが、C言語を超える邪悪な言語はない。
悪魔のような言語で、ほぼほぼメモリを壊しながら気づかれずに動いてるものしかみたことがない笑。
471デフォルトの名無しさん
2026/06/29(月) 20:12:55.40ID:qm5pWlId 初歩的なアセンブラへのトランスレータに多くを求め過ぎ
472デフォルトの名無しさん
2026/06/29(月) 20:50:05.90ID:UDMQjyXB473デフォルトの名無しさん
2026/06/29(月) 22:06:28.13ID:qVQDnaJf474デフォルトの名無しさん
2026/06/29(月) 22:13:15.16ID:qVQDnaJf >>472
比較的新しいメジャーなGUIフレームワークもすべて内部実装はゴリゴリの実装継承で実現されてる
FlutterしかりReactNaiveしかりSwiftUIしかりWinUIしかりAPLしかり
GAFAMが揃って君が頭がおかしいと思ってる考え方で一致している
現実を見よう
比較的新しいメジャーなGUIフレームワークもすべて内部実装はゴリゴリの実装継承で実現されてる
FlutterしかりReactNaiveしかりSwiftUIしかりWinUIしかりAPLしかり
GAFAMが揃って君が頭がおかしいと思ってる考え方で一致している
現実を見よう
475デフォルトの名無しさん
2026/06/29(月) 22:21:10.28ID:mUiv8gBt goto便利と言ってんのと同じレベル
476デフォルトの名無しさん
2026/06/29(月) 22:21:29.11ID:9Jord0g1 classのある言語を列挙してclassを使っていると言ってるようなもので意味なし
477デフォルトの名無しさん
2026/06/29(月) 23:59:55.21ID:cS3SyDHy 文書化されたフレームワークの作法内でつかう分にはそう変なことにはならなくない?
478デフォルトの名無しさん
2026/06/30(火) 11:53:48.99ID:QDK5gu9C MFCとかいう最悪のオブジェクト指向ライブラリが数十年にわたって底辺プログラマーのお手本だったのが原因
479デフォルトの名無しさん
2026/06/30(火) 14:01:12.06ID:4ZM6ROmX gotoは便利だと思うがw
480デフォルトの名無しさん
2026/06/30(火) 14:06:38.18ID:djxuMZVO MFCは悪い見本だから
481デフォルトの名無しさん
2026/06/30(火) 18:10:45.61ID:ZMd/WaY6 >>478
何の原因?
何の原因?
482デフォルトの名無しさん
2026/06/30(火) 18:52:16.67ID:aFbT+Id3 >>478
だよなー
年収3,000万程度の底辺プログラマーが
GoogleやAppleみたいな底辺企業でGUIフレームワーク書いてるのが原因だよなー
俺等みたいに真っ昼間から5chやってる上級プログラマーから見れば馬鹿げた作り方だよなー
だよなー
年収3,000万程度の底辺プログラマーが
GoogleやAppleみたいな底辺企業でGUIフレームワーク書いてるのが原因だよなー
俺等みたいに真っ昼間から5chやってる上級プログラマーから見れば馬鹿げた作り方だよなー
483デフォルトの名無しさん
2026/06/30(火) 19:01:12.23ID:vZaXidUJ プログラミング言語の言語仕様の問題だろ
当時はクラスを排除した現在のモダンな言語が無かった
GUIフレームワークなどクラス継承で作ることになりそれが広まった
当時はクラスを排除した現在のモダンな言語が無かった
GUIフレームワークなどクラス継承で作ることになりそれが広まった
484デフォルトの名無しさん
2026/06/30(火) 22:48:50.69ID:5z4t7vy/ そもそもC言語に元からクラスなんてないのになぜクラスの話をしているんだw
485デフォルトの名無しさん
2026/06/30(火) 22:59:15.56ID:UtZjeWQa >>484
今では失敗作となったクラスをCに無理やり導入したC++があるからでしょ
今では失敗作となったクラスをCに無理やり導入したC++があるからでしょ
486デフォルトの名無しさん
2026/07/01(水) 00:27:42.86ID:x5hm259/ スレチが通じない悪寒
487デフォルトの名無しさん
2026/07/01(水) 07:40:08.32ID:Uf0SnY9C もうねCの話してね
488デフォルトの名無しさん
2026/07/01(水) 09:16:49.66ID:3AIrBaIB そうだね
はじめてのCは持っているだけで白い目で見られていたような気がする
はじめてのCは持っているだけで白い目で見られていたような気がする
489デフォルトの名無しさん
2026/07/01(水) 10:43:45.22ID:tWNMGkRp ハードウェア動かす言語なのでめっちゃ高い自由度
組み込み系、デバドラ、低レベルライブラリ以外はもはや使われない
組み込み系、デバドラ、低レベルライブラリ以外はもはや使われない
490デフォルトの名無しさん
2026/07/01(水) 10:53:33.28ID:UJyxOvK/ Cコンパイラしか提供されない組み込み環境を除くと、
それらの分野もRustへ移行しつつある
それらの分野もRustへ移行しつつある
491デフォルトの名無しさん
2026/07/01(水) 15:38:07.16ID:ZZqLB/LX でもコンパイル遅いのはまじで開発回らないから採用できない
492デフォルトの名無しさん
2026/07/01(水) 15:41:45.63ID:Bfy85+Be そう考えるとwebフロントバックから組込まで使われてるrustてすごいわ
493デフォルトの名無しさん
2026/07/01(水) 16:13:32.18ID:aTcTIKau Rust!Rust!
494デフォルトの名無しさん
2026/07/01(水) 16:33:38.91ID:QvZFAvUv rustとc++ってどっちがコンパイル時間長いの?
495デフォルトの名無しさん
2026/07/01(水) 19:03:16.25ID://YObUqY リンク時間まで含めると同じくらい
496デフォルトの名無しさん
2026/07/01(水) 19:06:08.22ID:3OcXaJ0q で、C言語の話は?
497デフォルトの名無しさん
2026/07/01(水) 21:22:03.06ID:xfe/unY1 C言語の設計が悪いわけじゃなくてコンピュータとメモリモデルを理解してない >>1 が悪いだけ
498デフォルトの名無しさん
2026/07/02(木) 00:02:58.33ID:DdXzOkSf499デフォルトの名無しさん
2026/07/02(木) 00:14:36.96ID:bbwDIcek500デフォルトの名無しさん
2026/07/02(木) 00:21:48.27ID:bbwDIcek C言語はクラスがないのでオブジェクト指向がわかりやすい
オブジェクト指向をクラスを使うことと勘違いしている人が「C言語ではオブジェクト指向はできない」などと騒ぐがむしろ逆で、それを言っている奴ほどオブジェクト指向がわかってない
「データ構造とそのデータ構造を必要とするロジックを一体として扱い、内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする」のがオブジェクト指向の目的で、カプセル化・ポリモーフィズム・合成もこのための機能にすぎない
ただ、実装継承はコード再利用のためにカプセル化を破壊し、外部と内部を密結合させる技術なので、真面目にオブジェクト指向をしたければ用いてはならず別の用途で使う機能だと考える必要がある
クラスはここを曖昧に混ぜてしまっているので、オブジェクト指向を学ぶ上では邪魔になる
C言語ほど必要な機能だけが揃い、混乱のもととなる余計な機能がない言語も珍しい
真面目にオブジェクト指向やクラスを語りたければ、まずCをしっかりやるべきだ
オブジェクト指向をクラスを使うことと勘違いしている人が「C言語ではオブジェクト指向はできない」などと騒ぐがむしろ逆で、それを言っている奴ほどオブジェクト指向がわかってない
「データ構造とそのデータ構造を必要とするロジックを一体として扱い、内部では密結合させつつ外部に対しては隠蔽することで、外部との疎結合を実現して利用やメンテナンスを容易にする」のがオブジェクト指向の目的で、カプセル化・ポリモーフィズム・合成もこのための機能にすぎない
ただ、実装継承はコード再利用のためにカプセル化を破壊し、外部と内部を密結合させる技術なので、真面目にオブジェクト指向をしたければ用いてはならず別の用途で使う機能だと考える必要がある
クラスはここを曖昧に混ぜてしまっているので、オブジェクト指向を学ぶ上では邪魔になる
C言語ほど必要な機能だけが揃い、混乱のもととなる余計な機能がない言語も珍しい
真面目にオブジェクト指向やクラスを語りたければ、まずCをしっかりやるべきだ
501デフォルトの名無しさん
2026/07/02(木) 01:17:01.08ID:eC6kBeIA #define C言語 Rust
502デフォルトの名無しさん
2026/07/02(木) 02:31:46.28ID:0aKEOzTQ503デフォルトの名無しさん
2026/07/02(木) 03:43:40.31ID:4sqxhRzV このスレッドはポインタがわからないレベルの素人スレッドか
504デフォルトの名無しさん
2026/07/02(木) 10:04:11.24ID:zGfDfspf C++などは機能単位に変数や関数アドレスを構造体に押し込めただけだから
Cでもオブジェクト指向プログラミングは出来るよ
Cでもオブジェクト指向プログラミングは出来るよ
505デフォルトの名無しさん
2026/07/02(木) 14:08:41.65ID:/AOAVSgf506デフォルトの名無しさん
2026/07/02(木) 14:09:51.17ID:/AOAVSgf >>503
C言語の設計が悪いとか言ってる奴はまず そうやろな
C言語の設計が悪いとか言ってる奴はまず そうやろな
507デフォルトの名無しさん
2026/07/02(木) 14:12:40.61ID:/AOAVSgf >>504
まあ、クラスなんてのはオブジェクト指向(カプセル化・ポリモーフィズム・合成)、コード再利用(実装継承)、名前空間などの機能をまとめただけの糖衣構文の塊だからね
まあ、クラスなんてのはオブジェクト指向(カプセル化・ポリモーフィズム・合成)、コード再利用(実装継承)、名前空間などの機能をまとめただけの糖衣構文の塊だからね
508デフォルトの名無しさん
2026/07/02(木) 14:40:35.23ID:4sqxhRzV509デフォルトの名無しさん
2026/07/02(木) 15:16:18.33ID:/AOAVSgf >>508
別にC言語でも書けるが……
別にC言語でも書けるが……
510デフォルトの名無しさん
2026/07/02(木) 16:48:51.86ID:4sqxhRzV >>509
Windows App SDK開発を知らないだろ?
Windows App SDK開発を知らないだろ?
511デフォルトの名無しさん
2026/07/02(木) 16:49:38.59ID:4sqxhRzV >>509
ミドルウェアのソースコードがC言語のことはあまりない
ミドルウェアのソースコードがC言語のことはあまりない
512デフォルトの名無しさん
2026/07/02(木) 18:05:04.47ID:AbUl+4TM >>505
構造体という概念もない?
インターフェースという概念もない?
メソッドという概念もない?
全部本気でイエスなら「概念」自体を理解できてないのでそこからはじめてくれ
まあ説明できないからないと言ってるだけだと思うけど
構造体という概念もない?
インターフェースという概念もない?
メソッドという概念もない?
全部本気でイエスなら「概念」自体を理解できてないのでそこからはじめてくれ
まあ説明できないからないと言ってるだけだと思うけど
513デフォルトの名無しさん
2026/07/02(木) 18:08:25.02ID:4sqxhRzV オブジェクト指向プログラミングとオブジェクト指向プログラミング言語は別だからな
514デフォルトの名無しさん
2026/07/02(木) 18:57:09.25ID:MpyLaV4P scratchはオブジェクト指向プログラミング言語
515デフォルトの名無しさん
2026/07/02(木) 19:21:38.47ID:kPjcw+Hr どう頑張っても1バイトが7ビットになることはないからw
516デフォルトの名無しさん
2026/07/02(木) 21:50:58.52ID:HSaR3Nya 古のコンピューターでは1バイト6bitや7bitなんて事もあったらしいぞ
その名残か?
その名残か?
517デフォルトの名無しさん
2026/07/02(木) 22:59:15.70ID:4sqxhRzV ネットワークの世界だと8ビットのうち、7ビットしか使っていない機器はいまだに存在する。
518デフォルトの名無しさん
2026/07/02(木) 23:59:59.18ID:OoDmJP07 7bitで残り1bitはパリティ。
さすがに6bitはみかけない。まだどこかで動いているんだろうけど。
さすがに6bitはみかけない。まだどこかで動いているんだろうけど。
519デフォルトの名無しさん
2026/07/03(金) 00:22:51.37ID:OL7baTSG 通信のビットストリームとレジスタのビット幅を同列に考えるのは無理がある
520デフォルトの名無しさん
2026/07/03(金) 01:43:07.22ID:zLCCyepo しつこいな
521デフォルトの名無しさん
2026/07/03(金) 07:29:33.28ID:2t9Z1Cme c++も最初は一旦c言語に変換してからビルドしていたから
cで書けない事は無いんだよね
cで書けない事は無いんだよね
522デフォルトの名無しさん
2026/07/03(金) 12:23:56.67ID:zLAnH+LU Cで書けないことはアセンブラで書けないこと
523デフォルトの名無しさん
2026/07/03(金) 12:39:37.48ID:eKNx318E >>522
それは無い
それは無い
524デフォルトの名無しさん
2026/07/03(金) 17:49:57.25ID:zLCCyepo >>521
そういう話ではないし、OSやCPUの進化のよってC言語ではコードを大量に書かないといけなくなっただけ
そういう話ではないし、OSやCPUの進化のよってC言語ではコードを大量に書かないといけなくなっただけ
525デフォルトの名無しさん
2026/07/03(金) 17:50:52.85ID:zLCCyepo >>522
いまどきそのアーキテクチャのアセンブラがわかるなんて言わない方がいい
いまどきそのアーキテクチャのアセンブラがわかるなんて言わない方がいい
526デフォルトの名無しさん
2026/07/04(土) 13:30:15.68ID:C/MUGRLI このスレの要点はFILE構造体がclassだと言われて納得するかしないか
527デフォルトの名無しさん
2026/07/04(土) 14:22:25.95ID:q0Ja9598 クラスなんて実際に構造体だろ
528デフォルトの名無しさん
2026/07/04(土) 14:23:22.03ID:YYWloYLh >>526
C言語はポインタで関数を呼び出せるから、クラスのようなものとも言えるが、オブジェクト指向プログラミング言語と言い切るのは無理がある。
C言語はポインタで関数を呼び出せるから、クラスのようなものとも言えるが、オブジェクト指向プログラミング言語と言い切るのは無理がある。
529デフォルトの名無しさん
2026/07/04(土) 14:47:45.38ID:rUN7HlfP オブジェクト指向「言語」ではありませんね。
オブジェクト指向な設計はできますが、それを支援したりかえって邪悪だったり、
とかすることもありません。
構造体やunionつかってクラスのようにまとめたりしてましたが、c++は邪悪さも強い笑。
C言語はポインタ指向と考えて割り切ってつかってた。ポインタとtypedefとconstさえあれば。
オブジェクト指向な設計はできますが、それを支援したりかえって邪悪だったり、
とかすることもありません。
構造体やunionつかってクラスのようにまとめたりしてましたが、c++は邪悪さも強い笑。
C言語はポインタ指向と考えて割り切ってつかってた。ポインタとtypedefとconstさえあれば。
530デフォルトの名無しさん
2026/07/04(土) 20:55:53.53ID:uPRjt9BI 逆にオブジェクト指向言語はオブジェクト指向プログラムしか組めないってのかね?
531デフォルトの名無しさん
2026/07/04(土) 21:08:22.77ID:YYWloYLh >>530
Javaはそれに振り切って普及した
Javaはそれに振り切って普及した
532デフォルトの名無しさん
2026/07/05(日) 10:40:26.92ID:wH3543Zu >>531
classつくれや!って強制するから巨大クラスが出来上がった
classつくれや!って強制するから巨大クラスが出来上がった
533デフォルトの名無しさん
2026/07/05(日) 12:31:43.93ID:on55uTyB まあでもね
クラスを悪者にしたところで
じゃあ関数はどうなのか
関数レベルではちゃんと設計されてるのかっていうと
それも結構怪しい
さらに下位の構造を考えて
ループや変数の使い方はちゃんと書けてるのか?
っていうとこれも怪しい
見通し悪かったり変数名がヘンだったり
ここら辺に至っては意識すらされていない
クラスを悪者にしたところで
じゃあ関数はどうなのか
関数レベルではちゃんと設計されてるのかっていうと
それも結構怪しい
さらに下位の構造を考えて
ループや変数の使い方はちゃんと書けてるのか?
っていうとこれも怪しい
見通し悪かったり変数名がヘンだったり
ここら辺に至っては意識すらされていない
534デフォルトの名無しさん
2026/07/05(日) 14:55:40.95ID:hU9WxTPH すごいのよ、バッファからはみ出ないようにサイズをチェックするんだけど、
実行して溢れさせてからサイズチェックしてエラー返すとか普通に行われているんだ。
それで動いてるんだ。
想定していないデータが来ると簡単にクラッシュするようなロジックが多いし、
そんなロジックでも通ってしまっておかしなデータが紛れ込んで、
一年後ぐらいに壮大にシステムがクラッシュするんだよ。
実行して溢れさせてからサイズチェックしてエラー返すとか普通に行われているんだ。
それで動いてるんだ。
想定していないデータが来ると簡単にクラッシュするようなロジックが多いし、
そんなロジックでも通ってしまっておかしなデータが紛れ込んで、
一年後ぐらいに壮大にシステムがクラッシュするんだよ。
535デフォルトの名無しさん
2026/07/05(日) 15:20:44.61ID:evQt+ptr536デフォルトの名無しさん
2026/07/05(日) 16:35:06.98ID:KM58W1HO グラフィカルなUI作れるんだし
エクセルのセル空間みたいので配列作ったり関数つくりゃ何でもありじゃん
エクセルのセル空間みたいので配列作ったり関数つくりゃ何でもありじゃん
537デフォルトの名無しさん
2026/07/05(日) 16:44:26.13ID:23XfPMOq cもまあまあうんこだけどエンプラしか使ってないjava c#よりはまだましだと思える
538デフォルトの名無しさん
2026/07/05(日) 16:46:34.09ID:mGbnQmHn 過度なカプセル化は融通が利かずに逆にコードが肥大化、分散化して理解を妨げるというだけの話
一方で不特定多数に使われ、互換性維持が重要なインターフェースでは依然カプセル化は重要
適材適所というつまらない結論
一方で不特定多数に使われ、互換性維持が重要なインターフェースでは依然カプセル化は重要
適材適所というつまらない結論
539デフォルトの名無しさん
2026/07/05(日) 19:55:56.45ID:JhYHiF9x >>533
どういうレベルの話なんだよw
どういうレベルの話なんだよw
540デフォルトの名無しさん
2026/07/05(日) 19:56:55.85ID:JhYHiF9x >>536
C言語にはグラフィック機能はしない
C言語にはグラフィック機能はしない
541デフォルトの名無しさん
2026/07/05(日) 19:57:26.52ID:JhYHiF9x >>536
C言語にグラフィック機能が標準でついていると思っているのか?
C言語にグラフィック機能が標準でついていると思っているのか?
542デフォルトの名無しさん
2026/07/05(日) 19:58:37.64ID:JhYHiF9x >>538
カプセル化の定義から話せよ
カプセル化の定義から話せよ
543デフォルトの名無しさん
2026/07/05(日) 20:07:37.14ID:mGbnQmHn544デフォルトの名無しさん
2026/07/05(日) 20:18:56.48ID:JhYHiF9x こだわりすぎのカプセル化は間違いだったと結露が出ている
545デフォルトの名無しさん
2026/07/05(日) 20:19:26.46ID:JhYHiF9x こだわりすぎのカプセル化は間違いだったと結論が出ている
546デフォルトの名無しさん
2026/07/05(日) 20:55:19.97ID:kBCXJVVb >>541
グラフィック機能どころか、I/O自体が言語仕様に入ってないし
グラフィック機能どころか、I/O自体が言語仕様に入ってないし
547デフォルトの名無しさん
2026/07/05(日) 22:56:28.71ID:JhYHiF9x >>546
stdio.h
stdio.h
548デフォルトの名無しさん
2026/07/05(日) 23:01:10.17ID:8owe5rgJ549デフォルトの名無しさん
2026/07/05(日) 23:05:39.46ID:8owe5rgJ カプセル化の定義というより「過度なカプセル化」の定義の問題だろうな
550デフォルトの名無しさん
2026/07/06(月) 00:22:47.72ID:Rup27YHc 過度なカプセル化なんて存在しないよ
必ずカプセル化する
そして必要なインターフェースのみ公開する
必ずカプセル化する
そして必要なインターフェースのみ公開する
551デフォルトの名無しさん
2026/07/06(月) 04:58:22.81ID:FszdM9Rh552デフォルトの名無しさん
2026/07/06(月) 07:01:04.59ID:cq75L6yS PythonもJavaもカプセル化する
余分な邪悪な機能付きとはいえクラスがある
余分な邪悪な機能付きとはいえクラスがある
553デフォルトの名無しさん
2026/07/06(月) 11:55:32.57ID:kqeCanSu オレも昨日マチアプでカプセル化してきた
インターフェースの相性良かったから密結合になりそう
インターフェースの相性良かったから密結合になりそう
554デフォルトの名無しさん
2026/07/06(月) 12:53:24.29ID:Om8f/tp9 553がバイド化するぞ気をつけろ
555デフォルトの名無しさん
2026/07/06(月) 13:06:58.16ID:uYMeLnpf >>538のカプセル化はモジュール化の意味っぽいね
「過度なカプセル化」は必要以上にモジュール/クラスを細分化した状態のことなんだろう
過度なモジュール化とか過度なクラス細分化とでも言えば通じただろうけど
モジュール化と違ってカプセル化には分割するという意味はない「過度なカプセル化」では通じない
高凝集・疎結合という線形代数どころか逆に小学生レベルの話でしたというオチ
「過度なカプセル化」は必要以上にモジュール/クラスを細分化した状態のことなんだろう
過度なモジュール化とか過度なクラス細分化とでも言えば通じただろうけど
モジュール化と違ってカプセル化には分割するという意味はない「過度なカプセル化」では通じない
高凝集・疎結合という線形代数どころか逆に小学生レベルの話でしたというオチ
556デフォルトの名無しさん
2026/07/06(月) 14:21:59.24ID:wKirmoVj557デフォルトの名無しさん
2026/07/06(月) 14:22:58.70ID:wKirmoVj >>522
それはない
それはない
558デフォルトの名無しさん
2026/07/06(月) 14:25:08.28ID:wKirmoVj Cはハードウェア毎の最適化ではなく抽象マシンに基づく汎用化が行われた言語なので、アセンブリにできてCにできない処理は山ほどある
C++やJavaにできてCにできない処理はないけどね
低レイヤと高レイヤは一方的だよ
C++やJavaにできてCにできない処理はないけどね
低レイヤと高レイヤは一方的だよ
559デフォルトの名無しさん
2026/07/06(月) 14:29:18.46ID:wKirmoVj560デフォルトの名無しさん
2026/07/06(月) 14:30:39.83ID:wKirmoVj >>547
勘違いされがちだが標準ライブラリは言語仕様ではないぞ
勘違いされがちだが標準ライブラリは言語仕様ではないぞ
561デフォルトの名無しさん
2026/07/06(月) 14:54:49.86ID:wKirmoVj562デフォルトの名無しさん
2026/07/06(月) 14:57:44.59ID:wKirmoVj563デフォルトの名無しさん
2026/07/06(月) 15:01:32.94ID:wKirmoVj564デフォルトの名無しさん
2026/07/06(月) 17:00:38.47ID:kOXweps4565デフォルトの名無しさん
2026/07/06(月) 17:47:07.93ID:Keq3NWrV Rustの構造体によるオブジェクト指向対応例がわかりやすいんじゃないか
struct foo {
フィールド一覧
}
これだけでカプセル化は終わりだが付随するメソッドの関数ポインタでは分かりにくいので
impl foo {
関数など一覧
}
これがC言語と比べて加わってる
問題児のクラス継承(=実装継承)の機能はないためclassと名乗っていない
struct foo {
フィールド一覧
}
これだけでカプセル化は終わりだが付随するメソッドの関数ポインタでは分かりにくいので
impl foo {
関数など一覧
}
これがC言語と比べて加わってる
問題児のクラス継承(=実装継承)の機能はないためclassと名乗っていない
566デフォルトの名無しさん
2026/07/06(月) 18:00:29.57ID:wI0686t9 またカプセル化の定義からやり直しww
草すぎる
草すぎる
567デフォルトの名無しさん
2026/07/06(月) 18:13:39.96ID:rWeA+Q0G Rustの構造体はそれ自身も各フィールドもデフォルトではモジュール外からアクセスできないためカプセル化は完了してる
ちなみにRustのモジュールはコードファイル内に1つ~複数のモジュールを書く小規模
ちなみにRustのモジュールはコードファイル内に1つ~複数のモジュールを書く小規模
568デフォルトの名無しさん
2026/07/06(月) 19:06:10.40ID:FszdM9Rh >>555
モジュールを細かくわけることが過度なカプセル化ではない
メッセージパッシングのパラダイムをどこまで厳格に適用するかにはグラデーションがあるということ
教科書読め
なおOOの三大原則はカプセル化、継承、多相性と書いてある本は捨ててよい
モジュールを細かくわけることが過度なカプセル化ではない
メッセージパッシングのパラダイムをどこまで厳格に適用するかにはグラデーションがあるということ
教科書読め
なおOOの三大原則はカプセル化、継承、多相性と書いてある本は捨ててよい
569デフォルトの名無しさん
2026/07/06(月) 23:34:25.80ID:22Ur03I7 >>568
「過度なカプセル化とはメッセージパッシングのパラダイムを厳格に適用し過ぎること」と書いてある教科書の名前を教えてくれよw
「過度なカプセル化とはメッセージパッシングのパラダイムを厳格に適用し過ぎること」と書いてある教科書の名前を教えてくれよw
570デフォルトの名無しさん
2026/07/07(火) 07:10:44.49ID:Nai4K22c まあ、本物のオブジェクト指向プログラミング言語ならメッセージ交換だからなぁ
571デフォルトの名無しさん
2026/07/07(火) 09:02:42.42ID:rMBPaQ/g 究極はAIにおまかせオブジェクト指向
なんじゃ…
なんじゃ…
572デフォルトの名無しさん
2026/07/07(火) 10:55:12.37ID:timGrpSA >メッセージパッシングのパラダイムを厳格に適用し過ぎると
>融通が利かずに逆にコードが肥大化、分散化して理解を妨げる
言い方を変えてみたところで過度な分割だよね
>融通が利かずに逆にコードが肥大化、分散化して理解を妨げる
言い方を変えてみたところで過度な分割だよね
573デフォルトの名無しさん
2026/07/07(火) 12:07:13.68ID:WzC1h6at フィールドをprivateにすることがカプセル化だと思い込んでるやつ多いんだよな
Javaの試験ではそれが正解らしい
Javaの試験ではそれが正解らしい
574デフォルトの名無しさん
2026/07/07(火) 13:21:51.41ID:+ppS3IjF 内部データ構造を隠蔽して必要な公開インターフェースのみ公開することがカプセル化
だからフィールドをprivateにすることは必須
まともな言語仕様ならデフォルトでprivate宣言することなくそうなっているべきところ
だからフィールドをprivateにすることは必須
まともな言語仕様ならデフォルトでprivate宣言することなくそうなっているべきところ
575デフォルトの名無しさん
2026/07/07(火) 13:31:26.33ID:EWePSppT ソフトウェア設計思想の中で最も有名とも言えるオブジェクト指向の定義が明確にされていないというのは不思議なことだな
AIに質問しても例の4つを挙げてくるし
哲学とか抽象化とか得意そうな連中がたくさんいそうなのにな
AIに質問しても例の4つを挙げてくるし
哲学とか抽象化とか得意そうな連中がたくさんいそうなのにな
576デフォルトの名無しさん
2026/07/07(火) 13:44:25.82ID:5/WAAUAU 実体継承については、all deny機能が欲しいねぇ。
577デフォルトの名無しさん
2026/07/07(火) 17:30:33.70ID:9e2dG6i+578デフォルトの名無しさん
2026/07/07(火) 20:35:28.06ID:7NfqkUTf 順番が逆なんよね
変数ありきでそれを隠そうって考えたら
全部の変数をprivateにすべきかどうか
全部の変数にget/setを準備すべきかどうか
ってことになりかねないけど
クラスってもんを内部から考えずに
他のクラスとの関係
クラス間の協調というレベルで定義していくと
そっち側からインタフェースが徐々に決まってくるわけで
そんで
インタフェースじゃないものはpublicにはならない
すなわち、実装のための変数や関数は結果的にはprivateにしておくだけ
変数ありきでそれを隠そうって考えたら
全部の変数をprivateにすべきかどうか
全部の変数にget/setを準備すべきかどうか
ってことになりかねないけど
クラスってもんを内部から考えずに
他のクラスとの関係
クラス間の協調というレベルで定義していくと
そっち側からインタフェースが徐々に決まってくるわけで
そんで
インタフェースじゃないものはpublicにはならない
すなわち、実装のための変数や関数は結果的にはprivateにしておくだけ
579デフォルトの名無しさん
2026/07/07(火) 21:03:13.69ID:3hrGCGb+580デフォルトの名無しさん
2026/07/07(火) 21:08:10.04ID:r5uulGXp C言語だと過度な抽象化はありえない
基本void*ポインター使って構造体や関数を呼び出すだけっていうシンプルな作りが逆に功を奏してるいい例だな
delegateみたいな関数の呼び替え機構をいちいち作ったりしなくてもポインターで呼び出せば足りることが多い印象
基本void*ポインター使って構造体や関数を呼び出すだけっていうシンプルな作りが逆に功を奏してるいい例だな
delegateみたいな関数の呼び替え機構をいちいち作ったりしなくてもポインターで呼び出せば足りることが多い印象
581デフォルトの名無しさん
2026/07/07(火) 21:23:55.68ID:1bE5tFoQ582デフォルトの名無しさん
2026/07/07(火) 21:25:13.03ID:7jJqe0KH >>580
C言語で作っても他の言語と同様にvtable相当のものが必要になる局面がある
C言語以外ではそんな内部構造は自動的に作られて見えないまま気にすることなく抽象的に使える
C言語だけは自分でvtableを作って使う世界
そんな世界に戻りたい人はいない
C言語で作っても他の言語と同様にvtable相当のものが必要になる局面がある
C言語以外ではそんな内部構造は自動的に作られて見えないまま気にすることなく抽象的に使える
C言語だけは自分でvtableを作って使う世界
そんな世界に戻りたい人はいない
583デフォルトの名無しさん
2026/07/07(火) 21:25:28.23ID:1bE5tFoQ584デフォルトの名無しさん
2026/07/07(火) 21:35:55.18ID:b1KeL0bB 本来は読み書きは自由にしてもらっていい情報でも非公開にしてget/setにした方がいい場合あるでしょ
585デフォルトの名無しさん
2026/07/07(火) 21:45:25.29ID:Lf4GBCqM 言語によって違うんだろうけど何をget/setするの?値?参照やポインタ?
例えばインクリメントが二度手間になるとか
配列やハッシュテーブルとか部分書き換えする時にget/setでは困るでしょ?
例えばインクリメントが二度手間になるとか
配列やハッシュテーブルとか部分書き換えする時にget/setでは困るでしょ?
586デフォルトの名無しさん
2026/07/07(火) 21:50:16.00ID:1bE5tFoQ587デフォルトの名無しさん
2026/07/07(火) 21:51:13.55ID:1bE5tFoQ ただ使いにくいUIをつけているだけで、それはブルシット・ジョブの代表例と言える
588デフォルトの名無しさん
2026/07/07(火) 23:14:24.85ID:PXHZb0Ch589デフォルトの名無しさん
2026/07/08(水) 01:58:19.95ID:VDOYf8Fx setter/getterはcontextを切り替えてアクセスするような場合に便利。
具体物へのアクセスではなく抽象的アクセス。
単体の具体物は存在しないかもしれない。
具体物へのアクセスではなく抽象的アクセス。
単体の具体物は存在しないかもしれない。
590デフォルトの名無しさん
2026/07/08(水) 03:01:17.64ID:77Md5LVX 便利さでいえばモック作ったり処理注入が素直にできる
591デフォルトの名無しさん
2026/07/08(水) 03:17:29.77ID:n/AiM/7+ それは間違いでそのためにクラスなどのメソッドを直接生やしてはいけない
まず最初にその前提となる依存性逆転もモックもクラスなどから完全に独立したインターフェースなどの抽象のみに依存する形で構築することで達成される
つまり「インターフェースのみ使う側」と「実装してインターフェースのみ公開する側」を全ての階層や関係性で達成する
モックは互いに片方をダミーにして入れ替える
まず最初にその前提となる依存性逆転もモックもクラスなどから完全に独立したインターフェースなどの抽象のみに依存する形で構築することで達成される
つまり「インターフェースのみ使う側」と「実装してインターフェースのみ公開する側」を全ての階層や関係性で達成する
モックは互いに片方をダミーにして入れ替える
592デフォルトの名無しさん
2026/07/08(水) 07:29:02.17ID:YUnnK2DK まあ、UT考えたらインターフェースの方が楽だからなぁ
なんて邪道かなぁ?
なんて邪道かなぁ?
593デフォルトの名無しさん
2026/07/08(水) 10:10:12.31ID:032zapuD そこは全ての言語で同じ結論になってる
古い言語は仕方ないが新たな言語Go Nim Rust Zigなどはクラスを完全に捨てて言語仕様から外した
そして言語毎に異なるがインターフェース相当を用いる
つまりクラスは不要なもの
古い言語は仕方ないが新たな言語Go Nim Rust Zigなどはクラスを完全に捨てて言語仕様から外した
そして言語毎に異なるがインターフェース相当を用いる
つまりクラスは不要なもの
594デフォルトの名無しさん
2026/07/08(水) 11:17:21.84ID:2VwKSqwX595デフォルトの名無しさん
2026/07/08(水) 11:30:41.94ID:IfhGTTfA596デフォルトの名無しさん
2026/07/08(水) 11:37:11.60ID:3P4UxoLe classではないものを便宜上classと呼んでclassだと思い込んでるだけの共同幻想
597デフォルトの名無しさん
2026/07/08(水) 11:38:40.14ID:3P4UxoLe RustのTraitは実質interface
598デフォルトの名無しさん
2026/07/08(水) 11:40:32.73ID:FFwmK7p4 >>589-590
別にそんなものがなくてもプログラミング言語の大前提として、変数への書き込みと変数からの書き出しは逆の構文になるわけだから、他のメソッドがないのにクラスに格納してsetter/getterを設ける必要はないし、そうでないと区別がつかないならそちらの方が問題
別にそんなものがなくてもプログラミング言語の大前提として、変数への書き込みと変数からの書き出しは逆の構文になるわけだから、他のメソッドがないのにクラスに格納してsetter/getterを設ける必要はないし、そうでないと区別がつかないならそちらの方が問題
599デフォルトの名無しさん
2026/07/08(水) 11:41:16.67ID:XRhwYd5D >>594
Nimに実装継承はないよ
Nimのオブジェクト継承は実装継承ではない
実装継承になりうるメソッド継承がそもそも存在しないんだよ
全く別実装のオーバーロードになる
フィールド継承はあるけどこれも実装継承ではない
Nimに実装継承はないよ
Nimのオブジェクト継承は実装継承ではない
実装継承になりうるメソッド継承がそもそも存在しないんだよ
全く別実装のオーバーロードになる
フィールド継承はあるけどこれも実装継承ではない
600デフォルトの名無しさん
2026/07/08(水) 11:43:39.54ID:FFwmK7p4 >>593
Nim は他より生まれた時期も少し古いし、立ち位置や思想も違う
Go / Rust / Zig は C / C++ の影響を強く受けているが、Nim は Python の影響を強く受けている
Nim は他より生まれた時期も少し古いし、立ち位置や思想も違う
Go / Rust / Zig は C / C++ の影響を強く受けているが、Nim は Python の影響を強く受けている
601デフォルトの名無しさん
2026/07/08(水) 11:54:07.02ID:3kNQZQgh >>600
そのモダンな4つの言語は背景も思想も言語仕様も全くバラバラなんだけど
「クラスがない」
「実装継承がない」
という点だけは完全に一致してるんだよ
つまりクラスと実装継承は悪手であることが判明した共通の認識がプログラミング言語界にある
Javaの産みの親のジェームズ・ゴスリンでさえもJavaを再設計できるなら実装継承つまりクラス継承を外すと言ってるくらい共通の認識
そのモダンな4つの言語は背景も思想も言語仕様も全くバラバラなんだけど
「クラスがない」
「実装継承がない」
という点だけは完全に一致してるんだよ
つまりクラスと実装継承は悪手であることが判明した共通の認識がプログラミング言語界にある
Javaの産みの親のジェームズ・ゴスリンでさえもJavaを再設計できるなら実装継承つまりクラス継承を外すと言ってるくらい共通の認識
602デフォルトの名無しさん
2026/07/08(水) 11:55:51.78ID:FFwmK7p4603デフォルトの名無しさん
2026/07/08(水) 11:56:47.59ID:FFwmK7p4604デフォルトの名無しさん
2026/07/08(水) 11:59:37.14ID:FFwmK7p4 強いて言えばクラスという名称はないけど、そこはあまり重要じゃなくてその後の設計がどうかって部分が大きい
605デフォルトの名無しさん
2026/07/08(水) 12:04:54.37ID:FFwmK7p4 >>568
正しい意味でメッセージパッシングをしているなら、それは厳格に適用された方がいいし、適用できないならそのやり方自体があっていない
オブジェクト指向について一番重要なことは、何にでも使える万能薬ではなく、特定の構造を改善する特効薬だということ
正しい意味でメッセージパッシングをしているなら、それは厳格に適用された方がいいし、適用できないならそのやり方自体があっていない
オブジェクト指向について一番重要なことは、何にでも使える万能薬ではなく、特定の構造を改善する特効薬だということ
606デフォルトの名無しさん
2026/07/08(水) 12:07:55.88ID:SErvtKUw 今どきクラス継承(実装継承)を常用してるプログラマーは下手プログラマー
インターフェース継承を用いた方が疎結合の良いプログラムになる
インターフェース継承を用いた方が疎結合の良いプログラムになる
607デフォルトの名無しさん
2026/07/08(水) 12:42:51.19ID:DzG1nXb9608デフォルトの名無しさん
2026/07/08(水) 12:43:52.52ID:DzG1nXb9609デフォルトの名無しさん
2026/07/08(水) 12:50:11.72ID:DzG1nXb9610デフォルトの名無しさん
2026/07/08(水) 12:51:25.67ID:lLJlQgVi611デフォルトの名無しさん
2026/07/08(水) 12:55:47.00ID:+Q+JwoGf >>609
インターフェースのみを用いるデフォルト実装は実装継承ではないです
なぜなら親は具体的な型ではないからです
つまりそのインターフェース継承する子たちに共通の内部構造は存在しません
つまり実装継承でない明瞭な証拠です
インターフェースのみを用いるデフォルト実装は実装継承ではないです
なぜなら親は具体的な型ではないからです
つまりそのインターフェース継承する子たちに共通の内部構造は存在しません
つまり実装継承でない明瞭な証拠です
612デフォルトの名無しさん
2026/07/08(水) 16:42:00.00ID:dyZTLEHZ >>609
実装継承の意味を理解してないじゃん
実装継承の意味を理解してないじゃん
613デフォルトの名無しさん
2026/07/08(水) 17:26:57.87ID:dyZTLEHZ >>609
内部の実装がどうだろうが関係ないのにどこが密結合なんですかねw
内部の実装がどうだろうが関係ないのにどこが密結合なんですかねw
614デフォルトの名無しさん
2026/07/08(水) 21:50:50.65ID:z7ALT/iC >>609
インターフェース継承もそのインターフェースで作られているデフォルト継承も疎結合
まずインターフェース継承がなぜ密結合にならないのか?
それはインターフェースを継承する各型は互いに関係がないためだ
それぞれ各型の内部構造は自由に変えてもよく他の機能を付加しても自由で疎結合
継承したインターフェースのみ提供すれば他は何をしても自由だ
それらを使う外部から見てもインターフェースにのみ依存するため互いに疎結合
じゃあそのインターフェースで作られたデフォルト実装はなぜ密結合にならないのか?
それはデフォルト実装が先ほどの外部と全く同じ立場だからだ
デフォルト実装はインターフェースにのみ依存している
特定の型には一切依存していない
だからデフォルト実装は実装継承ではなく疎結合になっている
インターフェース継承もそのインターフェースで作られているデフォルト継承も疎結合
まずインターフェース継承がなぜ密結合にならないのか?
それはインターフェースを継承する各型は互いに関係がないためだ
それぞれ各型の内部構造は自由に変えてもよく他の機能を付加しても自由で疎結合
継承したインターフェースのみ提供すれば他は何をしても自由だ
それらを使う外部から見てもインターフェースにのみ依存するため互いに疎結合
じゃあそのインターフェースで作られたデフォルト実装はなぜ密結合にならないのか?
それはデフォルト実装が先ほどの外部と全く同じ立場だからだ
デフォルト実装はインターフェースにのみ依存している
特定の型には一切依存していない
だからデフォルト実装は実装継承ではなく疎結合になっている
615デフォルトの名無しさん
2026/07/08(水) 22:18:58.94ID:Gtm6u5sh もっと簡潔に書け無能
616デフォルトの名無しさん
2026/07/08(水) 23:33:28.39ID:/qBCa+c/ デフォルト実装が疎結合になることは実例コードがわかりやすいのかなー
例えばRustでイテレータのインターフェース(Rustではトレイトと呼ぶ)は
type Item;
fn next(&mut self) -> Option<Self::Item>;
これだけ
つまりイテレータに対して「next()」を実行して
まだ返す値(Item型)があれば「Some(値)」を返して尽きていれば「None」を返す
※ ちなみに上記のOption型はSomeかNoneを返すenum型(列挙型)
どんな内部構造のイテレータでもこのインターフェースのみに依存するためこれを用いても疎結合
このイテレータのインターフェースnext()を使って
「3番目を返す」デフォルト実装third()を作ってみる
fn third(&mut self) -> Option<Self::Item> {
match self.next() {
Some(_first) => match self.next() {
Some(_second) => self.next(),
None => None,
}
None => None,
}
}
まず最初のnext()で取り出して_firstが存在すれば
さらにnext()で取り出して_secondが存在すれば
さらにnext()で取り出したものがthirdになるのでそれを返している
この関数は公開されているインターフェースnext()しか用いていない
どんな内部構造のイテレータに対しても依存せずに動く点は外部からnext()を使った場合と同じ
このようにデフォルト実装を用いたものも疎結合になる
例えばRustでイテレータのインターフェース(Rustではトレイトと呼ぶ)は
type Item;
fn next(&mut self) -> Option<Self::Item>;
これだけ
つまりイテレータに対して「next()」を実行して
まだ返す値(Item型)があれば「Some(値)」を返して尽きていれば「None」を返す
※ ちなみに上記のOption型はSomeかNoneを返すenum型(列挙型)
どんな内部構造のイテレータでもこのインターフェースのみに依存するためこれを用いても疎結合
このイテレータのインターフェースnext()を使って
「3番目を返す」デフォルト実装third()を作ってみる
fn third(&mut self) -> Option<Self::Item> {
match self.next() {
Some(_first) => match self.next() {
Some(_second) => self.next(),
None => None,
}
None => None,
}
}
まず最初のnext()で取り出して_firstが存在すれば
さらにnext()で取り出して_secondが存在すれば
さらにnext()で取り出したものがthirdになるのでそれを返している
この関数は公開されているインターフェースnext()しか用いていない
どんな内部構造のイテレータに対しても依存せずに動く点は外部からnext()を使った場合と同じ
このようにデフォルト実装を用いたものも疎結合になる
617デフォルトの名無しさん
2026/07/08(水) 23:45:33.91ID:s8cjfAu5 同様に最後の要素を得るデフォルト実装はこうなる
fn last(&mut self) -> Option<Self::Item> {
let mut cur = None;
while let Some(x) = self.next() {
cur = Some(x);
}
cur
}
引数の関数「f(要素)->Output型」で写像する「map(f)」はこうなる
fn map<Output>(&mut self, mut f: impl FnMut(Self::Item) -> Output) -> Option<Output> {
match self.next() {
Some(x) => Some(f(x)),
None => None,
}
}
イテレータの要素列を計算して一つの要素にまとめるfold(これはreduceと呼ぶことも)はこうなる
引数の初期値initと関数fを変えるだけで和も積もどんな演算も動く
fn fold<Output>(&mut self, init: Output, mut f: impl FnMut(Output, Self::Item) -> Output) -> Output {
let mut cur = init;
while let Some(x) = self.next() {
cur = f(cur, x);
}
cur
}
以上これらは全てがジェネリックに任意のの型で動作する点にも注目
インターフェース継承によるデフォルト実装は、密結合の実装継承ではなく、疎結合だからそれを実現できている
fn last(&mut self) -> Option<Self::Item> {
let mut cur = None;
while let Some(x) = self.next() {
cur = Some(x);
}
cur
}
引数の関数「f(要素)->Output型」で写像する「map(f)」はこうなる
fn map<Output>(&mut self, mut f: impl FnMut(Self::Item) -> Output) -> Option<Output> {
match self.next() {
Some(x) => Some(f(x)),
None => None,
}
}
イテレータの要素列を計算して一つの要素にまとめるfold(これはreduceと呼ぶことも)はこうなる
引数の初期値initと関数fを変えるだけで和も積もどんな演算も動く
fn fold<Output>(&mut self, init: Output, mut f: impl FnMut(Output, Self::Item) -> Output) -> Output {
let mut cur = init;
while let Some(x) = self.next() {
cur = f(cur, x);
}
cur
}
以上これらは全てがジェネリックに任意のの型で動作する点にも注目
インターフェース継承によるデフォルト実装は、密結合の実装継承ではなく、疎結合だからそれを実現できている
618デフォルトの名無しさん
2026/07/08(水) 23:46:30.87ID:qowFydfb619デフォルトの名無しさん
2026/07/09(木) 01:02:35.75ID:kO6vcTLE 変な人来てるな
620デフォルトの名無しさん
2026/07/09(木) 07:30:30.38ID:GQejlCGu オブジェクト指向は、オブジェクトにメッセージを送るということ、だけである。
設計もそれでやって、設計のままに実装する。
オブジェクトやメッセージをどのように作るかは言語や設計者しだい。
言語にふりまわされずにオブジェクト指向をやれるのはC言語だけかもしれない。
C言語は最強のオブジェクト指向ポインタ言語だ。
設計もそれでやって、設計のままに実装する。
オブジェクトやメッセージをどのように作るかは言語や設計者しだい。
言語にふりまわされずにオブジェクト指向をやれるのはC言語だけかもしれない。
C言語は最強のオブジェクト指向ポインタ言語だ。
621デフォルトの名無しさん
2026/07/09(木) 07:31:24.91ID:73gnTkLm また1バイトは7ビットとか言い出しそう
622デフォルトの名無しさん
2026/07/09(木) 07:40:41.72ID:GQejlCGu なわけあるかいー。と最後に叫ぶつもりだったが、ほんとうに最強言語のように思えてきた。
オブジェクトはポインタであり、メッセージもポインタだ。オブジェクトのポインタの先に
メッセージポインタを処理する機構だけあればよい。
しかも、オブジェクトとメッセージは同じであり、どちらか一方だけの概念でよく、
メッセージにオブジェクトも送れる。
ポインタにポインタを送る機構だけ。ポインタの継承。なんだかワクワクしてきた。
ポインタにどのような意味を与えるか、それだけ。本格的にポインタ指向を設計してみたい。
オブジェクトはポインタであり、メッセージもポインタだ。オブジェクトのポインタの先に
メッセージポインタを処理する機構だけあればよい。
しかも、オブジェクトとメッセージは同じであり、どちらか一方だけの概念でよく、
メッセージにオブジェクトも送れる。
ポインタにポインタを送る機構だけ。ポインタの継承。なんだかワクワクしてきた。
ポインタにどのような意味を与えるか、それだけ。本格的にポインタ指向を設計してみたい。
623デフォルトの名無しさん
2026/07/09(木) 07:43:37.93ID:2ALpHPNW624デフォルトの名無しさん
2026/07/09(木) 08:48:10.41ID:nKCytAFu625デフォルトの名無しさん
2026/07/09(木) 10:05:04.26ID:P5con6YV 後のObjective-Cである
626デフォルトの名無しさん
2026/07/09(木) 15:56:38.38ID:xJ9qw/+T >>624
メッセージとメソッドは異なる概念
メソッドで同期的メッセージパッシングをエミュレートしてるといえるのがJavaなどのオブジェクト指向言語
あとc言語でメソッドという用語は定義されていない
いろいろ理解が浅いぞお前
メッセージとメソッドは異なる概念
メソッドで同期的メッセージパッシングをエミュレートしてるといえるのがJavaなどのオブジェクト指向言語
あとc言語でメソッドという用語は定義されていない
いろいろ理解が浅いぞお前
627デフォルトの名無しさん
2026/07/09(木) 22:06:30.95ID:t5kHx157 >>618
別の機能を持たせておいて何もしてないかのように振る舞うのはあまりよろしくない設計だな
別の機能を持たせておいて何もしてないかのように振る舞うのはあまりよろしくない設計だな
628デフォルトの名無しさん
2026/07/09(木) 22:25:03.49ID:3rcW7tMX629デフォルトの名無しさん
2026/07/09(木) 22:33:41.10ID:h5n0vn9W インターフェース継承は疎結合だよ
インターフェースを継承したAとBの間に内部構造も実装も共有するところがないため
クラス継承は密結合だよ
クラスを継承したAとBの間に親と同じ内部構造と実装があるため
インターフェースを継承したAとBの間に内部構造も実装も共有するところがないため
クラス継承は密結合だよ
クラスを継承したAとBの間に親と同じ内部構造と実装があるため
630デフォルトの名無しさん
2026/07/09(木) 22:35:43.05ID:h5n0vn9W インターフェース継承のデフォルト実装は疎結合だよ
インターフェースのみ用いるデフォルト実装は外部からインターフェースを用いるときと全く同じ
密結合部分がありません
インターフェースのみ用いるデフォルト実装は外部からインターフェースを用いるときと全く同じ
密結合部分がありません
631デフォルトの名無しさん
2026/07/09(木) 22:43:13.86ID:t5kHx157 >>628
じゃあインターフェース継承は実装を継承してないから実装継承じゃないし、実装を継承していないから内部の実装が関係してくることがないじゃん
自分で何を言ってるかくらい理解してから発言しろよアホ
じゃあインターフェース継承は実装を継承してないから実装継承じゃないし、実装を継承していないから内部の実装が関係してくることがないじゃん
自分で何を言ってるかくらい理解してから発言しろよアホ
632デフォルトの名無しさん
2026/07/09(木) 23:15:50.58ID:3rcW7tMX633デフォルトの名無しさん
2026/07/09(木) 23:20:45.19ID:y4v6/mDI >>632
公開されているインターフェースのみを用いて実装されるデフォルト実装は、実装継承になりません
公開されているインターフェースのみを用いて実装される他のモジュールやアプリと同じで疎結合になります
公開されているインターフェースのみを用いて実装されるデフォルト実装は、実装継承になりません
公開されているインターフェースのみを用いて実装される他のモジュールやアプリと同じで疎結合になります
634デフォルトの名無しさん
2026/07/09(木) 23:22:23.19ID:t5kHx157635デフォルトの名無しさん
2026/07/09(木) 23:52:54.90ID:3rcW7tMX636デフォルトの名無しさん
2026/07/10(金) 00:00:59.72ID:DkL04O3s637デフォルトの名無しさん
2026/07/10(金) 00:03:13.15ID:bAT5n0dl638デフォルトの名無しさん
2026/07/11(土) 14:38:59.33ID:EKW8EhdF639デフォルトの名無しさん
2026/07/11(土) 14:40:51.16ID:EKW8EhdF640デフォルトの名無しさん
2026/07/11(土) 14:48:46.42ID:bYeImHYG Rubyはやりすぎて遅くなった
641デフォルトの名無しさん
2026/07/12(日) 00:30:03.05ID:QHkOJTN+ C言語意味わからん
642デフォルトの名無しさん
2026/07/12(日) 03:18:37.11ID:MVcsLvMp >>641
それはちょっとコンピュータの知識が不足しすぎてるかな
それはちょっとコンピュータの知識が不足しすぎてるかな
643デフォルトの名無しさん
2026/07/12(日) 03:21:06.20ID:MVcsLvMp C言語が安全性の面で欠点を抱えてるって話ならともかく、わからないのはシンプルに知識不足
ポインタって明言しないってことはメモリモデルまでたどり着けてないんだろうし
ポインタって明言しないってことはメモリモデルまでたどり着けてないんだろうし
644デフォルトの名無しさん
2026/07/12(日) 09:15:11.21ID:fRLexhLH 安全面? C言語にそのようなものがあったっけ? あったかなぁ。うーん?
645デフォルトの名無しさん
2026/07/12(日) 10:01:59.36ID:1YRlnD0x バグが全く出ない言語はない
逆にデバッグちゃんとすれば、バグゼロにできない言語もない
あとは得意、不得意、好き嫌い
逆にデバッグちゃんとすれば、バグゼロにできない言語もない
あとは得意、不得意、好き嫌い
646デフォルトの名無しさん
2026/07/12(日) 11:18:08.83ID:d9T09QJO 常に現場猫案件なのがC言語
647デフォルトの名無しさん
2026/07/12(日) 11:34:35.92ID:o1zfMS4T cmakeとかゆううんこがある時点で論外
648デフォルトの名無しさん
2026/07/12(日) 11:46:08.11ID:5TOI8Q7g Cで出来ることは全てRustで出来るようになった
不便なCを捨てられる
不便なCを捨てられる
649デフォルトの名無しさん
2026/07/12(日) 12:23:37.71ID:QHkOJTN+650デフォルトの名無しさん
2026/07/12(日) 13:11:50.20ID:uOgU7Bc5 nullポインタもリファレンスにできるから意味なし
651デフォルトの名無しさん
2026/07/12(日) 20:35:55.72ID:MVcsLvMp652デフォルトの名無しさん
2026/07/12(日) 20:36:42.30ID:MVcsLvMp >>648
Cのコードを複雑な所有権管理なしに取り込む機能がまだない
Cのコードを複雑な所有権管理なしに取り込む機能がまだない
653デフォルトの名無しさん
2026/07/12(日) 20:37:15.53ID:MVcsLvMp まあ、Rustの設計を考えたらそんな機能が搭載されるわけはないし、それがないのが正しいが、Cを使う意味はあるね
654デフォルトの名無しさん
2026/07/12(日) 20:38:40.46ID:MVcsLvMp655デフォルトの名無しさん
2026/07/12(日) 21:01:30.98ID:g+JxuU8t656デフォルトの名無しさん
2026/07/12(日) 22:10:55.31ID:fRLexhLH657デフォルトの名無しさん
2026/07/13(月) 01:40:47.12ID:5sH5Cvg8658デフォルトの名無しさん
2026/07/13(月) 03:22:03.44ID:FeZNYgWf659デフォルトの名無しさん
2026/07/13(月) 04:21:33.09ID:Tg3ECvd+660デフォルトの名無しさん
2026/07/13(月) 04:26:28.05ID:20QlYRrh まずcは文法が終わってるから書いてて単純に楽しくない
661デフォルトの名無しさん
2026/07/13(月) 04:48:37.06ID:5sH5Cvg8 >>658
結局悪口言ってるだけで何も技術の話してないのオモロイ
結局悪口言ってるだけで何も技術の話してないのオモロイ
662デフォルトの名無しさん
2026/07/13(月) 04:49:04.95ID:5sH5Cvg8 >>659
世界にどれだけCのコードがあるか知らなそう
世界にどれだけCのコードがあるか知らなそう
663デフォルトの名無しさん
2026/07/13(月) 04:49:36.04ID:5sH5Cvg8664デフォルトの名無しさん
2026/07/13(月) 06:30:04.01ID:iQv4LHB/ Rustを使うようになって未定義動作まみれのC言語を使う愚かさを理解できるようになった
文法についてもC言語は必要なものが揃っていない不便な言語だと実感できた
文法についてもC言語は必要なものが揃っていない不便な言語だと実感できた
665デフォルトの名無しさん
2026/07/13(月) 07:00:57.45ID:EcNhnU2g プログラムで楽しいのはラダー回路だな
666デフォルトの名無しさん
2026/07/13(月) 15:03:17.82ID:5sH5Cvg8667デフォルトの名無しさん
2026/07/13(月) 15:04:00.79ID:5sH5Cvg8 >>665
あれ楽しいよな
あれ楽しいよな
668デフォルトの名無しさん
2026/07/13(月) 21:14:01.23ID:hr+PUhdx ラダーみたいに、いきなり回路書けて、めんどくせー初期設定も要らず
マルチタスクなことを簡単に実現できるのはツールのおかげ
高級言語もそうなってほしい
マルチタスクなことを簡単に実現できるのはツールのおかげ
高級言語もそうなってほしい
669デフォルトの名無しさん
2026/07/13(月) 22:21:52.26ID:5B+YKcIA >>668
ラダーってあれのハードウェアやソフトウェアをキーエンスの天才とか三菱の秀才が作ってるから誤動作しないのであって、安いラダーはまともに動かないよ
互換品とか描かれてるの間違いだよ
高いキーエンス買わないとラインが止まる
ラダーってあれのハードウェアやソフトウェアをキーエンスの天才とか三菱の秀才が作ってるから誤動作しないのであって、安いラダーはまともに動かないよ
互換品とか描かれてるの間違いだよ
高いキーエンス買わないとラインが止まる
670デフォルトの名無しさん
2026/07/13(月) 22:23:00.59ID:7hQsQB5I >>666
C言語に必要なものは揃っていない
C言語に必要なものは揃っていない
671デフォルトの名無しさん
2026/07/13(月) 22:23:57.88ID:5B+YKcIA >>665
ラダーだけは勉強しなくても書ける
恐らくどんな高級言語よりも安全で高速
俺はラダー使って文字列パーサーを作ってjsonで返すような装置作ったことがある
楽しかったなあ。jsonがまだ出始めた頃だから結構昔かも
それまではxmlが多かったから勇気が必要だった
ラダーだけは勉強しなくても書ける
恐らくどんな高級言語よりも安全で高速
俺はラダー使って文字列パーサーを作ってjsonで返すような装置作ったことがある
楽しかったなあ。jsonがまだ出始めた頃だから結構昔かも
それまではxmlが多かったから勇気が必要だった
672デフォルトの名無しさん
2026/07/14(火) 07:36:26.44ID:s3VvyQ+p >>665
XとYとDしか覚えてません!😭
XとYとDしか覚えてません!😭
673デフォルトの名無しさん
2026/07/14(火) 14:14:42.83ID:/b2uC2Vr674デフォルトの名無しさん
2026/07/14(火) 15:23:39.67ID:fUlNz5yr675デフォルトの名無しさん
2026/07/14(火) 17:11:07.80ID:/b2uC2Vr >>674
誰も言ってないことに勝手にキレて反論してて草
誰も言ってないことに勝手にキレて反論してて草
676デフォルトの名無しさん
2026/07/14(火) 20:46:15.25ID:ZouZKZ4B >>673
C言語は機能がなさすぎて開発効率悪すぎ
C言語は機能がなさすぎて開発効率悪すぎ
677デフォルトの名無しさん
2026/07/14(火) 21:10:51.16ID:pfNIWFfv なんでも日本すごいすごいって考える馬鹿って
生きてて恥ずかしいとは思わんのかねぇ?
井の中の蛙だから恥も無いか
生きてて恥ずかしいとは思わんのかねぇ?
井の中の蛙だから恥も無いか
678デフォルトの名無しさん
2026/07/14(火) 22:11:03.52ID:PDnGUZsx スペイン: 31600ユーロ(1ユーロ185円換算 約580万)
イタリア: 34000ユーロ(1ユーロ185円換算 約600万)
日本: 450万
過去の栄光であって今ではスペインイタリアより安くなったわーくに
イタリア: 34000ユーロ(1ユーロ185円換算 約600万)
日本: 450万
過去の栄光であって今ではスペインイタリアより安くなったわーくに
679デフォルトの名無しさん
2026/07/14(火) 22:14:02.14ID:PDnGUZsx じゃっぷさん、いったいなっぜ。。。
680デフォルトの名無しさん
2026/07/14(火) 22:48:22.19ID:/b2uC2Vr >>676
君がエンジニアとして大したことないってことはもうわかってるから、どの機能がないのか言えよ
君がエンジニアとして大したことないってことはもうわかってるから、どの機能がないのか言えよ
681デフォルトの名無しさん
2026/07/14(火) 22:49:10.51ID:/b2uC2Vr682デフォルトの名無しさん
2026/07/15(水) 00:05:24.83ID:w2t1XS6N >通貨のレートなんか金利でいくらでも変わるだろ
バカ丸出しだなw
バカ丸出しだなw
683デフォルトの名無しさん
2026/07/15(水) 00:18:49.58ID:osKDIn21 >>666
Cは機能足りないだらけで効率悪いけど特に欲しいものは構造パターンマッチング分解
Cは機能足りないだらけで効率悪いけど特に欲しいものは構造パターンマッチング分解
684デフォルトの名無しさん
2026/07/15(水) 02:04:58.40ID:PFPK0g3k685デフォルトの名無しさん
2026/07/15(水) 02:06:42.62ID:PFPK0g3k686デフォルトの名無しさん
2026/07/15(水) 02:12:14.73ID:PFPK0g3k 返された構造体の中身を取り出すコードも書けないのか、それとも「1文字増えたから非効率だ」みたいな揚げ足取りがしたいだけのゴミなのか知らないが、どちらにしろ「C言語は必要なものが揃っていない」「機能がなさすぎて開発効率悪すぎ」とか言ってイキってるお前が無能ってだけ
687デフォルトの名無しさん
2026/07/15(水) 02:29:47.23ID:PFPK0g3k わざわざご苦労なことに時間をかけてC言語にない機能を探したらしいが、そんなことをやってる暇があるなら少しでも勉強したらどうか
だから「C言語は必要なものが揃っていない」なんて妄言を垂れ流してイキっちゃうんだよw
だから「C言語は必要なものが揃っていない」なんて妄言を垂れ流してイキっちゃうんだよw
688デフォルトの名無しさん
2026/07/16(木) 06:01:41.32ID:bPM+4Drw689デフォルトの名無しさん
2026/07/16(木) 07:23:18.69ID:308qAObq 構造体の先頭メンバをディスパッチ先の関数テーブルのindexにでもしとけばいいんでは
あとは使ったことないけど_Genericで書くか
あとは使ったことないけど_Genericで書くか
690デフォルトの名無しさん
2026/07/16(木) 09:22:33.32ID:ZkOVjd6x >>689
構造体だけでなくタプルやスライスや代数的データ型など全てののデータ構造に対するパターンマッチングによる分解と条件分岐代入の話
構造体だけでなくタプルやスライスや代数的データ型など全てののデータ構造に対するパターンマッチングによる分解と条件分岐代入の話
691デフォルトの名無しさん
2026/07/16(木) 11:58:30.39ID:tqJQMSog692デフォルトの名無しさん
2026/07/16(木) 13:59:44.69ID:o6Y18Fu4 ハッシュにしてアバウトに比較してたら盛大にバグった事あるなぁw
693デフォルトの名無しさん
2026/07/16(木) 15:55:42.78ID:Wb6p8Q0G ハッシュは衝突するから信じてはいけない(n敗)
694デフォルトの名無しさん
2026/07/18(土) 13:34:02.54ID:bkfHP1lV >>664
C言語は機能が揃っていない!僕が楽できないからだ!w
C言語は機能が揃っていない!僕が楽できないからだ!w
695デフォルトの名無しさん
2026/07/18(土) 15:13:01.24ID:E0kdCJg0 シンプルでいいじゃない
696デフォルトの名無しさん
2026/07/18(土) 16:23:02.34ID:A6B3MJbl シンプルさは大事よね
JavaもC++比較だとクソクソシンプルだしな
整数のunsigned無くすとか
テンプレート無くすとか(のちにジェネリクスは導入されたけど)
出始めのころのシンプルさは
C++に苦しめられてた民を多く救ったと思う
同じようにC++に対して今Odinとかいうのあるよね
ちょっとだけ興味あり
JavaもC++比較だとクソクソシンプルだしな
整数のunsigned無くすとか
テンプレート無くすとか(のちにジェネリクスは導入されたけど)
出始めのころのシンプルさは
C++に苦しめられてた民を多く救ったと思う
同じようにC++に対して今Odinとかいうのあるよね
ちょっとだけ興味あり
697デフォルトの名無しさん
2026/07/18(土) 17:40:08.87ID:QdDdex+f JavaはJavaで意味のないクラスをボンボン作るのがなあ
個人的にはZigくらいシンプルなのがいいわ
個人的にはZigくらいシンプルなのがいいわ
698デフォルトの名無しさん
2026/07/18(土) 17:44:53.53ID:0qtIPJUu ZigはZigで無駄にコンパイラがお世話する設計だからなあ
結局Cでいい
結局Cでいい
699デフォルトの名無しさん
2026/07/18(土) 21:12:26.47ID:gPQnod69 結局Cの設計が悪いとか言ってる奴はコンピュータを知らないだけ
700デフォルトの名無しさん
2026/07/18(土) 21:29:46.75ID:K0BstTVI >>699
これはガチ
これはガチ
701デフォルトの名無しさん
2026/07/18(土) 21:33:38.29ID:GSqQ1Zft リスペクトがないよな
タダで食わせてもらってるオカンの飯に文句言うような不毛さを感じる
偉大なるオカンの、偉大なる飯に文句言う前に、たぶんねぎらって感謝したほうがいい
タダで食わせてもらってるオカンの飯に文句言うような不毛さを感じる
偉大なるオカンの、偉大なる飯に文句言う前に、たぶんねぎらって感謝したほうがいい
702デフォルトの名無しさん
2026/07/18(土) 21:55:27.09ID:CbpxQI9y C書いたことない奴がCに文句言ってる感
703デフォルトの名無しさん
2026/07/18(土) 21:58:01.66ID:YobfqA/v 当時のリソースでうごく移植性を念頭にした高級アセンブラ
奇跡のような出来だとおもう
奇跡のような出来だとおもう
704デフォルトの名無しさん
2026/07/18(土) 22:21:32.41ID:vDnM1zrJ 本気で言ってんのか?w
705デフォルトの名無しさん
2026/07/18(土) 23:38:35.53ID:nTJRgtmh706デフォルトの名無しさん
2026/07/18(土) 23:53:20.58ID:oPx2d6CG みんなは「高級なアセンブリ言語」ではなく「ポータブルなソレ」と言っているんじゃないのかな
抽象化を含めて
抽象化を含めて
707デフォルトの名無しさん
2026/07/18(土) 23:57:08.12ID:vDnM1zrJ >>705
何を言ってんのかよく分からんが、奇跡のようだって誰に言ってんのよデニスリッチーに失礼すぎるだろうよってことよ?
何を言ってんのかよく分からんが、奇跡のようだって誰に言ってんのよデニスリッチーに失礼すぎるだろうよってことよ?
708デフォルトの名無しさん
2026/07/19(日) 00:16:02.26ID:4p1MCYaf >>707
日本語でおk
日本語でおk
709デフォルトの名無しさん
2026/07/19(日) 01:27:16.42ID:ug8pyziv >>658
ポインタを全て参照に置き換えられると思ってるとか、アホだろお前w
ポインタを全て参照に置き換えられると思ってるとか、アホだろお前w
710デフォルトの名無しさん
2026/07/19(日) 02:22:25.80ID:h3fKQK3M >>699
アセンブラ→Cの順に覚えたので、ポインタの何が難しいのか逆に分からなくて、自分が何か間違って理解してるんじゃないかとずっと悩んでたわ
アセンブラ→Cの順に覚えたので、ポインタの何が難しいのか逆に分からなくて、自分が何か間違って理解してるんじゃないかとずっと悩んでたわ
711デフォルトの名無しさん
2026/07/19(日) 06:45:41.54ID:/J2anG91 それはそれでアドレスとポインタの混同をしないように注意は必要だけどな
ポインタはアドレスと違って元の型にも影響されるから
ポインタはアドレスと違って元の型にも影響されるから
712デフォルトの名無しさん
2026/07/19(日) 09:55:18.29ID:iX0BwzkM だから移植性高めるためのポインタでしょ
CPUやPC違っても、アドレスどうなってるかわかんねー
intが何ビットかよくわかんねーっつっても意識しなくても済むからな
CPUやPC違っても、アドレスどうなってるかわかんねー
intが何ビットかよくわかんねーっつっても意識しなくても済むからな
713デフォルトの名無しさん
2026/07/19(日) 14:42:42.27ID:ENA0EAch714デフォルトの名無しさん
2026/07/19(日) 14:50:44.11ID:8OVcsKAH > アセンブラ→Cの順に覚えたので、ポインタの何が難しいのか逆に分からなくて、
指す型によってポインタの構造が異なることをCは許容してるが↑みたいなこと言う人はわかってなさそう
指す型によってポインタの構造が異なることをCは許容してるが↑みたいなこと言う人はわかってなさそう
715デフォルトの名無しさん
2026/07/19(日) 17:42:52.61ID:4z2EHgPj ポインタの構造は変わらないぞw
型によって扱う単位が変わるだけだらか
型によって扱う単位が変わるだけだらか
716デフォルトの名無しさん
2026/07/19(日) 18:11:21.40ID:Mg7i6RoG > ポインタの構造は変わらないぞw
バイトアドレッシングが存在しないアーキテクチャで普通に存在しうるんだよなあw
バイトアドレッシングが存在しないアーキテクチャで普通に存在しうるんだよなあw
717デフォルトの名無しさん
2026/07/19(日) 19:43:12.85ID:9jryM8w6 >>715
普通に変わるんですが
普通に変わるんですが
718デフォルトの名無しさん
2026/07/20(月) 14:04:34.42ID:I+7cA9WF ポインターの論理的な構造は変わらない
変わるのは実現方法だけ
変わるのは実現方法だけ
719デフォルトの名無しさん
2026/07/20(月) 15:34:20.03ID:vQLyd2Up ポインタや
far nearは遠く
なりにけり
far nearは遠く
なりにけり
720デフォルトの名無しさん
2026/07/20(月) 17:44:16.62ID:Owomh3Oa >>718
変わるから void* という変換用の型があるんだわ
変わるから void* という変換用の型があるんだわ
721デフォルトの名無しさん
2026/07/20(月) 22:30:42.95ID:I+7cA9WF だから、ポインターの型はコロコロ変わらないだろw
722デフォルトの名無しさん
2026/07/20(月) 22:44:29.99ID:gNVhgtfF >>721
もしかしてC書いたことない?
もしかしてC書いたことない?
723デフォルトの名無しさん
2026/07/20(月) 22:54:26.21ID:tn2iMjTm >>721 C書いてから来てね
724デフォルトの名無しさん
2026/07/20(月) 22:58:54.14ID:mXMC13EQ void*は単に型を無視して使えるってだけであって
ポインタの型が勝手にコロコロするわけでも何でもない
ポインタの型が勝手にコロコロするわけでも何でもない
725デフォルトの名無しさん
2026/07/20(月) 23:58:29.68ID:1ctg6k6r > だから、ポインターの型はコロコロ変わらないだろw
コロコロ変わる可能性があるからprintfで%pでポインタ値を出力したい場合はvoid*にキャストすんだゾw
コロコロ変わる可能性があるからprintfで%pでポインタ値を出力したい場合はvoid*にキャストすんだゾw
726デフォルトの名無しさん
2026/07/21(火) 02:45:35.90ID:AUNABxJR >>724
わかってなくて草
void* はどのポインタの型とも変換可能だというのは、逆に言えばポインタはデータ型によって中身が変わることがあるってことなんだぞ
そうじゃなかったら void* なんかなくても自由に相互変換できるわけで
わかってなくて草
void* はどのポインタの型とも変換可能だというのは、逆に言えばポインタはデータ型によって中身が変わることがあるってことなんだぞ
そうじゃなかったら void* なんかなくても自由に相互変換できるわけで
727デフォルトの名無しさん
2026/07/21(火) 03:03:47.78ID:0GTCT915 中身が変わるってどういう意味でいってんの?
728デフォルトの名無しさん
2026/07/21(火) 03:07:50.45ID:6WHlUxtM 調べてみたらわかるけど、メモリ上のアドレスの表現手法が1パターンになると決まっているわけではない
729デフォルトの名無しさん
2026/07/21(火) 09:33:06.34ID:fsFgOEUQ 自分で理解して型をコロコロして使うってことと
勝手に型がコロコロするのとは違うんだが
勝手に型がコロコロするのとは違うんだが
730デフォルトの名無しさん
2026/07/21(火) 10:29:05.76ID:SRnA7Xqg731デフォルトの名無しさん
2026/07/21(火) 10:33:28.96ID:oSzwQYDy farとかnearとか、MS独自やん?
732デフォルトの名無しさん
2026/07/21(火) 10:34:55.72ID:xJziDexB 中身は変わらないんだがw
勝手に使う側が区切り方を変えるだけ
勝手に使う側が区切り方を変えるだけ
733デフォルトの名無しさん
2026/07/21(火) 12:36:08.24ID:4fRfjc8V よく分かってない奴が分かったつもりになってるのがC言語の難しさを証明している
734デフォルトの名無しさん
2026/07/21(火) 13:32:16.21ID:nQl1Kkh2 C言語って難しいから設計が悪く感じるだけ
735デフォルトの名無しさん
2026/07/21(火) 13:59:08.08ID:SRnA7Xqg ここはスレタイあるいは>>734に乗じて分からない振りをするためのスレだったのか、、、
736デフォルトの名無しさん
2026/07/21(火) 14:19:44.78ID:LLAWIT51737デフォルトの名無しさん
2026/07/21(火) 14:22:57.46ID:oSzwQYDy 実装で変わるもんをイチイチ語るなよ
738デフォルトの名無しさん
2026/07/21(火) 15:10:52.78ID:4fRfjc8V > 実装で変わるもんをイチイチ語るなよ
特定環境前提の話しかできないならC言語語るなよ
特定環境前提の話しかできないならC言語語るなよ
739デフォルトの名無しさん
2026/07/21(火) 15:13:01.25ID:oSzwQYDy 話が通じない奴らばかりだw
740デフォルトの名無しさん
2026/07/21(火) 15:48:53.56ID:MJ34erXT 話が通じないんじゃなくて、お前の知識が足りないだけw
741デフォルトの名無しさん
2026/07/21(火) 15:49:29.45ID:Ck8hjeFc742デフォルトの名無しさん
2026/07/21(火) 15:51:56.00ID:xJziDexB おまえみたいな学問としてのC言語なんて誰も目指して無いんだが
あくまでもターゲットありきの実用C言語の話しをしようぜ
あくまでもターゲットありきの実用C言語の話しをしようぜ
743デフォルトの名無しさん
2026/07/21(火) 16:23:12.71ID:cd91NMFz >>742
お前の知識のどこが実用なんだww
お前の知識のどこが実用なんだww
744デフォルトの名無しさん
2026/07/21(火) 17:10:07.51ID:oSzwQYDy おまえよりマシだろw
745デフォルトの名無しさん
2026/07/21(火) 17:22:31.12ID:3FVz/WrX バカには実用の意味がわからないらしい
仕様も理解せずにたまたま動くコードを書いて実用と言い張るのは他人や将来に負債を残してるだけの無能
仕様も理解せずにたまたま動くコードを書いて実用と言い張るのは他人や将来に負債を残してるだけの無能
746デフォルトの名無しさん
2026/07/21(火) 17:27:05.54ID:oSzwQYDy どんなに仕様を突き詰めても
たまたま動くコードしか書けないんだがw
たまたま動くコードしか書けないんだがw
747デフォルトの名無しさん
2026/07/21(火) 17:28:49.16ID:Rn4WfGDM アセンブラならポインタの構造なんてコロコロ変わるのが自明なのに
; nearポインタによるアクセス
mov BX, 0x1234 ; オフセットのみ指定(16bit)
mov AL, [BX] ; DS:BX を読み込み
mov [BX], AL ; DS:BX に書き込み
; farポインタによるアクセス
mov AX, 0xA000 ; セグメント部分
mov ES, AX ; セグメントレジスタにロード
mov BX, 0x1234 ; オフセット部分
mov AL, [ES:BX] ; 物理アドレスを読み込み(ES*16 + BX)
mov [ES:BX], AL ; 物理アドレスに書き込み(ES*16 + BX)
; nearポインタによるアクセス
mov BX, 0x1234 ; オフセットのみ指定(16bit)
mov AL, [BX] ; DS:BX を読み込み
mov [BX], AL ; DS:BX に書き込み
; farポインタによるアクセス
mov AX, 0xA000 ; セグメント部分
mov ES, AX ; セグメントレジスタにロード
mov BX, 0x1234 ; オフセット部分
mov AL, [ES:BX] ; 物理アドレスを読み込み(ES*16 + BX)
mov [ES:BX], AL ; 物理アドレスに書き込み(ES*16 + BX)
748デフォルトの名無しさん
2026/07/21(火) 17:30:26.88ID:ALCocViV far nearかぁ。そんな時代もあったよなぁ。
Cのポインタは抽象的な存在だね。longにアドレス入れて無理やり飛ばしたおぼえもあるなぁ。
Cのポインタは抽象的な存在だね。longにアドレス入れて無理やり飛ばしたおぼえもあるなぁ。
749デフォルトの名無しさん
2026/07/21(火) 17:32:44.19ID:oSzwQYDy それはIntel系の話
750デフォルトの名無しさん
2026/07/21(火) 19:33:10.77ID:28j0dMrv >>746
お前「C言語なら俺に聞け」スレで暴れてた f9fa-K2DK だろ
その
仕様通りに実装できていない(バグがある)コンパイラもある
↓
だからコンパイラにかかわらずたまたま動くコードしか書けない
↓
だから仕様に意味はない
ってゼロヒャク理論の三段論法何回も見たぞ
いい加減バグと仕様がないことの区別くらいつけられるようにならないと話にならない
お前「C言語なら俺に聞け」スレで暴れてた f9fa-K2DK だろ
その
仕様通りに実装できていない(バグがある)コンパイラもある
↓
だからコンパイラにかかわらずたまたま動くコードしか書けない
↓
だから仕様に意味はない
ってゼロヒャク理論の三段論法何回も見たぞ
いい加減バグと仕様がないことの区別くらいつけられるようにならないと話にならない
751デフォルトの名無しさん
2026/07/21(火) 19:35:17.49ID:oSzwQYDy >>750
関係ない人と同一人物だと決め付けるのは頭の病気ですか?
関係ない人と同一人物だと決め付けるのは頭の病気ですか?
752デフォルトの名無しさん
2026/07/21(火) 21:55:39.32ID:PsDVu0+l753デフォルトの名無しさん
2026/07/21(火) 21:56:31.93ID:c45Ngnht754デフォルトの名無しさん
2026/07/21(火) 22:09:26.31ID:rsJRMFhV アホらしい
こんな所で俺様理論で悦に浸ってる無能だらけw
こんな所で俺様理論で悦に浸ってる無能だらけw
755デフォルトの名無しさん
2026/07/21(火) 22:13:37.73ID:DpazwsnA >>750
ゼロヒャク論法を2回重ねてるのヤバすぎて草
ゼロヒャク論法を2回重ねてるのヤバすぎて草
756デフォルトの名無しさん
2026/07/21(火) 22:28:56.67ID:ADBZCODt >>749
じゃあ「C言語のポインタの中身は変わらない」の主張は「intel系のマシンでC言語は使えない」みたいな条件でないと成り立たないよね
じゃあ「C言語のポインタの中身は変わらない」の主張は「intel系のマシンでC言語は使えない」みたいな条件でないと成り立たないよね
757デフォルトの名無しさん
2026/07/21(火) 22:48:39.34ID:0GTCT915 現在では起こらない問題をネチネチ議論して役に立たんよね
758デフォルトの名無しさん
2026/07/21(火) 23:19:33.02ID:prLGQ+o1759デフォルトの名無しさん
2026/07/21(火) 23:21:06.55ID:d4/GCGHg 今でもそんなハードウェアいっぱいあるし、C言語の仕様もそれが起こりうることを前提に void* を用意し続けてるんだよなあ
760デフォルトの名無しさん
2026/07/22(水) 00:00:42.64ID:ZXc80T15 > 現在では起こらない問題を
C言語の仕様にある未定義動作が多様なプラットホール対応を前提として定義されてることを理解してない予感
C言語の仕様にある未定義動作が多様なプラットホール対応を前提として定義されてることを理解してない予感
761デフォルトの名無しさん
2026/07/22(水) 00:02:53.47ID:ZXc80T15 プラットホール→プラットホーム
762デフォルトの名無しさん
2026/07/22(水) 00:15:58.15ID:2xVLlMAv763デフォルトの名無しさん
2026/07/22(水) 01:07:29.19ID:c812nDXB そもそも過去の事例だと思っているらしいが、この時代のプロセッサの互換品は今でも普通に組み込まれまくってるぞ
764デフォルトの名無しさん
2026/07/22(水) 01:09:06.06ID:iL1PKXjH Z80もまだ流通してるからなあ
765デフォルトの名無しさん
2026/07/22(水) 07:08:02.64ID:2xVLlMAv >>763
普通で誤魔化さず教えてくれよ
普通で誤魔化さず教えてくれよ
766デフォルトの名無しさん
2026/07/22(水) 07:22:30.99ID:HW7hv8MA ワンチップマイコンなんか独自Cコンパイラだからローカルルール満載だぜ
767デフォルトの名無しさん
2026/07/22(水) 09:04:51.94ID:8XOkqCi+ >>765
空の青さを知る人よ
車載OSのAUTOSARなんかはブート部とOSがアセンブラとCで提供され、内作になる下層、ミドル層、アプリ層はCが主流だよ
ディスプレイ表示周りに近いほど高級な言語になっていくけどね
空の青さを知る人よ
車載OSのAUTOSARなんかはブート部とOSがアセンブラとCで提供され、内作になる下層、ミドル層、アプリ層はCが主流だよ
ディスプレイ表示周りに近いほど高級な言語になっていくけどね
768デフォルトの名無しさん
2026/07/22(水) 11:00:48.13ID:2xVLlMAv769デフォルトの名無しさん
2026/07/22(水) 11:18:09.90ID:zza340Xx 「C言語はポインタ型の指す型の違いによりポインタのサイズや構造に違いがあることを許容していますが現代で使用されるアーキテクチャでこの条件に該当するものはありますか」
↑をGemini様に質問しただけですらすら答えてくれたがこの程度のこともできない無能か。
↑をGemini様に質問しただけですらすら答えてくれたがこの程度のこともできない無能か。
770デフォルトの名無しさん
2026/07/22(水) 11:39:46.49ID:2xVLlMAv >>769
ないと言われた場合、それがハルシネーションかどうかどうやって判定するんだい?
ないと言われた場合、それがハルシネーションかどうかどうやって判定するんだい?
771デフォルトの名無しさん
2026/07/22(水) 11:51:28.83ID:zza340Xx > ないと言われた場合、
質問公開して晒せば良いんじゃね
質問公開して晒せば良いんじゃね
772デフォルトの名無しさん
2026/07/22(水) 12:28:34.60ID:DfcpeMH8 変わりうるニッチな例は提示されてるけどコロコロは変わらんよね
773デフォルトの名無しさん
2026/07/22(水) 13:34:24.85ID:8rH8F2Vz 結局「勝手にコロコロ」ってのは間違い
使う側が同じアドレス内のデータ構造を自在に使い分けることが出来るってだけのために
わざわざそういう機能を残したのがvoid*
そういう特殊なことをするつもりが無ければ一生関わらなくてよい
使う側が同じアドレス内のデータ構造を自在に使い分けることが出来るってだけのために
わざわざそういう機能を残したのがvoid*
そういう特殊なことをするつもりが無ければ一生関わらなくてよい
774デフォルトの名無しさん
2026/07/22(水) 15:36:19.85ID:9kaHeq4d 勝手にコロコロに置き換えてて草
構造は変わらんって言ってたのが元だろ
構造は変わらんって言ってたのが元だろ
775デフォルトの名無しさん
2026/07/22(水) 17:36:25.24ID:NgIV8orL データ構造は変わらないよ
取り出し方が変わるだけ
取り出し方が変わるだけ
776デフォルトの名無しさん
2026/07/22(水) 20:11:22.76ID:vzkzflMn777デフォルトの名無しさん
2026/07/22(水) 20:38:46.25ID:HW7hv8MA 使う側が用途によって変える事があるだけで、データ構造は変わらない
778デフォルトの名無しさん
2026/07/22(水) 21:53:22.30ID:sqxapXzQ779デフォルトの名無しさん
2026/07/22(水) 21:54:32.06ID:LxLIXIUP >>776-777
> 使う側がコロコロ変えてるだけであって
> 使う側が用途によって変える事があるだけで
勘違いしてる
型を使う側が変えるという話ではなくて、ポインタ自体の内部表現はデータ型が違う場合同じではないという話
> 使う側がコロコロ変えてるだけであって
> 使う側が用途によって変える事があるだけで
勘違いしてる
型を使う側が変えるという話ではなくて、ポインタ自体の内部表現はデータ型が違う場合同じではないという話
780デフォルトの名無しさん
2026/07/22(水) 22:20:46.55ID:S6d1Ft1m 最初からポインタの構造の話をしてるのに、データ型が勝手に変わることはないとか言ってる奴は何を幻視してるんだ
781デフォルトの名無しさん
2026/07/22(水) 22:21:35.42ID:eD14gaG0 >>780
ポインタというものが何かちゃんとわかってないんじゃね
ポインタというものが何かちゃんとわかってないんじゃね
782デフォルトの名無しさん
2026/07/22(水) 23:17:28.73ID:oFVQWNWE >>778
「変わる時は変わる」と「コロコロ変わる」は君の中では同じことなの?
「変わる時は変わる」と「コロコロ変わる」は君の中では同じことなの?
783デフォルトの名無しさん
2026/07/22(水) 23:21:16.64ID:2xVLlMAv 具体例で話せばすぐ終わる話をいつまでグダグダやってんの?
784デフォルトの名無しさん
2026/07/23(木) 02:55:40.74ID:7LGj3TN+785デフォルトの名無しさん
2026/07/23(木) 06:59:42.05ID:Yz6A3cq+ >>779
頭悪そう
データ型をどうするか決めて使うのは使う側の都合でしかない
仮に初期配置のデータ型と違うデータ型でも読み書きしたいときがあるから使う裏技のようなものだ
ポインタの「内部表現」って何よ?
ポインタを何だと思ってやがる
頭悪そう
データ型をどうするか決めて使うのは使う側の都合でしかない
仮に初期配置のデータ型と違うデータ型でも読み書きしたいときがあるから使う裏技のようなものだ
ポインタの「内部表現」って何よ?
ポインタを何だと思ってやがる
786デフォルトの名無しさん
2026/07/23(木) 07:25:49.53ID:SJijDEhg ポインターは単なるアドレスだろ
それ以上でもそれ以下でも無い
後はコンパイラが指定した型に見合ったサイズで処理するだけだ
まさかC#みたいに型まで持ってる変数だとでも思ってるんだろうか?
それ以上でもそれ以下でも無い
後はコンパイラが指定した型に見合ったサイズで処理するだけだ
まさかC#みたいに型まで持ってる変数だとでも思ってるんだろうか?
787デフォルトの名無しさん
2026/07/23(木) 09:46:23.53ID:XWH+I+Dd *val=123;
*pi=3.1415;
*pi=3.1415;
788デフォルトの名無しさん
2026/07/23(木) 13:17:39.14ID:cxrYFfJU >>785
実はポインタって内部にはアドレスを保管してる変数なんですよ、ご存じありませんでしたかw
実はポインタって内部にはアドレスを保管してる変数なんですよ、ご存じありませんでしたかw
789デフォルトの名無しさん
2026/07/23(木) 13:19:46.51ID:cxrYFfJU >>786
実はC言語のポインタにはデータ型というものがあります
詳しくは仕様を参照すればわかりますが、このデータ型とは間接参照先のデータの型を指すもので、この型によってアドレスの表現方式が変わることがあります
なぜなら、メモリ上のデータの大きさがアドレスの指定方法に変更を与えるアーキテクチャがあるからです
実はC言語のポインタにはデータ型というものがあります
詳しくは仕様を参照すればわかりますが、このデータ型とは間接参照先のデータの型を指すもので、この型によってアドレスの表現方式が変わることがあります
なぜなら、メモリ上のデータの大きさがアドレスの指定方法に変更を与えるアーキテクチャがあるからです
790デフォルトの名無しさん
2026/07/23(木) 13:25:11.47ID:Yz6A3cq+ すげー馬鹿だな
791デフォルトの名無しさん
2026/07/23(木) 13:27:23.49ID:cxrYFfJU バカなのはアドレスの表現は決して変わらないと言ってる奴だけどな
もしそうだとしたら、void* をわざわざ用意して各ポインタ型と相互変換できる型として提供してるC言語の仕様を作った奴は、全員頭が腐りきって1ミリも思考ができないゴミクソ野郎だと言ってるに等しいってことに気付かない
もしそうだとしたら、void* をわざわざ用意して各ポインタ型と相互変換できる型として提供してるC言語の仕様を作った奴は、全員頭が腐りきって1ミリも思考ができないゴミクソ野郎だと言ってるに等しいってことに気付かない
792デフォルトの名無しさん
2026/07/23(木) 13:49:59.56ID:cxrYFfJU 人をそこまでバカにしたことを言うなら、ちゃんと思い込み以外の根拠がないとダメだよね
まあ、モノ考えてないから自分が何言ってるかわかってないんだろうけど
まあ、モノ考えてないから自分が何言ってるかわかってないんだろうけど
793デフォルトの名無しさん
2026/07/23(木) 14:10:07.17ID:X9t4imoU だからさ、C言語はコンパイル時に型が固定されるから、実行時には変わらないんだよ?
型変換がなんであるかって、コンパイラにこの型でアセンブラコード書いてねって教えてるだけだから
型変換がなんであるかって、コンパイラにこの型でアセンブラコード書いてねって教えてるだけだから
794デフォルトの名無しさん
2026/07/23(木) 14:11:01.80ID:Iv6Waiid 仕様だし789が正なのはみんなわかってるからスルーでええのに
795デフォルトの名無しさん
2026/07/23(木) 15:54:02.52ID:Yz6A3cq+ アドレスの表現w
メモリ空間のアドレスって何ビットかってハードで決まってんだよw
メモリ空間のアドレスって何ビットかってハードで決まってんだよw
796デフォルトの名無しさん
2026/07/23(木) 16:00:19.59ID:cxrYFfJU797デフォルトの名無しさん
2026/07/23(木) 16:00:38.63ID:Yz6A3cq+ それをインクリメント掛けたときにどれだけずらすかってのを
予め設定する方法と、自在に変えられるってだけの話であって
それは使う側の都合よ
勝手にコロコロ変わったらバグだっての
なんで固定じゃない方法を残したか?変動させて使う方法が使われててそれもCで実現しなきゃならんからだ
なにがポインタの内部表現だよw
予め設定する方法と、自在に変えられるってだけの話であって
それは使う側の都合よ
勝手にコロコロ変わったらバグだっての
なんで固定じゃない方法を残したか?変動させて使う方法が使われててそれもCで実現しなきゃならんからだ
なにがポインタの内部表現だよw
798デフォルトの名無しさん
2026/07/23(木) 16:02:13.92ID:Yz6A3cq+ アドレス値が32ビット表現だったり64ビット表現だったり変わるってのか?
笑える
笑える
799デフォルトの名無しさん
2026/07/23(木) 16:04:23.41ID:cxrYFfJU800デフォルトの名無しさん
2026/07/23(木) 16:05:46.68ID:cxrYFfJU >>797
誰も言ってないことに反論する藁人形論法だねw
勝手にコロコロ変わるんじゃなくて、データ型によって変わるとはっきり言ってる
データ型はソースコードに書いてるだろ
あ、そっか
ごめん、C書いたことないからわかんないよねw
誰も言ってないことに反論する藁人形論法だねw
勝手にコロコロ変わるんじゃなくて、データ型によって変わるとはっきり言ってる
データ型はソースコードに書いてるだろ
あ、そっか
ごめん、C書いたことないからわかんないよねw
801デフォルトの名無しさん
2026/07/23(木) 16:09:31.37ID:cxrYFfJU まあ、そもそもこんなこと言ってるあたり、まともに型というものの意味を考えたこともないんだろうな
型はビット列の解釈ルールなんだが、それがわかってない奴はビット数が同じなら同じなんていうバカげた間違いをする
本当にそうだったら、一般的なPCにおけるintとfloatはともに32bitだから同じってことになっちゃうけどなw
考えないというのはおそろしいね
型はビット列の解釈ルールなんだが、それがわかってない奴はビット数が同じなら同じなんていうバカげた間違いをする
本当にそうだったら、一般的なPCにおけるintとfloatはともに32bitだから同じってことになっちゃうけどなw
考えないというのはおそろしいね
802デフォルトの名無しさん
2026/07/23(木) 16:10:17.39ID:0V79cNzW C言語は静的に型が決まるからね
803デフォルトの名無しさん
2026/07/23(木) 16:16:30.74ID:aZujWR+i 結局「何が」コロコロ変わると言ってたんだっけ?
804デフォルトの名無しさん
2026/07/23(木) 19:09:41.27ID:wNrO/bIp >>801
それどころか、同じビット数の符号付き整数と符号なし整数は同じということに……w
それどころか、同じビット数の符号付き整数と符号なし整数は同じということに……w
805デフォルトの名無しさん
2026/07/23(木) 19:23:59.68ID:0AKlWdde 最大値も最小値も挙動もまるっきり変わってきちゃうのに……
806デフォルトの名無しさん
2026/07/23(木) 20:30:01.44ID:oQTw6V3g 斜め読みしてたけど
型変換で変わるという話なんか
型によってインクリメントされるサイズが違うという話なんか
前者ならCとかは緩い型制限言語じゃないから「自分でvoid*」を使わなきゃならないし
インクリメントのサイズなら
intのi++とか型によってインクリメントしてくれるし
何がコロコロ勝手に変わるかってのがよくわからん
型変換で変わるという話なんか
型によってインクリメントされるサイズが違うという話なんか
前者ならCとかは緩い型制限言語じゃないから「自分でvoid*」を使わなきゃならないし
インクリメントのサイズなら
intのi++とか型によってインクリメントしてくれるし
何がコロコロ勝手に変わるかってのがよくわからん
807デフォルトの名無しさん
2026/07/23(木) 21:27:50.46ID:m1QCADSd いろいろなコンピュータアーキテクチャ知ってるかに帰着するけど
仕様でも言及してんだから井の中の蛙にはなりたかないな
仕様でも言及してんだから井の中の蛙にはなりたかないな
808デフォルトの名無しさん
2026/07/23(木) 22:05:32.34ID:Yz6A3cq+ データ型と、自分で言い始めたアドレス値の違いもわかってないバカか
809デフォルトの名無しさん
2026/07/23(木) 22:10:59.94ID:Yz6A3cq+ >>800
やっぱ意味わかってなかったか
データアドレスに書き込んだデータ型と違うデータ型に切り替えて使う場合があるから
こういう機能がC言語でも禁止されずに残されてんだよ
それはポインタの型がデータアドレスのデータ型に縛られないことを示す
で、それは勝手にコロコロするんじゃなくて、使う側が明確に決めて使うものだ
やっぱ意味わかってなかったか
データアドレスに書き込んだデータ型と違うデータ型に切り替えて使う場合があるから
こういう機能がC言語でも禁止されずに残されてんだよ
それはポインタの型がデータアドレスのデータ型に縛られないことを示す
で、それは勝手にコロコロするんじゃなくて、使う側が明確に決めて使うものだ
810デフォルトの名無しさん
2026/07/23(木) 22:20:14.08ID:jagJtLgx ワード単位でアドレスが振られるワードマシンで8ビットや9ビットのcharを指すポインタを実現するにはアドレス格納するだけじゃ無理って分かりそうなもんだがな、馬鹿なのかな。
https://ja.wikipedia.org/wiki/%E3%83%AF%E3%83%BC%E3%83%89%E3%83%9E%E3%82%B7%E3%83%B3
https://ja.wikipedia.org/wiki/%E3%83%AF%E3%83%BC%E3%83%89%E3%83%9E%E3%82%B7%E3%83%B3
811デフォルトの名無しさん
2026/07/23(木) 22:25:14.79ID:tHFNuHdE 最近はメタデータもポインタ内にあるしねぇ。
(仮想)アドレスというよりハンドルという認識が正しいのだとか。
(仮想)アドレスというよりハンドルという認識が正しいのだとか。
812デフォルトの名無しさん
2026/07/23(木) 23:02:52.89ID:CGQfoS8K 806だけど今までスレに書いてる人とは別人で
コロコロ変わるの「対象」が型の話なのか環境によるbit数の違いの話なのかがよくわからんって意味で
型の話ならint*からchar*に変えれないし、void*で使うにも「自分で行う」事だから勝手にコロコロではないし
bit数の話ならコンパイル時決まる事だし
何が「勝手にコロコロ変わる」のかがよくわからん
コロコロ変わるの「対象」が型の話なのか環境によるbit数の違いの話なのかがよくわからんって意味で
型の話ならint*からchar*に変えれないし、void*で使うにも「自分で行う」事だから勝手にコロコロではないし
bit数の話ならコンパイル時決まる事だし
何が「勝手にコロコロ変わる」のかがよくわからん
813デフォルトの名無しさん
2026/07/23(木) 23:20:44.32ID:+LHIhy3G814デフォルトの名無しさん
2026/07/23(木) 23:38:59.87ID:ZRx3Yqcq815デフォルトの名無しさん
2026/07/23(木) 23:40:10.70ID:ZRx3Yqcq 途中送信してしまった、以下続き
f9fa-K2DKじゃないよな?
仕様通りに実装できていない(バグがある)コンパイラもある
↓
だからコンパイラにかかわらずたまたま動くコードしか書けない
↓
だから仕様に意味はないし、未定義動作をいくら書いてもいい
みたいなトンデモ理論を展開する気なら勘弁してくれよ
f9fa-K2DKじゃないよな?
仕様通りに実装できていない(バグがある)コンパイラもある
↓
だからコンパイラにかかわらずたまたま動くコードしか書けない
↓
だから仕様に意味はないし、未定義動作をいくら書いてもいい
みたいなトンデモ理論を展開する気なら勘弁してくれよ
816デフォルトの名無しさん
2026/07/23(木) 23:47:13.29ID:UCJ3kLlg >>809は知識が決定的に足りてない
> ポインタの型がデータアドレスのデータ型に縛られないことを示す
もうこれだけではっきりしている
> ポインタの型
これはまだわかる
int* や void* のようなポインタ全般とみなして、「整数型」みたいな集合体と解釈できる
> データアドレスのデータ型
そんなものはない
データ型があるのはあくまでポインタであって、データアドレスはデータを格納したメモリ領域の先頭アドレスのことに過ぎない
メモリアドレスにはデータ型は存在せず、そのアーキテクチャで扱える表現法だけが存在する
その表現法が1つであることをC言語は保証しないし、アーキテクチャの設計において複数用意されることは珍しくない
これをポインタではデータ型によって使い分ける
なぜならデータ型によって指しているデータの大きさが異なるために、アラインメントが変わることになるから
アーキテクチャによっては、アラインメントによって表現手法を使い分ける必要に迫られるためである
> ポインタの型がデータアドレスのデータ型に縛られないことを示す
もうこれだけではっきりしている
> ポインタの型
これはまだわかる
int* や void* のようなポインタ全般とみなして、「整数型」みたいな集合体と解釈できる
> データアドレスのデータ型
そんなものはない
データ型があるのはあくまでポインタであって、データアドレスはデータを格納したメモリ領域の先頭アドレスのことに過ぎない
メモリアドレスにはデータ型は存在せず、そのアーキテクチャで扱える表現法だけが存在する
その表現法が1つであることをC言語は保証しないし、アーキテクチャの設計において複数用意されることは珍しくない
これをポインタではデータ型によって使い分ける
なぜならデータ型によって指しているデータの大きさが異なるために、アラインメントが変わることになるから
アーキテクチャによっては、アラインメントによって表現手法を使い分ける必要に迫られるためである
817デフォルトの名無しさん
2026/07/23(木) 23:49:09.55ID:UCJ3kLlg 根本的に君は、C言語の抽象であり実装は機能の提供を実現するコンパイラに委ねられる「型」と、メモリアドレスというその実装がマイクロアーキテクチャに委ねられる「アドレスの表現手法」を混同しているために、この議論に必要な前提を共有できていない
818デフォルトの名無しさん
2026/07/23(木) 23:53:45.31ID:pbIpmPNY >>816
データアドレスって表現初めて見たけど、メモリアドレスのうちデータを指すものをデータアドレスって言うのね
逆にコードを指すものはコードアドレスと
まあ、知識をひけらかす時くらいしか使えなそうな表現だが
データアドレスって表現初めて見たけど、メモリアドレスのうちデータを指すものをデータアドレスって言うのね
逆にコードを指すものはコードアドレスと
まあ、知識をひけらかす時くらいしか使えなそうな表現だが
819デフォルトの名無しさん
2026/07/24(金) 00:29:11.40ID:nGzJ9gdF >>817
で、結局何が「コロコロ変わる」と言ってるんだっけ?
C言語の抽象であり実装は機能の提供を実現するコンパイラに委ねられる「型」?
メモリアドレスというその実装がマイクロアーキテクチャに委ねられる「アドレスの表現手法」 ?
どっち?
で、結局何が「コロコロ変わる」と言ってるんだっけ?
C言語の抽象であり実装は機能の提供を実現するコンパイラに委ねられる「型」?
メモリアドレスというその実装がマイクロアーキテクチャに委ねられる「アドレスの表現手法」 ?
どっち?
820デフォルトの名無しさん
2026/07/24(金) 04:46:28.00ID:GK3Txn0n >>819
話をまぜっかえして自分の失点を隠したいのはわかるけど、あからさますぎてバレているよ
で、アドレスの表現手法は型によってコロコロ変わるってどう見ても書いてるんだよね、元の文を見ると
だから型が同じでも変わるのかとバカにしたり、実行するたびに変わるのかとバカにしたり、型は勝手に変わらないなどと講釈を垂れ出したりした君は、ずっとバカにしか見えていなかったよ
話をまぜっかえして自分の失点を隠したいのはわかるけど、あからさますぎてバレているよ
で、アドレスの表現手法は型によってコロコロ変わるってどう見ても書いてるんだよね、元の文を見ると
だから型が同じでも変わるのかとバカにしたり、実行するたびに変わるのかとバカにしたり、型は勝手に変わらないなどと講釈を垂れ出したりした君は、ずっとバカにしか見えていなかったよ
821デフォルトの名無しさん
2026/07/24(金) 05:01:28.62ID:tl1Ks4By 結局Cの仕様も理解できないほどコンピュータの基礎的な知識が足りないから、どうでもいい擬音にこだわるようなバカげたことになる
そんな文章を1文字でも書いてる暇があるなら、Cの使用を読んでこいやアホンダラ
そんな文章を1文字でも書いてる暇があるなら、Cの使用を読んでこいやアホンダラ
822デフォルトの名無しさん
2026/07/24(金) 07:39:03.46ID:rDuh/7gs 悪態つきたいだけのスレに成り下がってて草
823デフォルトの名無しさん
2026/07/24(金) 08:43:26.94ID:UPXfZ3FT つまり、最初にコロコロ変わるって言ったやつが必死に論点変えたり造語駆使して掻きまわしてんだよ
意図せずコロコロ変わるのはバグって言うんだ
そんなのは仕様ではない
void*ってのを完全に履き違えて解釈しちゃった恥ずかしい馬鹿
意図せずコロコロ変わるのはバグって言うんだ
そんなのは仕様ではない
void*ってのを完全に履き違えて解釈しちゃった恥ずかしい馬鹿
824デフォルトの名無しさん
2026/07/24(金) 15:08:12.73ID:WIK69ucb825デフォルトの名無しさん
2026/07/24(金) 15:22:12.02ID:v2sV6Qj0826デフォルトの名無しさん
2026/07/24(金) 15:24:26.75ID:a9K4NXHg >>要するに、文脈や構造を見ず文中の単語だけをつまみ食いして、「〜って言ってる!」と脳内変換してしまう、いわゆる**機能的文脈文盲**(単語は読めても構造が理解できない状態)ですね。
827デフォルトの名無しさん
2026/07/24(金) 20:40:29.13ID:7DhEL1jI >>823
自分で作った妄言に自分で反論して楽しい?w
自分で作った妄言に自分で反論して楽しい?w
828デフォルトの名無しさん
2026/07/24(金) 23:01:22.10ID:Zaz5W8AG C言語が難しいと思う理由がわからない
829デフォルトの名無しさん
2026/07/24(金) 23:12:06.56ID:jY4oLc0F 確かに
小学生の頃に覚えたくらいだから簡単な方だと思う
小学生の頃に覚えたくらいだから簡単な方だと思う
830デフォルトの名無しさん
2026/07/24(金) 23:12:49.07ID:yvjTOwn+ 言語自体はかんたんな部類よな
プリミティブすぎてなにやるにも積み重ねが必要なだけで
プリミティブすぎてなにやるにも積み重ねが必要なだけで
831デフォルトの名無しさん
2026/07/24(金) 23:34:41.33ID:POPcJYCH >>820
>で、アドレスの表現手法は型によってコロコロ変わるってどう見ても書いてるんだよね、元の文を見ると
それなら普通はコロコロは変わらないよね
型の違いによってアドレスの表現手法が変わるのは特殊なアーキテクチャで特殊な型変換を行った場合だけ
例えばnearポインタをfarポインタに変換すれば変わる
でも今のメジャーなアーキテクチャでint*をchar*に変換したりint*をvoid*に変換したところで内部のアドレスの表現手法は変わらない
変わるような実装があったとしてもCの仕様に反するわけじゃないが無駄なので誰もやらない
「アドレスの表現手法は型によって変わる場合がある」くらいのなら納得してくれる人はいると思うが普通は変わらないものを「コロコロ変わる」と言われて納得する人は少ないんじゃないかな
それこそ現役でnearポインタをfarポインタに変換してる人くらいには少ないと思う
>で、アドレスの表現手法は型によってコロコロ変わるってどう見ても書いてるんだよね、元の文を見ると
それなら普通はコロコロは変わらないよね
型の違いによってアドレスの表現手法が変わるのは特殊なアーキテクチャで特殊な型変換を行った場合だけ
例えばnearポインタをfarポインタに変換すれば変わる
でも今のメジャーなアーキテクチャでint*をchar*に変換したりint*をvoid*に変換したところで内部のアドレスの表現手法は変わらない
変わるような実装があったとしてもCの仕様に反するわけじゃないが無駄なので誰もやらない
「アドレスの表現手法は型によって変わる場合がある」くらいのなら納得してくれる人はいると思うが普通は変わらないものを「コロコロ変わる」と言われて納得する人は少ないんじゃないかな
それこそ現役でnearポインタをfarポインタに変換してる人くらいには少ないと思う
832デフォルトの名無しさん
2026/07/24(金) 23:35:27.67ID:95VkoHHg >>828
strict aliasing ruleをそらで説明してみ?
strict aliasing ruleをそらで説明してみ?
833デフォルトの名無しさん
2026/07/25(土) 00:03:46.89ID:ffZgHXT7 複おじって頭が悪いからC言語を難しく感じるだけ
834デフォルトの名無しさん
2026/07/25(土) 00:17:38.93ID:CTDQAdTW >>831
お前がたまたま変わらないアーキテクチャを触ってきたことを「普通は変わらない」とは言わないんだぜw
お前がたまたま変わらないアーキテクチャを触ってきたことを「普通は変わらない」とは言わないんだぜw
835デフォルトの名無しさん
2026/07/25(土) 00:19:14.70ID:srZ691AN836デフォルトの名無しさん
2026/07/25(土) 00:21:06.04ID:yONvHxKM >>831
> 変わるような実装があったとしてもCの仕様に反するわけじゃないが無駄なので誰もやらない
お前の頭が足りないから思いつかないだけ
アドレスを分割することで指す場所を変えるようなアーキテクチャであれば、その表現を変えることで効率よく異なるサイズのデータ型を扱える
> 変わるような実装があったとしてもCの仕様に反するわけじゃないが無駄なので誰もやらない
お前の頭が足りないから思いつかないだけ
アドレスを分割することで指す場所を変えるようなアーキテクチャであれば、その表現を変えることで効率よく異なるサイズのデータ型を扱える
837デフォルトの名無しさん
2026/07/25(土) 00:42:41.42ID:+sd0sCI1838デフォルトの名無しさん
2026/07/25(土) 01:00:04.49ID:amT5lUF4 コンピューターがどう動いているかを知らずにC言語を理解しようとしているのが間違い。
839デフォルトの名無しさん
2026/07/25(土) 01:09:45.90ID:D9WHljYz >>837
はい雑魚
はい雑魚
840デフォルトの名無しさん
2026/07/25(土) 06:06:48.20ID:8RNGdrDH アドレスの表現方法ってハードで決まってるじゃん
16進数16桁とか8桁とか
型がどうのこうの関係ない
型はその中身のデータに関係あるだけよ
16進数16桁とか8桁とか
型がどうのこうの関係ない
型はその中身のデータに関係あるだけよ
841デフォルトの名無しさん
2026/07/25(土) 06:09:53.11ID:8RNGdrDH842デフォルトの名無しさん
2026/07/25(土) 08:52:27.66ID:amT5lUF4843デフォルトの名無しさん
2026/07/25(土) 08:54:59.66ID:amT5lUF4 >>835
それはそのコンパイラの警告にすぎない。
それはそのコンパイラの警告にすぎない。
844デフォルトの名無しさん
2026/07/25(土) 09:43:23.17ID:AMT22xeK 何この無意味なのの知り合い
お前らもっと有益なことに時間使いなよ
盆栽育てるとか
お前らもっと有益なことに時間使いなよ
盆栽育てるとか
845デフォルトの名無しさん
2026/07/25(土) 09:51:08.79ID:D9WHljYz846デフォルトの名無しさん
2026/07/25(土) 13:07:13.38ID:rj86s94m847デフォルトの名無しさん
2026/07/25(土) 13:12:15.32ID:YNkzbLWE848デフォルトの名無しさん
2026/07/25(土) 13:26:27.57ID:hNS4eADZ スレタイが悪いからアレるだけw
849デフォルトの名無しさん
2026/07/25(土) 13:36:59.57ID:8K/I600o バカにはアドレスの表現手法が複数あり得るという事実だけでも理解できないらしい
850デフォルトの名無しさん
2026/07/25(土) 13:37:39.15ID:Jak9H4Dv >>839-842
知性欠乏症
知性欠乏症
851デフォルトの名無しさん
2026/07/25(土) 13:38:00.81ID:Jak9H4Dv852デフォルトの名無しさん
2026/07/25(土) 15:56:24.11ID:CjX3PYjT 以下、コロコロ禁句な
意味が曖昧になるから
意味が曖昧になるから
853デフォルトの名無しさん
2026/07/25(土) 16:30:57.90ID:681Rgf4Y うるせぇニコ動ぶつけんぞ
\ /
┏━━━\/━━━┓
┃┏━━━━━━┓┃
┃┃ ● ┃┃
┃┃ ● ┃┃
┃┃ ▲ ┃┃
┃┗━━━━━━┛┃
┗━∪━━━━∪━┛
ヽ(´・ω・)ノ
| /
UU
\ /
┏━━━\/━━━┓
┃┏━━━━━━┓┃
┃┃ ● ┃┃
┃┃ ● ┃┃
┃┃ ▲ ┃┃
┃┗━━━━━━┛┃
┗━∪━━━━∪━┛
ヽ(´・ω・)ノ
| /
UU
854デフォルトの名無しさん
2026/07/25(土) 16:44:51.67ID:Tg0K2GA7 ('ω')三( ε: )三(.ω.)三( :3 )三('ω')コロコロ
855デフォルトの名無しさん
2026/07/25(土) 19:57:51.89ID:M2f/GW/a なんか >>839-842 が人気だが
よほどこのレスが刺さったようだなw
よほどこのレスが刺さったようだなw
856デフォルトの名無しさん
2026/07/25(土) 21:24:13.93ID:PIcGPZbW >>811
いわゆるfatポインタはアドレス以外の情報も含むもんな
色んな言語にあるスライスポインタは対象アドレスと対象サイズを含んでたり
この種のポインタを持たない言語は対象サイズを自分で管理することになってリスクが高い
いわゆるfatポインタはアドレス以外の情報も含むもんな
色んな言語にあるスライスポインタは対象アドレスと対象サイズを含んでたり
この種のポインタを持たない言語は対象サイズを自分で管理することになってリスクが高い
857デフォルトの名無しさん
2026/07/25(土) 21:55:13.16ID:b0kFPMYU サイズ情報を伴わないアドレスだけのポインタでアクセスする駄目なプログラミング言語はCだけ
858デフォルトの名無しさん
2026/07/25(土) 22:05:23.56ID:CtWfPMss 初心者とか頭がちょっと弱い人はお断り言語なんだよ
859デフォルトの名無しさん
2026/07/25(土) 22:13:58.25ID:PBkLlQlk そういう今時のスマートポインタを使いこなせない頭の弱い人がC言語に取り残された
860デフォルトの名無しさん
2026/07/25(土) 22:27:20.66ID:amT5lUF4 >>857
メモリ領域を自分が何に使っているのかわからずにアクセスするのが間違い
C言語の構造体なんてアドレスでアクセスするのが前提みたいなもんだしな。
言語仕様で決まっていることをわかりにくいというのはおかしい。
メモリ領域を自分が何に使っているのかわからずにアクセスするのが間違い
C言語の構造体なんてアドレスでアクセスするのが前提みたいなもんだしな。
言語仕様で決まっていることをわかりにくいというのはおかしい。
861デフォルトの名無しさん
2026/07/25(土) 22:34:29.99ID:/tJ02Iia862デフォルトの名無しさん
2026/07/25(土) 22:42:24.86ID:CtWfPMss ただポインタの中身を参照するだけなのに速度的な問題で毎回サイズチェックしたくない時ってあるだろ
863デフォルトの名無しさん
2026/07/25(土) 22:48:59.73ID:lAnhPPCR864デフォルトの名無しさん
2026/07/25(土) 23:16:13.90ID:8Tw1AyhK 静的解析する周辺ツールはごまんとあるから
C自体はこのままでいい
C自体はこのままでいい
865デフォルトの名無しさん
2026/07/25(土) 23:21:25.75ID:hKnGjYCT Cの言語仕様だと静的解析だけでは限界があることが判明している
焼け石に水
焼け石に水
866デフォルトの名無しさん
2026/07/25(土) 23:56:15.07ID:CtWfPMss >>863
「最適化で消える」じゃなくて「消える場合もある」じゃね?
「最適化で消える」じゃなくて「消える場合もある」じゃね?
867デフォルトの名無しさん
2026/07/26(日) 00:24:06.60ID:yMPyo20Z 「チェックしなくても明らかだからそこはチェックを略してもいい」
これはC言語でプログラマーがよくやる形
であるとともに
他の言語のコンパイル最適化シーンで行なわれる形
つまり実は同じなのだ!
プログラマーがやると稀に判断ミスをしてバグやセキュリティホール
だからコンパイラの最適化に任せた方が良いとの結論になった
これはC言語でプログラマーがよくやる形
であるとともに
他の言語のコンパイル最適化シーンで行なわれる形
つまり実は同じなのだ!
プログラマーがやると稀に判断ミスをしてバグやセキュリティホール
だからコンパイラの最適化に任せた方が良いとの結論になった
868デフォルトの名無しさん
2026/07/26(日) 01:20:49.65ID:QRU6fadK >>867
「最適化で消える」じゃなくて「消える場合もある」じゃね?
「最適化で消える」じゃなくて「消える場合もある」じゃね?
869デフォルトの名無しさん
2026/07/26(日) 01:54:10.67ID:wjPgi1P5 Cプログラマとコンピュータどちらがミスせずに安全に省略/最適化できるかの勝負
これまでCプログラマが敗北してきた歴史
これまでCプログラマが敗北してきた歴史
870デフォルトの名無しさん
2026/07/26(日) 13:38:29.40ID:Nv+cg7Cq void*使わなきゃ済むだけの話なのに、それだけでC言語を悪にしたがるアホ
871デフォルトの名無しさん
2026/07/26(日) 13:43:36.85ID:8JCXnrVE そもそもアクセス不可エリアなんて今時のOSが勝手に監視してるだけだからな
昔はそんなものなかったから、通り過ぎたコードエリアをデータエリアとして再利用したり自己書き換えプログラムなんていうテクニックが使えた
余計なお世話チェックが増えたことで危険なことにされたプログラムが増えてしまうという皮肉
昔はそんなものなかったから、通り過ぎたコードエリアをデータエリアとして再利用したり自己書き換えプログラムなんていうテクニックが使えた
余計なお世話チェックが増えたことで危険なことにされたプログラムが増えてしまうという皮肉
872デフォルトの名無しさん
2026/07/26(日) 16:40:18.89ID:CvyKZXEP873デフォルトの名無しさん
2026/07/26(日) 20:53:39.64ID:3pozJc96874デフォルトの名無しさん
2026/08/01(土) 02:47:06.92ID:as1Gx3U4 * C言語は言語仕様に欠陥があるから危ない ←仕様を理解してないバカ
* C言語は言語仕様を守らずに書いていいから価値がある ←迷惑無能バカ
* C言語は言語仕様を守らずに書いていいから価値がある ←迷惑無能バカ
875デフォルトの名無しさん
2026/08/01(土) 06:46:24.61ID:S8J83+8u > 通り過ぎたコードエリアをデータエリアとして再利用したり自己書き換えプログラムなんていうテクニックが使えた
↑UBをテクニックと称するアホw
↑UBをテクニックと称するアホw
876デフォルトの名無しさん
2026/08/01(土) 07:39:23.55ID:yiUouMRh JITコンパイラ「・・・
877デフォルトの名無しさん
2026/08/01(土) 07:42:04.42ID:SJID3+jN JITが自己書き換えしてると思ってるバカ発見
878デフォルトの名無しさん
2026/08/01(土) 08:01:33.95ID:yiUouMRh JITは自己書換えというより、読み込んだ中間コードからネイティブコードを生成だよ
その分野でCは今でも主戦力だろう
その分野でCは今でも主戦力だろう
879デフォルトの名無しさん
2026/08/01(土) 08:30:37.94ID:SJID3+jN >>878
じゃあ876の意図を説明してみろカス
じゃあ876の意図を説明してみろカス
880デフォルトの名無しさん
2026/08/01(土) 09:47:25.46ID:XM5AkVUf どんだけ罵り合っても情報量が全く増えない老人ホームスレ
881デフォルトの名無しさん
2026/08/01(土) 10:03:58.57ID:w4EEgzdz >>874-875
結局これ
結局これ
882デフォルトの名無しさん
2026/08/01(土) 10:56:04.95ID:0oozcBJR そのとおりだな
C言語なんて出来て当たり前だが
今どき使うのは問題山積みかつ非効率すぎて使うべきでない言語
C言語なんて出来て当たり前だが
今どき使うのは問題山積みかつ非効率すぎて使うべきでない言語
883デフォルトの名無しさん
2026/08/01(土) 16:32:21.53ID:xsRJEHTN まあ使えるひとだっているんだしその辺は断定せずともひとはひと、自分は自分でいいじゃない
884デフォルトの名無しさん
2026/08/01(土) 18:03:17.81ID:fT3Cj9Cj885デフォルトの名無しさん
2026/08/01(土) 18:20:26.11ID:XyaPEWez886デフォルトの名無しさん
2026/08/01(土) 18:49:30.94ID:xsRJEHTN なんだかんだなくはないんじゃない
データベースとか圧縮ライブラリみたいのはC多いでしょ
映像コーデックなんかもリファレンス実装はCが多いんじゃない
あとOpenSSLはCだったと思うよ違ったかな
データベースとか圧縮ライブラリみたいのはC多いでしょ
映像コーデックなんかもリファレンス実装はCが多いんじゃない
あとOpenSSLはCだったと思うよ違ったかな
887デフォルトの名無しさん
2026/08/01(土) 21:49:38.53ID:rl6L8uaI >>885
保守性が必要で実装の高速性が必要なプログラムはCでないといけない場合も多い
特にGCでの停止が許されない、ハードウェアの制御やリアルタイム性が必要ならその傾向が強くなる
組み込みやドライバはCでないと難しいことが多いし、重厚なライブラリも同様
保守性が必要で実装の高速性が必要なプログラムはCでないといけない場合も多い
特にGCでの停止が許されない、ハードウェアの制御やリアルタイム性が必要ならその傾向が強くなる
組み込みやドライバはCでないと難しいことが多いし、重厚なライブラリも同様
888デフォルトの名無しさん
2026/08/01(土) 22:10:44.96ID:RE9jJDcx889デフォルトの名無しさん
2026/08/02(日) 02:33:32.81ID:UZ8yL7UT890デフォルトの名無しさん
2026/08/02(日) 06:31:44.74ID:ZaBXwtmP891デフォルトの名無しさん
2026/08/02(日) 09:57:04.26ID:6Hci8DEs 余計な構文増やしてもらわなくていいんだよな
新たな機能はdllで増やして、それらをわかりやすくUIで表示してほしい
新たな機能はdllで増やして、それらをわかりやすくUIで表示してほしい
892デフォルトの名無しさん
2026/08/02(日) 10:06:47.77ID:m/vxb191 えっ
893デフォルトの名無しさん
2026/08/02(日) 10:27:47.36ID:kqI0p28o >>890
むしろ組み込みのしかもその中の一部でしかCは生き残れなかった敗北言語
むしろ組み込みのしかもその中の一部でしかCは生き残れなかった敗北言語
894デフォルトの名無しさん
2026/08/02(日) 10:49:51.17ID:6Hci8DEs CPUの命令は変わってないくせに、構文だけ俺様が考えた最強の~って増やしまくるから糞化すんだよ
895デフォルトの名無しさん
2026/08/02(日) 11:14:14.34ID:mudyKTZZ 男は俺含めて古い言語使って細部までコード最適化してこだわり持って仕事してる
女は新しい言語に飛びついてすぐにマスターして乗り換えてしまう、、、
こういうのはよく見るけどやっぱ男の方が正しいスタイルだと思う。レガシーでさぁ
女は新しい言語に飛びついてすぐにマスターして乗り換えてしまう、、、
こういうのはよく見るけどやっぱ男の方が正しいスタイルだと思う。レガシーでさぁ
896デフォルトの名無しさん
2026/08/02(日) 11:39:18.28ID:WsXpU128 男はCしか使えないところはCで
Rust使えるところは効率いいRust使ってるよ
Rust使えるところは効率いいRust使ってるよ
897デフォルトの名無しさん
2026/08/02(日) 11:54:01.09ID:wqhrvL/S すぐマスターできるなら素養がある
男と同じことしないのは最適解じゃない判断では
仮に品質同じでもモダンな開発してると営業も有利だし
業務なら男がダメ
男と同じことしないのは最適解じゃない判断では
仮に品質同じでもモダンな開発してると営業も有利だし
業務なら男がダメ
898デフォルトの名無しさん
2026/08/05(水) 06:56:52.65ID:NPyOsQTp Cって、ホンバンのコトだったっけ?
899デフォルトの名無しさん
2026/08/05(水) 09:11:14.22ID:NYuFYqVO900デフォルトの名無しさん
2026/08/05(水) 09:14:08.50ID:M5hHFLD4 Cをディスってる奴はだいたいバカ
頭が悪いとうまく書けないからな
頭が悪いとうまく書けないからな
901デフォルトの名無しさん
2026/08/05(水) 12:38:59.53ID:vthT5gAM Aがチウ、Bがモミ、Cがセクース、Dがオギャー、だっけ?
902デフォルトの名無しさん
2026/08/06(木) 23:16:16.01ID:mUt88UoU C++は2人?3人?
903デフォルトの名無しさん
2026/08/11(火) 12:30:09.09ID:b+zr61Ap Cはカミソリであるから
安全カミソリと違って
使っていて問題が無い間は問題が無い
安全カミソリと違って
使っていて問題が無い間は問題が無い
904デフォルトの名無しさん
2026/08/13(木) 23:14:51.55ID:4dN5xrJd 無意味な言葉遊び
905デフォルトの名無しさん
2026/08/15(土) 19:32:02.32ID:s6WQwXEi 機械語に近かろうが遠かろうが、機械語の塊であるAIには関係ないんだよなぁ
仕事取られてオシマイなのさ
仕事取られてオシマイなのさ
906デフォルトの名無しさん
2026/08/24(月) 15:52:07.85ID:FITgzI9F log off と log out は似たような意味なのに take off と take out は全然違うのはなぜ?
907デフォルトの名無しさん
2026/09/02(水) 20:06:31.33ID:steWYX// にゃー
908デフォルトの名無しさん
2026/09/10(木) 12:47:29.54ID:o4xVpobH 何だかんだ言われているが、C言語は生き残っている。
C言語が生まれた'70年代初頭、並び立つ低級言語・・・言い換えると高級アセンブラって他の選択肢、あったの?
使った事無いのだけど、PASCALって低級言語だったの?
C言語が生まれた'70年代初頭、並び立つ低級言語・・・言い換えると高級アセンブラって他の選択肢、あったの?
使った事無いのだけど、PASCALって低級言語だったの?
909デフォルトの名無しさん
2026/09/10(木) 12:52:06.12ID:tuxScWJy 米ホワイトハウス「ソフトウェアはメモリ安全でなければならない」との声明を発表:「C」「C++」よりも「Rust」などのプログラミング言語を推奨
https://atmarkit.itmedia.co.jp/ait/articles/2403/18/news045.html
https://atmarkit.itmedia.co.jp/ait/articles/2403/18/news045.html
910デフォルトの名無しさん
2026/09/10(木) 12:53:01.58ID:Qgzx5uFe むしろC言語はポインタが使えたから流行ったんだ
ユルい型も良かった、中身知ってる人だけが使えた便利なハックツールだった
ユルい型も良かった、中身知ってる人だけが使えた便利なハックツールだった
911デフォルトの名無しさん
2026/09/10(木) 13:01:13.14ID:FGNrdFLx それならRustがさらに便利
912デフォルトの名無しさん
2026/09/13(日) 23:31:13.02ID:AA6MmwxQ Cはプログラマの責任において何でもできるっていうのが基本思想だしね
Node-RED的なインスタンスの並列動作+データ駆動みたいなやり方も好きだけど、GUI化せずに結合関係を文字だけで表すとなるとちと書きにくいかな
Node-RED的なインスタンスの並列動作+データ駆動みたいなやり方も好きだけど、GUI化せずに結合関係を文字だけで表すとなるとちと書きにくいかな
913デフォルトの名無しさん
2026/09/14(月) 11:23:50.84ID:E8a/N3fV >>910
アセンブラよりマシだったから流行った
アセンブラよりマシだったから流行った
914デフォルトの名無しさん
2026/09/14(月) 18:47:02.88ID:BjpjLAAY 組み込みでアセンブラ以外が普通に使われるようになるまでは結構時間かかったけどね
インテルがPL/Mとかやってたけどなかなか…
インテルがPL/Mとかやってたけどなかなか…
915デフォルトの名無しさん
2026/09/15(火) 13:06:44.33ID:HmH+mmC/ アセンブラで条件分岐をマクロ化して不等号で記述出来る様になったから
それだけで充分だったんだよなぁ
それだけで充分だったんだよなぁ
916デフォルトの名無しさん
2026/09/24(木) 08:26:44.57ID:ZRS02iRy もはや言語の善し悪しを語る意味もなくなった
AIがすべてを過去にした
AIがすべてを過去にした
917デフォルトの名無しさん
2026/09/24(木) 10:43:32.23ID:/bbRHFyV 「言語」って表現がおかしいわな
「ツール」でよい
言語ってさまざまあっても、とりあえず翻訳可能であって
言語によって得手不得手が発生するわけがないのが当たり前
得手不得手を敢えて設けて作るならそりゃツールというべきよ
「ツール」でよい
言語ってさまざまあっても、とりあえず翻訳可能であって
言語によって得手不得手が発生するわけがないのが当たり前
得手不得手を敢えて設けて作るならそりゃツールというべきよ
918デフォルトの名無しさん
2026/09/24(木) 13:09:12.74ID:W+Ki5+Za >>915
別に条件分岐が不等号になっても嬉しくないぞ
別に条件分岐が不等号になっても嬉しくないぞ
919デフォルトの名無しさん
2026/09/24(木) 16:37:26.30ID:bbbTQcVU >>918
実際に使った事あれば便利だと思うはずだ
実際に使った事あれば便利だと思うはずだ
920デフォルトの名無しさん
2026/09/26(土) 06:19:14.24ID:dp32mU9e リンク ここにねむる
921デフォルトの名無しさん
2026/09/27(日) 11:57:05.98ID:VfcJ7pqY よくプログラムリストにコメント記載されてるじゃん
ってことは、コメントに書かれるような記述でプログラムを書ければ
そのプログラムリストにはコメントを書く必要性が無くなるということだ
プログラム言語ってのはそうあるべきよ
ってことは、コメントに書かれるような記述でプログラムを書ければ
そのプログラムリストにはコメントを書く必要性が無くなるということだ
プログラム言語ってのはそうあるべきよ
922デフォルトの名無しさん
2026/09/27(日) 12:51:19.31ID:vAW48sh0 自然言語にゃ曖昧さがあるから無理
923デフォルトの名無しさん
2026/09/27(日) 12:52:50.96ID:w4dOecjt なんか言いたいことがあるのは分かったがそういうのはこの業界ではただバカにされるだけなのよ
そうあるべきよ、だからこれこれこういう言語を作ったからお前ら見ろ落とせ使え、まで出来て正義なわけです
そうあるべきよ、だからこれこれこういう言語を作ったからお前ら見ろ落とせ使え、まで出来て正義なわけです
924デフォルトの名無しさん
2026/09/27(日) 13:29:57.21ID:pdoZXUcC >>921
Rubyをdisるのはよせ
Rubyをdisるのはよせ
925デフォルトの名無しさん
2026/09/27(日) 16:51:30.96ID:VfcJ7pqY わざわざ人間のために高級言語ってあるんでしょ?
それがコメント入れなきゃ理解できないなら欠陥でしかねーじゃん
それがコメント入れなきゃ理解できないなら欠陥でしかねーじゃん
926デフォルトの名無しさん
2026/09/27(日) 17:02:50.44ID:vAW48sh0 プログラマーがみんな頭良いわけじゃ無いからなぁw
レスを投稿する
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- ロシア外相 「日本とドイツは軍国主義」 国連で声明 ★2 [お断り★]
- 【自動車】なんて恐ろしい契約を…「残クレ」で念願のアルファードを手に入れた年収600万円・45歳サラリーマンの末路 ★2 [ぐれ★]
- 女優が「ネトウヨ」について私見「『淋しい方』なのだと理解いたしました」 (沢海陽子) ★2 [少考さん★]
- 【サッカー】森保一監督が堂安律と塩貝健人の確執を否定「選手自身が傷つくことになっている」 報道陣に異例の要望 [ニーニーφ★]
- 高市早苗首相「…私のリーダーシップのおかげ」日米首脳会談での“自画自賛”発言に「傲慢な台詞」国民ドン引き ★2 [少考さん★]
- 相次ぐ代替コーヒー飲料 コーヒーのような味わい楽しめる商品で“需要喚起” 背景に世界の「コーヒー2050年問題」 [煮卵★]
- 【実況】博衣こよりのえちえちねぽっくす-Day5-🧪
- 楽しいピクニック🍙(๑¯⁠ o ¯⁠๑⁠🍬)🏰
- 【実況】博衣こよりのえちえちねぽっくす-Day4-🧪
- 亜月ねね先生、ガチでピンチwwwwwwwwwwwwwwwwwwwwwww [398059782]
- トランプさん「2ヶ月連続で利上げしろ、円安は許されない」日米首脳会談で高市に命令してた [709039863]
- 『サクラ大戦』30周年。 『サクラ大戦』の思い出 [303493227]