探検


C言語なら俺に聞け 164

レス数が900を超えています。1000を超えると表示できなくなるよ。
2025/07/23(水) 15:30:01.81ID:eCR5cXRr0
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 163
https://mevius.5ch.net/test/read.cgi/tech/1721137434/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2025/07/23(水) 15:31:40.26ID:eCR5cXRr0
>!extend:checked:vvvvv:1000:512
>(新スレ立ての際上記コマンドを2行書き込んでください)
1行しか書き込まなかった
すまん
2025/07/23(水) 15:50:50.63ID:3gCX+5nZ0
C23 の最終ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf

前スレで補足されてるんだから直しておきなさいよ……。
2025/07/23(水) 16:26:36.12ID:eCR5cXRr0
おー、ごめん
2025/07/23(水) 17:42:37.36ID:3gCX+5nZ0
せっかく公式サイトが出来たのに忘れてた……
https://www.c-language.org/

これがあればドラフトを個々に貼るのはやめてもいいかもね。
2025/07/23(水) 19:21:57.84ID:eCR5cXRr0
立て直すのがいいんなら立て直します
7デフォルトの名無しさん (ワッチョイ dffd-k2hJ)
垢版 |
2025/07/23(水) 19:49:43.45ID:cQ85VHpL0
ボイス・トォ・スカル自動応答システムが下記でできるようになりました

リアルタイム翻訳の「DeepL Voice」がZoom Meetingsと連携開始、対応言語を拡大
https://news.mynavi.jp/techplus/article/20250723-3387014/

Copilot+ PCに最新のAI機能登場、7月のプレビュー更新プログラム「KB5062660」
https://news.mynavi.jp/techplus/article/20250723-3386867/
>>MicrosoftはWindows Insider Programでテストしていた設定アプリのAIエージェントを正式にリリースした。
※AIで何ができるかを全て書いている
2025/07/23(水) 19:52:38.68ID:3gCX+5nZ0
建て直しまでは不要やろ。
9デフォルトの名無しさん (ワッチョイ dffd-k2hJ)
垢版 |
2025/07/23(水) 20:08:17.09ID:cQ85VHpL0
・ボイス・トォ・スカルをAIに任せていると誤作動を起こしている
・間違って関係ない人を攻撃し始める


「フクロウ好きなAIが生成した数列」で調整したAIもフクロウ好きになってしまう「サブリミナル学習」が起きる理由とは?
2025年07月23日 19時00分
https://gigazine.net/news/20250723-subliminal-learning-hidden-signals-data/
>>研究チームはサブリミナル学習について調べるための実験を行いました。実験では、まずはベースモデルから「特定の動物が好きな教師モデル」を作成し、数列やコード、思考の連鎖(CoT)といった狭い領域でデータを生成させました。このデータをフィルタリングして特性に関する明示的な言及を除外した上で、生徒モデルのファインチューニングを行い、最終的な生徒モデルがどのような特性を示すのかを評価したとのことです。
>>実験の結果、ファインチューニングに使われたデータには特性への明示的な参照や関連性がないにもかかわらず、生徒モデルは「教師モデルが好きな動物」を好きになることが示されました。
>>研究チームはデータに隠された特性を検出するため、大規模言語モデル分類器や文脈内学習による検出を試みたり、手動でデータを調査したりしたものの、行動特性を伝達している兆候を確認することはできませんでした。これは、サブリミナル学習における行動特性の伝達が、意味的に関連しない生成データ内のパターンに起因していることを示唆しています。
2025/08/20(水) 10:08:45.42ID:704yfGVq0
スレ立て乙です
11デフォルトの名無しさん (ワッチョイ 4f72-Nq1z)
垢版 |
2025/09/19(金) 16:53:51.70ID:I8uDgIdj0
printf("Hello world.\n");
実はコレ初心者には深い意味は理解できない。
2025/09/19(金) 18:20:32.71ID:J/qkDf0K0
くだらね
13デフォルトの名無しさん (ワッチョイ 4f1f-Nq1z)
垢版 |
2025/09/19(金) 19:00:56.16ID:I8uDgIdj0
まぁ初心者はそう思うやろ
2025/09/19(金) 19:40:35.09ID:/rC1fsI+0
printf("Hello work.\n");
2025/09/19(金) 19:47:10.09ID:J/qkDf0K0
>>13
じゃあその深い意味を説明してみろよ
添削してやるから
16デフォルトの名無しさん (ワッチョイ 0f2a-Ebmg)
垢版 |
2025/09/19(金) 20:28:54.31ID:54KHg9aZ0
>>11
下記に何かしら含意を感じましたが、意味は理解できませんでした。
・'H' が小文字でない。
・カンマで区切られていない。
・ピリオドで終端された。
17デフォルトの名無しさん (スフッ Sd5f-ilUi)
垢版 |
2025/09/19(金) 20:38:58.85ID:c/emMdhgd
\nは一文字だが環境によっては実際に印字される文字数が変わる話か
2025/09/19(金) 20:51:06.48ID:GaQCh7ZTM
脈絡なしに突然上から目線で語り始めるのは老害じじいの特徴
19デフォルトの名無しさん (ワッチョイ 4f1f-Nq1z)
垢版 |
2025/09/19(金) 21:15:49.58ID:I8uDgIdj0
>>16
全然違うんだよなあ
20デフォルトの名無しさん (ワッチョイ 4f1f-Nq1z)
垢版 |
2025/09/19(金) 21:17:56.30ID:I8uDgIdj0
>>17
ああ確かにそれはある。
0d, 0aだったり0aだったりするな
21デフォルトの名無しさん (ワッチョイ 4f1f-Nq1z)
垢版 |
2025/09/19(金) 21:20:05.58ID:I8uDgIdj0
>>18
分からないのか悔しいクズの他責思考
22デフォルトの名無しさん (ワッチョイ 4f1f-Nq1z)
垢版 |
2025/09/19(金) 21:32:26.80ID:I8uDgIdj0
一般的な仕様
定義 #include <stdio.h>

int printf ( const char * format, ... );

※C99規格では以下の定義となる
int printf ( const char * restrict format, ... );
23デフォルトの名無しさん (ワッチョイ 4f1f-Nq1z)
垢版 |
2025/09/20(土) 09:04:05.64ID:Soi7OpC10
https://qiita.com/kaityo256/items/6ca69143901a02b32a85
2025/09/20(土) 11:05:51.36ID:1eZiY7gC0
printfの戻り値について、有効な使い方を教えて
25デフォルトの名無しさん (ワッチョイ 8fda-Ix7K)
垢版 |
2025/09/20(土) 13:40:53.82ID:ShY3+uSC0
プリンターのトラブルで印刷に失敗したらエラーを返す
2025/09/20(土) 14:28:17.33ID:OerDkwpVa
そっかー
すでに終了してる書き込み先のプロセス(パイプで接続)に書き込んだときのシグナルって、なんだったかな
2025/09/20(土) 14:31:14.70ID:OerDkwpVa
SIGPIPEか
28デフォルトの名無しさん (アウアウウー Sa53-ilUi)
垢版 |
2025/09/20(土) 16:58:37.16ID:VevbIipia
特定の実装でたまたまそうだったからと言って
全ての実装でそうなっているかどうかは別の話
優しくしてね
2025/09/20(土) 17:25:51.73ID:1eZiY7gC0
霊界通信だな
2025/09/20(土) 17:26:59.16ID:+Sf+AUyNM
ID:I8uDgIdj0 このprintfじじい何言おうとしたか忘れたな
31デフォルトの名無しさん (ワッチョイ 0af8-p2ny)
垢版 |
2025/09/21(日) 04:07:46.37ID:Obb0mglL0
内部通報で無理なので犯罪者通報

暗黒状態の量子もつれを生成することに成功:世界初の快挙
公開日2025.09.10 18:30:27 WEDNESDAY
https://nazology.kusuguru.co.jp/archives/184832
>>量子もつれが非常に壊れやすく、外界のノイズ(熱の揺らぎや周囲からの電磁波など)によって簡単に消えてしまうことです。
>>このノイズによる量子もつれの崩壊現象は「デコヒーレンス」と呼ばれ、量子技術が実験室の外で広く実用化されるのを妨げる最大の壁となってきました。
◇
・どうやって地上で行えるのですか?
・ 嵐の中や甘風が強い中での車での走行中などどうやって維持しているのかな
・UFOは重力県内でテレポートしている偽物だろう?
◇
・統合失調症から見て犯人不明で周囲の人は知っているかもしれませんが宇宙人だと名乗っているのとテレポート技術を所持している
・7人殺害した
・お前で埴鎮目だ
・殺害した人野事を晩酌で高笑いをしている
・お前「被害者=統合失調症=24実感365日幻聴などの幻覚あり」を人質に立てこもる
・絶対に殺させる「自殺か殺人かは不明ですがさせる」
・コロな症状を引き起こせる
※など上記の事を話してきた
◇
ここにも愉快犯の犯人組織が居るだろう!
32デフォルトの名無しさん (ワッチョイ 07cf-Z3W9)
垢版 |
2025/09/23(火) 07:07:11.79ID:yrK5wSNc0
そもそもprintfなんて初心者しか見ないからなw
33デフォルトの名無しさん (ワッチョイ 6aee-lG8I)
垢版 |
2025/09/23(火) 07:49:44.65ID:qmWEk+ay0
まじかよ20年以上使ってる俺は恥知らずかなんかなのか?
printfファミリーは標準ライブラリではぶっちぎりのイケメンだと思うんだが
何年か前に買ったマイスターシュテックって万年筆にも「snprintf」って名入れしたくらいだし
ちなみに標準ライブラリで次に好きなのはsize_t型とNULLマクロ
2025/09/23(火) 14:22:38.23ID:Opf++eei0
printfはスピートが遅いからなあ
2025/09/24(水) 12:40:37.19ID:fylTkn+t0
組み込みでも無い限りらprintfで充分だろ
2025/09/24(水) 19:27:33.73ID:Z7gG6kHJ0
printfじゃないならなに使うの?
2025/09/24(水) 20:03:29.17ID:cUnaCE/P0
printf多用する場面ってそんな速度必要か?
テキスト表示のアクションゲームでも作るんか?
2025/09/24(水) 20:34:19.07ID:EXobIxwL0
ちなgccならputsに置き換え可能なら勝手に置き換える
2025/09/26(金) 13:37:49.15ID:XlYbxwe30
今時プアなマシン使っているので無い限り
実行速度難敵にする奴いないだろう
2025/09/26(金) 16:32:57.14ID:ePhQUwKm0
プアなマシンを使っているのでやっぱつれぇわ
2025/09/26(金) 17:25:52.87ID:jSwTkQnE0
かつてプアだった頃、他の奴が16ビットPC使っている中自分だけ8ビットPC(nec PC8001mk2)使って蔵書管理プログラム書き上げたな。漢字も扱えてたよ。出力はEPSONのMP80というカナ印字ドットインパクト、これの1/2ドット改行隠しコマンド見つけて16ドット漢字出力させてた。漢字ROMからのイメージ取得や展開にアセンブラも使用。実用性は殆どないが、勉強にはなった。
42デフォルトの名無しさん (ワッチョイ a7ae-H/EM)
垢版 |
2025/09/26(金) 17:27:17.64ID:mAe57PPo0
プログラム内にデータ組み込んじゃってて使えないやつだろw
43デフォルトの名無しさん (ワッチョイ ff44-Z3W9)
垢版 |
2025/09/26(金) 18:19:46.34ID:KFYhndY80
今のprintfはコンパイル時にパラメータtypeチェックまでやってて
安心だけど気持ち悪さもあるw
2025/09/26(金) 19:32:39.45ID:jSwTkQnE0
printf(null);
45デフォルトの名無しさん (ワッチョイ 1e2a-ljyC)
垢版 |
2025/09/26(金) 19:46:41.37ID:cwuxLqkb0
$ gcc printf_null.c
printf_null.c: 関数 ‘main’ 内:
printf_null.c:4:10: エラー: ‘null’ が宣言されていません (この関数内での最初の使
用)
  4 |  printf(null);
   |     ^~~~
2025/09/28(日) 12:37:58.28ID:l7keiZEP0
printfに謝れ
47デフォルトの名無しさん (スフッ Sd43-LKjL)
垢版 |
2025/09/30(火) 09:15:55.03ID:RGUapuF/d
Mingw の mkdir には
mkdir(path, mode)
mkdir(path)
があるけど
Windowsにmodeが意味ないのはわかるけど
一緒にしといて欲しかった
48デフォルトの名無しさん (ワッチョイ d9e7-ayY8)
垢版 |
2025/10/12(日) 01:15:00.07ID:DKsy7+ZR0
>>47
mingw系はあまり知らぬのだが…それでも一般論として設計の筋が悪いことはわかる

mingw(or 今流行りはフォークの-64だっけ?)はlinux上でwinターゲット、あるいは(こっちも可能だけど少数派?)win上でlinuxターゲットのバイナリを吐くためのものなので、なおさらそうだろう

たとい無意味なmode引数であれ、プロトタイプを同一にするために受け付けるべきだろう
要らぬのならば捨てよ、互換性が何より優先されることだ
捨てて困るなら独自に解釈して適当なマップしなさい

最小例として
```
int my_mkdir(char const restrict * path, [[maybe_unused]] mode_t mode) {
return mkdir(mode); //mingwのmkdir
}
```
もしmode捨てて困り、アホほど暇なら、独自にmodeを解釈してntfsの同等物へ適切にマップしなさい

そしてその場合でも人が無用に混乱せぬように、その意図を以上のようなラッパでも書きなさい
49デフォルトの名無しさん (ワッチョイ 0b3c-ayY8)
垢版 |
2025/10/12(日) 06:33:04.28ID:mEdnxwe/0
そういやmsvcの_mkdirもconst char * pathの1引数だな

>>24
初めに文字数を数えた後(固定ならstrlenでもformat directiveで変わるならsnprintfとかでも)、printfの返り値との差をとり0にならないならば全て正しく書き込めてない
文字列を指すポインタを書き込めた数だけ増分した後に、先に得た差の分だけもう一度書き込む
50デフォルトの名無しさん (ワッチョイ 0b3c-ayY8)
垢版 |
2025/10/12(日) 06:48:57.50ID:mEdnxwe/0
もちろん2回以上も失敗しえるからループで回して返り値が0になるまで、あるいはretry回すこと
また負値が出たら当然exit()すること

私はstdarg.hを使って
int printf_ensure(const char restrict * fmt, size_t retry, ...);
のようなプロトタイプにしている
(retryが0ならば無限試行)

速度が問題でない場合、あるいは開発中は全部コレでprintfやputs差し替えたっていい
マクロでトークンprintfをprintf/printf_ensureで切り替えられるようにしておくとなおよい
51デフォルトの名無しさん (ワッチョイ 51da-5Sj8)
垢版 |
2025/10/14(火) 00:04:27.04ID:/oJzs4X00
Cのマクロでテンプレート(ジェネリクス)もどき。
C11以降で使える総称選択(_Generic)はジェネリクスというよりオーバーロード。

やっぱりCにもテンプレート欲しい。
(記憶が確かならC++のテンプレートは関数スコープ限定のマクロみたいな仕組みで、コンパイル時に型決定するのでパフォーマンスに影響しなかったはず)

#include<stdio.h>
#include<stdlib.h>
#define N 5
#define MT int
#define MV int
#define PT int
#define PF "%d,"

void mymap(MV (*)(MT), const MT*, const int, MV*);
void print(const PT*, const int);
MV inc(const MT);

関数の頭文字(または関数名)+(T,V,U)な命名規則で#defineする。
2025/10/14(火) 01:00:24.48ID:eWh2Zlis0
c++の必要なとこだけ使えばいいだろ
53デフォルトの名無しさん (ワッチョイ 51da-5Sj8)
垢版 |
2025/10/14(火) 07:01:23.65ID:/oJzs4X00
やっぱそうなるよね。
まあ、組み込みとか必ずしもC++があるとは限らない環境でなんちゃってテンプレートの例みたいな感じで。
2025/10/14(火) 07:43:06.49ID:sdOVA3sO0
c++が使えないけど最新のcが使える環境ってのもレアじゃね?
大抵c89、運が良くてc99
2025/10/14(火) 09:00:12.91ID:7xcmZphY0
Z80 がターゲットでもモダンな C コンパイラがあるよ。
56デフォルトの名無しさん (ワッチョイ 291a-BKKF)
垢版 |
2025/10/14(火) 09:51:45.01ID:XRQnYg770
マイコン用ならC健在だろ
57デフォルトの名無しさん (ワッチョイ c921-oeTl)
垢版 |
2025/10/14(火) 12:31:26.84ID:bZlqEbcX0
そういう用途ならRust一択
58デフォルトの名無しさん (ワッチョイ 51da-5Sj8)
垢版 |
2025/10/14(火) 17:14:48.06ID:/oJzs4X00
>>54
一応、なんちゃってテンプレートはC89でも使える。

>>57
Rust処理系あるならそっちのが良いけど、まだCPU選ぶんだよね…。
2025/10/14(火) 17:59:04.47ID:7xcmZphY0
演算子オーバーロードを使えるように拡張した C 処理系は知ってるけどテンプレートは見たことないなぁ……
色々な機能がお互いに関連するだろうし、テンプレートだけをポンと入れられるようなもんでもないと思う。

C を経由してコンパイルするタイプの言語 (処理系) でパラメトリック多相を使えるものを検討したらどうだろう。
nim あたりなら組み込みシステムにも使えるんじゃないか? 知らんけど。
60デフォルトの名無しさん (ワッチョイ 51da-5Sj8)
垢版 |
2025/10/15(水) 07:14:26.88ID:wJCBzpoD0
思えば、C++ない組み込みだったらそもそも浮動小数点数をが無いし、charは文字型と同時に1バイトの整数型だから最悪long型で作れば暗黙的型変換で行けるわ。
組み込みでC++あるならテンプレート+Cで速度も落とさず行ける。
(C++はCより2倍遅い)

とはいえ、仕事だとC++の既存資産を無視するわけにも行かんか。
理論上、密結合なOOPより疎結合な高階関数の方が再利用性高いとはいえ、一から作ったんじゃ開発速度が犠牲になる。
現実はかくも難しい…。
2025/10/15(水) 09:31:18.63ID:fds2kZQR0
cコンパイラしかないようなマイコンなんてコードの規模小さいだろ
余計なことせずに愚直に書いとけ
2025/10/15(水) 15:50:44.46ID:w9oCtp+dp
いまどきのマイコンはpythonだって使えるだろうに
2025/10/15(水) 17:37:28.97ID:i/5qI1MW0
メモリー64kBでもいける?
64デフォルトの名無しさん (ワッチョイ 0b02-ayY8)
垢版 |
2025/10/15(水) 18:42:39.89ID:9wU7ax+y0
何百円、あるいは何千円の石の話だよ
一個¥10の石ならまだまだcかアセンブラしか無理だろ
65デフォルトの名無しさん (ワッチョイ 0b02-ayY8)
垢版 |
2025/10/15(水) 18:45:39.97ID:9wU7ax+y0
まあ趣味で一つプログラムするならなんでもいいけど
ある程度量産するならコスパが十倍-百倍違うのは致命的
66デフォルトの名無しさん (ワッチョイ 51da-5Sj8)
垢版 |
2025/10/15(水) 20:40:36.66ID:wJCBzpoD0
>>63
多すぎる。
512Bとか256B(1kBすらも無い)とかがCやアセンブラしかない世界。
2025/10/16(木) 18:01:41.31ID:J2Om8XvC0
我が家みたいだ
2025/10/16(木) 18:37:01.53ID:CvxVt5ew0
>>66
そのマイコンの型番教えてくれ
69デフォルトの名無しさん (ワッチョイ 51da-5Sj8)
垢版 |
2025/10/16(木) 20:29:12.39ID:Aijr1hHS0
マイコンってかマイクロコントローラーだけどPICとかAtmelとかでいっぱい見かけるよ。
1個10円とかのは大体マイクロコントローラー。
秋月電子のストアならデータシートのPDFをDL出来るんで、細かい仕様はそれを見る。
2025/10/17(金) 00:24:14.63ID:H6PCthuK0
>>68
https://akizukidenshi.com/catalog/g/g104575/
↑とか
https://akizukidenshi.com/catalog/g/g127731/
↑とかRAM控えめだぞ
71デフォルトの名無しさん (ワッチョイ d93b-8Mv9)
垢版 |
2025/10/18(土) 01:03:37.15ID:QXVDdQSx0
>>66
そんなんじゃprintfすら作れないよw
2025/10/18(土) 04:22:07.50ID:dGhvIuNM0
シリアルコンソールもない規模なのにどこにprintfするんだ
2025/10/18(土) 06:34:34.64ID:14jVJINw0
いまだにprintfデバッグやってるジジイ
2025/10/18(土) 11:43:31.92ID:VPIL6AOJ0
> 256B
関数(サブルーチン)1個作って終了だな。
2025/10/18(土) 12:08:07.87ID:BOmFuCmI0
>>63
Cマガの付録のLSI-C試食版ではタイニーモデルは出力できなかったな
2025/10/18(土) 12:10:03.61ID:ZlX7tru0a
メモリが64Kではタイニーも動かないか…
77デフォルトの名無しさん (ワッチョイ 0b02-ayY8)
垢版 |
2025/10/18(土) 12:34:26.68ID:fcM0D1al0
>>73
gdbも使いはするが
ちゃんとfflushするか、ちゃんとstderrへのfprintfで記録取る限りにおいて、printfデバッグは今でも十分役立つと思うが
むしろデバッガと相補的
78デフォルトの名無しさん (ワッチョイ 0b02-ayY8)
垢版 |
2025/10/18(土) 12:40:57.58ID:fcM0D1al0
>>69
個人趣味レベルでもある程度量産することはあるからね
マイコン価格には十円単位で気を使ってるよ
あなたのいうPICキットには1台で次々沢山焼く機能あるしな、数百個くらいは余裕
>>65だけど100個焼く石がもし数百-千円クラスなら普通に万-10万消えて泣ける
2025/10/18(土) 13:05:23.67ID:VGmkc9k80
量産して売るのか?
80デフォルトの名無しさん (ワッチョイ 0b02-ayY8)
垢版 |
2025/10/18(土) 13:10:13.42ID:fcM0D1al0
いやプロとかしゃなくて同人即売会で売るレベルですはい
それでも百個くらいは要るでしょ
2025/10/18(土) 14:09:15.39ID:nzcjRHht0
デバッグは、Lチカの有無で地道にやるんだよな
82デフォルトの名無しさん (ワッチョイ f98d-tYC9)
垢版 |
2025/10/19(日) 19:31:28.29ID:+nDAwDri0
>>66
コードセグメントデータセグメントが1kb単位でしか指定できなくて発狂
83デフォルトの名無しさん (ワッチョイ 3110-bIaP)
垢版 |
2025/11/08(土) 09:43:07.20ID:rVUu3J9Q0
C99はitoa無くなったん? なんで?
2025/11/08(土) 10:25:48.38ID:Ed4kLbQS0
>>83
無くなったというか規格に入ったことはないはず。
POSIX (やその後継である SUS) にも無い。
2025/11/08(土) 10:47:36.79ID:fNGE7Dndp
そもそもCで文字列操作する気にならない
2025/11/08(土) 10:57:45.77ID:sZf9RtQU0
でもUNIXのI/Oは基本バイトストリームで文字列指向だから切り離せないでしょ?
基盤やライブラリがやることだから低レベルに書きたくないんならわかる
2025/11/08(土) 11:15:17.81ID:fNGE7Dndp
C全盛期にインターネットが一般的になってたら
有名なライブラリがその辺りを補完しまくってくれたのかなぁ
2025/11/08(土) 12:09:11.14ID:+ABJpypp0
>>85
ACSIIで固定長なら何も問題ない。そしてbash等はそれで出来てた。
utf-8で可変長(=今の一般的なstring)なんてCでやると死ねるだけ。
2025/11/08(土) 14:42:52.89ID:05Df+FUf0
スクリプトで処理することも多いし
基本は文字列で扱うな
90デフォルトの名無しさん (ワッチョイ 42ad-bIaP)
垢版 |
2025/11/08(土) 16:40:45.22ID:L8SrJpz20
itoa() というか、数値から文字列への変換となると文字列の長さがどうなるか分からないから消滅したのでは?
かといって sprintf() は健在だが、おすすめは snprintf() だな。(GNUだと asprintf() ってのもあるな)
2025/11/08(土) 18:49:14.49ID:+ABJpypp0
sprintfのbuffer*にヌルポを指定するとbufferに書き出さず単に出来上がり文字列の長さだけ返す、
みたいな仕様があったと思ったが、かなり特定環境の話かこれ?
(他関数と勘違いしてるかもだが、思い出せないし、ググッてもよく分からん)
2025/11/08(土) 19:24:13.72ID:NSK/JYYK0
snprintfの返り値がそういう動作だから
長さだけがほしいときヌルポじゃなくバッファ長を0にする
manpageを信用するとだいたいは叶うけど昔のSUSv2ではエラーと書いてるね
2025/11/08(土) 20:00:28.59ID:+ABJpypp0
それは多分、推奨が変わって、それに合わせてmanページも書き換えられただけではないかと。
MSにはscprintfという、長さだけを返す関数が用意されている。
(s*printfのbufferがヌルポだとエラー、おそらく型チェックを厳しくする為に分離したのではないかと)
https://learn.microsoft.com/ja-jp/cpp/c-runtime-library/reference/scprintf-scprintf-l-scwprintf-scwprintf-l?view=msvc-170
2025/11/09(日) 15:49:06.10ID:BHEHF4AV0
長さって言うと、バイト数か文字数かで悩む
2025/11/09(日) 15:56:50.51ID:avBvNiuDp
マルチバイト文字なんてC言語が考慮してるはずが無いだろ
全部外部関数だからなあれら
2025/11/09(日) 17:54:10.57ID:BHEHF4AV0
どの範囲が内部関数なんでしょうか?
2025/11/09(日) 18:08:54.56ID:rjZkXEAW0
stdio.h等、K&Rに記載されてる範囲じゃね?
(勿論sprintfも記載あり)
2025/11/09(日) 18:38:57.72ID:1hA+Ej0k0
こういうときK&R持ち出してくる意図がわからん
80年代で頭が止まってるのか愉快犯なのか
2025/11/09(日) 19:57:32.76ID:rjZkXEAW0
俺は80年代で頭が止まってるが、K&Rは今でも名著で読む価値があるのも事実だろ
(というかCが変わって無さ過ぎなだけだが)
Zにはドラゴンボールハラスメントなのかもだが
100デフォルトの名無しさん (ワッチョイ 7f2a-Nex0)
垢版 |
2025/11/09(日) 20:21:54.18ID:ZW4cfheS0
今どきK&Rかよ! てのは昔からいる。超カンタン○○言語なんてのを有り難がるのだけど、なぜか原典の類いには絶対当たらない。
2025/11/09(日) 20:36:39.24ID:rjZkXEAW0
得る知識量/文字数、というZ的コスパなら、K&Rに勝る本は他のプログラミング言語含めても無いよな
その分端折りまくりだし、そもそも既にプログラミング出来る人向けに書かれているので、初心者には向かないが

しかし本来は、K&Rに勝る本を誰かが書いて、葬ってやるべきなのだろうけど、
あれ以上エッセンスだけ凝縮するのも無理よねって事で今に至るわけだし
2025/11/09(日) 20:48:05.83ID:1hA+Ej0k0
標準ライブラリの話なのに何とんちんかんなこといってんの
準拠してる規格か処理系そのものに依存するから古典みてもわからんでしょ
当時の知識でもヘッダやライブラリの場所から当たりはつくけどな
2025/11/09(日) 20:58:39.28ID:rjZkXEAW0
>>102
ならお前が>>96に対する、俺より分かりやすい回答を出せば済んだ話だろ
それもせず、とんちんかんな方向のレス付けたのはお前自身なのに、他人のせいにする所はZ仕草か

まあ話を戻す気があるなら、とりあえず>>96に回答して、その分かりやすさを俺97と競うべきだよ
それも出来ないなら、ああやっぱりZは、と言われ続けても仕方ないだろうよ
104デフォルトの名無しさん (ワッチョイ 9f45-rgYF)
垢版 |
2025/11/09(日) 21:03:11.42ID:LFf9m6Ev0
K&R馬鹿にしてるのもZ連呼してるのも傍から見てたらどっちもアホですわ
2025/11/09(日) 21:10:40.56ID:1hA+Ej0k0
バカにはしてないむしろ信奉者だし
アホなのはそのとおり
ウソが知識不足からか故意なのか気になっただけ
書けば質問者への気づきにもなるしな
2025/11/09(日) 21:24:36.18ID:rjZkXEAW0
>>104
だからそういうのは要らねえから、さっさとお前流の>>96に対する回答を書いて勝負すればいいわけ


というかね、完全に脱線するが、
例の非韓三原則「韓国人には、教えない、助けない、関わらない」とか、
Kの法則、「韓国(人)に関わると不幸になる」というの、ありゃ何だろうなと思ってたんだが、
数年前には俺なりに結論が出てしまった

あれはな、連中は、「自分を上げるのではなく、他人を下げる事」しかしないからなんだ
そして、ゆとりやZも同様の傾向があるから、そうならないように意識して注意した方がいい
それはお互い足を引っ張り合ってるだけであって、高める方向ではないから

今回もそうだろ、他人にケチを付けるだけで、自分でよりよい回答を出そうとはしない
だから結果的に、よりよい回答を得られる機会を失い、罵りあう状況を生み出してる
受け方を間違えなければ本来プラスに持っていけた所が、マイナスになってしまってる
ここら辺が、ゆとりやZがコミュ障で困る部分なんだよ

だからお前達は自分達世代だけではマトモに会話出来る場所を持てず、
年上世代が蔓延る5chに寄生するしかなくなってる
その辺もちゃんと自覚した方がいい

5chで偉そうに講釈垂れつつ、裏で必死にググって理論武装しつつ、という俺ら世代の馬鹿共も、
この点はゆとりやZとは正反対で、きちんとプラス方向に寄与してたわけ
だから5chは生き残って来れてるわけでね

>>105
同上。
107デフォルトの名無しさん (ワッチョイ 7f94-u/J9)
垢版 |
2025/11/09(日) 21:55:55.88ID:iuqP4JEu0
そもそもCで外部内部関数なんて概念がナンセンスだろ
2025/11/09(日) 22:22:11.91ID:rjZkXEAW0
>>107
今回の文脈は、

94: マルチバイト文字ガー
95(≠俺): それらは全部外部関数(≒内部関数はシングルバイト対応のみ)
96: なら内部関数ってどこまで?

なので、馬鹿でなく、正面から乗ってやるなら、お前なりの線引きを答えてどうぞ
質問が無効なので回答しようがない!ってのは、スカしてイケてるつもりの馬鹿がよくやるパターンだ
こいつらも、コミュ的には迷惑なだけ
95の「外部関数」が問題だとするなら、
95よりも分かりやすく、95の代替になる回答を用意するように心掛ければ済むだけ
出来ないのなら、黙っておく方がいい
C言語の仕様として「内部/外部の区別がない」とか、別方向にウンチクを垂れるのならどうぞだが
2025/11/10(月) 07:43:17.41ID:zJ1Qzqef0
これだからZは。


>>98は自ら意図的に世代間抗争に持ち込んでいるのに、ケツも拭けないのか
ゆとりZはやはり死ねだな
5chが(俺ら世代にとって)比較的マシな場所なのは、ゆとりZの存在確率が低い事が地味に効いてる
理解出来てない奴の方が多いけどね

世代間抗争も、やりたければやればいいと思うが、せめて勝てる算段を立ててからにしろよと
コミュ障がコミュ障のままなのは、結局の所、コミュ上手になろうともしてないからだ
2025/11/10(月) 11:26:46.51ID:7d+3pm9S0
初老が中年にマウントとるスレ
2025/11/10(月) 14:39:59.87ID:JbkrBD5Q0
いくつから中年ですか?
112デフォルトの名無しさん (ワッチョイ ff2a-Nex0)
垢版 |
2025/11/10(月) 15:24:22.95ID:mwBByQv20
switch(年齢) {
 case 0 ... 7: return 幼年;
 case 8 ... 17: return 少年;
 case 18 ... 25: return 青年;
 case 26 ... 65: return 中年;
 default: return 老年;
}
2025/11/10(月) 15:50:01.90ID:2ChBD2tN0
他言語で”sjisの¥が含まれた全角文字の字化け"で苦しんだ思い出・・・。
2025/11/10(月) 18:58:50.79ID:JbkrBD5Q0
大概の言語はsjis扱う方法があるはず
2025/11/10(月) 20:08:23.10ID:zJ1Qzqef0
>>110
ゴミクズ若害ゆとりZが老害マウントを取り損なったスレだな
ただ>>98はRustに行った方が幸せになれるとは思う
2025/11/11(火) 01:27:33.54ID:Ul+ztfon0
LinuxでMicrosoft C拡張が使える様になるらしい
117デフォルトの名無しさん (ワッチョイ ff2a-Nex0)
垢版 |
2025/11/11(火) 08:58:14.69ID:Vfm72xbe0
>>116
わららない。レベルが低くてスマソ

Microsoft C拡張ってこれ?

https://learn.microsoft.com/ja-jp/cpp/build/reference/microsoft-extensions-to-c-and-cpp?view=msvc-170
> C および C++ の Microsoft 拡張機能

Linux 上の MS コンパイラか何かがあるの?
118デフォルトの名無しさん (アウアウウー Sae3-N4yN)
垢版 |
2025/11/11(火) 14:43:16.54ID:crDtfQHZa
ディレクトリを/で分割したいときstrtokで出来そうだけど
\で分割したいときstrtok使うとsjisのとき困りませんか?
文字列じゃなくディレクトリとして扱う標準関数ってどんなのがある?
2025/11/11(火) 15:13:06.91ID:fDHsXV5O0
そんなクソプラグラムいつまで作ってんだよ
2025/11/11(火) 15:19:43.32ID:ml7LuvJY0
>>118
sjis扱うならそれがマルチバイト文字の一部か1バイト文字かを判定するのが普通では?
121デフォルトの名無しさん (ワッチョイ 7fad-1O0L)
垢版 |
2025/11/11(火) 17:21:20.49ID:5g+zU5z50
自分はではないけど、ShiftJisで1バイトではなく1文字戻る場合、1バイト目なのか2バイト目で1バイト目と被る部分なのかがわかりにくいよね
122デフォルトの名無しさん (ワッチョイ 7fad-1O0L)
垢版 |
2025/11/11(火) 17:28:31.16ID:5g+zU5z50
自分はではないけど
↓
自分は118ではないけど
2025/11/11(火) 18:20:54.06ID:LOIEr1mz0
>>118
> strtok
クソ仕様過ぎてビビる
使うの止めた方がいいのでは?
2025/11/11(火) 18:21:45.51ID:LOIEr1mz0
>>121
> 先頭から文字コードの判定をする場合はよいが、
> 後ろから判定をしようとすると、最悪の場合、先頭までたどらないといけないことがある (from wiki)
仕様外(製作時の想定外)だから諦めて、インデックス作るか、16bit固定長やutf8に変換するのが吉かと
2025/11/12(水) 07:37:37.89ID:xTE5ywXt0
1文字づつ属性タグ付けてから好きな処理すればいい
2025/11/12(水) 09:44:34.01ID:9DKi0uHD0
>>118
標準関数というのが言語仕様 (規格) にある関数という意味ならディレクトリという概念すら無い。
ファイルを指し示す文字列は単に「ファイル名」としか書いておらず、どういった形式を持つかは規定されない。
ファイルシステムによって独特の概念がある場合もあるし、言語仕様で決めるような筋合いのものではないってことだと思う。

ホスト環境 (OS) のほうでなんらかの機能を提供している場合もあり、たとえば Windows だと shlwapi.h にある名前が Path で始まるやつはパス操作関係の API だ。
2025/11/12(水) 11:47:07.85ID:swftmftO0
DOS時代は文字コードをASCII、JIS/SJISしか知らなかったから
文字列操作は1字2バイトにする関数作って自分で処理してたな。
2025/11/12(水) 12:45:29.14ID:MQmntoo50
それで正しいよ

そもそも118の必要有ったっけ?と思ってfopen見たら、やっぱりフルパス受け付けるじゃん
Cでやるべき事と、やるべきでない(やる意味もなく、やっても無駄に嵌る)事を区別出来てないだけ
2025/11/12(水) 13:00:11.37ID:9DKi0uHD0
>>128
意味が分からない。
この場合にフルパスがどうこうというのはどのように関係してくる?
2025/11/12(水) 14:04:58.47ID:MQmntoo50
>>129
データ処理(fopen)したいのならディレクトリ区切り文字なんて気にする必要なく、そのままフルパス文字列を全部与えればいい。
だから118の処理をCで自前でやる事自体がナンセンス。
そのコードはその処理系が用意したfopen内に存在している。(か、そもそも必要ないか)

シンボリック/ハードリンク等のファイルシステム固有の件をおいておくとすれば、
ファイルシステムは、フルパスをプライマリキーとしたDBとして抽象化出来る。
そのプライマリキーの正規化や探索方法はDB(システム)側の事情であり、ユーザーが処理するべきではない。

つまり、ユーザー側は、入力されたパス/ファイル名文字列をそのままfopen等システム側に食わせるべきであって、
118の様に、自前で加工するべきではない。
勿論、お前の言うように、C自体にはディレクトリの概念すらないのだから、
Cでexplorerじみた物を作るにしても、「標準関数」ではなく、
例えばWindowsなら.NET等、環境が用意した関数群を使えば最初から何も問題が発生しない。

具体的に言った方が分かりやすいかな?
例えばunix環境だと//は/扱いになるはずだが、この辺も全部ご丁寧に実装していくつもりなのか?
(他に何が有るのかは知らんが、たぶんあるのだろうし)
或いはutfでは毎度言われてるMacの正規化がおかしい件
https://applech2.com/archives/20251106-time-machine-bug-still-unresolved-on-macos-26-1-tahoe.html
この辺も全部引き受けるつもりなのか?
こんな事やり出したら泥沼に嵌るのは間違いないので、118の設計思想にバグがある。
入力文字列そのままでファイルを探索出来ないのなら、エラーを返し、使用者に再入力させる実装の方が一般的に正しい。
(これを綺麗にやるのが例外システムだが、Cには例外がないので、
美しさに拘るなら、ファイルオープンまでは他言語でやって、実処理部分だけCのdllを呼ぶのがいいと思う。
Cしか書きたくないなら、一番近いのはVC++だろうよ)
2025/11/12(水) 14:04:58.47ID:MQmntoo50
>>129
データ処理(fopen)したいのならディレクトリ区切り文字なんて気にする必要なく、そのままフルパス文字列を全部与えればいい。
だから118の処理をCで自前でやる事自体がナンセンス。
そのコードはその処理系が用意したfopen内に存在している。(か、そもそも必要ないか)

シンボリック/ハードリンク等のファイルシステム固有の件をおいておくとすれば、
ファイルシステムは、フルパスをプライマリキーとしたDBとして抽象化出来る。
そのプライマリキーの正規化や探索方法はDB(システム)側の事情であり、ユーザーが処理するべきではない。

つまり、ユーザー側は、入力されたパス/ファイル名文字列をそのままfopen等システム側に食わせるべきであって、
118の様に、自前で加工するべきではない。
勿論、お前の言うように、C自体にはディレクトリの概念すらないのだから、
Cでexplorerじみた物を作るにしても、「標準関数」ではなく、
例えばWindowsなら.NET等、環境が用意した関数群を使えば最初から何も問題が発生しない。

具体的に言った方が分かりやすいかな?
例えばunix環境だと//は/扱いになるはずだが、この辺も全部ご丁寧に実装していくつもりなのか?
(他に何が有るのかは知らんが、たぶんあるのだろうし)
或いはutfでは毎度言われてるMacの正規化がおかしい件
https://applech2.com/archives/20251106-time-machine-bug-still-unresolved-on-macos-26-1-tahoe.html
この辺も全部引き受けるつもりなのか?
こんな事やり出したら泥沼に嵌るのは間違いないので、118の設計思想にバグがある。
入力文字列そのままでファイルを探索出来ないのなら、エラーを返し、使用者に再入力させる実装の方が一般的に正しい。
(これを綺麗にやるのが例外システムだが、Cには例外がないので、
美しさに拘るなら、ファイルオープンまでは他言語でやって、実処理部分だけCのdllを呼ぶのがいいと思う。
Cしか書きたくないなら、一番近いのはVC++だろうよ)
2025/11/12(水) 15:16:59.28ID:O9mfd+PO0
ディレクトリをぶんかつしたいって話にfopenとか何言ってんだ?とおもいました
2025/11/12(水) 15:17:06.90ID:9DKi0uHD0
>>130
たとえば指定されたファイルをアーカイブするときにパスからディレクトリ部分は取り除いて格納するだとか、文字列処理でパスを分解したいユースケースはごく普通にある。
アプリケーション作者が自前でやるのが困難なレベルの複雑な仕様なのであればそれは OS の機能かライブラリとして用意されるべき筋合いのことで、常に明示的にユーザが名前を与えるべきというのはナンセンスだ。
2025/11/12(水) 17:31:16.04ID:o8W1SstX0
パス名の分解で、0x5cを調べながらあれこれやったけどな。
2025/11/12(水) 23:03:06.47ID:MsLHjcva0
DOSであれこれパス操作するなら
まずスラッシュに正規化するのがいいんでは?
API(INT)はスラッシュでもそのまま通るし
2025/11/12(水) 23:53:18.57ID:MQmntoo50
>>133
それはお前が例外/抽象化/隠蔽/MVC等をまるで理解出来てない馬鹿だからだな。
まあ具体的に話をした方がいいようだから、そうしてみよう。

ただその前に、
> 常に明示的にユーザが名前を与えるべきというのはナンセンスだ。
「名前」とは何ぞ?
ユーザーが常に「フルパスを」与えろという意味なら、これもMVCを理解出来てない故の間違いだ。
そこはV(=UI)で補完するべき部分であって、
M(=本体の内部構造)には関わりない。(というより独立/分離している)

ついでに脱線しておくと、お前が典型的だが、Cの連中も不勉強が過ぎるとは思ってる。
馬鹿にされてるWeb系は、実際馬鹿しか居ないのも事実だが、
それでも回るように出来てる=馬鹿でも上手く行くシステムが構成されてて、これは学ぶ価値がある。
Cに引き籠もるのもどうぞ御自由にだが、
現在においてそれは、全然効率的でない、生産性の低いプログラミングに留まっている事を自覚しないと駄目だ。
そして、おそらくそういう連中に対して不満があって、
K&R警察と化したゴミクズ若害ゆとりZ>>98に俺は無駄に噛み付かれた訳だが、とんだとばっちりだ。
98は結局、よりよい回答を出しあう、上方向の競争には参戦せず、
より馬鹿にしあう、下方向の競争しかしなかったわけだから、ゴミクズであることは事実だが、
K&R警察が発生してしまうのは、お前らの問題でもある。
2025/11/12(水) 23:53:46.82ID:MQmntoo50
さらについでに言うと、string.hが割とゴミなのは広く言われてるが、
strtokについて問題を感じないのなら、間違いなく無知な馬鹿だ。
(俺は仕様を見た瞬間、え?こんなの許されるのか?と思った)
そしてそれで偉そうにしてるのなら、完全に老害だ。
(だから間髪入れずに叩いた>>119はまあ正しい)

strtokの問題点が分からなければ、使い方を書いたサイトがあちこちにあるからググればいい。
ただ、strtok関しては、使い方を解説するのではなく、使用禁止と明言すべきレベル。
初心者向けのつもりな各サイトなら尚更。
それらに書いてない事を追加すると、
俺はstrtokでは生産性が上がらない(=使う意味がない)のが駄目だと思っている。
strtokには必ずラッパが必要で、それは使い方サイトに大体出てるサンプルコードになるが、
どうしてもstrtokを使いたい局面では、
そのサンプルコードのstrtok部分を自前でループし、そのラッパ関数を公開した方がいい。
(strtokは関数内関数に留め、グローバルには公開しない)
こうすれば問題の半分は片づく。

ただそもそもCでディレクトリ分割する意味はなく、そのコードを作るのにかけた時間は全部無駄だ。
そのコードは既に他にもっといい出来なのがあるから、それを使うべき。
2025/11/12(水) 23:54:11.21ID:MQmntoo50
で、具体的な話をすると、
> 指定されたファイルをアーカイブするときにパスからディレクトリ部分は取り除いて格納するだとか
こんな事する必要ねえんだよ。
お前は具象レベルでしかプログラミング出来ない馬鹿だから、こうとしか考えられないだけ。
モノリシックにしか作れず、特定環境のファイルしか格納出来ないように、無駄に成るだけだろ。
ほぼ同じ手間であらゆる環境で使える物が出来るというのに。

具体的に言うと、この場合は、
M: 内部アーカイブ
V0: unix用UI
V1: Windows用UI
V2: Web用UI
とかに分ける。これでシステム間の引っ越しも余裕になる。
Mは、文字列(キー)→ファイル(値)が引けるDB/KVSなら何でもいい。
最もお手軽には、高速検索/アクセス機能が欲しければsqlite、
レストア出来ればいいだけならtarのようにグチャッとくっつけただけの物となる。
文字列(キー)には、アーカイブしたときのパスをそのまま記録する。
つまり、フルパスで有ればフルパスを、相対パスなら相対パスを指定する。
M-V間のインタフェースはこの文字列『全体』とする。
2025/11/12(水) 23:55:46.80ID:MQmntoo50
ここでおそらく、tarでアーカイブし、ディレクトリ名が重複するので端折る事を想定していると思われるが、
これは間違いだ。『ディレクトリ文字列』ではなく、単純に『文字列』を端折るだけでいい。
つまり、

ファイルシステム上:
./pathA/pathB/hoge.txt
./pathA/pathB/hogehoge.txt
./pathA/pathB/hogehogehoge.txt

はちみつ式tarアーカイブ:(ファイル名先頭に同一『ディレクトリ』かマークする=デリミタ文字を認識しないといけない)
(新)./pathA/pathB/hoge.txt
(同)hogehoge.txt
(同)hogehogehoge.txt

俺式tarアーカイブ:(直前レコードと『文字列が』頭から何文字同じかマークする=デリミタ文字を気にする必要ない)
(0)./pathA/pathB/hoge.txt
(18)hoge.txt
(22)hoge.txt

この例は偶々、俺式の方が圧縮出来るが、実際はこんな都合のいいファイル名並びはほとんど無い。
マークサイズが、はちみつ式はbool、俺式はint(またはshort/char)なので、実際にどちらが小さいかは場合によりけりだろう。
ただポイントは、俺式はファイルのデリミタ文字がMには関係ないところだ。
Mはただの倉庫であって、文字列→中身、が出来れば十分で、外部の仕様には一切依存しない、ということ。
(はちみつ式はデリミタが/であるunix仕様がMに癒着している。とはいえこれが問題になる事はまずないはずだが)
2025/11/12(水) 23:59:23.72ID:MQmntoo50
書けない?テスト
2025/11/13(木) 00:02:39.38ID:DM7iFpPI0
あと2投(44行)あるが、規制された?ので、しばらく後に投稿する
2025/11/13(木) 00:14:22.09ID:DM7iFpPI0
うむ、書けんな。まあ>>135は正しいが
143デフォルトの名無しさん (ワッチョイ 1f1c-5yZn)
垢版 |
2025/11/13(木) 07:23:44.03ID:BJCSCSAz0
staticオジサン居る?
カプセル化で、ダイレクトに非staticプロトタイプで関数コールしている?
あるいは、typedef struct { void (*polling)(bool *tick) } Txxx;のように構造体の関数ポインター経由でコーールしている?
InitializeコールしないでNULLポインターをコールすることもあるのが難。
構造体の方がアプリトップレベルのBinderで管理できるので良いように思えるが、いまいち悩むところ。
2025/11/13(木) 07:26:01.38ID:DM7iFpPI0
やはり書けないっぽい
行数制限か?
しばらくチマチマ試すが、駄目だったら諦めで
2025/11/13(木) 07:33:41.70ID:DM7iFpPI0
ここで先述の通り、M-Vインタフェースは文字列『全体』、つまり、
(18)hoge.txt から ./pathA/pathB/hogehoge.txt に戻す部分は、M側に持たせる。
2025/11/13(木) 07:37:32.03ID:DM7iFpPI0
んー、行数ではなく文字数制限か?
しかしバラバラだと読みにくすぎるので、また後日試すわ
2025/11/13(木) 07:59:27.63ID:DM7iFpPI0
Mangoで試して一部バラバラにすれば行けそうなので落とす。内容は以下と同一
https://agree.5ch.net/test/read.cgi/mango/1754986690/92-98
2025/11/13(木) 08:00:05.36ID:DM7iFpPI0
これにより、M側はsqliteと
2025/11/13(木) 08:00:31.21ID:DM7iFpPI0
交換可能になり、(DB/KVSの場合は上記ファイルシステム上の文字列そのままがキーになる)
2025/11/13(木) 08:00:57.42ID:DM7iFpPI0
アーカイブして戻すだけではなく、ライブファイルシステムとして使えるようになる。
これはsqlite公式でも言っている通り、
> https://sqlite.org/fasterthanfs.html
現在のブロックファイルシステムにおいては最低限4K食うので、小さいファイルが沢山の場合にはsqliteの方が効率がいいから。
(GUIが無いという話はあるが…まあexplorerでzip開けるあの感じがベストだとは思うが)

そしてVだが、順当に考えれば、キー(≒ファイル/パス/URI)については、
V0: unix用UI: 何もしない
V1: Windows用UI: \を/に変えて記録、/を\に変えて戻す(トークン分割ではなく、単なる文字置換)
V2: Web用UI: 何もしない
が妥当だろう。
各Vはそれぞれ使えない文字が異なるので、Mからその文字列が来たときにどう扱うかは各Vに任せる。
これでシステム間もあっさり解決だ。
ポイントは、保存対象が何であれ、Mの中身は同じで、M-Vインタフェースも同じ、ということ。
そして繰り返すが、トークン分割の必要はない。もっと初歩的な、文字置換だけで済む。
2025/11/13(木) 08:01:38.94ID:DM7iFpPI0
つまり構成としては、
M(sqlite): sqliteそのままでいい。
M(俺式tar): トークン分割は必要ない。
 (18)hoge.txt から ./pathA/pathB/hogehoge.txt に戻す文字列操作は、数えて、concatするだけ。
 \の検索も要らない。
であり、Mでの文字列操作は、必要ないか、極単純か、となる。

一方Vは、はっきり言ってCで作る意味がない。(高速/最軽量のCを生かす事は出来ない)
unixならシェルで作ればいいだけ。
sqliteはシェルからそのまま扱えるらしいので、
> sqlite3 データベースファイル名 < スクリプトファイル名
> https://iifx.dev/ja/articles/123001461/sqlite3スクリプトをコマンドラインで華麗に操る方法
find . -print の結果を適当にゴニョゴニョすればまあ行けそう。
Blobをどうやって作るのかは知らんが、多分手段はあるのだろう。(いい加減面倒になってきた)

Windowsでも、powershellで何とかなるんじゃね?駄目なら.NETでいいし。
どのみち、CでVを作る必要はない。
Cで作るのはMだけでよく、Mではなるべく文字列操作をしない、またはしなくて済むように設計する。
V部分は各環境の便利なものを使い、そこでファイル/文字列操作はやってしまう、という事。


というわけで、例外/抽象化/隠蔽/MVC等と言っておきながら、MVCしか説明出来てないが、面倒なのでこの辺で止める。
馬鹿に一々付き合ってても、ネットでは無限に馬鹿が沸くので、キリがない。
お前らが俺以上に手間を掛けたと分かる場合のみ相手するが、おそらくこれはないはず。
そしてこれ以上お前らが馬鹿こいても無視するのでよろしく。
無知のままで居るのもお前らの自由ではあるし、本当にキリがないので。
2025/11/13(木) 08:02:19.41ID:DM7iFpPI0
以上、終わり
2025/11/13(木) 15:04:26.13ID:bJCWdXAy0
>>136
支離滅裂で何ひとつ伝わっていないとだけ言っておく。
意味がわからないのでこれ以上は反応しない。
2025/11/13(木) 20:55:40.45ID:FrAYIMEk0
>>153
俺が新しく展開した話に対し、どう捉え、どう振る舞うかはお前の自由だ。
ただ、不十分であれ、俺はお前の質問/議論に対応しようとしたのだから、
お前も俺の質問、再掲するが以下には、同程度の対応をする義務はあると思うがな。
回答しないのなら、俺も今後はお前の質問>>129に対しての回答>>130すらも遠慮させて貰う。

>>133
ただその前に、
> 常に明示的にユーザが名前を与えるべきというのはナンセンスだ。
「名前」とは何ぞ?
2025/11/13(木) 22:45:21.40ID:bJCWdXAy0
>>143
言いたいことがよくわからん (非staticプロトタイプってなんや?) けど私なりに推測するとカプセル化の基本パターンや使い分けが知りたいってこと?
156デフォルトの名無しさん (ブーイモ MM4f-ACTV)
垢版 |
2025/11/14(金) 10:11:22.08ID:j5Ukc9dzM
「モバイルオーダー」悪用、1万円超の弁当代を58円で不正決済…23歳の無職男を容疑で逮捕

決済システムが脆弱すぎだろ?
よくこんな作り方で普及させたな?インド人か?
2025/11/14(金) 11:20:09.02ID:H7qd0VM/0
一万円の弁当か、食べてみたい
払う気はないけど
158デフォルトの名無しさん (ワッチョイ 1f2f-5yZn)
垢版 |
2025/11/15(土) 03:54:57.59ID:61X/lnkN0
あら C99で空宣言使えなくなった?

typedef enum {} PINSTATE;

typedef struct s_pinobj {
bool(*sequence)(struct s_pinobj * obj);
uint16_t tickcount; // 10ms ticking
PINSTATE state;
.
.
} TXXX;
などと使っていたんだけど、エラーになるようだ。
循環参照対策はどうするんだろ?
159デフォルトの名無しさん (ブーイモ MM4f-ACTV)
垢版 |
2025/11/15(土) 08:31:52.06ID:u+2daHyUM
客→クレジット会社鯖→決済情報→商店
の流れを

客→決済情報→商店
だとよ

つまりクレジット会社鯖でやってる業務をすべてなりすまししてるわけだ
鯖と商店とのやり取りもザルだったってこと
2025/11/15(土) 11:24:07.72ID:nRXHw60f0
>>158
空宣言というのは enum の列挙子がゼロ個ということを言ってるの?
enum が導入された C89 の時点で列挙子はひとつ以上が必要ということになっていて列挙子がゼロ個で良かった時代は無い。
(出来たとしたら処理系の拡張。)

そして enum の宣言は必ず列挙子のリストを必要としている。
struct のように { } を書かなければ不完全型として宣言されるというようなことはないから前方宣言で名前だけ書いておいて後で中身を定義するということも出来ない。
不完全型の列挙型というものは存在できないってことね。
2025/11/15(土) 11:40:24.78ID:YWAh8Gcip
>>159
普通は後にこんな流れが加わってるはず
商店→クレジット会社→決済情報コンペア→決済確認→商店→決済完了
162デフォルトの名無しさん (ワッチョイ 1fc9-ACTV)
垢版 |
2025/11/15(土) 14:39:56.35ID:mkkTDyMO0
>>161
そうなってないから決済が完了し、商品が届けられて犯罪成立しちゃってる

あとになって入金が合わずに発覚しただけだからなぁ
2025/11/15(土) 15:15:39.55ID:jhUkF2/k0
>>162
システム考えた奴、頭悪いのかなぁ?
暗号化とか過信したのかなぁ?
164デフォルトの名無しさん (ワッチョイ 1fc9-ACTV)
垢版 |
2025/11/15(土) 15:38:28.29ID:mkkTDyMO0
例え決済情報を盗まれてもさ、アクセス先がクレジット会社でもないとこからのやつを
なんで正規なものとして受け取るかね?
いろいろおかしい
2025/11/17(月) 21:52:49.67ID:WNaQVVCp0
C言語とは直接関係ない話題だが、
カード情報が盗まれてそのまま決済が
通過してしまった事件が過去にあった。
カード持ち主には返金されたが、
損害を誰が負担するかで揉めてた。
カード会社が持つケースもあったが、
テナント企業が弱いと、涙を流すケースもあった。
2025/11/17(月) 21:56:21.37ID:ktJ33fIe0
直接どころかまったく無関係で草
2025/11/18(火) 00:14:16.54ID:Ie2Q8O000
Eコマースサイト作る上では必要な知識だからな
全く無関係って訳ではない
168デフォルトの名無しさん (ワッチョイ 259c-L2M8)
垢版 |
2025/11/18(火) 00:20:37.35ID:3HXouIV30
Cで作るの?
169デフォルトの名無しさん (ワッチョイ 5202-F/8Y)
垢版 |
2025/11/18(火) 16:36:11.76ID:d9hs+rsN0
cのcgiだって可能だしあってもいいだろ(?)
170デフォルトの名無しさん (アウアウウー Sa85-H7iN)
垢版 |
2025/11/18(火) 23:45:44.92ID:+AochNn2a
windows で
setlocale(LC_ALL, "ja-JP.UTF8"); とか
setlocale(LC_CTYPE, "ja-JP.UTF8"); とか
プログラムの先頭で設定しても無駄?
console は chcp 65001 してる
fopen() のファイル名に UTF8 で渡したいんだが
出来れば readdir() も UTF8 で取得したいのよ
2025/11/19(水) 07:24:28.12ID:1qR7LTyn0
ソースコードがSJISなら無駄
2025/11/19(水) 10:44:13.50ID:sa05/K8dd
opendir and readdir themselves work on bytes. They do not perform and reencoding.
Some filesystem drivers may impose contraints on the byte sequences.
I would expect the form returned by readdir to work when passed to opendir.
I'd like to know how you were able to find out that opendir and readdir do not perform any reencoding? 
You can trace it through the C library source and the kernel code.
If you run strace ls, you can directly start from the kernel entry point: the open syscall.
The generic filesystem support code passes all bytes other than null and / along unmodified.
It's only some filesystem drivers that transforms file names.
2025/11/19(水) 11:29:22.16ID:MnCaLNwG0
>>170
普通の入出力はテキストモードとバイナリモードがあって、ロケールの設定がテキストモードの振る舞いに影響するんだけど……
Windows の場合はテキストモード・バイナリモード・ユニコードモードに分かれていて _setmode でユニコードモードに設定する必要がある。
しかしユニコードモードの設定はワイド入出力系関数 (wprintf など) にしか影響を及ぼさない。

そんでその辺の設定をしても、入出力の内容に関してであってファイル名を UTF-8 で渡すのはたぶん駄目なはず。 (確認はしてない。 すまぬ。)
ファイル名はワイド文字 (UTF-16) に変換してから _wfopen で開くのが正当な方法だと思う。

Windows に readdir は無いので FindFirstFileW, FindNextFileW を使うのが普通の方法。

だいぶん前に調べたときは msvcrt と ucrt でちょっと振る舞いが違ったような記憶があるのでそこらにも注意が必要。
ucrt は色々と大きく改良されているみたいなのでひょっとするともっとモダンな方法があるかもしれない。
2025/11/19(水) 12:12:33.50ID:DtAPl5720
UTF16は廃止してほしい
175デフォルトの名無しさん (ワッチョイ ae25-Lseg)
垢版 |
2025/11/19(水) 13:55:46.72ID:95cnfr9u0
ANSI C以前のC処理系で、frexp()の第2引数が、intではなくdoubleへのポインタになってるやつってありましたっけ?
2025/11/20(木) 08:57:49.57ID:o66Cu/z90
>>175
無いです
2025/11/20(木) 10:19:51.08ID:WN+N3a+40
intで足りなくなったときに便利
178デフォルトの名無しさん (アウアウウー Sa85-H7iN)
垢版 |
2025/11/21(金) 10:02:41.70ID:VM+m9mUGa
doubleの方が有効桁数少ないんじゃね
2025/11/21(金) 10:06:53.94ID:VM+m9mUGa
>>173
>Windows に readdir は無いので FindFirstFileW, FindNextFileW を使うのが普通の方法。
もちろんそうだろうと思う有難う
だが WideCharToMultiByte とか MultiByteToWideChar をちょっとすっ飛ばしたかったんだ
2025/11/21(金) 11:13:01.47ID:G3R9bFuG0
>>179
Windows アプリケーション内部では UTF-16 で扱って、必要なら入出力のときに変換するというのが楽だよ。
モードの設定 (前述の _setmode) をしておけば入出力のときの変換は勝手にやってくれて明示的にプログラマが何かする必要がない。
Win32 API (64ビット版を含む) は UTF-16 が基礎なのでそれで統一しておけば文字コード変換が必要な場面は生じない。

マルチプラットフォームだとかサードパーティー製ライブラリと組み合わせるだとかし始めると色々と困ることもあるし、全体の設計は状況によるんだけど……
181デフォルトの名無しさん (ワッチョイ 5202-F/8Y)
垢版 |
2025/11/22(土) 01:33:08.03ID:CDycBrMu0
>>177
doubleの指数部11bitだったはずなので返る指数は±2**10-1 = ±1023の範囲だ
最低で±32767の範囲を表現できるintがあれば常に十分なはず
よってfrexpのexpはint型のみでいい>>175
2025/11/24(月) 09:05:52.94ID:StdCmM8J0
long longでいいじゃん
183デフォルトの名無しさん (ワッチョイ 67f6-WraW)
垢版 |
2025/11/25(火) 10:15:11.74ID:F0vSFTML0
frexp() の第2引数ってそもそも性質からして整数以外有り得ないんじゃね
むしろ第1引数も整数でも良いくらい
2025/11/25(火) 12:28:06.26ID:MC0j4mydM
複素数に拡張してくれ
核開発に使える
185デフォルトの名無しさん (スフッ Sd7f-Lg42)
垢版 |
2025/11/25(火) 13:48:33.82ID:rSIO8n1ld
質問です
int hoge(wchar_t *p);
な関数があって
int a = hoge(L"fuga"); だと正常で
int b = hoge("fuga"); だと誤動作します
理由は判りますが
そもそも引数がcompile errorにもwarningにもなりません
C++みたいにcompile errorにする方法は?
2025/11/25(火) 15:48:36.00ID:evMdha/k0
>>185
規格合致プログラム (conforming program) ではないので許容するとしたら処理系の拡張。
主要な処理系ではエラーになると思うけど、なんていう処理系を使ってるの?
2025/11/26(水) 10:42:02.61ID:ZGYu6bhA0
念のために仕様をよく読んで検討したら wchar_t が char の別名として定義されることは理屈の上では認められることを発見した。
そしてその上で文字列リテラルとワイド文字リテラルが異なる符号体系を持つということも可能ではある。
もしそういう処理系なら >>185 の事例は型が合った上で誤作動 (プログラマの想定と異なる動作) を引き起こすかもしれない。

実際にそういう処理系があるのかどうか知らんけど libc のドキュメント中で組み込みシステムではそういうのも妥当かもしれないという言及がある。
https://www.gnu.org/software/libc/manual/html_node/Extended-Char-Intro.html#index-wchar_005ft
2025/11/26(水) 11:37:21.77ID:g4n+mUAPa
>>186
VCで確認したら警告は出たがエラーではないので実行出来た上で誤作動(描かれた通りには動いている)
警告レベル替えればエラーにも出来るんだろうけど
文字列リテラルポインタからワイド文字列リテラルポインタへの自動キャスト(あるいはその逆のキャスト)以外のところにも影響出てエラーだらけになるかも
文字列リテラルポインタからワイド文字列リテラルポインタへの自動キャスト(あるいはその逆のキャスト)限定でエラーにならないかな
2025/11/26(水) 15:23:02.27ID:ZGYu6bhA0
>>188
MSVC がそんな馬鹿げた仕組みとは驚きだな。
合わない型 (本来は暗黙の型変換も認められない型) は一律にエラーになるべきだけれど、とりあえず自分のコードで型が合わないケースをエラーにしたいなら
#pragma warning(error : 4133)
とするくらいが落としどころじゃないかと思う。
2025/11/27(木) 05:19:27.44ID:KfDQEfrsd
ありがとうございます
>>188
よくみたらwarning出てたのみのがしてました
>>189
良い感じにcompile errorにしてくれました
2025/11/29(土) 18:02:47.96ID:MnjgLok40
固定小数点でも誤差が出ます
とかトンチンカンなこと言い出すやついるけど
割り算しなきゃほぼ誤差ないんだよ
192デフォルトの名無しさん (ワッチョイ 79f6-v69L)
垢版 |
2025/12/01(月) 12:04:42.29ID:HDTmHOXC0
gmp使ったソースだった
2025/12/03(水) 11:46:07.94ID:G3Cx7y7oa
これだ
https://www.youtube.com/watch?v=prVBoU6K9Hg#t=6s
6秒-
194デフォルトの名無しさん (ワッチョイ 6a4e-Qxko)
垢版 |
2025/12/03(水) 22:47:42.54ID:E5HetRmY0
>>1
JPCERT C コーディングスタンダード
に準拠しているか調べる無料で簡単なツールってない?
make/gcc の option でいける?
195デフォルトの名無しさん (ワッチョイ 6a4e-Qxko)
垢版 |
2025/12/03(水) 22:51:48.92ID:E5HetRmY0
こういうのも、流行のclaudeとかで聞くもんなんかな?
2025/12/09(火) 18:21:11.05ID:4lQ1LhG80
ツールを起動するだけで CERT C コーディングスタンダードに準拠か否か判定するというレベルの簡単なものはないというか無理。
機械的な検証が困難な項目は人が精査する必要がある場合もあるからツールはあくまでも補助だよ。
まずは項目を大まかに分類して機械的に出来るところは機械的にやって残りは人が検証 (レビューやテスト) する体制を整えるしかない。
きちんとやろうとすると技術的なことより組織の運営の話になるんじゃないかな……
2025/12/11(木) 01:14:00.20ID:VWVRinEO0
コーディングルールはサイトでの指定以外は気にしたことが無いなあ笑
198デフォルトの名無しさん (ワッチョイ 1f22-1bfe)
垢版 |
2025/12/16(火) 15:40:55.95ID:unxv0LoC0
C言語であるサブルーチンを作ろうとしてるんだけど、FILE* fで開いたファイルを一旦閉じて作業をして、また開きたいんだが、FILE* f だけを引数にしたい。そんなこと出来る?
開いたファイルの名前を引数にできれば、その名前で再度開けるが、FILE* f のポインタだけを引数にしてそんなこと出来るのかな?
2025/12/16(火) 16:02:20.55ID:BhrzwszF0
できない
FILEが生きているうちならパス名を調べるのは多分できるだろな
2025/12/16(火) 16:25:43.79ID:8p6wZKuQ0
>>198
閉じた時点で FILE* 型のハンドルは無効になる。
無効になったハンドルに対して出来ることは何ひとつない。

ファイルを開いている内に再び開くために必要な適用な情報を確保しておくしかない。
言語仕様上は細かい規定は無いのでホスト環境 (OS) に依存したなんらかの手段を使う必要がある。
Linux なら inode 番号あたりを保持しておけばファイル名を覚えておくより短くて済むからいいんじゃないかな?
まあ開くときにはたぶん一旦ファイル名を取得する必要はあるんだけど。
(他の OS でもだいたい似たような仕組みは有る。 Windows だと GetFileInformationByHandle を調べてみると良い。)
201デフォルトの名無しさん (ワッチョイ 1f22-1bfe)
垢版 |
2025/12/16(火) 17:12:42.21ID:unxv0LoC0
みなさんありがとう。OSはWindowsです
GetFileInformationByHandle も調べてみたけど、これではファイル名は出てきませんね
多分FILE* fからファイル名が出てこないと、無理っぽいですね
2025/12/16(火) 17:27:33.70ID:BhrzwszF0
GetFinalPathNameByHandle
geminiに聞いただけで期待通り動くかは知らん
2025/12/16(火) 17:47:00.48ID:fxmzBDbu0
windows の場合はファイル番号 (FRN) から直接にファイルを開くことができるっぽい。
204デフォルトの名無しさん (ワッチョイ 1f22-1bfe)
垢版 |
2025/12/16(火) 17:48:08.13ID:unxv0LoC0
>>202
GetFinalPathNameByHandleやってみたけど残念
まあ、考えたらWindowsではHANDLE。FILEではないからね。HANDLEなら多分うまくいくんだろうね
でもいい関数を教えてもらいました。ありがとう
FILEからHANDLEに変更して作り直すかな。他人が作ったソフトを改造してやってるので
そもそも、FILEとHANDLEって何が違うのかなコンバートって出来る?
HANDLEはWindows専用でやってそうだから無理そうね
2025/12/16(火) 18:25:26.73ID:BhrzwszF0
>>204
FILEからHANDLEは取り出せる
よく調べろ
2025/12/16(火) 19:25:00.08ID:fxmzBDbu0
Windows では FILE の下にファイルディスクリプタっぽいものがあって、その下に本来の Win32 API があるという三層構造になってる。
msvcrt.dll (または ucrt.dll) が C や POSIX の仕様に合わせた機能を提供しているが、必要に応じて Win32 API 用のハンドルを取り出すことはできる。
207デフォルトの名無しさん (ワッチョイ 1f22-1bfe)
垢版 |
2025/12/16(火) 19:50:18.68ID:unxv0LoC0
ありがとう。調べてみます
208デフォルトの名無しさん (ワッチョイ 72d0-AmFD)
垢版 |
2025/12/16(火) 21:05:39.33ID:ugyur8tL0
最近開いたファイル から引っ張ってこれないのか?
209デフォルトの名無しさん (ワッチョイ a77f-Iabs)
垢版 |
2025/12/16(火) 21:38:52.25ID:x7DniZMa0
>>198
階層設計間違ってるだけだと思うがな
https://atmarkit.itmedia.co.jp/bbs/phpBB/viewtopic.php?topic=33590&forum=7
2025/12/17(水) 00:35:55.40ID:9wOraPAW0
そのファイルを誰かが開くことは想定しなくて良いのか?
211デフォルトの名無しさん (ワッチョイ 12ad-FV3J)
垢版 |
2025/12/18(木) 01:16:26.13ID:qZgjLdb10
>>198
それ絶対に閉じないといけないのか? fflush() するだけじゃダメ?
2025/12/18(木) 09:00:10.06ID:T7xRzDCt0
DBとして機能するファイルならDBつかえよ?
2025/12/19(金) 13:27:44.03ID:uPPpqdRma
あるやん
https://learn.microsoft.com/ja-jp/windows/win32/memory/obtaining-a-file-name-from-a-file-handle
2025/12/19(金) 13:33:27.31ID:uPPpqdRma
https://learn.microsoft.com/ja-jp/cpp/c-runtime-library/reference/get-osfhandle
HANDLE h =(HANDLE)_get_osfhandle(fileno(fp));
2025/12/19(金) 14:08:20.19ID:GilgZVjz0
質問者の意図がよく分からない
FILE*で操作したいと言うことは、
誰かが上位でopenしてくれる前提なのかな?
2025/12/19(金) 17:52:53.90ID:oWecYqFH0
こうしてバグの温床が生まれたと。
2025/12/19(金) 20:20:49.60ID:LTe4LjTR0
他人が作ったプログラムをよく理解しないまま改造するという前提ではなるべく構造を変えないという選択肢がマシになることはなくもない。
もちろんきちんと理解して必要な形に整理しなおすのがよりよいに決まってるんだが、そう理想通りにできるとは限らない。
2025/12/19(金) 20:28:04.21ID:tQhsUV0y0
なんなの、この糞コテ?
2025/12/19(金) 22:01:36.42ID:1MzI+xf/0
おいしそうだろ
2025/12/20(土) 07:50:33.87ID:QsyRy9oL0
>>218
お前よりは数段役にたつやつだから 暖かく見守れ
2025/12/21(日) 13:25:50.09ID:i93tKLa3H
うちの近所にも蜂蜜餃子出す店ある
2026/01/18(日) 20:25:48.72ID:cNrycSn50
ユーザーからの入力によって配列のサイズを決定したいんですが
どうやったらいいんでしょう
2026/01/18(日) 20:37:29.41ID:shr9m5Ho0
>>222
質問が分かりにくいのでどう書きたいのかコードで示して欲しい。
意図がわかればよいのでコンパイルエラーになるようなコードでもかまわない。

たぶん必要なのは malloc だと思う。

その他、配列の型としての大きさを実行時に変えられる場合は限定的だが VLA と呼ばれる言語機能がある。
ただ VLA は後の仕様改訂でオプショナルになったので使えない処理系もたぶんあるしエラーハンドリングに難があるので避けたほうがよいと思う。
2026/01/19(月) 07:16:34.46ID:2baaFdwH0
>>222
comp.lang.cのFAQは読んだんか? 配列についての昔々からあるお前がしたような質問と回答がそこに載ってんぞ
せっかく親切に>>1がリンクまで貼ってんだから>>1くらい読んでから質問しろよ お前どこ行ってもそんな風な振る舞いなのか?
2026/01/19(月) 08:38:27.02ID:oxkouUzo0
argcをどうやってatoiしたらよいか、なんて話題かもしれない
2026/01/19(月) 13:18:04.03ID:ElAwxz1hM
>>222
ユーザーが入力し得る最大サイズで確保しとけばええねん
2026/01/19(月) 16:59:35.05ID:Nrv8lzL10
ふつうテラバイトかな
228デフォルトの名無しさん (アウアウウー Sa1d-s7zb)
垢版 |
2026/01/19(月) 23:48:18.42ID:Q5XPfczGa
>>222
とりあえず入門書を読み直せ
2026/01/20(火) 08:07:53.65ID:r1BK3Oap0
> Z世代「結局、俺等って最も賢くて不幸な世代じゃね?」2万いいね [237216734]
> https://hayabusa9.5ch.net/test/read.cgi/c/news/1768856467/
典型的Zムーブやん、もうちょっと生暖かい目で見るゆとりを持とうぜ
230デフォルトの名無しさん (ワッチョイ 8b2a-g06Z)
垢版 |
2026/01/20(火) 08:09:48.15ID:FJCIsj7T0
>>228
意味のないレスだよ
2026/01/20(火) 08:44:15.02ID:r1BK3Oap0
やや曖昧だったので補足しておくが、俺は>>228も正しいと思っているし、批判する気もない。
ついでに一言ずつ感想を述べると、

222: Z過ぎる…
223: "malloc"というキーワードすら知らなかったのだから、そんな高尚な話ではないのでは…
224: あー、昔はnewsで同様のことをやってたんだな、知らんかったわ。まあ読んだほうがいいね
225: エスパー能力は低そうだな
226: それもありよね、というか俺ならこれかな
227: アホだな
228: まあこれもそう。書いてあるだろうし、224のFAQにしても知らないことも多いだろうから、全部読むのが一番効率はいい(ただZは絶対に受け入れないが)
(229: 俺)
230: お前がもっとも意味ないよ、死ね
2026/01/20(火) 11:13:35.53ID:WJ24pe7D0
ちゃんと目が覚めてからどうぞ
2026/01/20(火) 14:30:10.34ID:npjGyppFM
苦しんで覚えろC言語
234 警備員[Lv.0][新芽] (アウアウウー Sa1d-2lB2)
垢版 |
2026/01/20(火) 15:24:25.25ID:IfOEwYMLa
NNTPってまだ使われてんの
2026/01/22(木) 01:03:37.74ID:xYaOafz30
シーは可変長配列実装する所からか
236デフォルトの名無しさん (ワッチョイ c92a-g06Z)
垢版 |
2026/01/23(金) 13:27:45.11ID:C2FK2sry0
C調実装に御用心
2026/01/23(金) 18:52:35.05ID:FYvErjxl0
たまにゃMakefile
238デフォルトの名無しさん (ワッチョイ e990-EJU4)
垢版 |
2026/01/26(月) 08:27:35.76ID:f1AFhxpj0
>>231
226は一番ダメだろw
素人はいくらでも想像できない限界を超えてくるし
長大なデータを入力し終わってクラッシュした時の脱力感はやった人間ならわかるはずw
2026/01/26(月) 09:25:50.03ID:vduk8RxW0
翌日には忘れる未来志向
2026/01/26(月) 11:15:31.10ID:SIfTs9j80
>>238
中級レベルには意外だろうけど組み込みでは常套手段
ワーストケースを決めてリソースは固定で確保
実用的な上限設定すればいいだけ
241デフォルトの名無しさん (ワッチョイ 6502-yTqm)
垢版 |
2026/01/26(月) 11:37:39.49ID:ju5wkyqG0
Dィープsテートは人類の電子的支配をねらっている
https://www.youtube.com/watch?v=-HUCdYNePFg
2026/01/26(月) 11:55:43.44ID:259WEkSA0
クラッシュして良いわけではないが想定した固定長を越えたらエラーメッセージを出して直ちに終了するくらいの方針はありうる。
Worse is Better ってやつだ。
243デフォルトの名無しさん (ワッチョイ 591a-Q7ug)
垢版 |
2026/01/26(月) 20:41:38.33ID:w7MHZcu50
中級者
超えないようにメモリを冗長化

上級者
デカいメモリを確保ANDユーザの入力次第でクラッシュ scanf指向
2026/01/26(月) 20:42:35.53ID:hiSxmE0Cp
全部固定長にしちまえばいいんだよ
245デフォルトの名無しさん (アウアウウー Sacd-Bm+i)
垢版 |
2026/01/27(火) 01:16:10.76ID:rrlOBExea
sprintf, swprintf, _sprintf_l, _swprintf_l, __swprintf_l,
sprintf_s, _sprintf_s_l, _swprintf_s, _swprintf_s_l,
sscanf, _sscanf_l, swscanf, _swscanf_l,
sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l,
さらに
vfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l,
vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l,
なんで vwfprintf じゃねえんだよ!って思う
2026/01/30(金) 14:54:48.55ID:KwjlwjWe0
強い相互作用が働いています
247デフォルトの名無しさん (ワッチョイ 4d94-4QED)
垢版 |
2026/02/06(金) 22:43:33.83ID:n8mgfVGM0
printf("%d\t%d", fahr, celsius);

の引数である、"%d\t%d"について質問です。

「\t」はタブ文字を表すということです。
viなどのエディタではタブを入力すると4文字や8文字などの設定した幅だけ空白が挿入されます。

"%d\t%d"についても同じように4文字や8文字などの一定の幅の空白が整数と整数の間に挿入されるのかと思いましたが、動作が違うようです。

これはどういうことでしょうか?
2026/02/06(金) 23:23:03.82ID:oI+Czk490
> viなどのエディタではタブを入力すると4文字や8文字などの設定した幅だけ空白が挿入されます。

こういうのはエディタがキー入力されたタブ文字をタブ文字として出力せず、4文字、8文字の空白として出力(つまり変換)してる

> "%d\t%d"についても同じように4文字や8文字などの一定の幅の空白が整数と整数の間に挿入されるのかと思いましたが、動作が違うようです。
コンソールなどにそういう機能がない以上はタブ文字はタブ文字として出力されるだけ
もしタブを入力として受け取って、それを4文字や8文字などの空白にしたいなら自前でそういう処理を書かないといけない
2026/02/06(金) 23:44:40.96ID:Qy2h/jss0
>>247
・タブという文字 (一文字) がある
・タブ文字の幅は一定ではない
・タブ文字は次のキリの良い桁までの幅を持つ
・キリの良い桁がいくつであるかはターミナルやエディタの設定によるが一般的に4か8
・つまりキリの良い桁が4に設定されている環境において、行の最初にあるタブの幅は4だし、三文字目にあれば幅は2になる
・設定によってインデントの大きさを一気に変えられて便利なのでかつてはタブでインデントするのが普通だった
・現代ではフォーマッタが総合的に面倒を見るのでインデントのためにタブを使う習慣は廃れた
・タブキーを押してもタブが入力されず空白を入れるようになっているエディタはそこそこある (設定で変えられることもある)
2026/02/08(日) 14:40:59.44ID:X17rBAzn0
そなたらはC99以降を使ってんのかどうしてんだ。
後からC++で使う可能性があるなら互換性を失ったCを使うかどうかは考えないといけない。
拡張子.cと.cppを共存できるプロジェクトファイルに対応の機械語ファイル作成のソフトとかあるんかな。
例えばVisual C++はどうなんや。
2026/02/08(日) 15:05:00.39ID:vqX/dBJ10
>>250
主要なホスト環境 (OS) や処理系はかなり保守的な体制をとっていて MSVC, GCC, Clang といった主要な処理系は C89 をいまだに使えるし、 ABI に互換性がある範囲で C++ と共存できる。

特に MSVC (Visual C++) の C は「ANSI C89 にマイクロソフトに独自の拡張を付け加えたものである (その独自拡張が C99 の一部なこともある)」 と説明しているくらいの保守的姿勢をとってる。
その割に安全でない関数を使ったときなどの警告は厳しめなので寛容だがモダンなスタイルへの移行へ積極的でもあるという感じに見える。
2026/02/08(日) 16:36:16.54ID:X17rBAzn0
書き方がまずかったか。
機械語ファイル作成のソフトの具体例は、Microsoft Visual Studio(Visual C++)で、プロジェクトファイルの具体例はVisual Studioでは拡張子.vcxprojのファイルのことを言ってる。
互換性で問題にしてるのはC99以降で、C++98に対応のコンパイラなら、C90までのCで互換性の問題は普通に考えてあるとは思えない。
shortにintを代入で警告、ポインタ変数にキャスト無しでvoidポインタの代入でエラーくらいしか思いつかない。
2026/02/08(日) 17:25:48.03ID:vqX/dBJ10
>>252
確認だが >>250 で言う「後から C++ で使う可能性がある」というのは「C++ とリンクする可能性がある」ではなく「C++ としてコンパイルしなおす可能性がある」という意味だったの?
「それだと .c と .cpp を共存できる」に繋がらなくて意味を読み取れないんやが。
2026/02/08(日) 17:55:08.39ID:X17rBAzn0
そうか、リンクという方法もあるわな。
でも言おうとしたのはC++としてソースを再利用してコンパイルのつもりで言った。
2026/02/08(日) 17:57:41.82ID:X17rBAzn0
ただし、.cを単に.cppに変更してC++プログラムとして使うと互換性を失うので、1プロジェクトの中にCとC++を共存させてハイブリッドのコンパイルはできないものかと思ったわけだ。
2026/02/08(日) 18:22:46.50ID:vqX/dBJ10
>>255
C と C++ をひとつのプロジェクトの中で共存させることはごく普通にできる。
あまりに当然のことすぎてそこが疑問なのだとは気づかなかったよ……
私自信は Visual C++ を使ってないから具体的な操作までは知らんけど。
2026/02/08(日) 18:47:46.77ID:X17rBAzn0
そうだったか。
それなら最新のCを使うのもいいな。
2026/02/08(日) 20:34:02.62ID:HUCbwVuC0
もともと C と C++ はつかず離れずを指向していたんだけど C が保守的すぎて乖離が大きくなっていったという事情がある。
C23 でその間を埋めるように大きめかつ非互換な改定が入って GCC ではすでに C23 がデフォルト (オプション指定しなければ C23 になる) なんだけど MSVC で使うのは時期尚早かもしれない。
処理系のデフォルトがおおよそ無難な選択だと思う。
2026/02/08(日) 20:40:55.28ID:X17rBAzn0
そなたらはC99〜最新はどういう立ち位置でいる?
1.拒絶派
2.慎重派
3.条件によって二分する中立派
4.積極派
5.最新仕様を最大活用派
2026/02/08(日) 22:57:39.47ID:x9wGlHBM0
しょうもないキャラ作りすんな
答える気なくすわ
2026/02/09(月) 08:41:59.71ID:oKB0cnr50
>>259
先述の繰り返しになるが処理系のデフォルトが無難と考えている。
開発のインフラを作っている人たちの判断を信頼する。
GCC が C23 で Clang が C17 だからそのくらいが現在の相場だってことだ。
その上で特にプロジェクトの事情があるなら配慮する。
結果的に新しい機能を使わずに済んで C99 としてもコンパイル可能であるようなものを書くことはあるかもしれないけど C99 の機能を使わないということは無いので C89 は論外になるな。
262デフォルトの名無しさん (ワッチョイ c669-4h5I)
垢版 |
2026/02/09(月) 09:12:03.70ID:XZkkTiMB0
あなたもわたしもCCG
263デフォルトの名無しさん (ワッチョイ b2f9-22yv)
垢版 |
2026/02/09(月) 09:31:53.29ID:H1BUQ21N0
それはCGC
2026/02/09(月) 09:54:21.23ID:tiXp1BFN0
>>255
.c と .c++ を共存させたいときに
.c を .cpp に名前変えるのはあまりにも筋が悪いと思う
>>253 や >>256 さんの言う様に
.c と .c++ を普通に混在したままリンクする方が良い
265デフォルトの名無しさん (スフッ Sd02-Vk33)
垢版 |
2026/02/11(水) 05:13:35.33ID:QMIW0ukQd
          /::::)(:::)(:::::::::::)(::::::^::::::::::\
      (::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::\
     /::::::::::/ノ::::::::ノ::::::::ヽ:人::::::::::ヽ:::::::::::::::)
     (::::::::::/  ):::ノ::::ノ ) ソ ヾ::::::::::::丶::::ヽ
    (:::::::::/ 彡  ノ   ノ  :: 彡:/)) ::::::::::)
   (::::::::::/彡彡彡彡彡   ミミミミミミミ :::::::::::)
   ( :::::::// ̄ ̄ ̄ ̄ヽ===/ ̄ ̄ ̄ ̄ヽ |:::::::::)
     | =ロ   -=・=-  ‖ ‖ -=・=-   ロ===
     |:/ ‖    / /ノ  ヽ \     ‖ ヽ|ヽ       _________
     |/  ヽ`======/ .⌒ ` ========ノ.   ..| |     /
    .( 。 ・:・‘。c .(●  ●) ;”・u。*@・:、‘)ノ  /
   ( 。;・0”*・o; / :::::l l::: ::: \ :。・;%:・。o ) <  プロデジ フルスタックエンジニア 😤😤😤😤😤👎👎👎
    (; 8@ ・。:// ̄ ̄ ̄ ̄\:\.”・:。;・’0.)   \ 
   .\。・:%,: )::::|.  ̄ ̄ ̄ ̄  | ::::(: o`*:c /..    \_________
    \ ::: o :::::::::\____/  ::::::::::   /
      (ヽ  ヽ:::: _- ::::: ⌒:: :::::::: -_    ノ
       \丶\_::_:::::_:::: :::::_/::::  /
        | \ \ ::::::::::: :::::::::: ::: ::__/ |
    ̄ ̄\ 丶  ̄ ̄ ̄ ̄ ̄ ̄ ̄    / ̄ ̄
2026/02/11(水) 07:30:53.89ID:piVnUKvQ0
よっぽど頭にきちゃったんだね
2026/02/11(水) 11:14:21.39ID:yCllJHNQ0
一緒に仕事したくないな
2026/02/11(水) 19:27:16.74ID:dYVZoeHv0
Turbo C使いの俺には死角はなかった
2026/02/11(水) 23:31:50.87ID:yCllJHNQ0
懐かしい世界
2026/02/13(金) 13:25:36.67ID:5s43JTa6H
明日は晴れるかな
https://ideone.com/TW6fsG
2026/02/15(日) 13:50:59.15ID:OxykBfDr0
ポカポカな天気
2026/03/06(金) 19:24:36.21ID:xIu+t86J0
書き込みテスト
273デフォルトの名無しさん (JP 0H9f-gxvf)
垢版 |
2026/03/07(土) 03:21:03.26ID:JBgvHmdsH
ioになったんか
274デフォルトの名無しさん (ワッチョイ 7fa9-7cSS)
垢版 |
2026/03/07(土) 19:54:35.18ID:eNOqReUM0
sys/io.h のこと?
275デフォルトの名無しさん (ワッチョイ ee5a-H6EY)
垢版 |
2026/03/14(土) 17:54:55.59ID:yRZkyjul0
https://gigazine.net/news/20260311-tony-hoare-passed-away/
ホーア先生亡くなってしまったね.
2026/03/14(土) 18:23:17.33ID:SlICVWZ+0
「ソフトウェアを設計するには、2通りの方法がある。1つは、とてもシンプルに設計して、明らかに欠陥がないようにすること。もう1つは、とても複雑に設計して明らかな欠陥がないようにすることだ」

誰か説明して。前半はなんとなく分かるが。
2026/03/14(土) 18:40:43.80ID:1T7CwWYt0
説明も何もそのままじゃん
2026/03/14(土) 18:44:36.41ID:SlICVWZ+0
オラは凡人なので、複雑な設計と無欠陥を両立できません笑
2026/03/14(土) 19:14:48.11ID:6I30ZIkyM
「明らかじゃない欠陥」が噴出するのさ
280デフォルトの名無しさん (ワッチョイ ee5a-H6EY)
垢版 |
2026/03/14(土) 19:16:59.74ID:yRZkyjul0
明らかな欠陥がないようにする,って書いてあるじゃん.
2026/03/14(土) 19:28:13.71ID:SshLSMzMM
>>280
俺に言ってるんだったら論理的思考力がプログラマレベルに達していないぞ
2026/03/14(土) 19:29:27.07ID:2GHal+1fp
潜在的な欠陥とか無い様に全ての条件で確認すんだよ
283デフォルトの名無しさん (ラクッペペ MMe6-rKHk)
垢版 |
2026/03/14(土) 20:07:58.56ID:qtK1wVLwM
> 明らかに欠陥がないようにする
部屋には一切物を置かず、ごきぶりが居ないことは見れば分かる

> 明らかな欠陥がないようにする
部屋を複雑に設計しゴキブリが侵入する余地を与えない
出入りする者、物においてもしっかりとしたチェックを行いゴキブリを連れ込まない
2026/03/14(土) 21:02:23.33ID:SlICVWZ+0
複雑なロジック設計して、
他の人には一体何をするためなのか
意味不明なプログラムなら
書いたことはある笑
2026/03/14(土) 21:04:32.37ID:NF0u1Pvr0
>>276
複雑なものを作るのに欠陥が無いようになんて出来ないことはわかるだろ。
だから残る選択肢はシンプルに作ることしかないんだ。
いわゆる反語、皮肉めいた言い方で茶化してるだけ。
2026/03/14(土) 21:28:16.72ID:Dj+Yn6DFd
おいおい大丈夫かよこのコテハン
ホーアを知らないで言ってんのか?
そーいうことじゃないよw
2026/03/14(土) 22:10:03.40ID:NF0u1Pvr0
https://dic.nicovideo.jp/t/a/%E3%81%BB%E3%81%A3%E3%81%A1%E3%82%83%E3%83%BC%E3%82%93%21%20%E3%81%BB%E3%80%81%E3%81%BB%E3%83%BC%E3%81%A3%E3%80%81%E3%83%9B%E3%82%A2%E3%82%A2%E3%83%BC%E3%83%83%21%21%20%E3%83%9B%E3%82%A2%E3%83%BC%E3%83%83%21%21
2026/03/15(日) 08:26:57.66ID:jsbn2nWad
ガチもんの人かヤバw
2026/03/15(日) 08:43:28.35ID:jsbn2nWad
>>276
その書き方でもまあ分かるけど原文読んだ方がいいよ
明らか「に」欠点がないのと明らか「な」欠点がないは違う
包有関係考えれば分かるけど噛み砕いて言えば難しいバグがあるってこと
シンプルに作れば正しいかどうかは目で見て分かるが、複雑だとそれが出来ず正しいかどうか確かめたかったら例えば数学的に正しさを証明しないといけなくなったりする
複雑さは品質の証明にならないってこと、単純な設計をする困難さなんかを言ってる
もうちょい短くすれば要は複雑さは設計の失敗のサインだって意味の文章だよ
290デフォルトの名無しさん (アウアウウー Sab3-sFF2)
垢版 |
2026/03/15(日) 10:54:40.25ID:qaLJXPfya
IQは日本語読解力に比例するらしいが正しいと思える瞬間な
2026/03/15(日) 11:31:21.45ID:741O9PJi0
日本語読解力の問題なら、
プログラムの話題ではないな
2026/03/15(日) 19:45:05.72ID:DIIwvhyj0
>>290
ハーフリンガル問題の事だと思うが、勿論鶏と卵の関係であるにせよ、主たる因果関係は逆で、
IQ→国語力
だと思うがな。国語力→IQなら、文系馬鹿が最高に賢くなってしまうし。
だからって、最近のセンター試験の数学が国語化してるのは、関係各者の妥協の産物ではあるにせよ、間違いだと思うが。

>>291
プログラミングと言うよりは、エンジニアリング全般の話よね。
いわゆる「一方、ロシアは鉛筆を使った」でもあるし。
2026/03/16(月) 00:00:47.50ID:24jtw6uy0
C言語の話題でもないし、
これ以上続けるなら
プログラム設計のスレがふさわしいよ
294デフォルトの名無しさん (ワッチョイ b54b-0izT)
垢版 |
2026/03/16(月) 07:15:07.08ID:2xB1GT0x0
>>293
賛成だがそういう場合はリンクを貼るべき
少なくともム板マ板のどちらにもない
2026/03/16(月) 09:26:08.22ID:LCnHyhYd0
このコテハンの人、規格の引用みたいな誰でもできる機械的なことやってるうちはいいけど
ちょっと自分の意見言い出すととたんにトンチンカンっつーかズレたこと言い始めるよねw
2026/03/16(月) 13:21:47.33ID:2xB1GT0x0
>>292訂正
✕ ハーフリンガル
○ セミリンガル

>>295
今回はお前の方が頓珍漢。

> 規格の引用みたいな誰でもできる機械的なこと
誰でも出来るわけではない。かなり詳しいのは確か。
文句があるならお前も参戦してどちらがより正確かを競うべき。(=ネットは衆人環視なのだから、衆人に役立つ方向に競え)
ゆとりZはすぐに人格ガーの方向に持っていくから、(=衆人にとってまるで役に立たないマウント取りに勤しむので)
SNS上で役に立つ議論が出来ず、彼ら世代だけでまともな議論場を確保できない。
だから老人ホームな5chに来ざるを得なくなってるのを反省し、行動を改めるべき。
ゆとりZだけの場所で5chと同じことが出来たら、彼らにとっても幸せだと思うんだけどね。
(ただし根っこはゆとりZの「自分のお気持ち>>>技術論《正しいかどうか》」な価値観だから本質的にかなり無理だが)

して、289が正しいと仮定して、それを276と二言で表現した場合、
それを285のように説明するのは間違いでもなく、不適切でもない。
276だけだと、「複雑な設計では明らかではない欠陥はあってもいいのか?」が曖昧でツッコミたくなるが、
289と276のこの点への解釈は揃ってるし。
というかこの辺で手こずるようなら、プログラミング以前に国語をやり直すべき。
297デフォルトの名無しさん (ブーイモ MMf3-2zvD)
垢版 |
2026/03/16(月) 18:53:32.05ID:fIEXpCafM
AI時代は国語力とか言うポストがバズったりしてるけど国語力って幅広すぎだよな
効率的なトークン生成スキルといったほうがいい
2026/03/16(月) 22:50:07.11ID:ciRQJB3O0
論理的思考ができるかどうか、プログラムでなく文章を書かせてみる、ようなことはよく言われるね
2026/03/16(月) 23:06:12.51ID:OpaIgQRr0
IT土方なら文章でわかるかもな
300デフォルトの名無しさん (スップ Sd03-0zda)
垢版 |
2026/03/17(火) 09:33:33.10ID:f405Oqv1d
292や296も変な文章に見えるけどなんかもうキリがないなw
誰か指摘してあげなよ
2026/03/18(水) 06:55:17.32ID:kfgCJpmw0
>>300
ゆとりZキチガイは5ch止めろ。

というかね、ゆとりZ的精神的勝利法なんて何度目だ?過ぎて。
こいつら本当に進歩せず、幼稚なままだ。
日本語が出来ないお前には読めないのだろうが、
俺の文章は普通の知能な日本人には確実に通じるレベルだし、多分お前よりもだいぶましでもある。

自分で詳細に論理的説明も出来ず、また日本語が拙い事がバレるので、自分では指摘出来ないんだろ。
出来るつもりなら書けばいいだけ。お前が書かないとお前が書ける事の証明にはならない。
そしてその書いた内容が妥当なら、お前に同調する連中も現れ、お前の望む方向に流れるだろうさ。
これが本来の自由な議論場の有り様。5chはずっとこうしてきた。
何も言えない奴に存在価値は無い。

本当に、ゆとりZは死ぬべきだよ。
5chもゆとりZが居なければ、もっといい場所になるのに。
(つってもこの文章も国語力無いゆとりZ連中には通じないのは分かってるが…)
2026/03/18(水) 06:56:17.23ID:kfgCJpmw0
まあ俺はこの手のメタ話は割と好きなので参戦してるが、
ついでにかねがねコミュ障だと感じてるお前らに対し、俺的流れの理解を説明しておくと、

ゆとりZ276: これ教えて
その他大勢: いやまんま過ぎて何が分からないのか分からん
(超絶豆腐メンタルなゆとりZにとっては285は十分に暴言であり攻撃だと受け止められた!!!)
ゆとりZ295: ムキー!!!285はぼくをこうげきしてきた!!!はんげきしてやる!!!トンチンカン!!!
俺296: いやお前の方が頓珍漢
ゆとりZ: 285をようごする296もきにいらない!!!こうげきしてやる!!!296もにほんごがおかしい!!!
(元々日本語の問題だと言われたので、
自分の日本語がおかしいのではなく、他人の日本語がおかしいとの他責思考により、
攻撃箇所が295での人格→300での日本語にシフトした)
2026/03/18(水) 06:56:50.22ID:kfgCJpmw0
まあよくある馬鹿狂犬ゆとりZだ。
一向に論理的フェーズに突入しない。多分今後ともそうだろう。
そもそも言葉とはコミュニケーションの「手段」であり、「目的」ではないので、
通じてるかどうかが最大に重要であって、正しい言葉を、或いは上手い下手も、通じる確率を上げる方策でしかない。
(逆に言えば、通じてれば何でもいい。相手の方言にも、また、誤用にも、場合によっては合わせてもいい)
それで、「目的」の、通じた後に何を得るつもりなのか?が、無いのもこの馬鹿狂犬タイプの特徴。
噛みつく事が目的化してる。いやそうじゃねえだろと。

ゆとリンガル問題、とでも命名しようか。

日本語が出来ず、論理的思考力もない、ゆとりZによって引き起こされる問題。(なおゆとりZの大半が該当する)
拗らせた承認欲求と他責思考により、ハイセンシティブピープーとなっており、過度に過敏で、やたらと攻撃されたと見なし、
反撃する事が目的化して、意味もない方向にどんどん流れていく。
仮に285の人格や俺の日本語に問題があったとしても、それが、当初の
> もう1つは、とても複雑に設計して明らかな欠陥がないようにすることだ
を理解する事には繋がりようがなく、掘り下げる意味がない。
この手の、「反論してきた人や内容に、微々であれ問題が存在したら、これまでの反論は全部無意味!!!」的な、
論点をどんどんすり替えていって、その途中でなんとか瑕疵を見いだし、俺負けてない!!!と強弁するのは、
典型的な詭弁論法で、名前も付いてたはず(忘れたけど)。ただまあ、ひろゆきがよくやってるのがこれだが。
2026/03/18(水) 06:57:20.98ID:kfgCJpmw0
議論は、常に原点を念頭に置き、目的を達成する事を目指すべき。
再度言うが、仮に285や俺に多大な問題があったとしても、元の疑問の解決には繋がらないだろ。
そもそも276で、

276: 後半部分が分かりません。○○と字面からは読めますが、私は□□だと思うので、矛盾します。私は私が間違ってるとも思えません(キリッ

とでも言えば、ゆとりZ的にも気に入らない流れにはならなかったはず。
この辺も、他責思考で、何でもかんでも他人のせいにしてるから上達しない。
いやお前だけの努力でも完全回避出来たよねと。

ただまあ、このタイプが過半数だから、ゆとりZな場所ではどうやってもまともな議論なんて出来る訳無いのは分かる。
しかし5chでゆとりZ全開は邪魔でしかないので、俺は撲滅するべきだと思ってる。
(だからこうして賛同者を募るべく一々書いてる)

さらについでに言っておくと、
「明らか『に』」「明らか『な』」の違いが読めない国語の問題だと捉えた大半の人に対し、
285だけは、日本語の問題はクリアしてて、その後の矛盾に見える点について回答をしてる。
つまり、285だけは質問者276のレベルが一つ上だと認識して回答してるわけで、
承認欲求拗らせて「ばかにするな!!!」と噛みつくにしても、相手を間違えてる。
自分を一番高く評価してくれた人に噛みついてどうするよ?逆だろと。
回答の口調がゆとりZ的には気に入らなかったのだろうけどもね。
この辺が、ゆとりZがまるで表面的な所しか見えておらず、コミュ障な所だね。
2026/03/18(水) 07:12:26.51ID:kfgCJpmw0
>>298
それも逆(十分条件)だからフィルタにしかならん(でもやらないよりましだが)
論理的思考が出来ない→論理的文章を書ける訳がない
論理的思考は出来るが論理的文章を書けない=ただのコミュ障 276も多分こっち

本来は論理能力は数学/物理で鍛えられるので、
昔の「最低限理系にプログラミングさせる」方針は概ね間違っていなかったが、
受験産業の結果、記憶力『だけ』で突破する受験特化型馬鹿が結構増えたのと、
そもそもプログラミング自体に数学/物理そのものは必要ないので、
「理系→プログラミング適正あり」のフィルタは迷走気味
とはいえ、「論理的文章を書ける→プログラミング適正あり」フィルタは、さらに酷いと思うけど
2026/03/18(水) 08:40:59.80ID:rmXkchhG0
すげー、このスレで一番論理的思考ができる人じゃん
2026/03/18(水) 10:16:34.98ID:TZQeXjH7H
3行でまとめろ
2026/03/18(水) 11:15:14.34ID:TdcdOneP0
昔は1行で書いてたな
プログラムの話だが
2026/03/18(水) 13:47:40.37ID:kfgCJpmw0
>>307
俺ら世代での「BrokenEnglish」問題が、ゆとりZでは「Broken日本語」問題になった
で、俺は同様に、Brokenでもしゃべった方がマシ、と言ってる
そして、よりによって、一番高く評価してくれた人に噛み付くのは馬鹿すぎ

と、ふと思ったが、もしかしてお前ら、
上記の一行目だけで全てが瓦解し、一瞬で、長文内容と同程度の詳細度で理解可能だったか?
だとすると、俺がお前らを過小評価し過ぎてた事になる
もしお前らの大半が「一行目だけ」で付いてこれるなら、この議論速度で突っ走ってみても良い
(勿論この場合は、通じない馬鹿は全員放置で追加説明もしない)
2026/03/18(水) 13:52:10.82ID:kfgCJpmw0
ちな、>>305訂正
× 十分条件
○ 必要条件
受験は大昔過ぎて素で間違えたわ
まあ、都合よく補完すれば読める範囲ではあるが
2026/03/18(水) 15:09:21.83ID:vVWG3GDF0
地下室の手記
2026/03/18(水) 15:31:18.79ID:yN1oNisL0
292は比例の話をなぜか因果関係の話にしてんのがおかしいね
AがBに比例してるってことから言えるのはBもAに比例してるってことだけで因果関係がどうたらとか何も関係ない
数学的にはY=kXの時にX=(1/k)Yだから逆が言えるのはkが0じゃない時だけとかあんだろうがまあここでは関係ないわな
1行目からおかしいからその後も妙なことを長々言い続けるはめになってる
2026/03/18(水) 15:35:53.95ID:yN1oNisL0
296はなんで「今回は」なんて付けたんだろうなw
そんなものつけなくてもいいどころか、後段を見れば付けない方がいいのにこういうのがついてしまう
なんのかんの言ってもコテハンの事を普段どう思ってたのかがつい出ちゃってるのか、それとも自分の思ってることを言語化する能力が低いのか
どっちにしても奇妙な文章だよ
2026/03/19(木) 12:39:01.05ID:O0X2x0/da
シフトJIS混じりの文字列を扱うには、charと unsigned charのどちらが良いですか?
2026/03/19(木) 12:48:14.25ID:Qz08DmPxp
UTF16に固定しちまえ
2026/03/19(木) 13:49:57.46ID:5jXM7mMO0
>>314
signedの方が良いことって何かあるかね?
317デフォルトの名無しさん (ワッチョイ b56a-L5FI)
垢版 |
2026/03/19(木) 14:45:49.05ID:4hgHJHDE0
>>312
正解w
2026/03/19(木) 15:05:35.71ID:gt0RjN3b0
念のために補足しておくと、 char は signed char とは違う型として区別される。
2026/03/19(木) 16:01:35.62ID:5HS3fMU40
unsignedだと比較がしやすいことはないですか?
2026/03/19(木) 16:02:41.07ID:SacMtX4aa
charの符号の有無は未定義?のようですね
2026/03/19(木) 17:22:48.95ID:UR+Iiml10
>>320
処理系定義ってやつ。
未規定の一種だが、処理系定義は処理系で決めてそれをドキュメントに書いておくことが求められる。
2026/03/19(木) 17:50:04.82ID:UR+Iiml10
Shift_JIS を含む文字列を使うにはたぶん unsigned char が好ましいことが多いと思う。
ただ、有効型に関するルールとして整数型をそれの符号付・符号無としてアクセスするのは許されるという特別扱いがある。
(読み替えは型変換とは異なるので注意。)
つまり必要に応じて同じ文字配列に対して char[] としてアクセスしても unsgined char[] としてアクセスしても構わないので必ずしも最初から決める必要はない。
一貫したほうが分かり易いとは思うんだけど strcpy とかの文字列系の基本的な関数は char で扱ってたりするから……
2026/03/19(木) 21:35:14.78ID:J1XY71+k0
>>322
>有効型に関するルールとして整数型をそれの符号付・符号無としてアクセスするのは許されるという特別扱いがある。
>(読み替えは型変換とは異なるので注意。)
規格の何処?
2026/03/19(木) 21:49:47.46ID:UR+Iiml10
>>323
C99 なら 6.5

> An object shall have its stored value accessed only by an lvalue expression that has one of the following types:
> (オブジェクトに格納された値に対するアクセスは,次のうちのいずれか一つの型をもつ左辺値によらなければならない)
> --------------------(中略)--------------------
> — type that is the signed or unsigned type corresponding to the effective type of the object
> (− オブジェクトの有効型に対応する符号付き型又は符号無し型)

※ 括弧内の日本語は JIS から対応箇所を抜粋
2026/03/20(金) 08:18:02.12ID:dVsV0hme0
>>324
丁寧に ありがとう
2026/03/20(金) 12:19:30.51ID:b6NhfI2V0
算術的に扱わないなら符号はないほうがよいというのが僕の考えで
今回はじめて知ったことですが、charの符号の有無は処理系定義というところが話を曖昧にしてるのですかね
算術的に扱わない場合の文字に符号があることにも違和感があるし、wchar_tもunsigned shortだったので、unsigned charでいくことにします
2026/03/20(金) 12:24:26.97ID:b6NhfI2V0
wchar_tを使っているわけではないです
文字を符号なしと扱うことを参考にするという意味です
2026/03/20(金) 13:06:16.51ID:iXoBkJ/YH
>strcpy とかの文字列系の基本的な関数は char で扱ってたりする
符号の有無が原因だったかどうか記憶が曖昧だけど
警告が出まくってうざいときがある気がする
2026/03/20(金) 13:14:18.39ID:YhTPujH10
実行基本文字集合の要素は char に格納したときに非負で扱えることを言語の規格として保証してるから扱う文字がその範囲内なら char が符号付きかどうかに関係なく負数は出てこない。
逆に言えば負数になったら面倒くさいことがわかってるからこういう規格になってるんだと思う。
2026/03/20(金) 17:08:48.36ID:NagjbLQ80
ただしASCIIに限る
2026/03/20(金) 17:14:10.19ID:9jqfZseO0
C の規格の上では「実行基本文字集合」として文字を提示しているがその文字集合がどのような文字コードで表現されるかは既定しない。
ASCII (またはそれと互換?) は保証されない。

もしもたとえば EBCDIC を採用しているような環境なら char は必然的に符号無しになるね。
2026/03/20(金) 23:20:08.53ID:T171bv6P0
>>326
マヌケ
333デフォルトの名無しさん (ワッチョイ b5cd-2zvD)
垢版 |
2026/03/21(土) 00:45:37.51ID:Tywu3RMI0
符号なしの罠を知ってるかはcの実力を測る試金石ではあるよな
334デフォルトの名無しさん (ワッチョイ bba9-2pC6)
垢版 |
2026/03/21(土) 10:45:44.25ID:CPZyPnYr0
マ抜いてみたが1字しか変わらん。
$ diff 326.txt <(sed 's/ま//g' 326.txt)
7c7
< 算術的に扱わない場合の文字に符号があることにも違和感があるし、wchar_tもunsigned shortだったので、unsigned charでいくことにします
---
> 算術的に扱わない場合の文字に符号があることにも違和感があるし、wchar_tもunsigned shortだったので、unsigned charでいくことにしす
2026/03/21(土) 21:54:40.15ID:J3vuIWx/0
文字種で集計するときに、算術的な処理できて便利です。
2026/03/21(土) 23:11:33.45ID:tYP/a5awa
>>90
そりゃ、算術的に扱う場合も、ロジカルに扱う場合もあるでしょう
2026/03/21(土) 23:13:50.06ID:tYP/a5awa
壮大にアンカミスったけど、直前のレスに対してでした
2026/03/21(土) 23:15:05.79ID:tYP/a5awa
>>335 も僕に対する煽りではないかもね
失礼しました、ごめんなさい
2026/03/22(日) 17:59:49.49ID:2hKizJjM0
基本的に文字列を扱うならcharを使え
2026/03/22(日) 18:26:26.84ID:3tG0rWHEa
tell me why
341デフォルトの名無しさん (ワッチョイ aba9-7xDj)
垢版 |
2026/03/22(日) 19:08:06.37ID:M3MXuE5D0
輝美 (てるみ) にテルミー
2026/03/22(日) 19:32:45.81ID:3tG0rWHEa
そこは照美
2026/03/22(日) 21:43:43.51ID:2hKizJjM0
標準ライブラリが引数をchar *で受けるのも規格のcharの扱いに曖昧さがあるのも同じ理由に因ってる
特に規格の方はこうすることでコンパイラの作者とユーザーの双方に利が出るよう意図的にこうしてる
わざとはっきりさせないようにするのはCの規格によくある「味を残してる部分」なんだから、お前は何も考えずcharを使え
2026/03/22(日) 22:46:32.72ID:VeLWozt10
char が符号付きかどうかが処理系定義なのはアーキテクチャの都合に合わせられるようにするためだ。
(規格制定時にすでにどちらの処理系も存在したので追認したという消極的な理由もある。)
この場合はアーキテクチャに都合が悪いからといってやるべきことが変わるわけではないのだから曖昧なほうが良いなどという論に説得力は感じないな。

C11 で u8 プレフィクスを付けたとき (文字列を UTF-8 とするとき) に char で扱うルールにしたのは失敗だったと認めて C23 から char8_t 型を導入することになった経緯もある。
互換性を大事にする C で非互換な変更をするくらいには文字が負数になるのはろくでもないミスの元だとはっきりしてる。
2026/03/23(月) 13:08:14.92ID:wdN2pFMo0
strcmpの実装をみると、引数はconst char *で比較はconst char *でとするのが大概ですね
2026/03/23(月) 13:08:59.68ID:Y2m4p/F8a
大概というか、いくつかみた中では漏れなく
2026/03/23(月) 13:25:26.49ID:0ed5u03ca
>>345
比較はconst unsigned char *で、の間違いでした^_^;
2026/03/23(月) 13:32:20.67ID:DGwKTx8fp
Cで文字列操作なんかバグの温床になるだけだから開発言語変えるか仕様変えろw
2026/03/23(月) 14:45:03.99ID:5CbFmxEa0
おすすめの言語は何ですか?
2026/03/23(月) 14:59:14.86ID:kZjJats90
Rust
2026/03/23(月) 17:13:12.62ID:kZjJats90
>>347
それはそう。
比較関数では各文字は unsigned char として比較すると規格上明記されている。
2026/03/23(月) 18:00:32.09ID:FDDLemSHa
規格書まで紐解かないとではなぁ…
MSのページだと、strcmpとマルチバイト用の_mbscmpが併記してあって、後者の引数は const unsigned char * なのも紛らわしい
後者はMS拡張だからそうできるのだろうけど
2026/03/23(月) 18:07:37.20ID:FDDLemSHa
_mbscmpのシグニチャは最初の問いの答えだな…
2026/03/23(月) 21:13:53.55ID:nKsWqljT0
文字列リテラルを char の配列であることにした以上は標準の関数の型をそれと合わせるという判断は自然なものだと思うよ。
全体として見ると変な感じだけど個々に見ると妥当な (少なくとも仕方ない) ように見える。
2026/03/30(月) 13:23:23.63ID:ayfEzzLua
K&Rを引っ張り出して読んでみたけど、たしかにcharの符号の有無は機種によるとあり、比較の関数では、引数はunsigned char *の配列として扱われる、とありますね
一度は目を通したはずですが、すっかり忘れていました
というか、初学者のころにはその意味がよく理解できていなかったのだと思います
356デフォルトの名無しさん (ワッチョイ abaa-DZoT)
垢版 |
2026/03/30(月) 14:55:10.23ID:ocsV6cqQ0
C23attributeの話このスレで見たことないんだけどみんな使ってます?
2026/05/15(金) 11:53:46.63ID:0MfJ9N7a0
文字を扱うならcharを使うべき
signed charだのunsigned charだのは1バイトの整数型と思った方がいい
2026/05/16(土) 17:03:17.75ID:Y8cRFx1T0
7ビットでおさまる文字は良いけれど
上位ビット立っている文字種は困らない?
359デフォルトの名無しさん (ブーイモ MM43-yWhV)
垢版 |
2026/05/16(土) 17:30:24.35ID:MrEcfzEPM
お前時間止まりすぎだろ
そんな語り尽くされた話を今気づいたかのように話を始めるのやめろ
2026/05/16(土) 21:33:03.91ID:1z78jWA50
>>357
文脈を読んで。
整数やビットパターンとして扱いたいときの話をしてる。
文字の表現方法に踏み込まない不透明なオブジェクトとして扱える場合なら char でいいよ。
361デフォルトの名無しさん (ワッチョイ 31e9-KnQf)
垢版 |
2026/05/17(日) 05:40:36.26ID:sl2G9Doe0
K&Rの段階でcharはunsigned型と決めてやればよかったのに
362デフォルトの名無しさん (ワッチョイ 412a-kKnA)
垢版 |
2026/05/17(日) 10:28:52.26ID:PKYvqmfr0
俺に言われても
2026/05/17(日) 10:32:24.67ID:g2mY3F5I0
アセンブラのラッパーだから型がいいかげんなのは仕方ないんだよ
2026/05/17(日) 12:31:39.15ID:NJc/Pn5D0
charは8bit型ってことだったんじゃね
2026/05/17(日) 13:02:09.73ID:M7FvOBLK0
>>364
char のサイズは CHAR_BIT ビットだよ。
2026/05/17(日) 21:29:19.37ID:g2mY3F5I0
まあ、CPU毎に違うからな
367デフォルトの名無しさん (ワッチョイ 3185-Yf7n)
垢版 |
2026/05/17(日) 22:41:15.83ID:OSZDhB7K0
charが8bitじゃないCPUなんて今現在市販品であるか?
DSPぐらいだろ
2026/05/18(月) 09:54:36.44ID:5A1Ebijfa
>>357
>>360
u8, i8, char
2026/05/18(月) 12:16:57.49ID:uKn8mFhYp
>>367
要するにCPU依存なんだって自白してるよね?
2026/05/18(月) 14:38:48.31ID:XfPyXw1F0
>>367
ほとんどないってことと規格として決められることは別じゃないかね?
この先も8bitとは限らないわけだし
2026/05/18(月) 14:55:23.71ID:NqZygYzK0
話の流れでK&Rの段階の話だと思ったんだけど
そこ頃からCHAR_BITってあった?
372デフォルトの名無しさん (ワッチョイ 3185-Yf7n)
垢版 |
2026/05/18(月) 14:55:54.44ID:79PPBrmT0
>>369
DSPをCPUとはいわないんたけど
役割違うよね
そんなことも知らないの?
ちなみにどこのカス業界にお勤め?
2026/05/18(月) 15:57:46.69ID:NbVShN5fp
>>372
世間知らずは世にあるCPUのどれだけを知ってるのかw
374デフォルトの名無しさん (ワッチョイ 3185-Yf7n)
垢版 |
2026/05/18(月) 16:24:30.64ID:79PPBrmT0
>>373
お前がCHAR_BITが8じゃない現役CPUを一つあげれば勝ちじゃん
言えない時点で負けじゃん
やっぱカスじゃん
2026/05/18(月) 16:41:03.71ID:PRckj/wB0
>>371
K&R (初版) を基準とするのだとしたら CHAR_BIT は無いが char が 8 ビットとは限らないことは明記されている。
というか主要 (?) なアーキテクチャでのサイズが表で書かれている。
 ・ DEC PDP-11
 ・ Honeywell 6000
 ・ IBM 370
 ・ INterdata 8/32

規格化されて以降の文面では char (1 バイト) の大きさは「アドレスを振ることが可能な単位」であることに意味があるように読める。
2026/05/18(月) 19:46:06.62ID:NqZygYzK0
>>375
そうなんだね
てっきり1Byteは8bitだと思い込んでた
2026/05/18(月) 21:55:45.56ID:3c564FzDa
僕の持ってるK&R2ndの表紙には紙テープを逆コの字に折ってCの文字を表現してたけど、テープは6ビットだったな
2026/05/19(火) 01:09:22.40ID:Ss3L5FPF0
なるほどあれは紙テープだったのか
1バイト6ビットともなるとアルファベットは小文字だけ、記号は一部トライグラフを活用していそうな世界
2026/05/19(火) 08:08:14.85ID:ifCZ5qyh0
>>378
昔は出版用 (紙面用) とコンピュータ入力用が違う表現を持つことも普通だった。
Wikipedia のストロッピングの項目の中に ALGOL68 の異なる表現の例があるのが分かり易い。
https://w.wiki/NbxY#Examples_of_different_ALGOL_68_styles
機種ごとの違いが大きい時代だとダイグラフやトライグラフをプログラミング言語に盛り込むよりは機種ごとのストロッピング規約で運用するほうが自然だったかもしれない。

K&R 初版で言及がある四機種を先述 (>>375) したが、この内で Honeywell 6000 が採用していた文字コード (で表せる文字セット) には波括弧が無かったらしくダイグラフでなんとかしていたらしい。
K&R に説明を入れてないのはその時代にはそういうこともあるというのは説明するまでもない普通のことだったからだろう。
もちろん機種個別のマニュアルには書いてあったと思うけど資料を見つけられない……
380デフォルトの名無しさん (ワッチョイ 4171-aW1T)
垢版 |
2026/05/19(火) 08:50:19.48ID:vS7k2vNm0
>>379
さすがだなあ
1バイトが6ビットのマシンで開発した経験とかあるの?
2026/05/19(火) 09:09:40.19ID:ifCZ5qyh0
>>380
実際にその時代のコンピュータに触ったことはないが、 Scheme (Lisp 系言語のひとつ) に関心ある者として原初の Lisp が実際にはどのように入力されていたのか調べたことがあってストロッピングの概念は知っていた。
個々の機種がどのような文字コードを使っていたのかは今調べた。
2026/05/19(火) 12:59:33.64ID:Ss3L5FPF0
>>379
へぇ~、同じ言語にも訛りで対応とは想像できなかった
2026/05/19(火) 14:20:55.66ID:XEop7MyW0
Cはなかったが36ビットがワードなコンピュータなら触ったことがある
ASCIIは9ビットでクォーターワードという扱いでワード内に4文字入れていた
TSSもあったがバッチ処理はパンチカードで紙テープはそれ以前の時代
2026/05/21(木) 22:14:15.30ID:sThrjq7w0
昔ROM焼いてもらうのに紙テープで持ち込んだ
2026/06/17(水) 21:45:49.47ID:BF9FC81n0
charサイズの話が出ていたけど、1バイトがが8ビットと定義されたのが21世紀に入ってからと言うのに、大いに驚いた。
私は80年代初頭にベーシックマスターJrという機種で入門したのだけど、パーソナルな世界では8ビット以外見たこと無かったので・・・。
それ以外のサイズはどこか遠い世界の話だと思っていた。
そもそもコンピュータは趣味なので業務用機の世界をまるで知らないのだけど、8ビット以外は(今も?)当たり前なの?
それでもコードを使い回せるC言語もすごいなあ。
2026/06/18(木) 19:24:17.43ID:uAQWbfEk0
漢字も一文字1キャラクターで扱える言語があったような
2026/06/19(金) 00:12:24.64ID:5VF0kmgE0
MSX-BASICでは1バイト文字コード0x80以降に割当てされた漢字や罫線、トランプ記号がそのまま扱えたね
パソコン自体の規格であり、キーボードからの直接入力も可能、GRAPHキーと組合せて押下H/M/S/¥
が時/分/秒/円に対応等だ
2026/06/19(金) 00:36:28.72ID:Kwk/A3Jw0
松下だっけか?力入れてたの
389デフォルトの名無しさん (ブーイモ MM62-VrtN)
垢版 |
2026/06/19(金) 20:50:35.23ID:tVA1IlDUM
>>385
ネットワークの世界だと7ビットだったからな
2026/06/19(金) 21:14:57.02ID:v0lFF/lo0
>>385
きっと嘘だと思う
どうしても議論に負けたくなかったとかなんじゃね
2026/06/19(金) 21:28:59.73ID:Kwk/A3Jw0
初期のパソコン通信では使用する端末の制約で
漢字こそ扱えなかったが、半角カタカナは扱えてたよ。
その性でujisとは相性が悪かったな。
2026/06/20(土) 08:49:42.81ID:S5q+oDl70
8 ビットを一塊にすることを明瞭に表したいときのためにオクテット (octet) という単位があって、ネットワーク系の規格では今でも使われてる。
新しいところだと HTTP/2 あたりでも。
https://datatracker.ietf.org/doc/html/rfc9113
1 バイトが 8 ビットとは限らない時代のなごりだね。

ネットワーク系ではたぶん割と初期から 8 ビットを単位にしてたと思うけど 1 ビットをパリティに使ったりとかで全体をデータ用には使えなかったりはした。
393デフォルトの名無しさん (スフッ Sd62-qBjn)
垢版 |
2026/06/20(土) 12:06:59.94ID:rzlVrPJ7d
4bitCPU全盛の頃は既に
1byte=8bitsという概念だったのだろうか
4004の機械語で具体的に解説してくれ
2026/06/20(土) 12:20:10.17ID:99MORhoY0
他でやれよ
2026/06/20(土) 12:40:16.87ID:xfVhrEnY0
4bitCPU時代にはC言語は存在しなかったんじゃね
396デフォルトの名無しさん (ワッチョイ 6d70-VrtN)
垢版 |
2026/06/20(土) 18:58:47.28ID:bhwCfwH30
UNIXはワークステーションだからな
2026/06/20(土) 21:28:53.98ID:onhoWd/h0
PDP11:1970〜
i4004:1971.11.15〜
C言語:1972〜
2026/06/20(土) 21:41:37.61ID:lwGjS9LT0
4004用のosはなかったと思う
osのない環境でコンパイラは無理ではないか?
399デフォルトの名無しさん (ワッチョイ 6d70-VrtN)
垢版 |
2026/06/20(土) 21:46:56.07ID:bhwCfwH30
C言語のint型は16ビットだった
標準化以降は環境依存ではあるが、short int型と明記することになった。

なんかパソコンを前提としたCPUの話は違和感しかない。
2026/06/20(土) 21:51:42.40ID:lwGjS9LT0
intのサイズはCPU依存だったと思う
2026/06/21(日) 08:24:50.36ID:rK7+Lw+D0
>>398
PCしか知らないゆとりか?
PCのセルフが例外的であって、PC以外ではほぼクロスだぞ
2026/06/21(日) 08:47:01.48ID:UodCcXrk0
4004のクロスがあるなら示して
2026/06/21(日) 09:11:43.73ID:Fn1WS7Eh0
>>402
こういう噛み合わないことを言い始めるのを見るとイライラするから指摘しておくが、文脈を読んで。
>> 401 は「OS のない環境で」ということに対してそんなことは理由にならんという主旨で書かれてる。
4004 のクロス開発環境が実在するかどうかは重要ではない。
2026/06/21(日) 09:20:35.87ID:UodCcXrk0
4004って1981年には製造終了してますけど
405デフォルトの名無しさん (ワッチョイ 5f7a-AxUA)
垢版 |
2026/06/21(日) 09:54:46.84ID:6BMlAxTG0
> 4004シリーズLSIの開発が終了し,1970年11月下旬に帰国した。
>私の本来の仕事,プリンタ付き電卓の開発が始まった。

> ただ,プログラミング言語の開発までは手が回らず,
>プログラミングには機械語を使用した。インテルでは,
>電卓用プログラムの完成後にROMのマスク情報をインテルに
>渡す手段を用意できなかった。そこで,プログラムの
>マシンコード(命令)や定数に相当するROMのバイト情報を
>ROM内のマスクに対応する位置にマークを付け,ROMのマスク
>情報をインテルに送ることを決めた。

> 最終的な電卓用プログラムを作成し,1971年3月に完成した。
>プログラムの総容量は1Kバイト以内だった。電卓の応用
>プログラムは約250バイト,電卓向けマクロ命令用プログラムは
>約400バイト,電卓向け言語用インタプリタとキーボード制御と
>プリンタ制御は約350バイトとなった。平方根演算機能は
>オプション機能とした。

https://xtech.nikkei.com/it/article/Watcher/20070702/276468/
嶋 正利
406デフォルトの名無しさん (ワッチョイ 5f7a-AxUA)
垢版 |
2026/06/21(日) 09:57:09.11ID:6BMlAxTG0
当時4004で使えた開発ツールはMSのマクロアセンブラくらいです。
407デフォルトの名無しさん (ワッチョイ 5f11-In1B)
垢版 |
2026/06/21(日) 20:25:15.39ID:tvGXI5xi0
>>400
それはあなたが知らなかっただけ
ANSIではint型は32ビットではなかった
408デフォルトの名無しさん (ワッチョイ 5f11-In1B)
垢版 |
2026/06/21(日) 20:25:54.26ID:tvGXI5xi0
>>400
それはあなたが知らなかっただけ
ANSIではint型は16ビットではなかった
409デフォルトの名無しさん (ワッチョイ dfe2-VAvK)
垢版 |
2026/06/22(月) 15:29:32.59ID:gBe6h/Yh0
i4004でインタプリタとかマクロとか既にあったんか
ていうかi4004がPDP11より後なのはびっくり
410デフォルトの名無しさん (ワッチョイ 5f1e-In1B)
垢版 |
2026/06/22(月) 20:04:51.60ID:2VnhilhX0
C言語ができる前のUNIXの話を持ってくる人間は意味のない話をしていると思う。
2026/06/23(火) 15:33:52.90ID:+zGSD+Kp0
どんなにがんばっても1バイトを7ビットってことにするのは無理そう
2026/06/23(火) 18:11:47.04ID:CCEweHpZ0
CPUが7bitレジスタ仕様でないと作る意味がなさそう。
2026/06/23(火) 18:58:44.74ID:9yxUF3mx0
当時はデータ部7ビットの通信データとCPUが扱う8ビットのデータどちらもバイトと呼べて楽でしたよ
2026/06/23(火) 19:41:21.78ID:+Smxcnk50
いきなり通信プロトコルの話?
2026/06/24(水) 00:43:27.39ID:biqyVSqi0
はい、1バイトのビット数の話題が出ていたようでしたので、それに関わる通信処理絡みの話でした
2026/06/24(水) 08:20:52.68ID:7B+NjynI0
C の規格としては、昔はともかく ANSI 以降は 1 バイトは 8 ビット「以上」ということになってる。
もしハードウェア的に 7 ビットが単位になるようなアーキテクチャだったら C の規格に準拠するには 2 つまとめて 14 ビットを 1 バイトという扱いにするしかない。
規格準拠を諦めたほうが楽だと思うけどね。
417デフォルトの名無しさん (ワッチョイ 5f9b-In1B)
垢版 |
2026/06/24(水) 20:28:59.61ID:hOfnPwRy0
>>416
数値でも最上位の1ビットを符号にしている時点で7ビットでやりくりしていると認めないと
2026/06/24(水) 20:51:46.71ID:LCSsQsND0
虚数も扱えると良いね
2026/06/24(水) 21:17:01.38ID:tIiwUevU0
C に虚数型 (_Imaginary) はあるよ。
オプショナルな規定だから無い場合もあるけど。
2026/06/25(木) 00:28:56.65ID:9cBNw1U0a
>>417
正負を合わせたら8ビットでは
421デフォルトの名無しさん (JP 0H7f-VAvK)
垢版 |
2026/06/25(木) 13:19:30.59ID:wlWeKQvTH
N81XとかN71Eとかかな
2026/06/26(金) 17:55:59.24ID:QQm5oaei0
チートエンジンのエンティティリストのアドレスとオフセットってなんですか?
この二つを足すとポインターアドレスになりゲームを再起動しても普遍のアドレスになるみたいなんですけど
423デフォルトの名無しさん (ワッチョイ 5f1c-XTBv)
垢版 |
2026/06/26(金) 20:07:01.29ID:punniL7v0
AI時代に国語力のないやつ
2026/06/26(金) 20:07:25.85ID:GTFUrg+O0
チートエンジンてこれのことかな?
https://www.cheatengine.org/
うさみみハリケーンと OllyDbg で満足してたから知らなかった……
よいソフトを知った。ありがとう。

メモリって malloc とかで確保するわけだけどそれって起動するたびに違うアドレスだったりするでしょ。
でもその確保した中でのメモリのレイアウト (それぞれのデータのオフセット) は普通は同じようにする。
だからベースアドレスとオフセットの組で扱えば便利だねってことだと思う。
2026/06/29(月) 12:30:45.23ID:GErfEMVP0
セグメント、オフセットという話なのか?

リアルモードで動くプログラム久しぶりに聞いた
426デフォルトの名無しさん (ワッチョイ 4d17-oVTx)
垢版 |
2026/06/29(月) 13:12:10.08ID:mUiv8gBt0
アドレスのランダマイズ対策だろ
ゲーム改造していきりたいキッズだから無視でいい
2026/06/29(月) 13:15:51.44ID:mx9k7qx20
ツールのドキュメントの頭のほうにサポート対象が Linux, Mac, Windows って書いてあるでしょ。
いずれもリアルモードでは動かない。
2026/06/29(月) 13:17:21.00ID:mx9k7qx20
ランダマイズというわけでなくてもポインタを辿る必要のあるデータ構造というのはごく普通にある話だろう。
2026/06/29(月) 13:37:26.74ID:J4prsIXXa
仮想メモリでもセグメント(と言っても間接になるけど)とオフセットだろ
2026/07/01(水) 23:32:17.69ID:xfe/unY10
>>417
1バイトの中に符号を加えてはならないという決まりはない
431デフォルトの名無しさん (ワッチョイ 4d61-d4sa)
垢版 |
2026/07/02(木) 03:51:24.19ID:4sqxhRzV0
>>430
正確には負の数を表現するときに1ビットを使うというだけの話
2026/07/02(木) 17:08:32.56ID:/9LRQjrh0
その辺はCPUが提供する命令セット次第
433デフォルトの名無しさん (ワッチョイ 4dd8-d4sa)
垢版 |
2026/07/02(木) 17:50:38.25ID:4sqxhRzV0
CPUが提供するという言い回しが奇妙
2026/07/03(金) 07:19:12.81ID:2t9Z1Cme0
まあ、キャリーフラグやなんやら考えたらCPUが提供するってのはあながち間違いじゃ無いからねぇ
2026/07/03(金) 10:02:27.87ID:YR/4zdQx0
符号つき整数の内の 1 ビットが符号ビットであるというレイアウトは C の仕様として保証してる。
それを各 CPU の命令セットの範囲内でどう実現するかは知らんけど。
436デフォルトの名無しさん (ワッチョイ 4dfe-d4sa)
垢版 |
2026/07/03(金) 17:53:14.39ID:zLCCyepo0
>>435
CPUそのものにあるかどうかは別にして3D計算だと負の数専用の命令やレジスタは存在しているんじゃないのか?
437デフォルトの名無しさん (ブーイモ MM22-oVTx)
垢版 |
2026/07/03(金) 19:20:07.64ID:AWa0JhQyM
その想像で存在を仮定して質問するのはどういう知能なの?
438デフォルトの名無しさん (ワッチョイ 4dfe-d4sa)
垢版 |
2026/07/03(金) 20:40:19.52ID:zLCCyepo0
C言語の仕様とハードウェアは関係ないからな
2026/07/03(金) 20:41:58.65ID:t8AqdbS00
コンパイラがハードウエアと無縁だなんて、初めて聞いた
2026/07/03(金) 20:44:55.83ID:TaTerZcza
何のための2の補数…
2026/07/03(金) 22:07:27.54ID:YR/4zdQx0
>>436
ここでは C の仕様の話であることを強調する意図で CPU のことは知らんと述べた。
命令セットの中に有ろうと無かろうと符号つき整数の内の 1 ビットは符号ビットだ。
2026/07/04(土) 05:14:02.89ID:JSDYVJp40
また1バイトは7ビットだって言ってるキチガイがいるの?
443デフォルトの名無しさん (ワッチョイ 5ee2-tRrs)
垢版 |
2026/07/04(土) 13:25:42.16ID:C/MUGRLI0
C言語にキャリーフラグの状態を取得する関数が無いのはなぜですか?
2026/07/04(土) 13:40:34.51ID:DKWxpQGc0
自分で作る
Cに出来ないことはない
2026/07/04(土) 14:20:41.45ID:q0Ja95980
signed と unsigned があるやん
で、どちらも8ビットだよん
446デフォルトの名無しさん (ワッチョイ 4d4c-d4sa)
垢版 |
2026/07/04(土) 14:21:22.62ID:YYWloYLh0
>>444
できることと効率がいいかどうかは別物
2026/07/04(土) 16:02:11.99ID:DKWxpQGc0
効率の良い方法でどうぞ
2026/07/04(土) 16:10:52.16ID:q0Ja95980
>>443
C#とかさ、オーバーフローしたらエクセプション出して落ちるけど
あれ、地味に要らない機能だよなって思う
449デフォルトの名無しさん (ブーイモ MM22-oVTx)
垢版 |
2026/07/04(土) 17:01:01.65ID:u2S8KajNM
>>443
標準になってないが普通コンパイラがintrinsic提供してる
高速な多倍長整数を自作できてようやくC言語中級レベル
450デフォルトの名無しさん (ブーイモ MM22-oVTx)
垢版 |
2026/07/04(土) 17:02:26.84ID:u2S8KajNM
>>448
それはお前がエンジョイ勢だから
2026/07/04(土) 19:21:23.15ID:DKWxpQGc0
>>449
足し算引き算はなんとか
かけ算も頑張ればできそうな
割り算は、ちょっとやっかいかも
2026/07/05(日) 10:21:02.80ID:w8NJleMZ0
かつてubasicというソフトがあって、
今もあるかは調べていないが、
多倍長演算が出来て、結構使える。
πを1000桁まで計算するサンプルが掲載されていた。
2026/07/07(火) 00:16:27.28ID:73yWDig30
開発効率より実行速度命やろ
2026/07/07(火) 00:19:47.04ID:FD/zZiF10
今でもCに固執する変態は実行速度命
2026/07/07(火) 08:59:20.45ID:wvI2595C0
世界を変革しているのは変態パワーだぞ
2026/07/08(水) 17:38:39.44ID:dyZTLEHZH
>>439
C言語の仕様は抽象マシンにおいてどう動くかという形でしか定められていない
コンパイラはそれを環境に合わせて自由に実装することが許されているので、コンパイラの仕様はC言語の仕様では定められていない
2026/07/08(水) 17:49:50.07ID:dyZTLEHZH
>>431
負の数を表現する時ではなく、表現できるようにする時やな
ここは重要

>>440
C言語において2の補数はC23で初めて取り込まれた仕様で、あくまで現代ではほぼ全てのハードウェアがそうだから前提にしましょう、という話でしかない
ハードウェアのためにそうなったのではなくて、前提にしても問題ないならそれを前提に機能が作れるよねと、それだけの話だから
2026/07/09(木) 22:28:26.34ID:t5kHx1570
>>439
C言語の規格仕様とコンパイラの仕様が別物なので、コンパイラの仕様がハードウェアの仕様といくら密接に関係していても、C言語の仕様がハードウェアと密接に関連していることにはならない
2026/07/09(木) 22:43:55.18ID:oZjOez5s0
>>438 には「C言語の仕様」と明確に書いてあるのに >>439 は「コンパイラ」の話に一足飛びで (話がそれたとか言うレベルではなく) 置き換えてる意味不明ムーブなので意図的な荒らしだと思ったんだけどこのスレにいるような人でも区別をつけてないってことがあったりするもんなの?
2026/07/09(木) 23:08:13.91ID:4TCw632z0
高級アセンブラだと考えています
2026/07/09(木) 23:42:33.36ID:t5kHx1570
>>460
結構組み込みの人の本なんかにも書いてあるんだけどそれもちょっと違って、アセンブリ言語はハードウェアに密接に関係し、データをCPUの提供する型でしか扱えない
例えば文字列リテラルやオブジェクト、配列のような概念はアセンブリ言語には存在しない
2026/07/09(木) 23:45:34.74ID:4TCw632z0
そういうものが使えるアセンブラだと考えれば良いです
2026/07/09(木) 23:49:02.73ID:4TCw632z0
C言語でいう配列って、先頭アドレス情報くらいでしょ。要素数さえ情報として持っていない
464デフォルトの名無しさん (ワッチョイ a7ed-or09)
垢版 |
2026/07/09(木) 23:49:12.67ID:xJ9qw/+T0
考えるのは自由
どうでもいいから心のなかにしまっとけ
2026/07/09(木) 23:55:25.05ID:4TCw632z0
みんな言ってない?
2026/07/09(木) 23:55:35.67ID:t5kHx1570
>>462
そんなことを言い出したらどんな高級言語でも「そういうものが使えるアセンブラ」になる

>>463
典型的な誤解で、配列型は存在するし sizeof(arr) でサイズを取得できる
typedefで特定の型の要素を特定の数持った配列型に別名をつけることもできる
ただ、代入など特定の式で扱われる際にポインタにdecay(減衰)するというだけ
C言語では引数の処理を代入と同様に扱うことを定めているので、関数を跨ぐとdecayする
2026/07/10(金) 00:06:59.21ID:WGwadDH+0
例えば整数型変数を用意して、それをバイト単位で切り刻んで加工出来る。
実際に行う際は、そのCPUがどのようにメモリー配置するのかの知識も必要になる。
よく切れるナイフや包丁は役に立ちます。怪我もしやすいですが。
2026/07/10(金) 00:19:43.02ID:bAT5n0dl0
>>467
C言語はコンパイラによって最適化されるので、コードからメモリ配置を把握することはできない
一見するとメモリに書き込むように見えても、実際はレジスタ上から動かないこともある
2026/07/10(金) 00:36:53.20ID:Ewo5Gkzz0
メモリーに書き込まないと、
他の処理とやり取りできませんよ
2026/07/10(金) 00:43:14.99ID:Ewo5Gkzz0
配列にサイズ情報があれば
領域破壊も避けられるんですけどね。
C言語は100個用意してから200個でも格納できます。
出来ないようにしてくれる方が
バグは減ると思いますよ。
あとから見つけるのは、結構大変です。
2026/07/10(金) 02:30:10.30ID:bAT5n0dl0
>>469
レジスタにあれば同じプログラムの中で扱うのに不都合はないんですよ
詳しくはまた調べてみてくださいね

>>470
配列にサイズ情報はありますよ
領域破壊が起こるかどうかとサイズ情報は関係なくて、サイズ情報があってもガードする機構がなければ領域破壊は起こります
実際に sizeof(arr) を試してみるとわかりやすいですよ
472デフォルトの名無しさん (ラクッペペ MM8f-Q45n)
垢版 |
2026/07/10(金) 03:19:17.97ID:CU+o4MMSM
コンパイル時にサイズがわかっているって話(sizeofによるサイズ)と
実行時に配列のサイズを知ることが出来るって話がごっちゃになってると思う
2026/07/10(金) 03:23:08.09ID:bAT5n0dl0
>>472
君こそ実行時とコードがごっちゃになってる
実行時は全部機械語だってことはわかっておかなくちゃね
2026/07/10(金) 03:23:53.22ID:bAT5n0dl0
機械語で型のサイズがわかる型っていったい何なんでしょうか(笑)
475デフォルトの名無しさん (ワッチョイ a7ed-or09)
垢版 |
2026/07/10(金) 07:00:38.22ID:6etQgYjO0
キチガイがいますね
2026/07/10(金) 10:02:40.20ID:WGwadDH+0
初心者か苦手なポインターって、メモリー内の位置を指し示して、
そこを自由に書き換えます。
他の言語では難しい、結構危ないことやってます。
2026/07/10(金) 10:06:38.56ID:WGwadDH+0
a[16]って宣言した配列に、
a[20]で代入してもエラーにならない
これも他の言語にはない機能です。
2026/07/10(金) 12:21:49.00ID:dsHsOzOJp
アセンブラ使いが楽する為にある言語だからねぇ
479デフォルトの名無しさん (ワッチョイ dfe2-ap5y)
垢版 |
2026/07/10(金) 17:11:02.50ID:b/cISs1+0
関数の引数のときに問題が起こるけど
全ての関数の引数に要素数を追加すれば解決するし
昔と違って最近は標準ライブラリも改善されてる
2026/07/10(金) 18:05:16.00ID:bAT5n0dl0
>>477
そもそもC言語の添字表記はポインタ演算ですよ
decay発生後です
2026/07/10(金) 18:05:57.87ID:WGwadDH+0
それはチームなりサイトで決めれはそうでしょうが、
どこでも通用する共通なものではないよ。
そんな面倒なことするくらいなら、❌❌使えって返されるだけだし
2026/07/10(金) 18:09:19.19ID:bAT5n0dl0
>>481
いいえ、言語仕様ではっきり定められています
それもK&Rの時点からそうです
2026/07/10(金) 18:12:02.76ID:bAT5n0dl0
>>478
それは割と無理がある
その論法では同じことがPythonにもJavaScriptにも言えてしまうし
2026/07/10(金) 18:13:05.60ID:bAT5n0dl0
だから >>477 のこれは上は配列型、下はポインタでやってることが違う
485デフォルトの名無しさん (ブーイモ MM7f-or09)
垢版 |
2026/07/10(金) 18:16:43.66ID:41VzjYgIM
語り尽くされた話を意気揚々と語り始める老人たち
2026/07/10(金) 18:23:04.57ID:AcLw8I47p
>>483
プログラミングの歴史でも読んでから出直してね
2026/07/10(金) 18:28:49.25ID:bAT5n0dl0
>>486
オマエガナーw

全てのプログラミング言語は最終的に機械語に直されるんだよ
だからC言語が「アセンブラ使いが楽する為にある言語」なら全部そうなる
プログラミング言語で最も重要な、抽象化について理解してないんだから
2026/07/10(金) 18:31:14.50ID:bAT5n0dl0
>>485
その基礎中の基礎がわかってない奴がいるからな
2026/07/10(金) 18:57:35.65ID:gSE8foYbp
>>487
頭沸いてんねw
2026/07/10(金) 20:46:31.07ID:bAT5n0dl0
>>489
罵倒はできても基礎の基礎が理解できないってことが露呈するばかりw
2026/07/10(金) 20:56:24.85ID:bAT5n0dl0
C言語はハードウェアの詳細を抽象化した言語だから、アセンブリ言語を見て「こうなるんだ」と思ってるのは間違いなのよ
そのアセンブリ言語はあくまで「特定のアーキテクチャで」「特定のコンパイラで」「特定のバージョンで」「最適化の度合いによって」選択された実装に過ぎない
C言語が保証するのは、各構文や型、修飾子などが提供すると定めている機能までであって、それは他の高級言語とも何ら変わることはない
それ以上の実装詳細は全て実装側に任されている
2026/07/10(金) 20:59:54.19ID:bAT5n0dl0
だからC言語はアセンブリを楽に書くためのものではなくて、あくまで抽象化されて提供された機能から必要な挙動を生み出すものでしかない
それ以上のことをやりたければ自分でアセンブリを書きなさいという話になる
2026/07/10(金) 23:11:18.56ID:ChS+M0sl0
K&Rは昔のC言語の雰囲気が分かることくらいしか価値がない
2026/07/10(金) 23:13:05.90ID:H00VaKeq0
C言語インタプリタもあるしな
2026/07/10(金) 23:32:27.70ID:bAT5n0dl0
>>493
まあ、設計者自身が書いてるから流石に設計思想はわかりやすいよ
ただ、仕様は古すぎるし今のC言語では認められていない、あるいは非推奨な書き方も多いから最初に読む本じゃないね

>>494
存在を忘れてたけどそうね、あれもC言語の仕様には反しない
昔使ったことあるわ懐かしい
2026/07/10(金) 23:40:54.80ID:rknvXQiN0
> a[16]って宣言した配列に、
> a[20]で代入してもエラーにならない
> これも他の言語にはない機能です。

未定義動作と定められてるものをC言語の機能って言っちゃう馬鹿さ加減はどうなんだ?
2026/07/11(土) 00:14:44.62ID:uFxo8p5G0
構造体メンバーの最後に配列をa[0]で宣言しておいて、使うときに適当なサイズに拡張する、なんて使い方はよくやる
gccなら使えたはず
2026/07/11(土) 00:16:39.93ID:uFxo8p5G0
前に別人が書いてるように
配列の要素を越えようとポインター操作なんで問題ないそうだ笑
2026/07/11(土) 01:14:17.14ID:MVFP96vx0
> 構造体メンバーの最後に配列をa[0]で宣言しておいて、使うときに適当なサイズに拡張する、なんて使い方はよくやる

処理系の拡張と言語仕様の区別がつかない人かな。
2026/07/11(土) 01:26:23.85ID:uFxo8p5G0
突っ込む所が全然間違えている
要素が0の配列に何故目か向かないのか?
2026/07/11(土) 08:07:55.74ID:DjtvjMhd0
>>497
そういう用途のために C99 以降はフレキシブル配列メンバ (flexible array member) が導入された。
言語仕様内で出来る方法があるときにあえてそうでない方法をとるべきではないだろう。
2026/07/11(土) 15:17:14.92ID:IPzkocmA0
Cに関しては言語仕様は後付けだから
おまえらが今使ってるC言語になるまで
どんだけ掛かったのかってな
今では危険なアクロバチックな使い方も
昔は最終的にアセンブラで辻褄合ってれば
無問題だったんだよ
2026/07/11(土) 15:22:37.21ID:MVFP96vx0
> 今では危険なアクロバチックな使い方も
> 昔は最終的にアセンブラで辻褄合ってれば
> 無問題だったんだよ

コードが再利用される想定がないから無問題なんて軽々しく言えちゃうわけよ
2026/07/11(土) 16:03:03.20ID:fEsA3MX60
んー、あんま意味無いやりとり続いてると思うけど、

>>502は正しいよ。実際、flexible array memberについては完全にその通りだし。
> C99以前のコンパイラの中には、ゼロ長配列 Element items[0]; を可変長配列メンバーの代わりとして許容するものがありました。これは標準にはありませんが、歴史的に使われてきたトリックです。しかし、可変長配列メンバーが標準化された今、この方法は非推奨です。
> https://iifx.dev/ja/articles/457531504/%E5%8B%95%E7%9A%84%E9%85%8D%E5%88%97%E3%82%92%E8%87%AA%E5%9C%A8%E3%81%AB%E6%93%8D%E3%82%8B-c%E8%A8%80%E8%AA%9E%E3%81%AE%E5%8F%AF%E5%A4%89%E9%95%B7%E9%85%8D%E5%88%97%E3%83%A1%E3%83%B3%E3%83%90%E3%83%BC%E3%81%A8offsetof%E6%B4%BB%E7%94%A8%E8%A1%93
> properties_table[]ではなくproperties_table[1]と書いてるのは、おそらくC99より前のバージョンのC言語ではサイズ0の配列の宣言ができなかったらしいので、その辺の名残りでしょう。
> https://mem-archive.com/2018/08/10/post-529/

> 高級アセンブラ (>>460)
とはよく言われてるけど、お前らの理解が間違ってて、やりとりがナンセンスになってる。
これはC言語自体が、という「言語/文法」の事ではなく、
『C言語では記述が一対一でアセンブラに落ちる』ので、
C言語は高級アセンブラ「としても使える」という、「用法/運用」のことを言ってる。
例えば c = a + b で最適化前なら、
LD/LD/ADD/STとか、勿論CPUに依るが、お前らがそのまんま書くだろうアセンブラが出力される。
他の言語では、これはありえない。
(Cでは、書いてない事は何も実行されない)

逆に言うと、どういうアセンブラに落ちるのか、意識しながら書く事も必要で、
(アセンブラではどうとでもなるが) myStruct->myFlexbleArrayMember の表記を使いたかった時に、
みんなそれなりにやってたのを『後付で』標準化しました、って事でしょ。

>>503
お前はC言語を使わないほうがいい。
C言語に於いては、妥当な使い方で、バグがなければ、それでヨシとされてる。 flexible array member もこれ。
デタラメな使い方でもバグがない事を検出してくれ、は、他言語の範疇。
(ていうかお前多分釣りだろ?迷惑だから止めてくれ)
2026/07/11(土) 16:32:59.92ID:DjtvjMhd0
検証 (処理系の挙動の調査) に手間をかけるくらいなら言語仕様になるべく沿う方が現代的には楽だが、昔の処理系ではどうコンパイルされるかかなり意識可能であったことも、今でも必要であれば言語仕様外の挙動に依存することはそれなりにあるのも正しいと思う。低レイヤの細部を全く制御しないなら C を使う意味がない。
ただ、十分に検証しているか疑わしいと思うことも多いし、言語仕様に逆らうなら言語仕様に逆らっていることに自覚的であるべき (その前提として言語仕様はよく理解しておくべき) だし、逆らったことはドキュメントやコメントとして書いておいて欲しいと思う。
2026/07/11(土) 17:39:24.61ID:fEsA3MX60
>>505
> 言語仕様に逆らうなら言語仕様に逆らっていることに自覚的であるべき
具体的には何の事を言ってる?
504で挙げた連中なら、「その時の一般的記法」「コメントに残す」はやってたようだし、
その批判の対象から(意図的に)除外されてるように見えるが?

> ただ、十分に検証しているか疑わしいと思うことも多いし
多分逆。
(今も再利用されるようなコードなら)その人が書いた環境では十分にテストもされ、バグもなかった。
ただそれを「Cコード」として他環境に持ってきたとき、
未定義/コンパイラ依存部分に当たってたら、動作するとは限らないので、
標準化して『どんな環境でも』動作するようにしました、というわけだろ。
2026/07/11(土) 17:39:46.74ID:fEsA3MX60
これは、この「Cコード」は動作します、という受け取り方がマズいって事なのだと思うよ。
それは「コンパイラにはバグがない」という大前提であって、
実際はそうでもないので、製品としては「実行バイナリ」に対してのテスト/保証しか出来ない。
(コンパイラのバグに当たっても製品の責任になるし、
テストも「Cコード」ではなく、Cコードを特定環境でコンパイルした「実行バイナリ」に対して行われるので、
そもそも「Cコード」の正当性がテストされているわけではない)
ただこれでは勿論困るので、
「コンパイラにはバグがない」時に『正しい』「Cコード」ならどんな環境でも確実に動作するよう、
規格化/標準化が行われている。
だから言語として出来る事は『正しい』事を強制する事であり、
例えばC#では、未初期化の変数はSyntaxErrorとなる。
しかしCの時代にはCPUは非力だったし、「初期化もタダではない」ということで、
malloc/callocのどちらを使うかはプログラマに任せてある。
それが嫌なら、Cの思想と相容れないのだから、気に入った他言語を使えばいいだけ。

ちなみに「Cコード」がテスト出来てるかについては、コンパイラグループが最適化を好き勝手にやった結果、
(勿論それまで動いていた)Linuxが動作しなくなって、リーナスがブチ切れた件が、20年程前に有ったろ。
結局、論理的にも、「実行バイナリ」に対してのテストしか出来ないんだよ。
(勿論最適化無しならその時にも動いたのだから、一般的にはコンパイラのバグとされるが、
この件についてはリーナスが折れた《うろ覚え》)
2026/07/11(土) 18:29:29.40ID:MVFP96vx0
> >>502は正しいよ。実際、flexible array memberについては完全にその通りだし。


Flexible Array Memberが規格化される前は要素数を空に書けなかったので

struct Packet {
int length;
char data[1];
};

要素数に1とか書いて今でいうFlexible Array Memberと同様の使い方をすることを Struct Hack とか呼んでたけど、現代のコンパイラは未定義動作を積極的に最適化に利用するようになったので要素数を1と定義した配列の[0]以外にアクセスするのは未定義動作となるため結果はどうなるか分からないいわゆる「鼻から悪魔」なので Struct Hack を使ってるコードは今どきの処理系では再利用性は低くなってしまっている。
gcc なんかでは救済措置として不具合を出さないためのコンパイルオプションが用意されてたりもするけど環境依存の話でしかないし C言語として正しいわけではない。
2026/07/11(土) 20:41:08.59ID:fEsA3MX60
>>508
やはりお前はCを使うべきではない。それだけ。

> 今どきの処理系では再利用性は低くなってしまっている。
だから何?
> gcc なんかでは救済措置として不具合を出さないためのコンパイルオプションが用意されてたりもする
当たり前だろ。

書く側は、その時その環境で動作が正しい事しか保証出来ない。
これはコンパイル言語では全てそう。勿論Rustでも。(俺はお前がRust信者=キチガイだと見ている)
だから、流用する側が、どういう環境で動作していたか、どの環境でテスト済みかを判断する必要がある。

これが嫌なら、JavaScriptと同様に、「コード自体」をテスト対象とし、
どんな環境(ブラウザ)でも動く事をテストするしかない。(そしてこれはJSerに取ってはかなり苦痛になってる)
これを保証する為、JavaScriptは、例えばindexOfですら、動作を糞みたいに細かく仕様として決めてる。
対して、それ以外の言語では、有ればそのインデックス、無ければ-1、で完全に間に合ってるのにだ。

同様に、「あらゆる環境で、(未来含めた)あらゆるコンパイラで、このコードは、動作する」事を保証出来ると思うのなら、
やってみればいい。がんばれ。

なお、
> 配列の[0]以外にアクセスするのは未定義動作となるため
余程おかしなコンパイラではない限り、実装は同じ(配列頭に個数分のアドレスを足すだけ)なので動く。
だからみんなそれで理解出来てた。

結局、Cは、論理イメージのみでプログラミングする奴には、向いてない。
(基本的に論理イメージだけで出来るのは、Java)
2026/07/11(土) 20:41:46.06ID:fEsA3MX60
そして
> C言語として正しいわけではない。
だから本当に何?というか本末転倒だろ。
お前は何の為にコードを書いてる?
「再利用出来る糞コード」を目指すのはRustだぞ。
Cは、「俺が処理したいように書く」のであって、言語に足なくてもやる、だから flexible array member になった。
結果的にそれが素晴らしいから再利用されるのであって、あくまでそれは結果だ。目的ではない。
気に入らない部分が有るなら、流用する側が流用時に書き換えればいいだけ。
2026/07/11(土) 21:19:55.73ID:MVFP96vx0
Struct Hack では未定義動作の問題があるが機能としての需要が認められて flexible array member が C99 に盛り込まれたことが理解できないんだなあ。
未定義動作を屁のように考えてる人は程度が低すぎるので業務でコード書かないでほしい。
2026/07/11(土) 21:40:18.56ID:fEsA3MX60
>>511
多分お前は根本的に理解出来てないのだろうが、一応言っておくと、

・flexible array memberなり、Struct Hackであれ、そのコードで動作しないコンパイラは多分無い。
・Cプログラマが直感的に予想する通りに動くコードが得られる記法だった。
・一般的に最速最小メモリの実装になるので、それを使う人が多発した。
・結果、後付で「今までと同様に動くように」仕様化された。

のであってな、[0]であれ[1]であれ、元々動いてるコードが、仕様化されただけ。
PHPにそれが存在してるのだから、モロクソ業務で使われてるし、誰も気にしてないだろ。
多分Linux等でも普通に使われてると思うぞ。だってそれが最速最小メモリだし。

まあ、Cには正義マンは要らないってことだよ。
2026/07/11(土) 21:46:24.37ID:fEsA3MX60
>>511
付け足し。
Cは多分、物理配列であることが仕様化されてる。
だから、[0]であれ[1]であれ、まあ動くに決まってる。
(これを未定義と呼ぶべきかは微妙な気はするが、まあ未定義ならそれでもいい)

Javaは論理配列なので、この辺は動かない、というか、動くことを保証されてない。(多分そもそもアクセスできない)
だからお前が論理配列のイメージで考えてるなら、そこが間違ってる。
2026/07/11(土) 21:59:26.77ID:EKW8EhdF0
たまたま動いてるコードを安全とみなすのは普通にバッドプラクティスだからそんなことで威張られても困る
それはたまたま動いてるのであって誰も保証していない
C言語の仕様は保証される範囲を定めることによって移植性を実現しているし、その範囲で書くように作られている
2026/07/11(土) 22:12:05.36ID:fEsA3MX60
>>514
・たまたまではなく、そのコードで動かない環境は多分無い。
・それでも気に入らなければ、該当部分を書き直すか、そもそもCコード自体を流用しなければいい。
・今は他に沢山言語もある。

のに、何故お前はグダグダ言い続けてる?
そういう連中は、C使うのを止めるのが最適解だと思うが。
2026/07/11(土) 22:20:34.81ID:EKW8EhdF0
>>502
>>504
そんなことはなくて、K&Rでも「動く場合はこうしなくてもいい」などということは書いていない
特定の集団における単なる慣行を言語の話と主張するのは無理がある
「C言語では記述が一対一でアセンブラに落ちる」という理解も全く不正確であり、Cの仕様もコンパイラもそのようなことは保証していない
というか、それが保証されるなら最適化という概念自体が存在しない
そこを理解していない時点で、お前は妥当な使い方ができていない

>>506-507
>>509-510
あちこちに誤りがある
多分全て指摘はできないが、まずC言語の仕様に即しているかどうか検証することは可能
なので「その時その環境で動作が正しい事しか保証出来ない」は誤り

その誤りを隠すために
>「あらゆる環境で、(未来含めた)あらゆるコンパイラで、このコードは、動作する」事を保証出来ると思うのなら
という無茶苦茶な前提を追加しているが、当たり前だがコンパイラと環境が仕様に準拠していない場合を含めているのは詭弁である
JavaScriptも実行環境にバグがあれば正しく動作しないのに、恣意的に無視しているためである

> malloc/callocのどちらを使うかはプログラマに任せてある
それは両方規格に含まれているため、規格に含まれていない記述を正当化するための例に用いることはできない
2026/07/11(土) 22:20:41.23ID:EKW8EhdF0
>>512-513
>>515
また、メモリ上の配置はコンパイラによって自由に変更されるため、そのような挙動はごく少数のコンパイラの限られたオプション指定で発生する事象に過ぎず、何ら保証されない
Javaの話は無関係であって、そもそも物理配列であることとは直接的に関係がない

> たまたまではなく、そのコードで動かない環境は多分無い
などと言い切っているが、1バイトのサイズすら環境によって異なるのにそんなコードがどの環境でも動くと想定する方がおかしい
どうせ同じアーキテクチャの同じコンパイラにしか触れてきていないのだろう、ということが丸わかり

> それでも気に入らなければ、該当部分を書き直すか、そもそもCコード自体を流用しなければいい
これも異なる
そもそも該当部分が問題であることを明示しなければ、そのような修正は困難であるし、問題がないと言い張るということはどうせ何も書いていないのも明らか
2026/07/11(土) 22:21:07.52ID:EKW8EhdF0
全体的に見て、あまりにも誤りと矛盾が多すぎてお話にならない
2026/07/11(土) 22:24:47.76ID:EKW8EhdF0
>>504
> デタラメな使い方でもバグがない事を検出してくれ
そんなことは言っていない
「デタラメな使い方が正しいんだ!」と主張するバカげた行為をやめろと言っているだけ
2026/07/11(土) 22:27:46.82ID:EKW8EhdF0
>>509
未定義動作になるコードだが動くというものを採用してはならないのではなくて、それは何ら安全性が保障されない、アーキテクチャもコンパイラもlibcも、種類どころかバージョンすら変更できないコードだということを理解して、いつでも適切に破棄できるようにしておかなければならないという話
そうでなければ不具合の元にしかならない
それができないお前みたいな奴がいるから、Rustを使えと言われてるわけ
2026/07/11(土) 22:30:54.19ID:EKW8EhdF0
>>515
お前みたいなアホが「今動く」と「正しい」を勘違いして負債を残し続けた結果、C言語の既存資産は危険なものという扱いになってきている
それを堂々と他人に正しいやり方みたいに吹聴して被害を拡大させるのはやめろってこと
2026/07/11(土) 22:37:00.83ID:EKW8EhdF0
>>504
C言語のコンパイラが必ずアセンブリ言語を出力するという事実はない
ClangはLLVM IRを出力する設計になっている
また、前提として前後のコードと合わせて最適化が施されるため、アーキテクチャやコンパイラ、バージョン、最適化のオプションによって出力されるアセンブリ言語やIRの処理も異なる
C言語仕様において、保証されていない挙動に関してどのように実装するかはコンパイラに任されている
2026/07/11(土) 22:40:39.18ID:EKW8EhdF0
>>503
それは全くその通りで、当然規格外のコードは原則として再利用できない

>>505
> 必要であれば言語仕様外の挙動に依存することはそれなりにあるのも正しいと思う
> 低レイヤの細部を全く制御しないなら C を使う意味がない
の2文が論理的に結びついていない
C言語の仕様の範囲内でも低レイヤの細部を制御する機能は多数提供されている
それ以外は同意
2026/07/11(土) 22:44:10.51ID:fEsA3MX60
>>516-518
>>515の通り。気に入らないならC使わないのが最適解だ。
2026/07/11(土) 22:48:30.31ID:fEsA3MX60
ID:EKW8EhdF0
まだ書き込み中だったのはすまんね、もうちょっと待てばよかった。
でも結論は同じ、>>515の通りで、お前はC使わないのが最適解だ。
2026/07/11(土) 22:49:57.47ID:EKW8EhdF0
>>509-510
これはC言語の話ではなくてRustの話になるのでこの1レスに留めるが、>>520-521でも言ったように、今動くコードと正しく書けているコードの区別がつかない人間のせいで、大量の問題のあるコードが生産されたので、Rustではunsafeブロックの外では未定義動作を書けないようになっている

また、Rustのコードは仕様に忠実であることが保証され、かつ明示的に不変/可変やポインタのエイリアシングの有無を扱えるため、最適化が行いやすく高速なプログラムを生成できる、良いコードになる場合が多い
C言語の場合はこのような保証がないために、最適化が行えないというケースも多い

更に、Rustは別にコンパイラが安全性を検証できないコードを全否定しておらず、unsafeブロックで明示的にプログラマの責任で記述することが可能である
そのため実現できない処理があるというような主張も誤りである
2026/07/11(土) 22:52:12.73ID:EKW8EhdF0
>>524-525
C言語が気に入らないのではなく、>>521でも書いたように
> お前みたいなアホが「今動く」と「正しい」を勘違いして負債を残し続けた結果、C言語の既存資産は危険なものという扱いになってきている
> それを堂々と他人に正しいやり方みたいに吹聴して被害を拡大させるのはやめろってこと
を言っている
それができないならお前こそCを使うのをやめた方がいい
2026/07/11(土) 22:54:06.66ID:EKW8EhdF0
>>524-525
これも>>520でも書いたが、
> 未定義動作になるコードだが動くというものを採用してはならないのではなくて、それは何ら安全性が保障されない、アーキテクチャもコンパイラもlibcも、種類どころかバージョンすら変更できないコードだということを理解して、いつでも適切に破棄できるようにしておかなければならないという話
> そうでなければ不具合の元にしかならない
> それができないお前みたいな奴がいるから、Rustを使えと言われてるわけ
お前みたいにコードをちゃんと検証せずになんとなく動いたからで組み込む人間は、Cを書かない方がいい
2026/07/11(土) 22:58:09.45ID:EKW8EhdF0
C言語は「ふいんき」(注: あえてこのように書いた)でこねくり回して書く言語ではなく、危険性を理解して検証しながら書く必要がある
「なんとなく動いてるー」は検証とは言えず、なぜ動くかをちゃんと説明できなければならないのであって、「物理配列だから」のような雑な理解で未定義のコードを他人に見せびらかし、正しいと主張するような人間が書いていいものではない
それは脆弱性や不具合を減らそうという、ソフトウェア開発の基本的な考え方とまるっきり逆行している
2026/07/11(土) 23:10:36.24ID:fEsA3MX60
>>526-529
ならお前はRust使って、それで終わりでいいじゃん。
C使いたい奴はC使わせておけばいいだけだろ。
Rust界隈って(意識高い系なので多様性を大いに認めることになってるはずなんだが、)
Rustしか認めない、多様性なんて死ねな人達でしたっけ?(棒)
2026/07/11(土) 23:20:45.01ID:EKW8EhdF0
>>530
全く読まずにケンカ売ってるのはわかった
お前みたいなアホがCを書くから問題になってるんだって言ってるだろ
Cを書きたいならちゃんと必要な知識くらい学んで頭を最低限使えって言ってるんだよ
頭悪いとわかんないかもしれないが
2026/07/11(土) 23:22:06.43ID:EKW8EhdF0
>>530
別にRustを書けって言ってるんじゃなくて、お前みたいなアホの被害を防ぐために規則を導入したのがRustだって言ってるんだよ
Cを書きたいなら書けばいいけど、お前みたいに頭も使わず「ふいんき」で書いてるような奴はCプログラマとして論外なの
2026/07/11(土) 23:23:15.05ID:EKW8EhdF0
バカは条件を読まないから困る
こういう奴が問題を増やすから苦労するんだよな
2026/07/11(土) 23:25:42.69ID:EKW8EhdF0
>>530
人を見下すのは好きだけど自分が見下されるようなことをやってる自覚はないんだな
モノ考えてから発言しろよ
2026/07/11(土) 23:29:58.98ID:EKW8EhdF0
>>530
「お前はC言語を使わないほうがいい」とかイキってたけど、お前みたいに頭も使わず「ふいんき」で書いてるような奴が書くふわふわ言語だとでも勘違いしてるのか?
そうならPythonでも書いてろよマヌケ
2026/07/11(土) 23:37:49.82ID:EKW8EhdF0
>>511
ホンマそれ
条件すらまともに読めない奴が未定義動作モリモリのコード書くとか悪夢でしかない
2026/07/11(土) 23:49:20.70ID:fEsA3MX60
>>531-536
典型的なRust信者やね。
良くも悪くも、仕様が後から追認されたりする文化なのは事実で、合わなければ他言語使えばいいだけ。

どうせお前含めて、大概の連中が書くのは糞コードだ。
でも、同様の事をやるなら同様のコードが必要になるから、ゼロから書くよりはマシなので流用される。
勿論流用側が精査し、全部捨てても、一部修正でも、丸々全部そのままでもいい。これで回ってる。
品質を保証するのは流用側であって、流用元ではない。
俺様が流用する時の為に常に完璧で俺様にピッタリなコードを書いておけ、なんて事は成立しない。
ああ、Rustでは成立してるんでしたっけ?ならそっちでどうぞ。
2026/07/11(土) 23:54:30.47ID:EKW8EhdF0
>>537
テスターが頑張ってるからコード書く俺はどれだけひどくてもいいって他責思考なのね、了解
みんな、こいつの真似だけはしちゃダメだぞw
2026/07/11(土) 23:55:57.20ID:EKW8EhdF0
>>537
お前、自分が読めないくらい高度なコードのこと「糞コード」って呼んでんのなw
お前が勉強してないのも他人のせいだってかww
2026/07/11(土) 23:57:09.90ID:EKW8EhdF0
>>537
> 俺様が流用する時の為に常に完璧で俺様にピッタリなコードを書いておけ、なんて事は成立しない
また書いてないことを勝手に読んで藁人形論法を始めたな
自分が正しい、お前は間違ってるって言うためならいくらでも捏造、相手が悪いから俺は悪くないんだ!w
2026/07/11(土) 23:58:30.82ID:EKW8EhdF0
>>537
お前が言ってるのは「ゴミしか書いてないから流用する奴が悪い」な
それは自由だけど、ちゃんと「ゴミです」って書いてくれないとこっちも手間取られて迷惑なのよw
2026/07/11(土) 23:59:17.68ID:EKW8EhdF0
>>537
そのゴミをここで放流するのやめてねw
自分のPCの中に留めておいてくださいww
2026/07/12(日) 00:03:19.82ID:MVcsLvMp0
>>537でちゃんと「俺はゴミしか書かないし勉強もしないし全責任はテスターに負わせる、俺が読めない高度なコードを書く奴はクソ」と言ってくれたからもうまともに相手はしないわ
そう思うのは勝手にどうぞ、でもそれを正しいと押し付けてくるのはやめてね
2026/07/12(日) 00:03:25.98ID:hoXmdqWh0
今のプログラムなんて、ほぼみんな
たまたま動いているように見えるだけで、
未来永劫バグなして動き続けるなんて
誰も保証しないと思う
2026/07/12(日) 00:05:12.54ID:MVcsLvMp0
>>544 そんなこと保証しろって言ってる奴は君の妄想の中にしかいないぞ
明らかに動かなくなることがわかり切ってるような、偶然動いてるだけのコードを堂々と持ってくんなって言われてるだけ
546デフォルトの名無しさん (ワッチョイ 8934-UT5n)
垢版 |
2026/07/12(日) 00:06:56.67ID:MVcsLvMp0
まともなプログラマなら「僕の環境でたまたま動いたよ!」と「現行の仕様通りなら動くよ」を同じとは考えない
2026/07/12(日) 00:14:51.45ID:hoXmdqWh0
現実のシステムはよく停止してます。
2026/07/12(日) 00:20:13.80ID:MVcsLvMp0
>>547
また関係ない話を始めたな
バグって言葉知らないのかね
2026/07/12(日) 01:53:23.86ID:B8KFN4yR0
>>512
> ・flexible array memberなり、Struct Hackであれ、そのコードで動作しないコンパイラは多分無い。

flexible array memberはC99で盛り込まれたC言語の仕様なので規格に従った動作が期待できるがStruct Hackは規格に照らし合わせると未定義動作となるので動作が期待できない。
動作してるよう見えるから問題ないとか言ってんのはお前みたいな素人だけ。
2026/07/12(日) 07:28:40.96ID:HRsxvr+K0
>>549
× > 動作してるよう見えるから問題ない
○ 動作したから問題ない
当たり前だが、書いた当人は、書いた環境で動作確認してる。
そして、その記法で動くから、その記法が広まり、仕様として追認する事になった。

というかそもそも「未定義」の定義が違うのかと思ってる。

Rust信者の未定義:何をやってもいい。
 [1]と宣言された場合、[2]以降は未定義となり、
 全部0返しても、また時々でランダムな値を返しても、全く問題ないし、むしろRustコンパイラならこうあるべき。
 未定義に抵触したコードが動く事自体が悪。
 だからむしろ意図的に動かないコードを吐いて明示的にエラーを発生させるべき。

Cの未定義:規定しないので、実装側で都合のいい動作で構わない。
 (=実装上楽な仕様=他動作と同じ実装となり、[0]でも[1]でも動く。だから広まった)

そもそも[x]についてはアドレス計算してるだけなので、範囲超えても、勿論負の添字でも普通に動く。
(だから未定義なのかこれ?という疑問は俺にはあるが、まあこの辺の法的解釈は仕様に詳しい人に任せる。
ただ物理配列でアドレス計算するだけ”以外の”実装にするには、滅茶苦茶手間がかかり、誰もやってないのが実状で、
だからこそ多分全部の環境で動いたから、普通に広まったのだと思うが)

まあでも、この辺のCの文化を気に入らなければ、Cを使わない、Cのコードを流用しない、が最適解だよ。
仮に俺が糞コードをCで書いたとしても、お前がCを使わず流用もしなければ、お前に何も問題は発生しない。これでいいだろ。
2026/07/12(日) 08:22:20.36ID:zniXbCOgd
C言語の未定義の動作はどんなことも起き得る状態で、実装側がうんたらかんたらって言ってるのはそれは未定義の動作ではなく不定の動作
あと配列の範囲外のポインタ演算は当然未定義の動作になる
やっていいのは配列の範囲内と終端を超えた1つ先まで
他にも色々勉強不足というか勉強中みたいなのでがんばろう
2026/07/12(日) 09:22:46.35ID:HRsxvr+K0
>>551
だからもう何度もループしてるんだけども、

・配列境界を超えたアクセスでも、(多分全部の)環境で普通にアクセスできたから、Struct Hackが広まった。
・その後、それをflexible array memberとして仕様で追認した。

のだから、以前のコードでは[0]や[1]になってるし、不満があれば流用時に書き換えればいい。
C言語はこの意味では、コンピュータがどういう構成で、
Cコンパイラがどういったコードを吐くかまで知ってないと理解できないから、
「C言語仕様だけ知っていればいい」と考えるお前のような言語正義マンには向かない。
この点について文句言っても意味ない。お前はCに向いてない、それだけ。

もう何度もループしてるので、以降は新規事項無ければ無視するのでよろしく。

朱に交われば赤くなる。
Rustに交わればキチガイになる。
2026/07/12(日) 09:40:27.92ID:HRsxvr+K0
ああついでに言っておくとな、上述のとおり、
C言語はコンピュータの物理的側面も知ってないと無理なのだが、これは重いので、
論理的側面だけでプログラミングできるようにしたのがJava。
なのでC--と揶揄されることがあるが、JavaはCよりも言語面の必要知識量自体は軽い。
(ただしオブジェクト指向とか、フレームワークも実質的に必須とかで、現実的には最重量級とされてるが)

ただまあ、このスレの456付近以降の話は、Javaなら考えなくていいのだろうよ。
(というより、C以外の言語では考えなくていいのかな?だから言語正義マンが怒り狂ってるのか?
まあC#のように、物理的側面が見える部分をunsafeとして明示的に分離するのも一つの手だとは思う)
2026/07/12(日) 10:49:15.75ID:faHk440B0
>>552
分かってないみたいだが

> ・配列境界を超えたアクセスでも、(多分全部の)環境で普通にアクセスできたから、Struct Hackが広まった。

昔のコンパイラの最適化がユルい時代ではなんとなく動いていたのでStruct Hackが広まった。

> ・その後、それをflexible array memberとして仕様で追認した。

Struct HackはC言語の仕様として未定義動作であるということと使い方として需要があることを汲んでC99でStruct Hackとは異なるflexible array memberが新たに追加された。
2026/07/12(日) 10:52:53.75ID:faHk440B0
> Cの未定義:規定しないので、実装側で都合のいい動作で構わない。
>  (=実装上楽な仕様=他動作と同じ実装となり、[0]でも[1]でも動く。だから広まった)

知らないみたいだけどいまのCコンパイラは未定義動作はまるっと削除まで平気ですんだわ。
2026/07/12(日) 10:59:03.76ID:zn37wvsd0
それすると、旧来のソースがビルド出来なくなるから
コンパイラメーカーは避けるよ
2026/07/12(日) 12:08:40.71ID:D6oRJmBt0
コンパイラの挙動が保守的 (たとえ言語仕様上は正しくなくても挙動を変えることは良しとしない) な傾向はあるが……。
たとえば GCC や Clang ではオプションとして -fstrict-flex-arrays が新設された上で従来通りの挙動 (いわゆる構造体ハックを許容する) をデフォルトにしてる。
https://gcc.gnu.org/onlinedocs/gcc-16.1.0/gcc/C-Dialect-Options.html#index-fstrict-flex-arrays
https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fstrict-flex-arrays

はっきりと書いてある文言を見つけられないけど将来的には 3 (最も言語仕様に厳格な解釈) をデフォルトに変更したい雰囲気もあるので猶予期間は大きめにあるものの移行を既定路線と考えてもいるって感じだと思う。
2026/07/12(日) 12:15:51.08ID:zniXbCOgd
ちゃうよ550でアドレス計算って言ってるからその話をしてる
添字演算子を使ってポインタ演算をしていい範囲はってこと
ポインタを通じたアクセスの話はしてないのでもう少しちゃんと読もう
2026/07/12(日) 12:55:38.45ID:D6oRJmBt0
>>558
> その話をしてる

俺はしてない。
2026/07/12(日) 13:02:24.88ID:HRsxvr+K0
>>557
だってそこは政治だもん。ずっと以前から。

コンパイラ作成側は、「我がコンパイラが最速」を目指しているので、
何であれ最適化の自由度が高い方向に持っていきたい。
つまり、仕様外/未定/不定なら全部削除して最速にし、
何か最適化に関しての障害がある場合は明示的にプログラマに書かせる方向に持っていきたい。
(プログラマ《=他人》の負担は増えても構わない)

プログラマは、過去に動いたソースはそのまま動いてくれないと困る。
コンパイラによる最適化は、挙動が(実質)同じなら何であれ構わない。
挙動が変わって、動いていたコードが動かなくなるのは困るから止めろ、
それよりは遅いほうがいい、という当たり前の主張。

で、ずっと綱引きやってるよ。
507でgccが壊された!とリーナスが言ってた件もそう。
(確かgcc2.xの頃の話だったと思うが、ググッても出てこない)

ただ、プログラマがどう言おうと、コンパイラを作るのはコンパイラ作成側なので、
何だかんだでコンパイラ側の要望が通ってる、というか、プログラマの要望はほぼ無視されてる。
(文句有るならお前がコンパイラ作れや、であって)
2026/07/12(日) 13:03:34.77ID:HRsxvr+K0
プログラマは、過激な最適化をして良い部分と、全く最適化をしてはいけない部分を知っているので、
俺としては、単純に、関数単位で最適化をON/OFF出来るようにすればいいだけだと思うのだが、
コンパイラ側は「1mmたりともゆずらねえ、可能な限りの最適化は行う」なので、今がある。

-fstrict-flex-arrays については、仕様化したんだから書き直せ、というのも一理あるが、
構造体の最後に付いてる[0]なんてその使い方をするに決まってるわけだし、わざわざ指定する価値もない。
(手間が増えるだけ。ただ、コンパイラ作成側は自分以外の手間が増えても問題ないという態度。これは昔から。
ただそもそも指定したところで速くなるコードが存在しない。
《=有るとしたら最初から不要なのだから削除しとけであって、つまり unreachable なコード区画なわけだし》
だからオプションとして整備する価値もないはずなのだが、コンパイラ作成側としては、『成果』として必要なんだろ)

ただその後、コンパイラ作成側の主戦場はRustに移行したので、C/C++界隈は浄化されたはず。
そしてRustの場合は最初からこれを知ってたから、
「コンパイラは何をしてもいい、プログラマに明示的に書かせろ」が強化されてるはず。
なのでまあ、今は、そういうのはRustでどうぞ、だと思うよ。
562デフォルトの名無しさん (ブーイモ MM3e-y5zM)
垢版 |
2026/07/12(日) 13:13:01.41ID:uOgU7Bc5M
昔から長文書くやつは無能と決まってる
2026/07/12(日) 13:22:41.62ID:D6oRJmBt0
>>561
最適化は全体の構造に及ぶのだから一部はやって一部はやらないなんてのが自由自在に出来るはずがない。
一部の最適化を阻止すれば連鎖的に最適化が出来ない部分が出来てしまうよ。

グローバルな最適化はすべきではないと考えるならそれもひとつの立場ではあるだろうし、
構造体の最後の配列メンバの [0] に関してはそれを [] と同じと見做す特別ルールを入れても良いかなとは思う。
他の規則との整合性から特別扱いは必要だが。
564デフォルトの名無しさん (オッペケ Srbd-Klls)
垢版 |
2026/07/12(日) 13:22:57.82ID:1Oghs0x+r
>>561
ファイル単位でmakefile作れば解決するかも
最適化レベルに応じて関数をどのファイルに書くか決める必要あるかも
2026/07/12(日) 14:04:11.37ID:HRsxvr+K0
>>563
> 一部の最適化を阻止すれば連鎖的に最適化が出来ない部分が出来てしまうよ。
ならその部分の最適化を諦めろ、と俺は思う。(が、コンパイラ作成側は思わないので今がある)

> 構造体の最後の配列メンバの [0] に関してはそれを [] と同じと見做す特別ルールを入れても良いかなとは思う。
今はそれが「各コンパイラの仕様」として入ってる状態で、
それを「C言語の仕様」に格上げする方が、仕様として綺麗なのは事実だが、
実利はないよね。だって今も使えてるんだし。(ってのがプログラマ側の見方だと思う)
2026/07/12(日) 14:05:14.36ID:HRsxvr+K0
>>564
そうすれば今でも出来るのはその通り。
ただ、それやると本来一つにまとめておきたい関数群がバラけるから、ソースコードとしての価値は落ちる。
だから誰もやってない。

例えば、だが、(Cにはクラス文法はないが)
メンバ関数が10個あったとして、最適化を防がないといけないのはそのうち1,2個程度。
最適化を防ぐためだけにメンバ関数の一部を別ファイルにしてしまうのは、見にくくて仕方がない。
並んで記述されてたら容易に見つけられたバグも、見落とすかもしれないし。
(この辺は勿論IDEのサポートがあれば何とでもなりはするが、関数単位で指定できるのが一番いい)

まあこれを言うなら、いい加減、1パスコンパイルにこだわるのも止めろと言いたい。
俺は上から下(上位関数から下位関数)の順ににコードを書きたい。
ただこれも、全く変更する気配すら無い。
567デフォルトの名無しさん (スップ Sd0a-OdiU)
垢版 |
2026/07/12(日) 19:40:42.53ID:zniXbCOgd
>>559
文脈が読めればあなたに言ってないと分かると思うけど
何にでもかみつくのはそろそろやめよう
2026/07/12(日) 20:06:41.15ID:zS7Jvo6v0
> > 高級アセンブラ (>>460)
> とはよく言われてるけど、お前らの理解が間違ってて、やりとりがナンセンスになってる。
> これはC言語自体が、という「言語/文法」の事ではなく、
> 『C言語では記述が一対一でアセンブラに落ちる』ので、
> C言語は高級アセンブラ「としても使える」という、「用法/運用」のことを言ってる。

C言語は抽象化された高級言語であり、同じ結果となるならコードの内容は問わないので『C言語では記述が一対一でアセンブラに落ちる』なんてことはなく、根本的なところで誤解があると思われる。
2026/07/12(日) 20:11:31.97ID:MVcsLvMp0
>>550
間違いがある
Cの未定義も何をやってもいい

>>552-553
残念ながら君の主張がおかしい
もう何度も言ってるので省略するが>>516-522と>>526-529で書いた

>>554-555
まったくもって正しい
最適化する機能がなかったので関係ない部分も安定化していただけ
これを使っていい理由はない
2026/07/12(日) 20:14:20.69ID:MVcsLvMp0
>>556
>>560-561
プログラマは真っ当なコードでどう最適化していいかは知っているが、お前が主張するようなめちゃくちゃなコードでも必ず動くようにする方法は知らない

>>563
最適化をあきらめる前に、無意味に未定義動作になるコードを書かないのが良い
無理に自分を正当化するために順序がゆがんでいる
2026/07/12(日) 20:15:24.70ID:R3cyjD4u0
>>567
私が対象じゃないのはわかってるよ。
対象じゃないにもかかわらずアンカーなしで私の直後に書いていて私に向けているようにも見えるから反応したんだ。
2026/07/12(日) 20:20:24.17ID:MVcsLvMp0
ごめん、>>570に書いた
>>563は>>565のミス
2026/07/13(月) 08:32:06.06ID:KqCrgl0L0
分かりやすく明示的に言ってなかったから、再度まとめると、

Struct Hack/Flexible Array Member が、
まさに「C言語は高級アセンブラである」の「用法/運用」の例だ。

こういうデータ構造を取りたいが、「言語が対応してない」時に、
「アセンブラ」として使用し、結果的に希望のオブジェクトコードが得られれば良しとする。
勿論、言語の範囲を超えているので、言語機能による保護は受けられない。
全て自分でテストし、動作する事を確認する必要がある。(当然みんなこれはやってる)

そしてこのデータ構造/記法が有用だったので、追認する形で
Flexible Array Member として仕様に追加された。
だからこっちは一応、言語機能による保護は受けられる事になる。
(とはいえ、C言語の保護機能なんて無いに等しく、
わざわざ書き換える手間すら払う意味無いと判断されれば、古い記述で放置される事になる)

是非はともかく、「C言語は高級アセンブラである」とはよく言われてる。
となると、少なくとも、こういう使い方をする人達は一定数C言語コミュニティ内にはおり、
これも含めてC言語の文化だと捉えるしかない。

言語範囲を超えているので、勿論、コンパイラのバージョンやオプションによっては動作しなくなる。
この問題に対しては、最低限、ドキュメントやコメントに残すべきではある。(が、強制力はない)
ただし、再度言うが、こういう使い方をしてる人も一定数居るので、
当たり前だが、コンパイル後のオブジェクトコードに対して、一通り自前でテストしなければならない。
勿論流用先の人々にも、各自の環境での再テストを強制する事になる。

これら(ドキュメント化/コメント付加/流用先での再テスト強制)を嫌うなら、
本件に関しては Flexible Array Member として仕様化されてるのだから、[0]や[1]を[]に書き直せばいい。
少なくとも、対応してるコンパイラでの動作が今後とも保証される。
(意味としては、高級アセンブラとして使っていた部分を、C言語として使うように変更する、となる。
ただ現実的には、再テストはそうでなくとも常に行われるし、コメントも書いてるし、
現行コンパイラも《非公式だが》対応してるしで、何も変わらないので放置、も多いと思うが)
2026/07/13(月) 08:32:43.17ID:KqCrgl0L0
で、くどいが再度言うと、こういう使い方も一定数行われており、これも含めてC言語の文化だ。
これを嫌うなら、C言語を使わない、C言語のソースは流用しない、しかない。

C言語のソースを読むには、ある程度はCコード→アセンブラにサクッと変換する能力が必要だ。
これはプログラマに対し、必要知識が増え、重い負担となる。
これを回避する為、例えばC#は「絶対にインラインアセンブラなんて入れない」という方針を採ってる。
インラインアセンブラなんてやられたら、チーム内でそれを読める人が大幅に限定されるか、
チーム全員が読めるようになるまで教育コストを払わされてしまう。
なら、機能を限定し、チーム全員が簡単に読める範囲で作成した方が、
生産性が高い(=アプリケーションが早く出来上がる)という戦略だ。
Cなんて何でもありあり、勿論インラインアセンブラもありなので、限定とか今更だ。
(勿論、言語範囲逸脱は、ポーティングに多々支障が出るので、意味無いところではやるなだが)

ただこれは、鯖代>>>プログラマの人件費、だった時代のやり方で、
今は、プログラマの人件費>>>鯖代、なのだから、今風ではないのも事実だ。
そして今時の言語は、開発時の最大コスト要因であるプログラマの人件費を削減すべく、
サクッと書いてサクッと動かせるように整備されてる。
とはいえ、人件費掛けてでも最速最小のコードを得たい局面はあり、C言語もしぶとく残っている。

どの言語を使うかは各自の自由だ。
今更C言語の文化/旧来のソースコード資産を変更する事は無理だし、
(今C言語を使ってる連中の)誰も望んで居ない。
C言語は良くも悪くもこうだから、気に入らなければ使うな、でしかない。
2026/07/13(月) 08:53:43.49ID:xSjixO/uM
文章もコードも簡潔が望ましい

【 Google Gemini による超要約 】
C言語には、仕様外の挙動でも「動けば良し」とする高級アセンブラ的な職人文化があり、それが後に正式仕様(Flexible Array
Member)として追認された経緯がある。現代の生産性重視の言語とは対極にあるが、最速最小のコードを求める局面では今なお不可欠であり、「良くも悪くもそういう言語なので、嫌なら使うな」というのが現実である。
2026/07/13(月) 08:59:58.57ID:8yojBoxi0
Flexible Array MemberはStructHackとは違うものだし、

> 仕様外の挙動でも「動けば良し」

いまどきこういう考えの人が現代のCコンパイラ使って安全に動作するコード書ける気はしない。
2026/07/13(月) 09:23:54.31ID:/NKrtbMf0
しっかり言語・各環境の仕様を順守してもトラブルは起こるものなのに順守しなくてもいいやでまともに動くわけないだろ。
現実は仕様通りにキッチリ出来るわけではないというのは仕様を軽視して良いって意味じゃないぞ。
2026/07/13(月) 09:47:01.03ID:KqCrgl0L0
一応言っておくと、俺は「動けば良し」とは言ってない。
AIに約させ、代わりにそれを読み、各自の知能の低さを補うのも自由だが、それならAIと壁打ちしろ。
俺に対して反論するなら、俺の投稿を全部正しく読み込んでからにしろ。
俺の手間を尊重しないクズに対し、俺がクズの手間を尊重する理由もない。

あと、ループしてるから、新着情報無ければ無視するのでよろしく。(これは前回も言ったが)
2026/07/13(月) 09:55:17.92ID:VpRInEE10
>>576
Apacheなんかのバグ修正内容を詳細に見ていくと、
高度なロジック部分ではなく、配列の要素数不足とか、
割と初歩的なところが多い。
2026/07/13(月) 09:57:57.73ID:pWua9tgpM
最近のAIが誤訳するとしたら、それは元々の文章の構造(主成分)に論理的な問題があるということなので、そらね
2026/07/13(月) 10:36:12.59ID:8yojBoxi0
簡潔に文章まとめる能力ない奴が俺の手間を尊重しろとかいっててクソワロタw
2026/07/13(月) 10:44:30.69ID:KqCrgl0L0
>>579
> 配列の要素数不足
それは後から機能追加したら入りきらなかった、という話であって、
ここで言ってる「げんごはんいをいつだつしたこうどなてくにっく」による問題ではない。
(だから現実は糞みてーなバグばっかりで、
「いまどきこういう考えの人が(キリッ」(576) なんてレベルじゃねえよ、というのなら同意だが)

一般的には、その問題は、多分、「『一部』変更し忘れ」なので、
これが起きないよう、「コードは基本的に一箇所に絞る事」(OAOO/DRY)により、
変更し忘れた場合には常にコケるようにして対処する。(=普通、最低限1回はテストするので、それで十分引っかかる)
広い意味では、オブジェクト指向(OOP)もこれを目指しているので、OOPしてればある程度は防げる。

これは言語関係なく、上位のコード戦略の話。
徹底出来てないコードはバグを産みやすく/発見しにくくなる。
まあ、そのApacheのケース、パパっと見れるようになってるのなら、URLくれれば見てみるけど。

というかね、Cなんて、コードはこう組むべき、以前の、
コードが資産だとすら認識されてなかった頃の産物なのだから、そりゃ色々問題はあるよ。
各問題を文法縛りにして対処してるのが後発言語なわけでね。
それがよければそっち使えでしかないし。
(ただしOAOO/DRYの徹底を文法化出来てる言語はないと思うが)

ついでに余談だが、Rust界隈が腐ってるのは、あいつら
> いまどきこういう考えの人が
が典型的だが、CodeOfConduct(人格)をCodingRule/Strategy(コード戦略)より重視するからなんだよね。
まあ、Cに比べれば、コード戦略(特にリソース周り)も文法化されてるから、不要になってしまった、というのはあるが、
Cの場合は何も縛りが無いのだから、全部自分で決めないといけないのに、
Rust慣れしてるのか、それが要らないものだと錯覚してる。
(ああ勿論、言語範囲逸脱は禁止、インラインアセンブラも禁止、も、自前で決めて運用すればいいだけ。
ただそれを全員に強制する事は出来ない)
2026/07/13(月) 11:05:36.02ID:8yojBoxi0
> (ああ勿論、言語範囲逸脱は禁止、インラインアセンブラも禁止、も、自前で決めて運用すればいいだけ。
ただそれを全員に強制する事は出来ない)

コーディング規約を設けたチーム開発もコードレビューも経験ない素人さんかな
2026/07/13(月) 11:08:51.35ID:VpRInEE10
>>582
> 配列の要素数不足
それは後から機能追加したら入りきらなかった、という話であって、

元からだったんだが
2026/07/13(月) 11:43:14.03ID:KqCrgl0L0
>>584
・元々配列要素数Nで動いてた
・新規機能追加したら、N+α必要になったので、変更した
・が、一部変更し忘れて、Nのままの部分があり、バグッた
を仮定したのだけど、違ったならどういう感じだった?
2026/07/13(月) 12:09:53.49ID:VpRInEE10
追加なら修正範囲くらい機械的に特定できるでしょう
2026/07/13(月) 13:54:16.21ID:7VHYHCXA0
AIに聞いてみたら>>582が他に5chで何かしたか聞いたら日常の進捗履歴記録ツールWitBucket(仮称)検討中スレのスレ立て者は同じ人物の可能性がかなり高いってさ
2026/07/13(月) 15:05:58.09ID:5sH5Cvg80
>>573-574
>>582
もう突っ込むのも面倒になるほど間違ってる
正しいところを探す方が難しいくらいだから、一回AIに批判してもらってこい
2026/07/13(月) 15:07:20.61ID:5sH5Cvg80
>>575
多分入力が変
ここで騒いでる奴はお前も含めて未定義動作がなんで未定義動作って言われてるかもわかってない、最低限ができてないというお話
2026/07/13(月) 17:17:57.88ID:VpRInEE10
未定義動作は未定義です
2026/07/13(月) 18:56:26.53ID:5T8h5qrZp
アセンブラになったらこう動くってのを見越してのロウゼキだからw
昔のCコンパイラは書いた通りの順番で書いた通りにアセンブラコードを吐き出したから出来る技w
2026/07/13(月) 19:08:47.34ID:8yojBoxi0
C言語は抽象機械を想定して抽象化された高級言語であり同じ結果となるなら何しても良い自由が許されているのでソースコードがターゲットの機械語に対応する形でコード化されるわけではない。
任意の機械語を生成するための道具ではなく「高級アセンブラ」という表現を使う者はその辺の理解がない。
2026/07/13(月) 19:18:55.75ID:VpRInEE10
ブログラマの意図と違う動作は許されていません
2026/07/13(月) 20:17:39.09ID:5sH5Cvg80
>>593
君のコンピュータはエスパーか何かなんか?
プログラマの意図じゃなくて書かれてるコードの意味を満たす動作になるに決まっているだろう
2026/07/13(月) 20:18:54.58ID:5sH5Cvg80
>>590
進次郎になれって話じゃなくてだな
定義されていないということは、何が起こるかは一切わからんということなのよ
2026/07/13(月) 20:20:40.49ID:5sH5Cvg80
>>592
これ

>>591
それは単に最適化の能力がなかったからであって、一対一は最初から保証されてはいなかったけどね
2026/07/14(火) 08:43:32.83ID:1N71+vefp
>>596
1対1しか出来なかったからw
2026/07/14(火) 14:18:49.80ID:/b2uC2Vr0
>>597
何言ってんだこいつ
2026/07/14(火) 14:20:16.30ID:19Ht+q1Tp
むかしむかしのC言語コンパイラはただのトランスレータだったんだよねぇ
2026/07/14(火) 15:16:04.71ID:qBP3Lwkya
C++のことかー
2026/07/14(火) 17:08:10.08ID:/b2uC2Vr0
>>599
たまたま君が触ったコンパイラがそうだったことと、C言語の仕様に何の関係が?
2026/07/14(火) 18:15:30.37ID:A5TSKQd3p
Cの仕様なんて後出しだからね
2026/07/14(火) 18:49:40.75ID:gsxvrsDV0
C言語が抽象機械を想定するのはマルチアーキテクチャ対応のためでK&Rより以前のことだけど多くの人にとっては後出しと言うほど新しい話でもないけどね。
2026/07/14(火) 18:58:57.83ID:dbhgj+a90
鼻垂れ小僧が何偉そうに
605デフォルトの名無しさん (ワッチョイ f9df-y5zM)
垢版 |
2026/07/14(火) 20:17:25.02ID:cWimBV/n0
昔話でマウント老人
2026/07/14(火) 22:50:21.91ID:/b2uC2Vr0
>>602
国際標準と仕様の違いがわからない人かな?
K&Rだってしっかり「仕様」だぞ

>>603
これに尽きる
2026/07/15(水) 02:15:02.74ID:HrQlJ+VS0
「高級アセンブラ」と言ってる人はバイトアクセスが存在しないアーキテクチャでもC言語を使用するとcharのポインタが実現できることをどう捉えているのかな。
C言語が型によってポインタの内部表現が異なることを許容していることを理解していれば軽々しく「高級アセンブラ」なんて言わないと思うんだ。
2026/07/15(水) 07:37:35.19ID:5GR9Ils60
>>607
まさにアセンブラでいちいちマスク処理しないで済むんだから、高級アセンブラだろ?
2026/07/15(水) 08:51:35.71ID:uoTufD0R0
アーキテクチャ上存在しないデータ型をアセンブラ使って基本データ型として常用するって想定はセンスないという他ないなあ
2026/07/15(水) 09:02:33.63ID:2BOd77KE0
>>607
高級アセンブラと…

言わない人:そもそもバイトアクセスがないアーキだとか考慮しない。オブジェクトコードも見ない。コンパイラにはバグがないと信じてる。
言う人:希望したオブジェクトコードが出てるかを確認する。
2026/07/15(水) 09:34:37.42ID:PFPK0g3k0
>>608
じゃあ君の認識ではJavaは「超高級アセンブラ」かい?w
2026/07/15(水) 09:36:19.41ID:PFPK0g3k0
>>610
真逆だろw

高級アセンブラと…

言う人:そもそもC言語の仕様を知らない。型も考慮しない。偶然動いてることとちゃんと書けてることの区別がつかない。
言わない人:未定義動作がないかチェックする。
2026/07/15(水) 09:38:11.47ID:PFPK0g3k0
そもそも「コンパイラにはバグがないと信じてる」とか誰も言ってないことを藁人形論法してイキってる暇があったら少しでも未定義動作について調べてこいよ
10分でわかることを調べもしない奴がいくら威張ってもバカ晒すだけ
2026/07/15(水) 09:41:58.29ID:PFPK0g3k0
あと、「コンパイラにはバグがないと信じてる」どころか「コンパイラはどこでも寸分違わず同じ動きをする」と思ってるのが「高級アセンブラ」とか言ってる奴の勘違いの一番大きなところだからな
C言語の仕様を見ずに、たまたま1回コンパイラが吐き出したアセンブラが思い通りだったから正しいと信じ込んでる時点で、コンパイラにちょっとでも違う挙動されたら成り立たない愚かな考えだとわかりそうなもんだが
2026/07/15(水) 09:52:51.25ID:SzM3hF5h0
コンパイラにはバグがあるが
アセンブラにはバグがない
2026/07/15(水) 10:11:05.17ID:PFPK0g3k0
>>615
C言語わかってない方はご存知ないかもしれませんが、そのアセンブラのコードを保管しておかないとただのコンパイラ依存なんですよ
2026/07/15(水) 10:12:38.73ID:PFPK0g3k0
それを正しいC言語の書き方だと思っちゃうあたりが「『コンパイラはどこでも寸分違わず同じ動きをする』と思ってる」と言ってるのよ
2026/07/15(水) 10:14:57.36ID:tGhbBhkTp
まあ、結局抽象化の具合次第なんだけどね
C言語は抽象化がやり切れて無いから高級アセンブラって言ってるんだけどさ
2026/07/15(水) 10:24:07.43ID:2BOd77KE0
>>612
お前が妙なコンプレックスを持ってるからそうなるのであって、
そもそもどっちが上とか正しいとかいう話ではない。

Cのソースコード『だけで』動作を担保したいのなら、
C言語の仕様に準拠するのは当たり前で、
もしコンパイラにバグがあった場合に「ぼくがわるいわけじゃない」と言い訳するしかなくなる。

最終的に「実行バイナリ」での動作を保証したいのなら、
このコンパイラではこのコードにはこのオブジェクトコードが出る、というのを確認しつつ、
「実行バイナリ」に対してテストを行う。(ので、コンパイラのバグに対しても結果的に責任持つことになる)
コンパイラはただの変換器であり、C言語の仕様を逸脱してても大した問題はない。

で、歴史的にコンパイラのバグも普通にあった時代からCはあるのだから、
基本後者で、「実行バイナリ」に対してデバッグを行っており、
結果的に、「C言語の仕様」を厳密に守る必要がなかった。
だからこういうスタンスの奴は、「Cは高級アセンブラ」と称した。

これでは勿論生産性は上がらないので、目指すは前者だが、
そもそもRustですら「実行バイナリ」に対してデバッグしてるのだから、
「この『コードは』言語仕様に厳密に即してるので、(未来含めて)あらゆるコンパイラでも正常に動作します」
とは言えない。それでも目指したほうが良いからRustでがんばれ、とは思うが。
Cの場合は相変わらず後者でやってるってだけ。

というのは>>509でも言ったとおり、ループしてるんだがな。
気に入らないなら、お前はC使わないのが最適解だよ。
2026/07/15(水) 10:24:32.72ID:2BOd77KE0
>>614
だからCの場合は通常、推奨コンパイラのバージョンも指定されてるだろ。
Linuxとか見てみ?
まあ(Rust含む)後発言語はCの駄目な点を改良してるのが存在意義なのだから、
色々問題が目に付くのは当然だが、
それも含めてCなのだから、文句あるなら使うな、でしか無いよ。

本当にお前はCを使わないのが最適解だ。
何故このスレでグダグダしてるのかもさっぱり分からん。
布教なら本当にウザいから止めろ。
今Cを使ってる奴は、Cの問題点も分かった上で使ってるのだから。

ついでに言うと、お前の問題点は、
・論理性が欠如している
・ワーキングメモリが小さく、広い範囲で物事を捉える事が出来ない
だね。後者の為、どういう論理構成で供述されてるのか全体像を把握できず、
それでも無理矢理反論しようとするから前者のようにも見える。
だからもしかすると、問題は後者だけかもしれんが。
短冊レスしてくるやつはだいたいこれで、
数行で記述できる範囲でしか物事を理解できないから、どうしても短冊レスになる。
なるほど俺に対して冗長で長文過ぎる、というのはまあ事実だろうが、
お前は論理が一貫してる長文は全く書けないタイプだ。
試しに書いてみ?勿論俺は読むから。
でも、頭とお尻で、矛盾すると思うぜ。
お題は、「一体お前はこのスレで何がしたいのか」を俺は希望するが。
2026/07/15(水) 10:55:17.76ID:2BOd77KE0
あとな、507で言った、
> (勿論それまで動いていた)Linuxが動作しなくなって、リーナスがブチ切れた件が、20年程前に有ったろ。
件、まだ探してみてる。で、google(AI?)に聞いたら、以下。

> gcc1.4時代の、リーナスとGCCをめぐる 別の歴史的エピソード について知りたい
>
> GCC 1.40時代(1991年〜1992年頃)のリーナスとGCCをめぐる歴史には、
> 「バグをあえて利用した」、あるいは「GCCをハックせざるを得なかった」という、
> Linux誕生直後ならではの濃いエピソードが複数存在します。
>
> 1. 「インラインアセンブラのバグ」を逆手に取ったコード
> 初期のLinuxカーネル(バージョン0.01〜0.11あたり)を語る上で最も有名なのが、
> GCC 1.40のインラインアセンブラ生成に関するバグを、
> リーナスが認識した上でそのままカーネルのメモリ管理(文字列操作など)に利用していたという話です。
>
> 問題の背景:当時のGCC 1.40には、
> C言語の中に直接アセンブリ言語を埋め込む「インラインアセンブラ」の最適化において、
> レジスタの割り当てや引数の扱いに特定の条件下で不整合が起きるバグがありました。
>
> リーナスのハック:リーナスはこの挙動(バグ)を逆手に取り、
> 自分の386 PCで最も高速に動作するようなトリッキーなアセンブラコードを記述しました。
> 結果、カーネルは劇的に高速化しましたが、
> これは「GCC 1.40のそのバグがある状態」でしか正しくコンパイルできないという、
> 極めて依存度の高いコードになってしまいました。
>
> その後:後にGCCが1.42や2.xへとバージョンアップし、そのバグが「修正」された瞬間、
> Linuxカーネルがまったくコンパイルできなくなる、あるいは動かなくなるという事態が発生しました。
> リーナスはのちに「コンパイラのバグに依存したコードを書いていたせいで、
> GCCがアップデートされたときにひどい目に遭った」と述懐しています。
2026/07/15(水) 10:55:49.63ID:2BOd77KE0
俺が知ってるのは、
・それまで動いていたLinuxが、コンパイラのバージョンアップで動かなくなった
・リーナスは、「gccの連中はコンパイラをぶっ壊しやがった!」とブチ切れた
・結局、リーナスがコードを修正して決着した
だけで、その時に詳細確認するのを怠ってしまったので、
上記AI回答がビンゴなのか、よく分からない。
(基本リーナスは技術に対しては真摯なので、
上記AI回答のようにリーナスが全面的に悪いのであれば、ブチ切れないような気はする)
AIが知ってるのだから、Webのどこかしらに情報は転がってるのだろうが、発見できてない。
知ってる人がいれば教えてよろしく。
623デフォルトの名無しさん (ブーイモ MM0a-y5zM)
垢版 |
2026/07/15(水) 17:04:06.60ID:zH14HiPtM
御託はいいから高級アセンブラとか言ってイキってるやつは最近アセンブラで書いたコードを晒してみろよ
2026/07/15(水) 17:15:39.56ID:SjkbTwGcH
>>619-622
ずっと書いてることも読まずにひたすら、的外れな妄想と罵倒しか繰り返してないお前の方が、Cを使わない方がいいよw
C言語の範囲では反論できないから、Rustの話を持ち出して必死で藁人形論法やってる、つまりお前はC言語を知らないってことはわかってるんだわ
2026/07/15(水) 17:17:58.66ID:SjkbTwGcH
>>619
ループしてるのはお前な
延々藁人形論法しかせずに「コンパイラガー」「Rustガー」って言ってても中身が何もない
C言語の話をしてるのであって個別のコンパイラの話をしてるわけではないし、「コンパイラはどこでも寸分違わず同じ動きをする」と思ってるお前の方がコンパイラに依存してる
2026/07/15(水) 17:19:10.98ID:SjkbTwGcH
>>620
「俺は論理的だ!だから論理的なんだ!!」が論理的だと思ってないと書けないあまりにも低レベルな文章
中卒でもこんなひどいことにはならない
2026/07/15(水) 17:23:24.66ID:SjkbTwGcH
>>619
> コンパイラにバグがあった場合に「ぼくがわるいわけじゃない」と言い訳するしかなくなる

>>621-622
> ・それまで動いていたLinuxが、コンパイラのバージョンアップで動かなくなった
> ・リーナスは、「gccの連中はコンパイラをぶっ壊しやがった!」とブチ切れた
> ・結局、リーナスがコードを修正して決着した

> リーナスが全面的に悪いのであれば、ブチ切れないような気はする

↑ さっそく矛盾しとるw

>>620
> お前は論理が一貫してる長文は全く書けないタイプだ

ここはお前が言われた他人に言われたことを、何も考えずに他人に悪口として放ってすっきりするためのスレじゃないぜwwwww
2026/07/15(水) 17:26:44.61ID:SjkbTwGcH
まとめ

* コンパイラにバグがあった場合に「ぼくがわるいわけじゃない」と言い訳するしかなくなる
→ f97e-K2DK

* 論理が一貫してる長文は全く書けない
→ f97e-K2DK

* Cなのだから、文句あるなら使うな
→ f97e-K2DK
(Cの仕様を守りたくないがために延々支離滅裂な長文を書き散らしている)
2026/07/15(水) 17:28:26.71ID:SjkbTwGcH
>>618
それどこのC言語の話してるんだ?w
ハードウェアの抽象化をやってるのがC言語だから、C言語を書く時はハードウェアに依存しないように書くのが正しい、という話なんだがww
2026/07/15(水) 17:30:13.94ID:SjkbTwGcH
>>619
あと、「言語仕様に則してる」と「バグがない」の区別がつかない奴はプログラミング自体しちゃダメだなw
2026/07/15(水) 17:31:38.88ID:SjkbTwGcH
>>620
推奨って言葉の意味知らなそう
まあ、>>628 でわざわざまとめてやったように矛盾だらけだから、細かいアホ発言を掘り起こすまでもないんだが
2026/07/15(水) 17:36:50.38ID:SjkbTwGcH
619 デフォルトの名無しさん (ワッチョイ f97e-K2DK) 2026/07/15(水) 10:24:07.43 ID:2BOd77KE0
もしコンパイラにバグがあった場合に「ぼくがわるいわけじゃない」と言い訳するしかなくなる。

620 デフォルトの名無しさん (ワッチョイ f97e-K2DK) 2026/07/15(水) 10:24:32.72 ID:2BOd77KE0
だからCの場合は通常、推奨コンパイラのバージョンも指定されてるだろ。
Linuxとか見てみ?
(中略)
それも含めてCなのだから、文句あるなら使うな、でしか無いよ。
(中略)
お前は論理が一貫してる長文は全く書けないタイプだ。

622 デフォルトの名無しさん (ワッチョイ f97e-K2DK) 2026/07/15(水) 10:55:49.63 ID:2BOd77KE0
・それまで動いていたLinuxが、コンパイラのバージョンアップで動かなくなった
・リーナスは、「gccの連中はコンパイラをぶっ壊しやがった!」とブチ切れた
・結局、リーナスがコードを修正して決着した
(中略)
上記AI回答のようにリーナスが全面的に悪いのであれば、ブチ切れないような気はする)


バカに論理は難しいw
2026/07/15(水) 17:39:41.78ID:SjkbTwGcH
このレベルの支離滅裂さでないと「Cはアセンブラに変換されるから仕様なんか無視していい」なんてバカ発言できないってことかなw
2026/07/15(水) 20:36:30.82ID:PFPK0g3k0
f97e-K2DKの主張を整理すると、実は相容れない前提を場面ごとに使い分けています。

## 前半の主張

前半では

* コンパイラは仕様を守らなくてもよい
* コンパイラの挙動が変わっても仕方ない
* コンパイラ込みでC言語なのだから利用者が合わせろ

という立場です。

この立場を採るなら、

> GCCが仕様変更してLinuxが動かなくなった

という状況でも、

> 「じゃあLinux側が直してください」

で終わりです。

これは本人の論理から自然に導かれます。

---
2026/07/15(水) 20:36:42.62ID:PFPK0g3k0
## 後半の主張

ところが後半では

> リーナスがGCCに怒ったのだからGCC側にも問題があったはずだ

という話を持ち出しています。

これは

* コンパイラ側にも守るべき責任がある
* コンパイラの変更が悪い場合もある

という前提を採用しています。

つまり前半とは逆です。

---
2026/07/15(水) 20:36:58.34ID:PFPK0g3k0
## 本来は役割を分離すれば済む話

8934-UT5n、0Hb5-UT5nが言うように、

* **言語仕様を書く人**
* **コンパイラを書く人**
* **プログラムを書く人**

この3者の責任を分離すれば矛盾しません。

* 言語仕様は仕様を定める。
* コンパイラはその仕様に従って実装する。
* プログラマはその仕様に従ってコードを書く。

もしコンパイラが仕様違反ならコンパイラのバグ。

もしプログラムが仕様違反ならプログラマのバグ。

もし仕様自体に問題があるなら標準化委員会の問題。

責任の所在が非常に明確です。

---
2026/07/15(水) 20:37:37.53ID:PFPK0g3k0
## Linuxの実際

Linuxカーネルが
* 特定のGCCバージョンを推奨したり
* 新しいコンパイラに合わせて修正したり
* GCCのバグを回避したり
ということは実際にあります。

しかしそれは
> 現実にはコンパイラにもバグがある
という工学的な話であって、
> C言語仕様なんて守らなくていい
という話にはなりません。
ここを混同すると議論がおかしくなります。

現実には
* コンパイラにもバグがある
* OSにもバグがある
* CPUにもエラッタがある

だからといって
> 「仕様なんて要らない」
とは誰も言いません。

むしろ仕様があるからこそ、
「これはGCCのバグ」
「これはLinux側のバグ」
「これはCPUエラッタ」
と切り分けられるわけです。

---
2026/07/15(水) 20:37:53.67ID:PFPK0g3k0
## 根本原因

f97e-K2DKは一貫した原則から結論を導いているのではなく、

**その場その場で自分に都合の良い責任の置き場所を選んでいる**ように見えます。

* 自分が未定義動作を書くことを正当化したいときは
→ 「コンパイラなんて仕様通りじゃなくていい。」

* GCCを批判したいときは
→ 「コンパイラにも責任がある。」

これでは論理体系として整合しません。

一貫させるなら、

> **仕様は共通の契約であり、コンパイラもプログラマもそれに従う。それでも現実には実装のバグやエラッタは存在するため、実務では個別に対処する。**

という立場になります。これは理論と実務の両方を無理なく説明でき、責任の所在も明確になります。
2026/07/15(水) 20:41:25.36ID:PFPK0g3k0
提示された一連の書き込みに見られる論理的整合性の欠如は、プログラミング言語、特にC言語における「仕様」「未定義動作(Undefined Behavior: UB)」「コンパイラの役割」という、極めて厳密であるべき領域において、個人の感情や経験則が理論を凌駕してしまった典型例と言えます。

投稿者が陥っている矛盾の構造を、技術的な観点から詳細に分解し、なぜこれが論理破綻を招いているのかを浮き彫りにします。

### 1. 「コンパイラの脆弱性」と「プログラマの責任」の二律背反

投稿者の主張の根幹にあるのは、自己のコードが引き起こす問題から責任を回避するための「責任の転嫁」です。

* **前半の主張(責任回避の論理):** 「コンパイラはただの変換器であり、仕様を逸脱していても問題ない」という主張は、プログラマが仕様を無視して未定義動作に依存したコードを書くことを許容する論理的拠り所となります。これにより、「動かなくなったのは自分のコードが悪いのではなく、コンパイラの仕様逸脱(バグ)のせいだ」という自己弁護が可能になります。
* **後半の主張(経験則による正当化):** 一方で、リーナス・トーバルズの事例を出す際は、「コンパイラが仕様通りに動いていない(あるいは後方互換性を壊した)ことに対してブチ切れるリーナスは正しい」という立場を取っています。

ここに致命的な矛盾があります。「コンパイラが仕様を逸脱しても問題ない」と考えるならば、GCC側がどのような挙動変更を行おうとも、それは「ただの変換器の仕様変更」として受け入れるべきはずです。しかし、投稿者は「動かなくなった」という事実に対し、コンパイラ側の責任を追及するリーナスの姿勢を支持しています。これは、**「自分のコードが正当であるという前提」を維持するために、その時々の都合に合わせて「コンパイラの定義」を書き換えている**に過ぎません。
2026/07/15(水) 20:41:37.26ID:PFPK0g3k0
### 2. 「推奨バージョン」と「未定義動作」の混同

投稿者は「Linuxなどの大規模プロジェクトではコンパイラのバージョンを固定している」と述べていますが、これは技術的には「未定義動作を回避するための暫定的な防御策」であり、「未定義動作を書いても良いという免罪符」ではありません。

* **専門的見地:** 大規模なカーネル開発においてコンパイラのバージョンを固定するのは、コンパイラの最適化パスに含まれる潜在的なバグや、標準仕様の解釈の差異がカーネルの機微なハードウェア操作に影響を与えることを防ぐための**リスク管理**です。
* **論理の飛躍:** 投稿者は、この「リスク管理としての固定」を、「仕様外のコードを書いてもコンパイラ側が合わせるべきだ」という誤った論理に変換しています。リーナスがGCCに対して怒ったのは、彼が「仕様を無視したコード」を書いたからではなく、「GCC側がそれまで確立されていた暗黙の了解(あるいはバグを含めた挙動)を一方的に変更し、カーネルの安定性を損なったから」です。
2026/07/15(水) 20:41:48.79ID:PFPK0g3k0
### 3. 「仕様」を否定したことによる論理的袋小路

プログラマが「C言語の仕様」を厳密に守るという規律を捨て、「自分のコードが動くかどうか」という結果のみを重視し始めた瞬間、論理的な対話は不可能になります。

* **仕様の役割:** プログラミング言語の仕様書は、言語利用者とコンパイラ実装者との間の「契約」です。
* **投稿者の現状:** 投稿者は、自分に都合の良い時だけ「仕様(契約)を守れ」と叫び、自分が未定義動作を踏み抜いた時は「仕様(契約)なんて無視して動くものが正義だ」と主張しています。

リーナス・トーバルズがGCC開発者と衝突する際、彼は「カーネルの信頼性」という極めて高い基準で議論を行っています。対して、この投稿者が行っているのは、「自分の書いたいい加減なコードが、コンパイラの更新によって動かなくなることへの個人的な不満」の正当化です。
2026/07/15(水) 20:42:04.27ID:PFPK0g3k0
### 結論:なぜ矛盾が生まれるのか

この人物の思考プロセスをまとめると、以下のようになります。

1. **目的:** 「自分が楽をしたい(仕様を厳密に守る勉強や、バグ修正をしたくない)」。
2. **手法:** 「コンパイラや他人のせいにする」。
3. **矛盾の発生:** 「自分の正当性を守るためにコンパイラの重要性を貶める」が、「自分のコードが動かなくなった時には、コンパイラの重要性を強く認識する」という二重基準を用いている。

この矛盾は、「論理」を用いて技術を語っているのではなく、「自分の書いたコードへの執着」を論理というラベルでコーティングしようとしているために生じています。**技術的な議論においては、仕様という共通の基盤を否定した時点で、その議論自体が論理性を失い、単なる個人の感情の吐露に成り下がってしまう**という好例と言えるでしょう。
2026/07/15(水) 20:42:58.30ID:PFPK0g3k0
わざわざ自分で書く必要もなさそうなくらいバカらしかったので、ChatGPTとGeminiに書かせといたよw
2026/07/15(水) 21:44:58.26ID:2BOd77KE0
>>624 -643(安価範囲広すぎてNGだとさ)
お前レベルの馬鹿には付ける薬がないのは理解した。
2026/07/15(水) 23:06:39.42ID:PFPK0g3k0
>>644
「反論できないからとりあえずバカって言っとこ」ww
2026/07/15(水) 23:18:39.09ID:PFPK0g3k0
AIにすら反論できない時点でお察しというか
2026/07/15(水) 23:18:54.22ID:SzM3hF5h0
AIの吐き出したゲロコピペするスレになったなら、
次スレは不要だな
2026/07/15(水) 23:19:55.61ID:PFPK0g3k0
>>647
人間が吐き出したゲロにぶつけるなら十分だろ
2026/07/15(水) 23:20:42.75ID:PFPK0g3k0
f954-K2DKは自分で何書いてるかもわかってないんだから
AIも自分で何書いてるかわかってないから同レベルだねw
2026/07/15(水) 23:24:54.78ID:PFPK0g3k0
>>619-622
>>644
「コンパイラは仕様に準拠した実装を作るのが仕事」「プログラマは仕様通りのコードを書くのが仕事」と分離すればこんな矛盾は起こらないのに、自分が未定義動作を踏み抜きまくるコードを書くことを正当化するために、「コンパイラは仕様を守らなくていいが、僕の思ったのと違う動きをするバージョンはダメ」とか言わなきゃいけなくなったんだぞw
2026/07/15(水) 23:27:58.05ID:PFPK0g3k0
>>628 が全てではあるけど、f954-K2DKは結局他人に言った悪口全部自分のことですよって丁寧にバラしていっただけだったなw
2026/07/15(水) 23:34:03.15ID:PFPK0g3k0
「長文だから読まなくてもいいや、自分が未定義動作を踏み抜きまくるコードを書くことを正当化したいから乗っかったろw」
みたいなアホが何人かいたから無駄に長くなったけど、結局f954-K2DKは何もわかってないバカなんだって
2026/07/16(木) 01:29:47.62ID:QDgTIUas0
むかーーーし、rmsが『仕様より動くことが大事』みたいなこと言ってたのうっすら思い出した。
GCCって、ANSIで定義される前から1行コメント使えたよね。
とは言えGCCとてCである事を辞めていないと言うレベルの話だろうけど。
654デフォルトの名無しさん (ワッチョイ f901-y5zM)
垢版 |
2026/07/16(木) 02:19:54.51ID:h9q4RvcY0
連投長文は内容以前に知能障害のバカ
2026/07/16(木) 03:01:53.88ID:tqJQMSog0
>>654
反論できないから必死こいて罵倒しようという魂胆が透けて見えてる
2026/07/16(木) 03:06:03.45ID:tqJQMSog0
>>653
多分勘違いしてると思うので言っておくと、未定義動作は本来なら動かない例だぞ
2026/07/16(木) 07:59:20.02ID:ydvs2Ppy0
>>653
その発言は知らんが、仕様はあくまで手段であって、目的ではないからな。
とはいえ、その時代の価値観を今に持って来ていいわけはない。
仕様準拠の方がコミュニティ含め長期的な生産性は上がるのは確実。

ただ実際は、それとは程遠い。
JSは現実的に唯一、「ソースコードでの品質を担保」出来てる(させられてる)環境だが、
プログラマは実行環境の差異に振り回され、
IE死ね、次にFirefoxも死ねで、chromeに統一されることを望んでいる。
他言語は、RustにしてもC#にしても、主たる環境でのコンパイル結果でテストしており、
仕様準拠なソースコードならあらゆる環境で動作するとは言い難い。
Javaも元祖"Write Once, Run Anywhere"だが、実際は"Write Once, Debug Everywhere"になった。

本質的に、プログラマは、「自分と(ユーザー含めた)他人が同じ環境」が一番楽なのでこれを望む。
コンパイラ別のオプションや#ifdefなんて、コンパイラを固定してしまえばそもそも不要となり、
生産性を上げるためには環境を絞ったほうがいい。
ただこれでは永遠にソースコードでの品質は確保できない。
(たまたまその環境で動作するコードが出力されてるのをテストしてるだけになる)

この点、仕様と実装がデタラメに運用されてるC言語のほうが、
主たる環境もgcc/Clang/VC/各社勝手コンパイラと多種多様であり、
結果的にあらゆる環境でそのコードがコンパイルされ、テストされるので、
まだ「ソースコードでの品質を担保」に近いというのは皮肉だ。
2026/07/16(木) 08:52:43.54ID:ydvs2Ppy0
>>653
ついでに言うと、C言語は「生産性を上げる為に仕様を絞る」事もやろうとしてない。

仕様準拠は主に(長期的な)生産性向上の為(=ソースコードの品質を上げる為)として、
生産性を上げる為には仕様内の差異を潰す(仕様を絞る)事をしないといけない。
逆に言うと、仕様準拠だが実装がバラけるような「ユルい」仕様では意味がない。

具体的には、funcD(funcA(),funcB(),funcC())に対し、
C#やJSではABCD順に評価されると仕様で「固定」されているが、CではABC間は順序が規定されてない。
だから、この点、仕様準拠でも、たまたまABCD順の出力もあれば、BCAD順の出力もありえ、
その環境の「実行コード」をテストして動いたとしても、その「ソースコード」が正しいとは言えず、
本来は3P3=6倍の手間を掛け、「全順序ケースの『実行コード』」をテストするしか無いが、
現実的に、これが出来るコンパイラもない。

この辺、当たり前だが後発言語は潰してある。
Cでこの仕様を修正できない理由は、政治であり、(560参照)
コンパイラ作成側が1mmも譲らず、あらゆる自由度を最適化余地の既得権益としてるからだが、
これでは「何のための仕様なのか」であり、完全に本末転倒になっている。
(がまあ、これ含めてCの文化ではあるが)

なのでまあ、C界隈は、仕様準拠して生産性を上げるぞ、なんて目指して無くて、
昔から変わらず、自分環境で自分の希望するコードを得るための手段、となってる。
(勿論、仕様準拠ゴリゴリもありだが、Cの場合はそうやっても生産性が上がるようにはなってない。
《でもやらないよりはマシだが》)
2026/07/16(木) 08:54:03.33ID:ydvs2Ppy0
ちな、同様のは、例えばJSではsortが不安定ソード→安定ソートに仕様変更された。
てか、他言語はちまちまこの辺を修正してるのだから、Cも修正しろよなと。
Cは変わらなすぎなのが問題。

本来、良い仕様を策定することはすごく難しくて、
あんまり「仕様」にこだわりすぎると前に進めなくなるので、ある程度諦めて「動くコード」をさっさと作れ、
とRMSは言ったのではないかと思われるが、
時代は下り、ソフトウェアについての知見も溜まってきてるので、今は仕様にもこだわらないといけない時代ではある。
(ただまあ、個人的にはRustではないな、と見てる。あれはゴミだ)
2026/07/16(木) 10:11:22.50ID:AMrrXlFD0
> funcD(funcA(),funcB(),funcC())に対し、
> C#やJSではABCD順に評価されると仕様で「固定」されているが、CではABC間は順序が規定されてない。

呼び出し順一意にしたかったらそういう書き方するだけだし、それ以前の話として「副作用ある式を関数の引数にすんな」くらいのコーディング規約は決めてて当たり前。
2026/07/16(木) 11:53:49.22ID:ydvs2Ppy0
>>660
それは「対策出来る」だけであって、「あるべき仕様」ではないでしょ。
そもそもこの仕様を変更したとして、誰にも何らデメリット無いのだから、
コーディング規約によるアナログ対策ではなく、文法化で100%厳守強制でいい。他後発言語はそうしてる。
(地雷原で「旗立てといたから踏まないでね」と言われたら、いや「除去しておいてくれ」と思うでしょ)

Cはこの辺のノウハウが溜まる前の言語だから、色々仕様に不備があるのは致し方無しだが、
改善しようともしてないのは問題だと思うよ。

とはいえ結局、コンパイラ言語の成果物の最終配布形態/テストターゲットはバイナリであって、ソースコードではないから、
「このソースコードは動作します」なんて事はそもそも出来ないけど、
それでも一応、そこを目指すべきではあるだろ。
(…なんだが、対策出来れば実用言語としてはある程度は十分で、放置されて今があるわけだが)
2026/07/16(木) 12:02:44.88ID:tqJQMSog0
>>658
仕様で決まってないことがあるから仕様準拠しなくていい、は草
流石にここまで行くと笑えてくるわ、そんなこと言いだしたらどんな言語でも仕様守らなくていいって結論しか導き出せない

それにサラッと話そらしてるけど未定義動作を書いてもいい理由にはなっていない
処理系に依存するのは別にいいけど、未定義動作は何が起きるかわからんから動かないコードとして扱う必要があるって話だからな
2026/07/16(木) 12:13:40.88ID:tqJQMSog0
>>661
> そもそもこの仕様を変更したとして、誰にも何らデメリット無いのだから
それは君の思慮が浅いだけ

> 「このソースコードは動作します」なんて事はそもそも出来ない
仕様通りの環境で動作するコードは書ける
そこからはコンパイラの責任と割り切らないと >>638 みたいな矛盾が起こる

そして、各環境で使う時に動くかどうか検証するのはCに限らず当然
そこをCだけのことだと思っているようだが、実行環境依存の要素はどの言語にもある
エアプには難しいかなあ
2026/07/16(木) 12:15:06.95ID:tqJQMSog0
>>659
不安定ソートと安定ソートに優劣はないよ
使い道が違うだけ
だからそこを勝手に差し替える方がまずい仕様変更
2026/07/16(木) 12:22:29.33ID:tqJQMSog0
> 仕様準拠は主に(長期的な)生産性向上の為(=ソースコードの品質を上げる為)として、
> 生産性を上げる為には仕様内の差異を潰す(仕様を絞る)事をしないといけない。
> 逆に言うと、仕様準拠だが実装がバラけるような「ユルい」仕様では意味がない。

お前やっぱC書いたことないだろって感じのことばっかり言うよな

流石に明らかに変なところに突っ込まないのは逆に怪しいから突っ込むけども、
> 仕様準拠だが実装がバラけるような「ユルい」仕様では意味がない
申し訳ないが意味不明

仕様準拠なら実装が違っても問題ないのは前提なんだわ
それは「高級言語」というものの定義の話としてそうで、逆に、そうじゃなかったらアセンブリ直接書けって話にしかならんのね
ハードウェアを抽象化した以上、仕様で提供される機能の範囲で書くというのは君が散々Cより改良されてると言ってる諸言語でも同じ
2026/07/16(木) 12:23:52.40ID:AMrrXlFD0
>>661
> そもそもこの仕様を変更したとして、誰にも何らデメリット無いのだから、

新しい仕様に依存したコードが書かれる様なるとそれに対応しない処理系の使用は絶望的になるからデメリット大きい。
適当に同じ処理まとめるだとか処理の順番入れ替えるだとかの自由も奪うことになると最適化の自由度も今より下がる。
2026/07/16(木) 12:24:26.60ID:tqJQMSog0
>>658
> 生産性を上げる為には仕様内の差異を潰す(仕様を絞る)事をしないといけない
これはそもそも間違ったことを書いている
正しくは
> 生産性を上げる為には仕様内の差異を潰す(挙動を絞る)事をしないといけない
となる

で、なんでそんなことを必要とするのかと言えば、仕様に準拠しない書き方をしているからでしかない
仕様で保証されていない挙動を勝手に前提としてコードを書き、その通りにならない環境が出てくるからそういう作業が始まる
最初から仕様に定められた通りに解釈していれば、この無駄な作業は発生していない
2026/07/16(木) 12:26:17.55ID:tqJQMSog0
>>666
それなんだよな
もっとも、最初から未定義動作踏み抜くようなクソコードしか書かない奴に通じるかはわからんが
2026/07/16(木) 12:27:42.73ID:tqJQMSog0
>>657
マクロはC言語の仕様に含まれてるし、処理系定義もC言語の仕様に明記されてるんだけどなあ?
君の言ってる仕様って何の話?w
2026/07/16(木) 12:28:29.06ID:AMrrXlFD0
C言語は仕様を完全に理解し未定義動作を絶対に踏まないパーフェクト超人向けの言語として舵切ってるのでJavaScriptみたいな素人向け言語の方針になびいたりすることは今後もなかろう。
2026/07/16(木) 12:30:37.51ID:tqJQMSog0
>>658
> コンパイラ作成側が1mmも譲らず、あらゆる自由度を最適化余地の既得権益としてるからだが、
未定義動作の意味を理解していないからこんな妄想が出てくる
どんな言語でも仕様の範囲外をどう処理するかはコンパイラやランタイムの自由で、そういうコードは「書いてはいけない」というのは共通している
書いてはいけないコードを書いた結果壊れるのは当たり前で、コンパイラが悪いというのは的外れな主張だ
2026/07/16(木) 12:38:17.69ID:tqJQMSog0
>>670
> C言語は仕様を完全に理解し未定義動作を絶対に踏まないパーフェクト超人向けの言語
これはガチ
別に舵切ったわけじゃなくて最初(仕様が公開された時点)からそうなんだけどね
だから「できない奴は去れ」なんだよな
2026/07/16(木) 12:52:20.03ID:ydvs2Ppy0
>>666
資産はコードであって、コンパイラではない。
勿論、改修の手間も比べ物にならない。

> それに対応しない処理系の使用は絶望的になる
これまでのコードは全て動作するから問題ない。
コンパイラは改修すればいいだけ。

> 最適化の自由度も今より下がる
同上、要するにコードよりもコンパイラを優先する愚かな思考。
ここに自由度残してもバイナリの品質が上がることはほぼ期待できない。
なら、コードの品質を上げるべく、仕様を絞ったほうがいい。

>>670
おかしな選民思想を持たず、タダで出来る安全装置は付けるべきだろう。
2026/07/16(木) 16:00:50.92ID:Wb6p8Q0G6
>>673
> 資産はコードであって、コンパイラではない。
コードが資産なのにコードを動かせないコンパイラが支配的になると困るって話だろ
お前ホント日本語読めないよな
> コンパイラは改修すればいいだけ。
コンパイラも資産であるコードの一部であって、全部改修とか現実見てない奴しか言えないバカげた妄言の最たるもの

あと、まだ >>667 と >>671 で否定した
> コードの品質を上げるべく、仕様を絞ったほうがいい
とかいうバカげた主張を何の反省もなく繰り返してるんだな
バカの一つ覚えとはこのこと

> おかしな選民思想を持たず、タダで出来る安全装置は付けるべきだろう。
おかしな選民思想ではなく、ただの事実だよw
C言語は正しく書ける奴が正しく書くことを前提に仕様が決まっている
安全装置が欲しければRust書いてろって話
2026/07/16(木) 16:02:03.60ID:Wb6p8Q0G6
だから親切に最初からf93c-K2DKみたいな奴向けにRustはあるんだって言ってやってるのに、頭使えないからかバカにして見下してるせいで認められない
2026/07/16(木) 16:13:16.63ID:Wb6p8Q0G6
C言語は自分で仕様チェックしてその通り書ける奴のための言語
それができないならRustコンパイラに丁寧に教えてもらいなさいw
677デフォルトの名無しさん (ワッチョイ 89c0-176r)
垢版 |
2026/07/16(木) 17:30:07.71ID:LAo9fD1s0
>>659
ソードってPIPSのSORD?
2026/07/16(木) 18:08:57.80ID:fgqOLN+Y0
あそこは東芝が捕食した
2026/07/16(木) 18:57:04.27ID:ZwV5Ocxz0
最近はCで書いてAIにRUSTに書き直してもらってる
2026/07/16(木) 19:03:30.95ID:uqiKuVosp
>>679
なんでそんな無駄な事する?
最初からRustで書かせればいいのに
2026/07/16(木) 21:11:52.38ID:vcbnvdP8a
>>659
> (ただまあ、個人的にはRustではないな、と見てる。あれはゴミだ)

ゴミとまでは思わないけど
宣伝文句に対して力不足だと思う
俺も出始めのころから2017年?くらいまでは熱心に追いかけてたけど
なんかもう特にコメントするところもない言語って感じ
Scalaなんかも出始めのころ画期的に見えたけどこれももう何も言うことはない
682デフォルトの名無しさん (JP 0Hd2-Klls)
垢版 |
2026/07/16(木) 21:57:29.54ID:Y27OUNXyH
>>679
言語を変えるならjavaスクリプトからラストとかなら分かるけど、その例だとコード実行速度あんまり上がらなさそう
2026/07/16(木) 22:20:07.90ID:tqJQMSog0
>>681
別に宣伝文句に対しては十分だろ
Cと同等の速度もメモリ安全も実現している
「驚きと楽しさで満ち溢れた古くならない言語!」なんて誰も言ってない
2026/07/16(木) 22:20:43.74ID:tqJQMSog0
そもそも実用的なプログラミング言語に「驚きと楽しさで満ち溢れ」てもらっては困る
2026/07/16(木) 22:22:57.40ID:tqJQMSog0
> ただまあ、個人的にはRustではないな、と見てる。あれはゴミだ (>>659)
> おかしな選民思想を持たず、タダで出来る安全装置は付けるべきだろう (>>673)
こんなこと言ってる奴はシステムプログラミング言語に手出しちゃダメ
2026/07/16(木) 22:23:55.35ID:tqJQMSog0
安全にするためのルールにも文句を言う、でも安全じゃないのは欠陥だと喚く、要するに自分の忍耐も努力も足りないことを他人のせいにしているだけ
2026/07/16(木) 23:22:22.34ID:tqJQMSog0
>>682
安全性を向上させたいのでは?
もっとも、最初からRustで書いた方がいいとは思うけど
2026/07/17(金) 19:07:04.68ID:eJfcvx1B0
やっぱAnnex Kってゴミだわ
2026/07/17(金) 22:40:36.31ID:JPfZ12kA0
_s 関数使えたもんじゃないよな
690デフォルトの名無しさん (ワッチョイ 6108-UT5n)
垢版 |
2026/07/17(金) 22:55:21.97ID:SImBWJDs0
あれは失敗規格だから
2026/07/18(土) 13:25:30.49ID:BkyklCKZ0
エラー出たら勝手に落ちたり防ぎたかったら変なん渡さなきゃいけなかったりめんどくさすぎる
692デフォルトの名無しさん (ワッチョイ 8934-UT5n)
垢版 |
2026/07/18(土) 20:56:27.68ID:BkyklCKZ0
やっぱりMinGW使った方がいいな
2026/07/18(土) 20:56:42.79ID:BkyklCKZ0
あ、下げ忘れた
2026/07/19(日) 06:33:39.80ID:Frm9xG3ua
GNU/LinuxでGCCがいいよ
2026/07/19(日) 10:12:10.69ID:7xyOc8N5M
仮想ソフト使ってインストールしている
2026/07/20(月) 17:46:06.08ID:FTzidL2p0
>>694
OSは好きで選べるもんじゃないから、Linux上で開発しても結局最終的にはMinGWに頼ることにはなるよ
2026/07/20(月) 19:02:44.52ID:TtocmnrPM
最終OSは発注者が決める
2026/07/20(月) 20:07:24.83ID:XCZRRui30
クロス開発しても動作確認 (テスト) をしないわけにはいかないのだし、 Windows 用のソフトウェアを作るという前提なら Linux 上でやる意味はそんなにないな。
以前の Windows はパッケージマネージャが駄目だったから環境構築が面倒だったけど今は scoop とかがあるし。
2026/07/23(木) 13:24:55.11ID:pykcIHbI0
オレなんかが仮想環境利用するのは、
1台でサバクラ環境作れるからなんだわ
700デフォルトの名無しさん (ワッチョイ 7763-knxu)
垢版 |
2026/07/24(金) 05:10:49.53ID:taerOtS60
MinGWはWindowsでGCC使えていいよな
2026/07/26(日) 12:41:26.26ID:VyQRUqSH0
一応windowsで使えるgccはある
702デフォルトの名無しさん (ワッチョイ 126a-x+NG)
垢版 |
2026/07/27(月) 04:55:21.25ID:e++5CBjU0
wsl でやるのが楽
2026/07/27(月) 09:41:26.81ID:8CHRIz050
MinGW の Min は Minimal の Min

実際には autotools などのツールチェインやパッケージマネージャと連携しないと使えるライブラリのビルドや利用がやりづらいので Cygwin や Msys2 などの環境内で MinGW を入れたほうが良いと思う。
WSL でも良いけど MinGW のために WSL を入れるのだとしたらちょっと過剰かもしれない。
2026/07/27(月) 12:35:14.45ID:PNTs1cOJ0
Minimalistな、MSYSじゃねーんだからw
Minimal GNUじゃ表したい概念とちょっと違うだろうよ
705デフォルトの名無しさん (ワッチョイ 8667-+gKb)
垢版 |
2026/07/27(月) 12:48:11.63ID:oRGv7FaG0
Minimalist GNU for Windows
らしい
706デフォルトの名無しさん (スップ Sd52-UNRu)
垢版 |
2026/07/28(火) 15:57:03.29ID:HGwE9+Ced
>>703
間違えてた知識教えてもらえて良かったじゃん
見たらお礼の一言でもあってもいいかもね
2026/07/30(木) 13:39:05.46ID:yLT+MEzH0
お礼は物の方が良いぞ
ここに住所と氏名を書いておけ
708デフォルトの名無しさん (ワッチョイ e375-wiNW)
垢版 |
2026/07/30(木) 14:32:08.34ID:Jc6qJmGq0
>>706
掲示板にそういうのを求めても意味はない
709デフォルトの名無しさん (ワッチョイ 53b0-x+NG)
垢版 |
2026/07/30(木) 16:31:20.42ID:CgQTNK3f0
お札を送る
2026/07/30(木) 17:05:29.27ID:yLT+MEzH0
どこの神社が良いですか?
2026/07/30(木) 17:42:55.17ID:4lG5CXrP0
昔cygwinとかあったけどな
2026/07/30(木) 18:03:04.84ID:yLT+MEzH0
悪バグ退散!
713デフォルトの名無しさん (ワッチョイ e38f-wiNW)
垢版 |
2026/07/30(木) 21:20:21.35ID:Jc6qJmGq0
>>710
神社に行って参拝してはならない
714デフォルトの名無しさん (ワッチョイ 126a-x+NG)
垢版 |
2026/07/31(金) 16:28:40.30ID:MilBLIr/0
>>711
今もあるようだが
https://www.cygwin.com/
2026/08/01(土) 02:40:44.14ID:fT3Cj9Cj0
WSLは結局Linux仮想環境だからそこでビルドしたってそのままじゃWindows向けには動かせない
Linux側でクロスコンパイルするにしても、Windows側でコンパイルするにしても、MinGW-w64 UCRT64を使うのが王道
2026/08/01(土) 20:10:39.84ID:WJ2D9tE50
OS固有の機能を使ってないのであれば
Windowsでも動くんではないですか?
2026/08/01(土) 20:24:51.00ID:PAijeuDp0
そもそも実行ファイルフォーマット (をメモリに展開するローダの仕様) がOS固有なので……
Linux だと ELF で Windows は PE
2026/08/01(土) 21:29:20.93ID:WJ2D9tE50
それはそうですね
言葉が不足しました。
2026/08/02(日) 08:29:31.94ID:VpP1GNu10
DOS時代はハード固有の機能を使わければ(キーボードBIOS使わず標準入力関連コマンドを使う等)
同じ系列のCPU/OSの他ハード(PC-98/TOWNS/DOS/V)でも動くというのはあった。
720デフォルトの名無しさん (ワッチョイ ff6a-IV3f)
垢版 |
2026/08/02(日) 10:11:48.55ID:4pM5NiIU0
OSというのは元々そういう互換性を狙って作られたものだった
2026/08/02(日) 12:24:33.49ID:wd/chQhv0
UNIX 以降の OS はハードウェアの違いを吸収する仕組みがある程度はあるけど最初からそれを目的のひとつとしていたかと言うとちょっと疑問。
数十年前に雑誌 (おそらく UNIX USER だったと思う) の連載記事で読んだことがあるようなないような曖昧な記憶だから不確かだけど。
2026/08/02(日) 19:57:26.73ID:r6PbvvWa0
汎用機の世界でも、富士通がIBM互換を狙った理由はそれでしょう
723デフォルトの名無しさん (ワッチョイ cfa9-ZC/C)
垢版 |
2026/08/08(土) 07:51:37.48ID:tgeCoHLT0
5ch でズレないヘミ猫ない?
或いは誰か作ってくれない?

これしか見つからなかった。
http://kako.5ch.io/test/read.cgi/tech/1101615970/
  ヘ_ヘ
 ミ・・ ミ
 ( °)〜
2026/08/10(月) 10:47:56.84ID:YQMvMFmB0
奥さん優秀な方だよな
725デフォルトの名無しさん (ワッチョイ ca6a-a205)
垢版 |
2026/08/11(火) 04:41:54.97ID:HGIrT5e70
ヘ_ヘ
ミ・・ ミ
( ° )~

これでどうか?
726デフォルトの名無しさん (ワッチョイ ca6a-a205)
垢版 |
2026/08/11(火) 04:56:00.15ID:HGIrT5e70
 ヘ_ヘ
ミ・・ ミ
 ( ° )~

難しいな
727デフォルトの名無しさん (ワッチョイ ca6a-a205)
垢版 |
2026/08/11(火) 04:58:05.08ID:HGIrT5e70
 ヘ_ヘ
ミ・ ・ミ
 ( ° )~

うーん・・・
2026/08/11(火) 07:11:42.65ID:mx4kfv350
2ちゃんねるの AA はMS Pゴシックを前提にする習慣なので微調整が必要であればメモ帳でMS Pゴシックを設定して微調整すべし。
各ブラウジング環境のフォント次第なのでズレない方法というのは無い。
729デフォルトの名無しさん (アウアウウー Sa2f-a205)
垢版 |
2026/08/11(火) 12:49:50.22ID:ptuB6G5ta
質問者は
gccを使いたいのか
cygwinを使いたいのか
windowsを使いたいのか
はっきりさせるべき
2026/08/11(火) 17:03:31.82ID:8gMqyrhP0
OpenLDAPみたいなプログラムを作ってみたくて、はじめてのCを買ってきました。
何日位で作れそうですか?
731デフォルトの名無しさん (ワッチョイ dffb-DzFd)
垢版 |
2026/08/11(火) 17:38:38.39ID:+J6O4mZm0
半日
2026/08/11(火) 18:41:29.94ID:dw8FDprd0
作るのは簡単
動くかどうかは不明
2026/08/12(水) 08:45:34.52ID:VHBhB4BD0
>>730
本の内容から作るとすれば、標準入出力と構造体、制御構文、ファイル入出力を学んだら原型動作が作成可能かと。
何日で作れるかは読本ペースと理解度、追加機能とそのために必要な追加学習次第
734デフォルトの名無しさん (ワッチョイ 0fec-QY+j)
垢版 |
2026/08/12(水) 11:07:31.96ID:9FHMbNhA0
まずはポインタの習得が肝心だよ
2026/08/14(金) 19:08:29.19ID:psnt77tf0
ポインタの習得できたら、
次はなんですかね?
2026/08/14(金) 20:24:35.19ID:aAzkQlPJ0
たとえばポインタについて細部を学ぼうとしたらメモリ管理とも型システムとも強い関連性があって、それらを無視して理解することはできない。
つまりひとつを完全に習得してから次の機能を学ぶなんていうきちんとした順序はつけられない。
そこをどうにかして上手いことわかりやするために入門書は腐心してるのでとりあえず一旦は入門書を最後まで読んで理解することに努めたらいいと思う。
こんなところで聞くより入門書の著者や編者の努力を信じるべき。
どうしても理解できない箇所をピンポイントで尋ねるなら掲示板も良いだろうけど本の体系的な説明のほうが全体としては良い説明になってるはずだよ。
2026/08/14(金) 23:16:13.50ID:A9d+qFaE0
おすすめ「苦しんで覚えるC言語」
サイトもあるけど、やっぱり本じゃないとね
古い本だから今更新品の本を買う必要なし、アマゾンで中古本をポチればいいよ
2026/08/14(金) 23:45:48.71ID:psnt77tf0
電子書籍で良いのでは
2026/08/15(土) 01:05:25.19ID:AdrCUUhP0
> おすすめ「苦しんで覚えるC言語」

サイト見たけど間違い結構あるなw
740デフォルトの名無しさん (ワッチョイ 3316-Rd74)
垢版 |
2026/08/15(土) 01:39:47.95ID:3eHbAMFe0
Geminiのガイド付き学習でインタラクティブに学習できるよ
そういう時代
2026/08/15(土) 07:47:55.99ID:Wxt72Cnl0
質問が見当はずれだと回答もよくわからん。
Gemini に手伝ってもらうにしてもベースとしてはちょっとした入門書はあったほうが良い。
2026/08/15(土) 09:06:14.48ID:GGQ2s86t0
ちょっとした入門の、
範囲が知りたいんだが
2026/08/15(土) 10:55:07.00ID:AdrCUUhP0
> ちょっとした入門の、範囲

未定義動作を正確な知識により踏まなくなる程度
2026/08/15(土) 10:59:52.53ID:mirUALuA0
Z知能にCは無理
Rust知能にもCは無理
2026/08/15(土) 11:04:02.85ID:GGQ2s86t0
殆どの人はそれで十分だと思うよな
2026/08/15(土) 11:24:16.96ID:Wxt72Cnl0
私が入門したのは何十年も前の話だから……その頃の感覚で言われても困るだろう。
C に入門するより先に機械語をいじっていたタイプの学習ルートを経ていて、私の同世代は少なからずそんなものだが明らかに現代的な学習ルートではない。

そんで分かってしまうといまさら入門書を見て良し悪しの評価なんかできない。
説明に間違いがあれば指摘はできるけど分かり易さは別の話だし、方便として多少の不正確さを許容したほうが良い場合もあるし。
おそらく入門書は教育者が実際に教育に使いながらフィードバックを重ねたものが良いものになるんじゃないかと思う。
2026/08/15(土) 17:28:19.72ID:GGQ2s86t0
す自動変数
2026/08/15(土) 17:29:53.06ID:GGQ2s86t0
すまん
自動変数を一杯宣言し過ぎてスタック破壊した経験ってないですか?
2026/08/15(土) 18:09:54.17ID:mirUALuA0
>>746
> 教育者が実際に教育に使いながらフィードバックを重ねたもの
=大学の講義資料だろ
今ならStanfordやMITや東大からそこらの駅弁まで手に入る
2026/08/15(土) 18:13:40.05ID:mirUALuA0
>>748
コンパイル時に指定すればスタックサイズを増量できる
2026/08/15(土) 18:33:03.44ID:Wxt72Cnl0
>>750
Windows だとスタックの上限は実行ファイル内に格納されるパラメータだからコンパイル時の指定で変えられるけど現代的 OS の一般論としては OS の側の設定値として持っているのが普通だと思う。
少なくとも Linux や BSD だとそうなってる。
2026/08/15(土) 18:51:17.00ID:vxBg0KLF0
普通はヒープ使うからなぁ
2026/08/15(土) 18:57:49.45ID:PdMcshzj0
unix用のgccだとlinkerのオプションだったと思う。
ただ聞きたかったことはそう言うこたではなかったです。
754デフォルトの名無しさん (ワッチョイ b34e-wPbG)
垢版 |
2026/08/15(土) 19:06:09.15ID:mHgsoPfB0
ふん fixup overflow の呪いを受ければ良いんだ。 :-p
※開発中にこれを喰らうとデスマ確定のLINKエラーw
2026/08/15(土) 20:03:09.70ID:DGyWizKz0
>>748
スタック領域の理解がない頃に謎の不具合として闘っていた可能性はある
大きな配列をmainに定義するとなぜか動かないとか、しかしグローバル変数にするとなぜか動くとか
2026/08/15(土) 20:40:50.03ID:PdMcshzj0
>>755
さう、それです。
元々FORTRANで書かれていたプログラムを移植してました。
各ロジックの移植までは良かったんですが、
配列宣言が関数内に複数個、それぞれ要素数が数万個ありました。
最終的にヒープに取ることにしましたが、あまり納得はできなかったです。
2026/08/15(土) 23:19:14.61ID:mirUALuA0
>>756
それは移植戦略を間違ってる。
FORTRANなんてグローバル変数しかなく、
つまりローカル変数が無くて再帰も出来ない糞言語で、だからこそ廃れたわけだが、
C流のきちんとしたコードに直してやる必要が最初から無い。
まんま全部グローバルでも変数名が被らないのは元ソースが保証してるし、
Cのグローバルはファイル内スコープであり、externしなければ他ファイルからも見えないので、
ファイルを分けておけば他とも被らない。

ただまあ、それでも、スタックサイズを調整するのも一つの正しい方策だと思うけど。
実行時のフットプリントは同じだし。
ちな、FORTRANの移植時には多次元配列の格納順が違うからそこだけ注意な。
https://iifx.dev/ja/articles/457242272/%E9%85%8D%E5%88%97%E3%81%AE%E6%A0%BC%E7%B4%8D%E9%A0%86%E5%BA%8F%E3%81%8C%E6%8B%9B%E3%81%8F%E6%82%B2%E5%8A%87-c%E8%A8%80%E8%AA%9E%E3%81%A8fortran%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E5%8A%B9%E7%8E%87%E3%81%A8%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%AE%E6%88%A6%E3%81%84

>>753
> ただ聞きたかったことはそう言うこたではなかったです。
死ねよクソZ。
お前らは全て他責なのが駄目だ。
「FORTRANからの移植時に」とお前が最初から言えば回避出来た話だろ。
2026/08/15(土) 23:22:33.88ID:mirUALuA0
>>751
> 現代的 OS の一般論としては OS の側の設定値として持っているのが普通
Linuxではulimit -s で変えられるらしいが、どっちが「普通」かには異議ありだな。

そもそもそのプログラムがスタックを大量に消費することはプログラマしか知らない。
だからコンパイル時にマークしておく必要があり、その上で、
システム側で許容された値以下なら許可する、という方式が正しいだろ。
Linux方式だと、エラーになったらその都度対応してくれ、ただどれくらい必要なのかは知らん、というマヌケな事を強制する仕様ではないか。
exeに明記されてれば、少なくとも、静的に大量確保される場合は完全に対応できる。今回もそうだろ。
Windowsの仕様のほうが「普通」で「正しい」と俺は思うね。(よりマシな仕様)
2026/08/15(土) 23:43:09.22ID:PdMcshzj0
>>757
今のところ、科学技術関連のソフトウェア資産はFORTRANの方が多いし、
研究者が書くプログラムも殆どがFORTRANだよ
2026/08/15(土) 23:59:34.06ID:mirUALuA0
>>759
お前が頭おかしいのは分かった
2026/08/18(火) 11:51:13.26ID:9hHWpynz0
>>757
>Cのグローバルはファイル内スコープであり、externしなければ他ファイルからも見えないので、
ファイルを分けておけば他とも被らない。
ここで判断すればオケ
2026/08/18(火) 13:47:12.21ID:DGdHd5vj0
>>761
引用されるまで気にしなかったけど
ファイル内スコープ(内部結合)にしたければstaticを付けてください
staticを付けない広域変数はextern参照されなくても外部結合なので、複数のファイルで同名の定義を行うと多重定義となってリンクができない
2026/08/18(火) 14:11:12.85ID:6VzK0iZS0
> Cのグローバルはファイル内スコープであり、externしなければ他ファイルからも見えないので、

初期化子を書かない仮定義かなんかを誤解してる希ガス
2026/08/19(水) 19:13:07.84ID:n/MO8lqQ0
2000年頃にやったプロジェクトでC/C++対応ヘッダに
Cコンパイラでは
int c;

C++コンパイラでは
extern int c;

となるように書かれてたな。
2026/08/19(水) 19:27:44.40ID:qcCLYMYl0
>>764
Cの場合、そのヘッダーを複数Cソースでインクルードするのはまずくないですか?
2026/08/20(木) 00:06:05.34ID:yH1eBXMA0
>>765
なんかまずいことあるんですか?
https://wandbox.org/permlink/Yr1oe28UFqBSu0hh
2026/08/20(木) 00:42:56.77ID:CPgDHYkC0
#ifdefの類いを使わないでやってみて
2026/08/20(木) 01:04:18.42ID:yH1eBXMA0
> #ifdefの類いを使わないでやってみて

こうですか?
https://wandbox.org/permlink/EskOFaZWlK4yeyFe
2026/08/20(木) 09:27:10.45ID:m8+NKV8o0
普通はヘッダファイルにゃ変数宣言書かないやろ
2026/08/20(木) 09:46:05.97ID:dCI5hbwT0
> 普通はヘッダファイルにゃ変数宣言書かないやろ

じゃあこうかな
https://wandbox.org/permlink/rWNB2Zsj6Kft3dfP
2026/08/20(木) 10:22:40.44ID:zD9pzxQG0
変数を直接には公開しない (適当な関数を通じてのみアクセスする) のでヘッダに書くことはないという意味じゃないの?
2026/08/20(木) 10:28:03.86ID:kgpI2cAu0
>>770
構ってちゃん死ね
2026/08/20(木) 10:28:55.17ID:m8+NKV8o0
グローバル変数は限定的に使おうね
2026/08/20(木) 11:12:16.07ID:BHkIwETw0
>>770
>>762を書いた者ですが、コード内容を調べ、書き方次第で多重定義エラーにはならない事が分かりました。誤情報を書いてしまい失礼しました

C言語では「int c;」と書いた場合は外部変数定義のように見えて実は仮定義という扱い、「int c = 0;」と書いた場合が定義扱いなのですね、、、
仮定義には、定義があればそれを参照できるように機能し(関数宣言に近い動作ですね)、定義がなければ仮定義をもって具象化行う働きがあるのですね

一方C++はODRの厳格化を進めたことによりルールが変わっているようで、私はそれと混同していました
775デフォルトの名無しさん (ワッチョイ 3b1d-lvmO)
垢版 |
2026/08/20(木) 21:10:42.59ID:kgpI2cAu0
>>774
お前も混乱を増長させるな
コンパイラのバージョンを確認してみろ、ゆとりZがよくやる手口だ
776デフォルトの名無しさん (ワッチョイ 7b11-5409)
垢版 |
2026/08/20(木) 21:43:00.84ID:i6ZZ94rn0
$ gcc --version
bash: gcc: command not found
2026/08/21(金) 00:13:07.48ID:Al7ii6Hx0
> コンパイラのバージョンを確認してみろ、ゆとりZがよくやる手口だ

gccのバージョンを新しくしろと言ってるのかな?
https://wandbox.org/permlink/lSFKJiRf1Yr0CX0Y
2026/08/21(金) 07:26:26.19ID:CECVtSfB0
>>775
私の言葉ではかえって混乱を生むかもしれませんのでソースを貼っておきます

https://ja.cppreference.com/c/language/extern

検索には「C言語 Tentative definitions」等も有効です。
C89の頃から存在する挙動、C99で明文化されたようです。
2026/08/21(金) 09:48:24.48ID:uvkfqT3C0
変数と関数で、宣言、定義のルールなんか変わるかな?
2026/08/21(金) 11:43:11.89ID:AhdeXR/60
つい最近に仮定義の話題をどこかで見た覚えがあると思って記憶をたどると Qiita に記事があった。
https://qiita.com/TETSURO1999/items/649b033975583750ad20

C と C++ は世間で思われているよりも多くの非互換をかかえていて、表面上の構文が同じにもかかわらず挙動が違うなんてのは割とある。
C++ に慣れていると C の inline の挙動にびっくりしたりする。
2026/08/22(土) 14:24:52.63ID:0spK21pd0
非互換と言うより別物と捉えた方が良いと思う
2026/08/22(土) 14:55:18.96ID:WaWOHyUHp
でもC++のコンパイラでCもコンパイルできちゃうからなぁ
2026/08/22(土) 17:26:28.71ID:wRPI5YNT0
C と C++ がそれぞれ独立した規格なのは確かなんだけど離れすぎないように配慮はしているんだよ。
配慮した上でこれ。
まあ C の変なところを C++ でもやれとは言えないし、 C はその性質から保守的なのも仕方なくはある。
2026/08/22(土) 18:24:32.93ID:vSvQUPjx0
VC++でC++ソースをコンパイルしたらエラー出て、なんでかなぁと思ったら拡張子が.cだった初心者時代・・・。
2026/08/22(土) 19:23:46.18ID:KuP4v0RE0
C の宣言の文法があまりにひどいので C++ で変えるべきかどうか迷ったという話が D&E に載ってる。
結果的には C を踏襲することにしたけど、変える決断をしていたらかなり大きくプログラミング言語史が違っていたかもしれないな。
2026/08/22(土) 19:38:53.23ID:0spK21pd0
C++の良いところは
取り込んでいっても良いと思います。
オプションで良いです。
2026/08/22(土) 19:57:16.05ID:AkkA9mWX0
>>786
今のgccは互換を保つためのオプショナルのようですね。
-fno-common が規定値
-fcommon は>>777のように指定が必要
788デフォルトの名無しさん (ワッチョイ 6240-orZZ)
垢版 |
2026/08/24(月) 14:10:32.52ID:FITgzI9F0
>>780
>C++ に慣れていると C の inline の挙動にびっくり
ほんそれ
2026/08/24(月) 23:37:56.91ID:8mRZRlF20
なれようず
790デフォルトの名無しさん (ワッチョイ be02-zKTv)
垢版 |
2026/08/29(土) 08:03:26.01ID:zX5LHgzm0
C標準も見た目だけC++に寄せてくるしなー
2026/09/01(火) 00:14:06.47ID:IXFRdCkda
秋来ぬと
目にはさやかに
見えねども
風の音にぞ
おどろかれNULLポ
2026/09/01(火) 01:08:57.37ID:Sd0IuuhS0
そよぐとも目には見えねど白露の宿れる草に秋は来にガッ
793デフォルトの名無しさん (ワッチョイ c5d6-m9W0)
垢版 |
2026/09/11(金) 21:38:32.92ID:m9pRTv5n0
C言語の内容とは関係ないんだけど、古い入門書の「まえがき」に、
「言語とは、筆者が言っていることを理解し、読者が筆者の言わんとすることを理解しようとすれば、その役割を果たす。」
みたいな事を書いていた書籍のタイトルと著者がわかる人おる?
2026/09/11(金) 22:03:45.31ID:IoXK5YWS0
お探しの書籍は、林晴比古(はやし はるひこ)氏による著作『C言語入門』(ソフトバンククリエイティブ/ソフトバンク出版)シリーズである可能性が極めて高いです。
林晴比古氏のプログラミング入門書(『C言語入門』や『BASIC入門』など)の「まえがき」には、プログラミング言語の本質をコミュニケーション(意思伝達)になぞらえた印象的な記述があり、以下のような趣旨の文言が記されています。
「言語とは、話者が言いたいことを表現し、聞く側(読者)がその言わんとすることを理解しようとすれば、それで十分にその役割を果たすものである。」
(※プログラミング言語も同様に、文法に捉われすぎず『コンピュータに何をさせたいか』という意図を伝えることが本質である、という文脈で語られています)

該当する可能性が高い書籍
書籍名: 『明解 C言語 入門編』または『新・C言語入門 シリーズ』(旧・『C言語入門』)
著者: 林 晴比古(はやし はるひこ)
出版社: ソフトバンク(SoftBank Creative)

著者の特徴と文脈
林晴比古氏は1980年代〜1990年代にかけて数多くのC言語やPascal、BASICなどの入門書を執筆されたPC黎明期のベストセラー著者です。
同氏の入門書の「まえがき」や「はじめに」では、次のような哲学が繰り返し語られていました。
単なる文法チェックや構文暗記に囚われないこと
「人間とコンピュータ(あるいは筆者と読者)」の間で意図や論理が正しく伝わることこそが「言語」の本質であること
もし昔読まれたC言語の緑色や青色の表紙の入門書(ソフトバンク刊)であれば、林晴比古氏の書籍で間違いありません。一度表紙や著者名に見覚えがないか確認してみてください。
795デフォルトの名無しさん (ワッチョイ ae14-D25p)
垢版 |
2026/09/11(金) 22:41:11.64ID:rSkwma7r0
AIの答えか
つまりAIは書籍を学習してると
2026/09/11(金) 23:50:37.30ID:q5rznS1p0
林晴比古とか三田典玄とか昔の評判悪かった著者懐かしいな
2026/09/12(土) 00:01:12.34ID:HdkTZBU30
でも、売れてたんだよね
2026/09/12(土) 01:17:59.21ID:F+EEMdMo0
評判悪かったのか。自分はC++入門向けの訳書で一度つまずいて、数年後に比古にゃん本を読了できたことで救われたよ
799デフォルトの名無しさん (アウアウウー Sacd-Up1B)
垢版 |
2026/09/12(土) 01:30:18.34ID:L4vVY98Na
林はるひこはポインタの説明も構造体の説明も下手だよ
800デフォルトの名無しさん (ワッチョイ 6273-tvwl)
垢版 |
2026/09/12(土) 02:45:29.48ID:y/h40Xo50
か○い本よりマシw
2026/09/12(土) 04:33:22.77ID:9SPP8Y7R0
三田典玄の『入門C言語』は間違いが多すぎて改定版が出てたゾw
2026/09/12(土) 05:26:08.75ID:LKzRn6n0M
典玄はCマガジンだったかの連載で頓珍漢な主張カマしてて嫌いだったなぁw
803デフォルトの名無しさん (アウアウウー Sacd-vz9T)
垢版 |
2026/09/12(土) 05:43:10.19ID:/vT1yaWZa
こどもでお金なかったから
学校のパソコンでLSI C試食版のマニュアル読んで学んだ
あとでUNIXカーネルの設計読んだらいろいろつながって感動したな
804デフォルトの名無しさん (JP 0Hdf-6w3j)
垢版 |
2026/09/27(日) 08:40:47.40ID:kDXIIKaKH
>>803
こういう今井翔太みたいな人って今後スキル伸びるだろうな。苦労して学んだ経験、アハ体験って他の何よりも中毒性高いし
2026/09/27(日) 09:53:10.92ID:fIYToHQ00
苦労して学ぶ行為が報われる
そんな時代が続くと良いんだが
806デフォルトの名無しさん (ワッチョイ 37d6-GEdn)
垢版 |
2026/09/27(日) 10:05:30.10ID:R3X/dHdE0
>>803が優秀な AIを開発為遂げ、後にその AIによって淘汰されるのを見るのは忍びない
2026/09/27(日) 10:14:53.08ID:HOfPu1YS0
昔は図書館の本を読んで紙にプログラムを書くとか普通だったし、そういう遊びだった。
子供がやることなんだから将来のために苦労する意思があったわけがない。
むしろ苦労を感じるてるようだと伸びしろに期待できないと思う。 楽しくやろう。
2026/09/27(日) 11:51:47.82ID:w4dOecjt0
され方にもよるが、自分が開発したAIに淘汰されるなら本望なところもあるんじゃないか
地球爆破作戦って映画でそういうことを考えさせられるシーンがあったな
2026/09/27(日) 13:27:45.79ID:vAW48sh00
少なくともC言語プログラマーにAI開発者は居ないんじゃね?
810デフォルトの名無しさん (ワッチョイ 7fd9-0TSE)
垢版 |
2026/09/27(日) 14:32:30.86ID:fXha6t2O0
俺はAI(LLM)開発はFortranだな
cudaとの相性もcより良いし
811デフォルトの名無しさん (ワッチョイ 7fd9-0TSE)
垢版 |
2026/09/27(日) 14:34:51.92ID:fXha6t2O0
cはcudaや並行/並列命令を指示するときディレクティブがめっちゃ面倒くさい
2026/09/29(火) 14:03:07.23ID:kSRX5O5T0
>>796
林氏、人気無かったんだ。よく見掛けたのは印象記憶ってだけか。
最近、氏の『明快入門コンパイラ・インタプリタ開発』ってのをやっと読み終わって、C系インタプリタの実装で入り組んだ再帰呼出しとかしてて『うん、俺には無理!』とか素直に思わせてくれる内容だった。
単純に、自作ゲームに簡単なスクリプト乗せたかっただけなんだけどね。
2026/09/29(火) 21:04:40.17ID:Ol6TF+Ac0
YoutubeでC言語はケン・トンプソンの発明だみたいなことを言ってる動画があった
Cの前身のB言語はトンプソンの仕事だけどCはデニス・リッチーの仕事なんだけどね
Cにトンプソンの思想が混じってるのは事実だけど誰が作ったかという話でトンプソンになるのはおかしい
2026/09/30(水) 10:05:01.83ID:X3g26Jyq0
論外の本は単に読まれないので評判を聞く機会はない。
林晴比古の本は定番の本と言えるくらいに人気があったけど定番の中では定番として紹介するのを躊躇うくらいの出来だなぁというくらいのポジション
……というのが私の理解だけど読んだことは無いので実態がどんなものなのかは知らない。
2026/09/30(水) 10:17:38.54ID:f3Qv5atr0
林は私的体験の範囲で本を書いている
エッセイくらいの気持ちで読めば良い
816デフォルトの名無しさん (スップ Sdbf-mbqL)
垢版 |
2026/09/30(水) 10:53:33.77ID:MvRWC8GUd
>>813
ケントンプソンと2人で開発したみたいのはよく見るな
なんでああなっちゃうんだろうな
この板でも何回か見たことある気がするし
2026/10/05(月) 22:51:28.21ID:uai/iykL0
C言語が特定企業の所有物にならなくて良かった
2026/10/06(火) 09:51:45.46ID:Ba8Kgk4z0
言語仕様を企業 (あるいは誰か) が所有することは出来ないことになってる。
強力な処理系を販売するなどして実質的な影響力を保持することは出来るかもしれんけど。
819デフォルトの名無しさん (ワッチョイ 3da7-7pdY)
垢版 |
2026/10/06(火) 10:37:45.35ID:fASsCVv+0
cが不自由になってたら代替プログラミング言語がでてもっと使いやすくなってたかもよ
820デフォルトの名無しさん (ワッチョイ b8bf-g+JR)
垢版 |
2026/10/07(水) 12:16:08.70ID:zSu0KtT30
トンプソンの最新言語がGO
821デフォルトの名無しさん (ワッチョイ 95ad-g+JR)
垢版 |
2026/10/07(水) 22:31:21.43ID:yGDxulbq0
Goはじっさいのところどうなの
わりと市民権得られてる気がするけど
2026/10/08(木) 08:52:10.07ID:qw8lftRh0
私自身は Go を好きにはなれないので使ったことはないんだけどそこそこ人気が有るのは理解は出来る。
C ユーザが触るなら「こういうのでいいんだよこういうので」くらいの感じなんだと思う。
823デフォルトの名無しさん (ワッチョイ 0dd6-lC4O)
垢版 |
2026/10/08(木) 10:21:52.84ID:4qlpxcjn0
今気づいたんだが、餃子にはちみつをかけたらなんだか美味そうなイメージが浮かんできたわ
2026/10/08(木) 10:42:37.62ID:oyfUblgL0
試してみたら?
2026/10/08(木) 10:44:29.90ID:oyfUblgL0
マグロの刺し身にマヨネーズは
試したことがある
826デフォルトの名無しさん (ブーイモ MM5a-7pdY)
垢版 |
2026/10/08(木) 11:41:28.60ID:ZsBKGrb9M
Goはトラブルが少ない
コンテナでなんか動かすならだいたいファーストチョイスだな
2026/10/08(木) 11:58:36.13ID:ucwOEwPA0
例外による緊急停止がないだけだろ
chdirのエラー無視しても動き続けるとかトラブルが少なくても怖いよ
828デフォルトの名無しさん (ワッチョイ 793e-BswL)
垢版 |
2026/10/08(木) 13:33:28.77ID:/5EQX3jf0
今時分ストローマン論法は流行ってないからやめた方がいい
しかもエラーの原因はIDEの警告無視してるロートル開発者だし
2026/10/08(木) 16:09:21.87ID:oyfUblgL0
>>827
diskfullでも動きそうな元気だなオイ
830デフォルトの名無しさん (ワッチョイ b851-g+JR)
垢版 |
2026/10/08(木) 17:46:49.84ID:QbDbTe4b0
いまのところサーバー用途ではないだろうか
サーバー用途ではとても速いと言うか、比較対象が遅すぎる
2026/10/08(木) 18:24:32.37ID:qw8lftRh0
CPU より I/O が律速だという前提でランタイムの I/O 部分のチューニングを頑張るけど最適化は頑張らない (そのかわりコンパイル速度は頑張る) という戦略が Go では上手くいってる。
サーバだと I/O が効いてくるような用途だから Go がマッチすると思う。
コンパイル速度が速いってのは想像以上に開発体験をよくすると評価されてるみたいだね。
2026/10/09(金) 12:23:38.29ID:9IXvOH8H0
大規模なプロジェクトはビルド通すだけで半日から下手すると数日
数時間以上かけてコンパイルエラーで終了は地味にきついですね
2026/10/09(金) 12:27:49.62ID:dUaqZeeV0
今では考えられないくらい途方もなく長く掛かってたよな
834デフォルトの名無しさん (ワッチョイ 793e-BswL)
垢版 |
2026/10/09(金) 12:54:57.34ID:ci17O38E0
プリコンパイルヘッダやインクリメンタルリンクの爆速感に泣いた記憶
2026/10/09(金) 13:16:27.96ID:chEzddjF0
turboCって何故あんなに速かったんだろう
2026/10/09(金) 15:20:58.52ID:gX4zq/VG0
コンパイルする前にコーディングシート3回見直せって言われてたな
2026/10/10(土) 09:26:57.49ID:1bNLk1Sc0
『何もできないC言語が好き。『猫でもわかるプログラミング』を30年運営する医師に迫る』
https://levtech.jp/media/detail_941/

初めてみたけど酷いなあ。
http://www.kumei.ne.jp/c_lang/index_c.html
http://www.kumei.ne.jp/c_lang/index_c2.html
テック系メディアが紹介すべき代物ではないだろ。

トップページに書いてある「中級者以上の方、セミプロの方、 プロの方ご遠慮ください。」は批判除けか。初心者にこそ見せてはいけない気がする。中級者以上には間違い探しのネタとしては良いかも。
2026/10/10(土) 10:11:07.30ID:75f0Q6sx0
代わりにサイト作ってここで公開してみて
2026/10/10(土) 13:50:03.11ID:4vUJSx4y0
てす
2026/10/10(土) 13:51:01.87ID:4vUJSx4y0
>>837
> インターネット普及期に数多くの初心者エンジニアを導いた老舗サイトです。
ダウト。聞いた事無いし、話題になった事すらない。

> 2000年代には書籍化もされ、『猫でもわかる』シリーズは累計50万部を超える大ベストセラーとなりました。
これも初耳。同様に、見た事も聞いた事もない。
とはいえ50万部は確かに売れてはいるのだろうが。

というかね、お前が何を目指しているかだけども、
中級者以上/セミプロ/プロ連中が見た事も聞いた事もないサイトや本が必要な時点で、
お前も中級者/セミプロ/プロにはなれないし、向いてないから諦めた方がいい。
ただ、趣味でやる分には勝手にしろではある。

俺はプロアスリートとして稼ぐ!、と言うなら、せめて小中学校では無双してから言え、ではあるだろ。
しかし運動音痴な会社員でも休日に草野球を楽しむのは全く問題ないし、草野球向けの指南書があってもおかしくはない。
だからそこに目くじら立てても意味無い。

ただそういう連中がプロに成れる事も、互角に戦える事もない。
プロ連中は、俺の体感だと4割以上は『K&R』だけで何とかなってるから、
『苦C』が必要な時点でかなり分が悪い。ただ、実際に『苦C』出身の連中は多分1〜2割くらいいる。
そして、この本やサイトは、先述の通り、中級者以上/セミプロ/プロ界隈では、聞いた事も、話題になった事すらない。

ただな、しょうもないサイトを探してきてアラ探しするより、お前が作りたいものをさっさと作れ、
その際に引っかかったとき、他に聞くあてがなければここで聞くのもあり、程度だと思うんだがな。
自分が何を目指して、何をするのか、もうちょっと考えた方がいい。
アラ探しで優越感で脳汁ブッシャーも、ドパガキにとっては一つの方法なのかもしれんが。
2026/10/10(土) 13:51:45.15ID:4vUJSx4y0
あらゆる事に言えるが、人数は初心者>>>上級者なので、ほぼ全部がゴミでごく一部がいいものなだけ。
ネット以前は魑魅魍魎には情報発信権がなかったので、ある程度の秩序はあったが、
ネット以後はこの辺も雲散霧消し、酷い記事やサイトはいくらでも作れるようになってるので、
「石ころ」を探す行為自体がまるで意味がない。Qiitaの記事を叩いてる馬鹿共はこれに気づけてない。
せめて「宝石」を探す努力をすべき。

まあ、サイト本体はチラ見しかしてませんけどね。
でも「最初の最初」はこの程度ではあるとは思うよ。
ただ、現在はこの「最初の最初」をCで始める意味が全くない時代なわけでね。
2026/10/10(土) 17:05:53.43ID:mA/4kYf50
場末のプログラマだと知らないかも知れない
2026/10/10(土) 18:38:27.97ID:TbYwvmoQa
いちおう言っておくけど猫サイトは30年くらい前かな?
結構前からあったし俺は少なくとも当時から知ってるし
あの猫の画像もクソ懐かしい

この業界におってあの猫サイト一回も見たこと無いやつなんていないと思ってた
2026/10/10(土) 18:41:20.03ID:TbYwvmoQa
よく見てみると記憶蘇ってきた
Windows SDK編 第1部
これこれ!
win32書いてるときクソお世話になったのを思い出した
2026/10/10(土) 20:49:42.15ID:4vUJSx4y0
>>842
知障Z乙。
2026/10/10(土) 20:52:23.10ID:4vUJSx4y0
>>843
> この業界におってあの猫サイト一回も見たこと無いやつなんていないと思ってた
今のお前に必要か?という事。

既に理解出来てる奴が、さらに入門書を読み重ねる意味はない。
『K&R』で問題なかった奴は、他入門書なんて読んでない。
俺も『苦C』なんて読んでないし、おそらくはちみつ餃子(>>814)もそう。
というか、理解したらさっさと進んでお前が欲しいものを作れであって、
何度も入門書を読んで「理解出来た!」と満足感を得続けるのは頭がおかしいだろ。

そのサイトがそれなりに充実して使えるようになる以前に、
対象レベルを通過した人達は、その存在すら気にしてない。
お前だって、今の小学生向けの教材が凄い事になってても、何も知らんだろ。

ただお前が猫で育って中級者以上/セミプロ/プロになったのなら、
お前がエール送ってやればいいだけ。少なくとも>>837では悪口書かれてるんだし。
俺は、見た事も聞いた事もない糞サイトを探してきて難癖付ける行為は意味無いから止めろ馬鹿タレ、と言っただけ。
ただ、そもそもあのレベルで良いも悪いも糞もねえとも思うが。
2026/10/10(土) 21:48:50.14ID:1bNLk1Sc0
> 俺は、見た事も聞いた事もない糞サイトを探してきて難癖付ける行為は意味無いから止めろ馬鹿タレ、と言っただけ。


テック系メディアで一昨日の日付で紹介されてる状況理解しとらんわけねw
2026/10/10(土) 22:22:16.59ID:4vUJSx4y0
>>847
知障君は最終的に何が目的なの?
2026/10/10(土) 22:47:09.13ID:TbYwvmoQa
猫知らん奴秀丸も知ら無さそう
2026/10/10(土) 22:51:20.48ID:1bNLk1Sc0
>>837見てトンチンカンな>>840投稿するID:4vUJSx4y0はマジモンのキチガイw
2026/10/10(土) 23:21:00.85ID:4vUJSx4y0
>>849
秀丸は知ってるし、使ってる連中も見てきてるよ。
俺はemacs派なので使った事無いけど。

まあ猫がそんなに有名なら、俺とは世代が違うんだろう。
2000年代にC入門した人達には有名なのかな?
2026/10/10(土) 23:22:05.18ID:4vUJSx4y0
>>850
自分の思考を言語化出来ない知障なんだな。

丁度話題になってるよ。
> ネットというかSNS流行りだしてから日本語を曲解したり読めないやつ増えたんだよ [194767121]
> https://hayabusa9.5ch.io/test/read.cgi/news/1791612388/
俺も「可視化されただけで増えてない」派だ。
リアルでは、自分と同程度の連中にしか会わないから、とんでもない馬鹿に遭遇する事もない。
逆にそこがネットの魅力なわけだが、言語化能力がない奴はウザイだけだな。
意見が合うかはともかく、意見が言えないようでは、存在価値無いだろ。
2026/10/10(土) 23:31:35.07ID:mA/4kYf50
5ちゃんねるはリアルではない
854デフォルトの名無しさん (ワッチョイ 27a9-z/m9)
垢版 |
2026/10/11(日) 07:39:53.29ID:b53A9oAP0
>>837
> 初めてみたけど酷いなあ。
> http://www.kumei.ne.jp/c_lang/index_c.html
> http://www.kumei.ne.jp/c_lang/index_c2.html
> テック系メディアが紹介すべき代物ではないだろ。

目次ページじゃないか。
批判は的をしぼり具体的にすべき。
2026/10/11(日) 08:31:11.64ID:bykGSTRS0
まだGoogleが無かった頃のデザインを残してるのだから、許してあげてよお
2026/10/11(日) 08:32:29.65ID:bykGSTRS0
>>855 は >>837宛
2026/10/11(日) 09:12:16.63ID:OYNXwd390
>>855
それは阿部寛にだけ許された特権。イケメンは強い。

それで思い出したが、
> (※)当時は個人がドメインを取得するのは難しく、「粂井ネット」という団体を設立してドメインを申請したという。
> なお「旭川で独自ドメインを取得したのは、旭川市医師会に次いで僕が2番目のようです」とのこと。
これってもしかしてあのすんごかった病院のサイトか?と思ったが、違うな。

筆者が副院長してる病院が属する法人のサイトもそれなりにレトロ。
> https://henry-dunant.or.jp/index.htm
ただ俺は、今風の、オサレだがどこに何があるかぱっと見分からないサイトよりは、
この手の、モジモジしてるけど見りゃ分かるだろなサイトのほうが断然好きだけどな。
必要な情報への到達が断然速い。検索頼みは甘え。
2026/10/11(日) 09:50:22.98ID:JUHz/Sac0
>>857
後半部分の主張わかるw
オサレなスペースとかいらんのよ
省いて、まとめて、一覧性を高めてほしいんよ
何回もクリックさせられたり
何回もスクロールさせられたり
最後に「いかがでしたか?」みたいなのいらんのよなw
2026/10/11(日) 12:28:08.97ID:vtRdhhFP0
VS自体がクソ高かった時代に小学生のガキが無料で開発勉強するにはまずお世話になるサイトでした
今はもっと良い環境と資料がいくらでもあるというのはその通りです
2026/10/11(日) 12:32:55.62ID:vtRdhhFP0
>――そうして、「猫でもわかるプログラミング」が始まったのですね。サイトのトップページには「中級者以上の方、セミプロの方、プロの方ご遠慮ください」とまで言い切っています。なぜそこまで初心者向けに振り切ったのでしょうか?
>粂井:えっと、なんて言うんですかね。
>パソコン通信の時代にC言語の掲示板をよく見ていたんですが、そこではいつもですね、その……すごい、喧嘩が起きるんですよね。
>――技術的な正しさや、それぞれの思想による論争……でしょうか。
>粂井:そうなるとちょっと、アレなので。「本当に、初心者の方だけ見てください」ってことで、こういう建付けになったんですよ。

いいペルソナ設定だったと思う
861デフォルトの名無しさん (ワッチョイ ff8f-61Tg)
垢版 |
2026/10/11(日) 13:13:24.25ID:Z/F10X5N0
100万人の信長の野望は、1件ほとんどの情報が詰まったメイン画面だが
実に無駄ばかりで醜い
862デフォルトの名無しさん (ワッチョイ 07d6-r1rm)
垢版 |
2026/10/11(日) 15:21:58.94ID:7DrDMou20
猫とトホホは、インターネッツでのIT記述との偶然の出会いや小さな興味関心を育てるのに大きく貢献した。そんな位置付けな印象。
863デフォルトの名無しさん (ワッチョイ 07d6-r1rm)
垢版 |
2026/10/11(日) 15:22:43.98ID:7DrDMou20
IT技術
2026/10/11(日) 15:55:56.99ID:re4n1wyG0
とほほと猫とあと何個かあったような気がするんだけど思い出せない
プログラミングに限らず、なんか個人サイトにいろいろ助けられた思い出
2026/10/11(日) 16:31:49.52ID:OYNXwd390
>>864
DOBONじゃね?もう一個何かあった気がするが。

トホホはCに関しては知らんが、JavaScriptに関しては、
他のサイトが全部ゴミな事もあり、トホホだけはマシだった。
で、件の記事の下部のリンクから読んで、ああこんな人が書いてたのか、とは思った。

猫は俺はマジで知らない。
ただ、実際に有名ではあるんだろう。だからこそ記事に取り上げられ、また、売れたんだろうし。
2026/10/11(日) 23:09:10.30ID:OYNXwd390
>>859
猫:1996〜
MSDN公開開始:1998〜
VSEE(無料版):2005〜
なので1996-2005の頃にCを初めた人にとっては多分有用だったのだろう。
MSDNがどこまで公開してたか忘れたが、元々有料だったし、最初から今の様に全部ではなかったはず。
そしてその頃はネット環境も当たり前でもなかったし、
動作するコードを入手すること自体が結構手間だったから。

てかね、何だったか忘れたが、
SDKのコードもドキュメントのコードも通らず、どうしろと?な状況もあったし。
今はそういう無駄な苦労をせずに済むだけでだいぶマシな時代になってるよ。

>>860
実際それでいい。中級者以上なら公式(MSDN)見ろで十分だし。
サイトはそれ以前の初心者向けに「呪文だと思ってこの通り書いて動かせ」で、初手としてはこれで正しい。
ただこれだとSDKのサンプルコードを動かしてるのと同様だから、
さっさと次に行け、具体的には目的のアプリを作れ、ではある。

>>844
いやデザイナ使えよ、とは思ったが。
ただ先日、小学生の算数で手でグラフを描くのを止め、最初からExcelでやらせる、という話が出てた。
俺はこれには反対で、小学生のうちは手でグラフ描いとけよ、そうじゃないと二度と描く機会はないし、
Excelなんて中学生以降で十分、と考えてる。
これと同様、ズブの初心者がデザイナを使うのは邪道!とでも思ったのかね?
ただデザイナ使わないとVisualな意味無いんだが。
俺はXWindowの呪文を手打ちさせられた経験があったので、初めてVC使った時は感動した。
867デフォルトの名無しさん (ワッチョイ 87c0-5gUK)
垢版 |
2026/10/12(月) 06:44:42.07ID:KnDi/oPG0
じじいは話が長い
2026/10/12(月) 07:51:22.68ID:aUcxdPiw0
Zは死ね
2026/10/12(月) 08:29:35.27ID:c/waB+x80
c言語ソースは3行以内に書かないとな
2026/10/12(月) 09:15:12.16ID:fqgpECZP0
WisdomSoftとかProgramming Placeとかもよく見てた
2026/10/12(月) 10:33:27.19ID:aUcxdPiw0
何故秀丸マウント?(>>849)と考えてたが、なるほどIDEを否定してる旧人類か。
IDEで「新規プロジェクト作成…」のウィザードに従ってOKしていけば>>844の内容は5分で完成する。勿論当時のIDEでも。
よって、正しくIDEを用いた連中はどんどん先に進める。
一方、お前らは無駄に一日かけたから、今も無能なままなわけだ。
お前らが俺のアドバイスなんて聞くとは思えないが、それでも(外野のためにも)一応言っておくと、

IDEは最初から使え。初心者ほどIDEの効果が絶大だ。
最初からプロ用のIDEを使え。今ならVSかVSCodeだ。初心者用のIDEが偶にあるが、ゴミだから無視でいい。(ていうかバグが多い)
初心者のうちは、IDEの全機能を使おうとはするな。お前にとって便利な機能だけを使えばいい。(※)

ただまあ、2000年頃は実際、IDE否定派、IDE使うな、テキストエディタで書け、って奴も割と居た。
今はもうそういう連中はほぼ死んだと思うが、そういえば、連中の推しテキストエディタが割と秀丸だった。
だからIDE否定派の旧人類には猫は割とフィットするのかもしれん。
ただ明らかに時間の無駄だがな。
2026/10/12(月) 10:34:01.60ID:aUcxdPiw0
※
なんでも形から=プログラミングに於いては文法から入ろうとする奴は居る。
C/C++はこのタイプとは絶望的に相性が悪く、
C: 文法が軽すぎて、全部抑えた後にも何をすればよいか分からず迷子になるから、
C++: 文法が無限にありすぎて終わらないから、だったのだが、
ゆとりZの場合は、追加で、
C: 現代的には使用禁止の文法も「これ知ってる俺スゲー」のマウントネタであり、(>>770)
 結果的に、廃止すべき糞文法を駆使した糞コードを凄いものだと勘違いしてるから
という、おかしな事にもなってる。(なおこれは何度も繰り返してるので俺はもうスルー気味)
が、これはさておき、このタイプはIDEの全機能を網羅しようとして嵌ってしまう。
初心者がプロ向けの全機能を理解できることはない。
で、おそらく、こういうタイプの為の救済策が、
・初心者用IDE(初心者でも分かる機能しか搭載してない)
・IDE使わずにテキストエディタ(だって他機能が無いのでよそ見されない)
なのだと思うが、これは結局、一部の馬鹿に付き合わされてるだけだ。
IDEを用いれば、特に初心者の頃の上達速度は何十倍にも上がる。最初からIDEを『正しく』使え。
(逆に考えると、IDE否定派は、その本人がこのタイプなのかも。
この意味では、自分と価値観が似てる筆者のサイトや書籍を参考にするのが上達の早道とはなるが)
2026/10/12(月) 11:20:16.65ID:c/waB+x80
初期にPWB試してから
二度と使わないと心に決めた
2026/10/12(月) 12:01:11.29ID:qXKcpegz0
>>870
> WisdomSoft

これなw これこれ、これも見てたわ
printf("Kitty on your lap\n");
こういうのなぜか覚えてる

あとperlで何か見てたサイト二個くらいあったはずなんだけど
まったく思い出せないし、検索してみてもひっかからないし
緑っぽい背景で余計なスペースがないみっちりしたタイプのページだったような
2026/10/12(月) 12:04:06.87ID:qXKcpegz0
>>865
DOBONは知らんなあ
とほほはHTMLを見てたなあ
懐かしいね
2026/10/12(月) 12:07:18.02ID:aUcxdPiw0
>>873
ジジイ、インテリセンスで成仏しろ!!!
2026/10/12(月) 12:38:19.26ID:fqgpECZP0
ずっと長文垂れ流してるのもしかしてこの人?

日常の進捗履歴記録ツールWitBucket(仮称)検討中
https://mevius.5ch.io/test/read.cgi/tech/1668901194/
2026/10/12(月) 13:00:18.88ID:aUcxdPiw0
>>875
DOBONは、猫と同時期の、2000年前後頃に有名だったサイト。
MFC+Win32APIでVBとVCのサンプルコードを大量に掲載してた。
その後MFC(1992)は.NET(2002)に代わられるが、
DOBONは.NETに対応しなかった(サンプルを載せなかった)のでオワコンとされた。
ただ、今見ると中身は全部.NETになってるが。

MFC/Win32API/.NET/VB/VCなので、
C言語そのものではなく、Windowsフレームワークの使い方を解説したサイト。
ただ猫も
> 「DOSのプログラムは、作れるがWindowsのプログラムは ちょっと・・・」
の通りWindows向けで時期も被るので、あるいは、と思った。

ただDOBONはMSDNが公開されればお役御免ではある。
ところでMSDNにはC言語入門講座はないのか?と思ったら、まあまあのが出てきたぞ。
https://learn.microsoft.com/ja-jp/cpp/c-language/if-statement-c?view=msvc-170
ゆうてまあ、リファレンスだから、入門者向けではないか…。
2026/10/12(月) 13:21:21.75ID:VI67vC/n0
昔はウェブ検索がカスだったので個々の部分での正確さが欠けていても網羅性が高い (幅広く説明している) サイトのほうが利用しやすかったという事情はある。
もちろん正確に網羅的であればそのほうが良いけどさ。
2026/10/12(月) 14:08:56.37ID:qXKcpegz0
CじゃないけどJavaならMLがクッソ役立った
高木さんがやってたJavaHouseのトピックスごとにまとめてくれてるの夢中になって読んでた
いろんなジャンルの人が本名所属丸出しで議論するのはアツかった
2026/10/12(月) 14:19:36.20ID:DrzumyNl0
そもそも猫もそうだけど「学習」が目的なわけでIDEで一発だってのは勉強する気あるの?って思う
今は電卓あるのに九九覚えるのは無駄と言っているようなものではないだろうか?
2026/10/12(月) 14:32:00.17ID:KJA61u1K0
「これからはAIの時代みたいだからお役御免の私のHPは閉鎖(凍結?)します」みたいな人がいたかと思えば、猫の人は「自分の記事は古くて現代の環境ではうまく行かない内容もありますが、そこはまあAI活用で補完してください」と言っていて、物事は捉え方次第だね
2026/10/12(月) 16:48:47.74ID:Nw1oVq4D0
つまり猫でも〜の写経主義がクソって言いたいわけね
それを時代無視して言われてもな
C++というかwin32apiにどう立ち向かうかって部分で勇気づけられた人は多いだろう
金ある人はペゾルドの本読んでMSDN買ってただろうし
884デフォルトの名無しさん (ワッチョイ 0730-Mn4o)
垢版 |
2026/10/12(月) 16:50:59.97ID:s7P0ttOn0
やはり、ここは、make 一発でしょ
2026/10/12(月) 16:53:45.64ID:Nw1oVq4D0
unixのシステムコール系って勉強するところあった?
層がぜんぜん違うか
2026/10/12(月) 17:05:52.46ID:aUcxdPiw0
>>879
この状況でそれは、さすがに対象が分からない。
各社各様、正確性も網羅性も目指してる。そもそも、100%が目標でもないし。

だいたい、正確性と網羅性の頂点に君臨するのが『K&R』だ。(なんぜ準仕様書だし)
ただあれでは無理な奴も多かったからみんな噛み砕いてグダグダ説明してるわけでね。
勿論冗長になりまくって分量は多くなるが、それでも感謝してる奴が多いのも事実だろ。

直前、つまり俺宛で、MSDN等の公式リファレンスの類を全部読んで入門書の代わりにする事に対してなら、
正確性と網羅性においてはリファレンスの方が断然上だ。
(だから反論になっておらず、誰宛?となる)
2026/10/12(月) 17:06:53.13ID:aUcxdPiw0
>>881
電卓有るから九九要らん=Excelあるからグラフを手で書くのは無意味
学習過程でIDE使ったら無意味=運動中に水分補給したら運動の意味無し

IDE使え=本来業務に集中しろ
プロがIDE使うのはこの目的なので、『正しく』使えれば自然とこうなる。
2026/10/12(月) 17:20:22.36ID:7eLRFPBba
>>883
> C++というかwin32apiにどう立ち向かうかって部分で勇気づけられた人は多いだろう

わかるわ〜 なんせ情報のない時代
win32? HWND? LPCTSTR? はああ??
みたいなときにあのとぼけた猫の顔がいっときの清涼感になったねw
2026/10/12(月) 17:25:58.31ID:s+lUMBsD0
オレに聞けスレで、
誰も聞いてくれてない
2026/10/12(月) 17:39:20.17ID:VI67vC/n0
>>886
誰に対してでもない。 強いて言えば話題に対して。
正確性や分かり易さなどが要素として挙がっている中で網羅性という軸もあってそれが大事だった時代もあるという提起。
2026/10/12(月) 17:52:11.85ID:KJA61u1K0
>>885
マニュアル(本あるいはmanコマンド)の2章がシステムコール
マニュアルがあることを知るのは自分の場合は本で、UNIXプログラミング環境だった
2026/10/13(火) 18:52:07.05ID:sjdpyoFk0
猫の粂井さんが1955生まれで
とほほさんが1965生まれなんだな

(`・ω・´)ゞ
2026/10/13(火) 20:48:58.75ID:aOpRXmtb0
団塊の麓辺り
2026/10/13(火) 23:08:33.23ID:z8y7K+lj0
>>883
コピペ出来るから、サイトの写経主義自体は実害はないが、
問題はそこではない。

初心者は「このコードがどう動くか」に注力すべき。
突き詰めればインタプリタであり、実際、その方がいい。
PHP: https://www.php.net/manual/ja/control-structures.if.php
Python: https://docs.python.org/ja/3.15/tutorial/controlflow.html#if-statements
猫: http://www.kumei.ne.jp/c_lang/intro/no_12.htm
他言語では今書いたコードがどう動くかに完全に注力出来る。
Cでテキストエディタスタートなら、ファイル拡張子ガー、文字コードガー、BOMガー、コンパイルガー、の説明も必要だが、
IDEでハロワプロジェクトを改造すれば、この辺すっ飛ばせる。
セーブせずに実行ボタン押しても、自動的にセーブしてコンパイルして実行してくれる。
だからIDEは準インタプリタ程度にはなる。

そして猫は明らかに脱線が多い。
ただこれには相性があり、脱線先での情報取得も楽しめる奴
=百科事典やwikiでリンク辿って延々読み続ける奴にはフィットする。
だから一概に悪でもないが、人は選ぶ。
2026/10/13(火) 23:09:26.24ID:z8y7K+lj0
ただそもそも、写経する時間があるなら、
その手本コードがどういう意味なのかを理解する時間に充てるべき。
コードはコピペでいいから、そのコードの説明をしろと。

すると、「そのコードは不要だろうが!」という、もっと糞な事実に直面する。
CのGUIでのmainは初期化&イベントループのエントリだが、
これはフレームワーク/ランタイムがユーザーコードにはみ出てきてるだけで、
正しくコード配置されていれば不要だからだ。
実際、JavaScriptにはmainが無く、onclick関数の中身をいきなり書ける。
(CのGUIでのmainの中身は、JavaScript標準内に実装されてて、ユーザーが書く必要がない)
つまり、GUIをCでやる事自体がそもそもの間違いなので糞コードが発生し、
さらにIDE使わないから写経するハメになるという、
ドMプレイを猫やお前らはやってる。
まあそれを楽しむのも自由だが、何も知らない初心者にも強要するのは酷い。

IDEはこの辺の、言語が糞な点を補う効果もある。
デザイナでボタンを配置してダブルクリックすれば、
onclick関数のスケルトンが自動生成され、そこにカーソルが当たった状態のエディタが開く。
結果的にプログラマの負担はJavaScriptと同等レベル迄下げられる。(勿論当時のIDEでも)
2026/10/13(火) 23:10:11.22ID:z8y7K+lj0
ただCでGUIやるのは本当に糞だ。
Qtとか知らんが、言語の問題(階層記述能力とクロージャ)なので、どうにもならない。
2000年代頃は論外だったJavaScriptが台頭してきたのは実力だ。
GUIやるなら今はJavaScriptしかない。
勿論2000年頃はCでGUIも一般的にやってたから、この点は猫が悪いわけでもないが、
猫はその当時でも出来た事をやってない。精神論で老害丸出しだ。(老害なんて言葉は当時なかったが)
とはいえ>>881のような精神論者にはフィットするし、実際お前らが助かったのならそれでいいが。

ていうか、猫で助かった連中の環境って何だったんだ?
猫はVC++(勿論当時は有料)使ってるので、なら普通にIDEの機能を使えとしかならない。
もしかしてgccやフリーのコンパイラでWindowsプログラミングする手段が有り、
IDEで自動生成されるコード自体を掲載してるサイトが有益だったのか?
2026/10/13(火) 23:12:12.36ID:z8y7K+lj0
>>890
そこが引っかかるのは、お前がプログラマではないからだ。

プログラミングは、あくまで何かを作る手段であって、目的ではない。
同様に、手段(技能)を鍛える教育の、小中学校での技術/家庭科が参考になるだろう。
技術/家庭科においては、必ず、何か最終成果物を作ろうとしてただろ。

例えば家庭科で「ホットケーキ」を作る時を考えよう。
いやそれが料理か?という程度だが、それでも、
「ホットケーキミックス」に「卵」を「割って」入れ、
「水」も「計量」して、「泡立て器」で「かき混ぜ」、
「コンロ」上の「フライパン」で「焼き」、
「フライ返し」で「ひっくり返し」て「完成」という、
材料を用意し、それぞれの道具を適切に使い、成果物を得る、というシーケンスを繰り返し、
使える道具と経験値を増やして行く。
これが一般に手段(技能)を鍛える手法であって、網羅性なんて必要ない。
目的を達成する為に、必要な手段を、その時々でインストールしていく。
包丁が一丁前に使えるまでは料理してはいけない、なんて事はない。
カンナを綺麗にかけられないうちは、ノコギリを使ってはいけない、なんて事もない。

言語も同じ。漢検一級受からないと日本語使ってはいけない、ということはない。
語彙が無かろうが下手だろうが、意思疎通の努力をすべき。
(下手でもしゃべらないと何も始まらねえんだよ!ってのは英語シチュの方が分かりやすいかも)

プログラミングも同じ。
言語の全文法を抑えてからでないとアプリを作ってはいけない、なんて事はない。
DOSプログラミングは出来ても、GUIが出来ない内は、アプリを作ってはいけない、ということもない。
お前が知ってる文法の範囲でいいから、お前の作りたいものを作れ、だ。
ユーザーには、アプリがどの文法で書かれてるかなんてどうでもいい。
GUI作りたくなったときにGUI文法/手法のインストールでいい。
これがプログラマの目線だ。だから網羅性が話題にならない。
2026/10/13(火) 23:13:20.31ID:z8y7K+lj0
とはいえ、効率よく技能を得ようとすれば、纏めて鍛えるのがよく、
料理学校では最初から包丁を練習し、各種料理も一通り作りまくる事になる。
お前らがやってるプログラミング学習も大体これで、
最初からほぼ全文法を網羅的に学習するわけだ。
ただしCの場合は糞文法が混ざっているので、ゆとりZがおかしな方向に走ってるのは前述の通り。
正しくは、糞文法を除外した範囲で学習すべき。実際大学ではそうしてる。
(といっても先生頼みだが。
だから初心者が自学するならgoogle等大手のコーディングルールを参考にすべき。
つまり逆に考えれば、糞文法をドヤってる馬鹿共は正規のプログラミング教育を受けてないって事なのかね?
まあ実際、専門学校や大学で先生に聞けるなら、ここに来る必要はないし、来るべきでもない)

技能において網羅性が問題になってくるのは、中〜上級者からだ。
日本語なら、相手の使った単語の意味が分からないと困るので、人並み以上の語彙と漢字能力は必要となる。
料理なら、一般的な食材と処理方法等を知ってないと、話が通じなくなってくる。
プログラミングでも同様で、他人のコードを読む機会が増えてくると、
それが妙な文法で書かれてても、読めて、修正指示出来る程度の能力は必要になる。
だからまあ、技能と網羅性のバランスで、大体どういうタイプのプログラマか分かる。
2026/10/13(火) 23:14:45.56ID:z8y7K+lj0
さて、はちみつ餃子、お前は以前、コード構成についての話が全く通じなかったから、中〜上級者プログラマって事はない。
プログラマの目線も通じないようだから、どうやらプログラマでもない。
それでも網羅性がそこまで気になるのなら、ただの「文法コレクター」か、
或いはもう一つの軸である、「コンパイラ屋」といったところか。

プログラマは最小文法のみでもアプリを作れるが、
コンパイラ屋は最初から全文法を抑えないとコンパイラが作れない。
かくして、
プログラマ: ろくにコードも書けない癖に偉そうに!
コンパイラ屋: ろくに文法も知らない癖に偉そうに!
とお互いに思っているので、大体仲が悪い。
はちみつ餃子には、一般プログラマとしては不要なレベルの仕様/文法知識があるが、
実際のコードの話がまるで通じない。(コーディング能力自体は低い)
これは、初手から全仕様/全文法が必要な「コンパイラ屋」ならあり得る。

そこで質問だが、可能なら答えてくれ。
件の糞文法について、
> and on many targets implies a speed and code size penalty on global variable references.
> https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fcommon
つまり速度とサイズに難あり(なので出来れば使うな)なのだが、
いや、グローバルと認識出来るならBSSに配置出来るだろ、出来ないのはコンパイラの手抜きじゃねえか?と思える。
何か仕様/文法的に無理な理由があるのかね?
なお当該タイミングで聞かなかったのは、
プログラマ目線だと、そもそも糞記述を修正(static/externを書く)すれば済むだけなのと、
ドヤ馬鹿にさらにネタを提供してドヤ馬鹿再生産に加担したくなかったから。
ただ、糞文法は糞文法として、gccのこの言い訳も気になってたので。(とはいえ単なる興味程度だが)
2026/10/13(火) 23:34:17.33ID:RlgvrlKG0
今日も暑かったかな?
2026/10/14(水) 06:46:30.47ID:2P1W34ww0
長文書いてるほど暇なんかな?
902デフォルトの名無しさん (ワッチョイ ffa9-61Tg)
垢版 |
2026/10/14(水) 09:40:37.88ID:kSywGDsr0
今なら言語覚えても低スペックなら開発環境もインストールできない
903デフォルトの名無しさん (ブーイモ MMff-5gUK)
垢版 |
2026/10/14(水) 13:08:54.89ID:9feWqUJZM
話す相手おらんのやろな
2026/10/15(木) 07:32:14.66ID:66tbkv/I0
写経や歪んだ使い方のネットを止めれば、お前らにももう少し時間が出来るだろうよ
レスを投稿する

レス数が900を超えています。1000を超えると表示できなくなるよ。

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