C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.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言語なら俺に聞け 146
https://mevius.5ch.net/test/read.cgi/tech/1525031257/
探検
C言語なら俺に聞け 147
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2018/08/16(木) 23:36:02.22ID:fOCSKLtw2018/08/17(金) 02:03:10.65ID:itWjjCCs
>>1
乙なんだな
乙なんだな
2018/08/17(金) 04:59:04.13ID:xjFqJl5K
>>1
乙ってんね
乙ってんね
2018/08/17(金) 07:32:18.55ID:TtX4VAeH
前スレ992
https://mevius.5ch.net/test/read.cgi/tech/1525031257/992
ちょっと何言ってるかわからん
983はナマポと何の関係があるのかと聞いているんだが??
https://mevius.5ch.net/test/read.cgi/tech/1525031257/992
ちょっと何言ってるかわからん
983はナマポと何の関係があるのかと聞いているんだが??
2018/08/17(金) 09:26:07.17ID:VdqNpuZ9
>>1
おC
おC
6デフォルトの名無しさん
2018/08/17(金) 10:07:35.20ID:hKcJGgnp >>1
乙curry
乙curry
2018/08/17(金) 20:50:45.41ID:dgg8VvhO
2018/08/17(金) 20:54:30.35ID:dgg8VvhO
というかこのスレワッチョイ外されているんだな。
最近この手の荒らし多いな。
俺はワッチョイ無しのスレは気に入らないから、
>>4の疑問について、ワッチョイ無しのスレ(=このスレ)では答えないことにする。
まあもうヒントは十分に与えたし、馬鹿でなければ辿り着けるはずだが。
最近この手の荒らし多いな。
俺はワッチョイ無しのスレは気に入らないから、
>>4の疑問について、ワッチョイ無しのスレ(=このスレ)では答えないことにする。
まあもうヒントは十分に与えたし、馬鹿でなければ辿り着けるはずだが。
2018/08/17(金) 21:23:33.04ID:oMyhNvCc
イテレータへのこだわりは確かに謎。結局ローレベルな話なんだよね。
foreachという切り口だとイキるのが難しいということか。
foreachという切り口だとイキるのが難しいということか。
2018/08/17(金) 21:26:26.11ID:2ZlVaol+
ナマポとプログラム言語の関係性はさっぱりわからない
2018/08/17(金) 21:41:35.78ID:zrmK36kH
アホ? list<T>::iteratorがナマポ撲滅のためとか本気で言ってるのか?
2018/08/18(土) 00:42:04.17ID:JHZyD4lZ
改めて明解C読んだけどどう考えても入門者向けじゃねえなこれ
これ最初に読んだせいで挫折した人多そう
これ最初に読んだせいで挫折した人多そう
2018/08/18(土) 01:38:53.00ID:MBfkrj0T
その教科書は教師を再生産するための商品
独学でどうにかするアイテムじゃあない
教科書の肝心のところに教師から教えてもらうフェイズがひっそりとしのばせてある
だから教師の関与が深い
補助の人間が必要な物品だよ
教科書を誰が買うかっていうと、先生がより先生っぽい演技・活躍を出来るアイテムを買うだろ
だから教師の再生産をするためのアイテムを教師が生徒に買わせるんだよ
教科書は生徒が買うんじゃなくて先生が買う、
そのフェイズでは教師の介在があってはじめて理解できるようなひっかけがなくちゃあならない、
だから「入門者向けじゃねえ」になる
独学でどうにかするアイテムじゃあない
教科書の肝心のところに教師から教えてもらうフェイズがひっそりとしのばせてある
だから教師の関与が深い
補助の人間が必要な物品だよ
教科書を誰が買うかっていうと、先生がより先生っぽい演技・活躍を出来るアイテムを買うだろ
だから教師の再生産をするためのアイテムを教師が生徒に買わせるんだよ
教科書は生徒が買うんじゃなくて先生が買う、
そのフェイズでは教師の介在があってはじめて理解できるようなひっかけがなくちゃあならない、
だから「入門者向けじゃねえ」になる
2018/08/19(日) 16:42:31.78ID:Gtfg19Vf
C言語の入門書を読み終えて文法をある程度理解したところなんですけどこの次はどうしたらいいんでしょうか・・・
2018/08/19(日) 16:48:10.98ID:mbogTHsz
何かを作って見る
何を作るかは自分で決める
決められないときは、みんなに相談してみる
何を作るかは自分で決める
決められないときは、みんなに相談してみる
2018/08/19(日) 16:58:14.33ID:PTySIHXJ
2018/08/19(日) 17:25:20.88ID:ko+uHAy8
>>14
標準ライブラリの関数の仕様を調べつつ、自分で実装してみる
標準ライブラリの関数の仕様を調べつつ、自分で実装してみる
2018/08/19(日) 18:06:47.62ID:WWHW9JqB
printf と scanf のフォーマット処理は勘弁してください
2018/08/19(日) 18:41:28.69ID:vfinpyXk
ありがとうございますとりあえずアルゴリズムとやらの本を買います
20デフォルトの名無しさん
2018/08/19(日) 21:04:33.17ID:FQWxbBlW これどう?初心者だとちょっと難しいかも知れないが。
[改訂新版]C言語による標準アルゴリズム事典 Software Technology https://www.amazon.co.jp/dp/B07CG4RMT5/ref=cm_sw_r_cp_taa_xEvEBbAEA1JNT
[改訂新版]C言語による標準アルゴリズム事典 Software Technology https://www.amazon.co.jp/dp/B07CG4RMT5/ref=cm_sw_r_cp_taa_xEvEBbAEA1JNT
2018/08/19(日) 21:44:56.14ID:inem1Ikz
だめでしょ。
アルゴリズムイントロダクションがいいよ
アルゴリズムイントロダクションがいいよ
2018/08/19(日) 22:58:10.05ID:akAD1DPm
事典は事典。最小限の解説読んであぁなるほどねって思える人用。
2018/08/19(日) 23:13:09.55ID:wM6XArJ0
詳説 Cポインタ、2013、オライリー・ジャパン
ポインターだけで1冊、本が書けるw
ポインターだけで1冊、本が書けるw
2018/08/19(日) 23:22:19.21ID:lk0ey+5M
引数に配列をとるとき
f(int* data)とf(int data[])の両方が有りだということは分かったのですが、基本的に後者の書き方をしてるコードはほとんど無くて大体前者な気がします。
これはなんででしょうか。後者の方がはっきり配列だとわかります。前者は配列を求められているのかただのint型のポインターを求められてるのか判断つかないと思うんです
f(int* data)とf(int data[])の両方が有りだということは分かったのですが、基本的に後者の書き方をしてるコードはほとんど無くて大体前者な気がします。
これはなんででしょうか。後者の方がはっきり配列だとわかります。前者は配列を求められているのかただのint型のポインターを求められてるのか判断つかないと思うんです
2018/08/19(日) 23:23:37.77ID:mbogTHsz
ポインターってそんなに難しかったっけ?
2018/08/19(日) 23:26:29.60ID:6TZ29Z92
ポインタ本ならこっちの方がいい
新・標準プログラマーズライブラリ
C言語 ポインタ完全制覇 大型本
前橋 和弥 (著) 2017/12/7
新・標準プログラマーズライブラリ
C言語 ポインタ完全制覇 大型本
前橋 和弥 (著) 2017/12/7
2018/08/19(日) 23:55:12.29ID:wM6XArJ0
2018/08/20(月) 00:01:28.25ID:FDfJ6Eqh
2018/08/20(月) 00:03:41.14ID:OvqDIJZn
関数の引数としては配列であろうがポインタであろうが、ただのアドレスとしての意味しかない
2018/08/20(月) 00:12:09.78ID:V9a8ZDkH
2018/08/20(月) 00:19:11.88ID:houfzDz0
>>24
配列っぽい表記に惑わされて、sizeofして長さを求めようとしたというバグを何度か見ました。
配列っぽい表記に惑わされて、sizeofして長さを求めようとしたというバグを何度か見ました。
2018/08/20(月) 00:26:25.44ID:ftO9aq8g
f(int data[100]) なんて渡し方だと、どう?
2018/08/20(月) 01:02:08.56ID:houfzDz0
そんな文法はない。
宣言としては有効かな。でも意味はないだろうね。ただのポインタ。
宣言としては有効かな。でも意味はないだろうね。ただのポインタ。
2018/08/20(月) 01:20:33.12ID:ftO9aq8g
>>33
じゃあ、これをポインタ表記に置き換えて見てください、お願い
じゃあ、これをポインタ表記に置き換えて見てください、お願い
2018/08/20(月) 03:08:45.92ID:k5zLgYIW
36デフォルトの名無しさん
2018/08/20(月) 04:14:23.20ID:GHO1XUgy なんというか、Cならではの問題かな。
Javaもちょっと似てるか。
Javaもちょっと似てるか。
2018/08/20(月) 06:23:59.34ID:W9GZumqR
下のようなコードを書くとコンパイルエラーになるでしょ。
int ary[100];
int val;
val = ary++;
このaryは配列だから、ary自体の値を変化させる操作は出来ない。
それの類推で関数の仮引数はポインタで受けるんじゃないかな。
関数の中でポインタ風に使う変数はポインタの形で宣言。
関数内で値を変化させず [] によるインデクスだけでアクセスするなら
仮引数を配列の形で宣言するのも分かりやすい書き方かも。
後は歴史的な事情。
配列風に書くとインデクス計算に掛け算を使われて遅かった名残り。
>>30 俺はmainの引数は main(int argc, char *argv[]) だな。
保守的だけど、こんな場面で独自色出すことないしね。
int ary[100];
int val;
val = ary++;
このaryは配列だから、ary自体の値を変化させる操作は出来ない。
それの類推で関数の仮引数はポインタで受けるんじゃないかな。
関数の中でポインタ風に使う変数はポインタの形で宣言。
関数内で値を変化させず [] によるインデクスだけでアクセスするなら
仮引数を配列の形で宣言するのも分かりやすい書き方かも。
後は歴史的な事情。
配列風に書くとインデクス計算に掛け算を使われて遅かった名残り。
>>30 俺はmainの引数は main(int argc, char *argv[]) だな。
保守的だけど、こんな場面で独自色出すことないしね。
2018/08/20(月) 07:23:53.30ID:iMQAgpc+
2018/08/20(月) 07:29:22.22ID:OvqDIJZn
関数の引数では配列の要素数は無視されるだけ
変数としての配列とポインタは別物だけど、関数の引数では全く同じもの
変数としての配列とポインタは別物だけど、関数の引数では全く同じもの
2018/08/20(月) 08:10:21.73ID:iwav6OWh
理由は既出だけど、C言語では配列とポインタは明確に違うよ。
相互変換可能なだけ。
相互変換可能なだけ。
2018/08/20(月) 09:01:16.78ID:KJZ73X54
ぶっちゃけ、相互変換可能ならその二つは同じじゃねえか?
数学的に
数学的に
2018/08/20(月) 09:09:43.44ID:zNROsdOB
同じ点もあるし違う点もある
同じ点を強調したいときに「同じ」
違う点を強調したいときに「違う」
と言うだけ
具体的に語らないと何の意味もない
同じ点を強調したいときに「同じ」
違う点を強調したいときに「違う」
と言うだけ
具体的に語らないと何の意味もない
2018/08/20(月) 09:30:29.85ID:W9GZumqR
2018/08/20(月) 10:24:22.53ID:B6E8iGMG
代入ではエラーにならんと思うよ。
lvalueとして使えると思う。配列っぽく書けるがあくまでポインタ。
lvalueとして使えると思う。配列っぽく書けるがあくまでポインタ。
2018/08/20(月) 10:37:33.39ID:iMQAgpc+
2018/08/20(月) 11:31:29.94ID:mV0yla1z
>>20
パクリで儲かる成功例
パクリで儲かる成功例
2018/08/20(月) 11:46:22.27ID:B6E8iGMG
引数の配列がホンモノだとすると、非NULLが保証されてないとあかん。
というか構造体渡しと同様の配列渡しが必要だな。まあ使わんか。
というか構造体渡しと同様の配列渡しが必要だな。まあ使わんか。
2018/08/20(月) 13:08:43.61ID:k5zLgYIW
49デフォルトの名無しさん
2018/08/20(月) 13:28:58.98ID:HLNtX2wQ >>47
ま、必要なら構造体の中に入れて渡すと。
ま、必要なら構造体の中に入れて渡すと。
2018/08/20(月) 16:12:09.36ID:K5YeoIjy
配列をパラメータにするのは
サイズが決まってる時にそれを明示したい場合くらいだな
ポインタの方が汎用性が高いから
サイズが決まってる時にそれを明示したい場合くらいだな
ポインタの方が汎用性が高いから
2018/08/20(月) 16:14:24.46ID:K5YeoIjy
構造体みたいに
値渡しやコピーもあると(たまには)便利
値渡しやコピーもあると(たまには)便利
2018/08/21(火) 07:18:10.26ID:gERn4ySS
2018/08/21(火) 07:20:36.44ID:hlK4Wy69
設計意図を示すコメント的な意味ならあると思う
中身は同じだけど
中身は同じだけど
2018/08/21(火) 07:38:47.67ID:Xgm2Pp2D
初心者に対して誤解を与えるだけじゃね?
必ずそのサイズで呼ばれると保証されるわけでもないし。
必ずそのサイズで呼ばれると保証されるわけでもないし。
2018/08/21(火) 08:20:07.94ID:FuTngql1
2018/08/21(火) 08:40:04.69ID:ZsMFgi2m
ほんとに警告出るのか?
サイズ指定に意味がないというのが規格だし、コメント程度の役割しか持たせたらあかんという気が
サイズ指定に意味がないというのが規格だし、コメント程度の役割しか持たせたらあかんという気が
2018/08/21(火) 08:48:21.68ID:Y1HyydAv
gcc8でもclang6でも警告でなかったょ…
2018/08/21(火) 09:13:57.61ID:GIXT+l9b
お高い静的解析ツールだと警告出るかもね。
やってないから知らんけど。
そういう環境で開発できるならコメント以上の意味はあるかも。
仮定で申し訳ない。
やってないから知らんけど。
そういう環境で開発できるならコメント以上の意味はあるかも。
仮定で申し訳ない。
2018/08/21(火) 09:28:29.44ID:gERn4ySS
2018/08/21(火) 09:30:24.31ID:Y6yN+LUK
>>59
屁理屈乙
屁理屈乙
2018/08/21(火) 09:31:42.61ID:hk/Hf9fq
2018/08/21(火) 09:35:21.28ID:hk/Hf9fq
2018/08/21(火) 10:40:22.58ID:gERn4ySS
2018/08/21(火) 10:57:00.63ID:vnB4usre
>>63
だれも機械の解釈の違いには言及してない定期
だれも機械の解釈の違いには言及してない定期
2018/08/21(火) 10:59:30.05ID:gERn4ySS
>>62
void func(int ary[][100]); これはできるのに
int func(void)[][100] これはできない
{
int ary[][100]; これもできない
ary = 0;
return ary;
}
extern int ary[][100]; と
extern int (*ary)[100]; は意味が違う
結局、[]で書くべきなんて主張は
通用しないところが多すぎる戯れ言だ
void func(int ary[][100]); これはできるのに
int func(void)[][100] これはできない
{
int ary[][100]; これもできない
ary = 0;
return ary;
}
extern int ary[][100]; と
extern int (*ary)[100]; は意味が違う
結局、[]で書くべきなんて主張は
通用しないところが多すぎる戯れ言だ
2018/08/21(火) 11:01:09.20ID:gERn4ySS
2018/08/21(火) 11:01:29.60ID:+F/9g7TB
>>66
糖衣構文
糖衣構文
2018/08/21(火) 11:02:23.89ID:gERn4ySS
2018/08/21(火) 11:05:05.84ID:eIEuxTun
>>68
機械の解釈が同じでも人間には違う意味に見えるのはあるよな?
機械の解釈が同じでも人間には違う意味に見えるのはあるよな?
2018/08/21(火) 11:55:44.43ID:gERn4ySS
2018/08/21(火) 11:56:39.26ID:gERn4ySS
サイズが100でなければならない関数なら
void func(int (*ary)[100]); こう書いて
int ary[100];
func(&ary); こう渡せよボンクラ
void func(int (*ary)[100]); こう書いて
int ary[100];
func(&ary); こう渡せよボンクラ
2018/08/21(火) 12:10:27.14ID:QteKsmYB
まあ多次元配列を引数にするのは良くないと思うわ
2018/08/21(火) 12:28:57.33ID:GIXT+l9b
2018/08/21(火) 12:29:15.96ID:GIXT+l9b
2018/08/21(火) 12:47:09.71ID:EQ4qcC3V
>>72
なぜ?
なぜ?
2018/08/21(火) 12:53:55.98ID:gERn4ySS
77デフォルトの名無しさん
2018/08/21(火) 12:54:14.69ID:m1oFA/yA 多次元配列の型は typedef で型名作っておけば楽なのでは?
2018/08/21(火) 12:56:41.15ID:Fhw28p93
2018/08/21(火) 13:04:39.72ID:gERn4ySS
2018/08/21(火) 13:05:57.10ID:gERn4ySS
さて、買い物に行くぜ
妻子の夕飯を作らにゃならん
妻子の夕飯を作らにゃならん
2018/08/21(火) 13:09:48.25ID:O6Fgkzwj
2018/08/21(火) 13:09:58.77ID:EQ4qcC3V
>>71
無駄なコスト
無駄なコスト
2018/08/21(火) 13:10:23.54ID:RiLuNws8
84デフォルトの名無しさん
2018/08/21(火) 14:09:26.92ID:Xve8S0h8 超初心者です。
シミュレーターで動かしながら独学で学んでいるのですが、
scanfが動かない(スルーされる)ので困っています。scanfが動くシミュレーターってあります?
シミュレーターで動かしながら独学で学んでいるのですが、
scanfが動かない(スルーされる)ので困っています。scanfが動くシミュレーターってあります?
2018/08/21(火) 14:13:40.03ID:Xve8S0h8
今はpaiza.ioを使っています
2018/08/21(火) 14:16:15.27ID:Hz7fBosn
下の入力欄が空白じゃないの?
2018/08/21(火) 14:27:50.04ID:Xve8S0h8
解決しました。ありがとうございました。
2018/08/21(火) 20:15:22.43ID:FwleoeVd
for文でこんなのを発見したのです。
for(;;)
ご覧のとおりセミコロンがカッコ内に2つあるだけ。
これはどういうfor文でしょうか。
ググり方も分からないです。
for(;;)
ご覧のとおりセミコロンがカッコ内に2つあるだけ。
これはどういうfor文でしょうか。
ググり方も分からないです。
2018/08/21(火) 20:17:35.28ID:bAEvazF4
無限ループ
2018/08/21(火) 20:22:25.64ID:i/CPlprw
昔からその書き方の無限ループを好む人は多い
俺が知ってる範囲だとカーニハンもその書き方を好んでいた
俺が知ってる範囲だとカーニハンもその書き方を好んでいた
2018/08/21(火) 20:27:12.52ID:mIqstMqN
無限ループって言っても
大概は何かの条件で脱出するわけだから
while (条件) が一番わかりやすいと思う
あ、好みだろうから、反論は不要です
大概は何かの条件で脱出するわけだから
while (条件) が一番わかりやすいと思う
あ、好みだろうから、反論は不要です
2018/08/21(火) 20:34:59.42ID:8p839GFL
2018/08/21(火) 20:45:15.49ID:FwleoeVd
無限ループには
for(;;)
while(1)
while(true)
などがあるようですが、驚いたことにfor(;;)がC言語の伝統的スタイルなんだそうで。
for(;;)
while(1)
while(true)
などがあるようですが、驚いたことにfor(;;)がC言語の伝統的スタイルなんだそうで。
2018/08/21(火) 20:50:55.87ID:mIqstMqN
goto 笑
2018/08/21(火) 21:07:06.74ID:FuTngql1
do {
} while (true);
だな
} while (true);
だな
97デフォルトの名無しさん
2018/08/21(火) 21:12:46.13ID:xHZnBR+z true って新しいCだと使えるの?
2018/08/21(火) 21:15:49.80ID:Bspmt0aQ
_Bool
2018/08/21(火) 21:18:05.52ID:mIqstMqN
while (1==1)
なんて
なんて
100デフォルトの名無しさん
2018/08/21(火) 21:21:39.51ID:WLqP+HZB for(;;)は無条件であることを的確に表現してる
条件が書いてないのはこれだけ
条件が書いてないのはこれだけ
101デフォルトの名無しさん
2018/08/21(火) 21:30:40.05ID:xHZnBR+z そういややったことないけど while () はできないのかな?
できたらできたでなんか怖いがw
できたらできたでなんか怖いがw
102デフォルトの名無しさん
2018/08/21(火) 21:35:16.36ID:8p839GFL103デフォルトの名無しさん
2018/08/21(火) 21:39:06.78ID:xHZnBR+z if () ができたらなんか嫌だな
104デフォルトの名無しさん
2018/08/21(火) 22:56:19.30ID:7hn0MDmO >>102
確かに…
確かに…
105さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/21(火) 23:14:00.83ID:H0lJZ+G5 左右の式が省略できるから、ついでに真ん中の式も省略可能にしたんだろう。
106デフォルトの名無しさん
2018/08/21(火) 23:18:17.02ID:mIqstMqN 二つのセミコロンも省略して良いことにしようw
107デフォルトの名無しさん
2018/08/22(水) 01:03:40.03ID:Vm7yolE7 ループの話でふと思い出したんだけど、この書き方キモいと思う?
LOCK();
while (条件) {
UNLOCK();
LOCK();
}
UNLOCK();
LOCK();
while (条件) {
UNLOCK();
LOCK();
}
UNLOCK();
108デフォルトの名無しさん
2018/08/22(水) 01:07:46.55ID:srSdeWyK きもいけどきもいだけだから必要ならそうする
Cだしね
Cだしね
109デフォルトの名無しさん
2018/08/22(水) 01:11:58.05ID:+gfjb8L8 condwaitみたいなの、たまに書くと混乱するわ
110デフォルトの名無しさん
2018/08/22(水) 01:18:33.81ID:J6lVaoNe LOCKして、何かして、UNLOCKして解放する
わけではないんだ?
わけではないんだ?
111デフォルトの名無しさん
2018/08/22(水) 02:53:55.25ID:wb9Zg9xS for (\(^o^)/)
112デフォルトの名無しさん
2018/08/22(水) 06:53:07.59ID:Vm7yolE7113デフォルトの名無しさん
2018/08/22(水) 07:33:35.95ID:RPMrdt6N >>112
手動でインライン展開する必要がなければ、普通は、
while (check_func()) {
}
bool check_func(){
LOCK();
bool retval = XXX; // check something here
UNLOCK();
return retval;
}
とする。
C++なら inline を付ければインライン展開時(元のコード)と似たようなオブジェクトコードが出ることになっている。
手動でインライン展開する必要がなければ、普通は、
while (check_func()) {
}
bool check_func(){
LOCK();
bool retval = XXX; // check something here
UNLOCK();
return retval;
}
とする。
C++なら inline を付ければインライン展開時(元のコード)と似たようなオブジェクトコードが出ることになっている。
114デフォルトの名無しさん
2018/08/22(水) 09:35:21.99ID:ULC6Ul0L115114
2018/08/22(水) 09:36:42.99ID:ULC6Ul0L ごめん、ちがた
116デフォルトの名無しさん
2018/08/22(水) 09:52:30.97ID:2YTphjWh >>107
条件を判断するためだけにLOCK/UNLOCKを行うコードだとしたら最悪のコードだ
do {
LOCK
判断
UNLOCK
if (!判断結果)break;
} while (1);
素直にこうしなさい
条件を判断するためだけにLOCK/UNLOCKを行うコードだとしたら最悪のコードだ
do {
LOCK
判断
UNLOCK
if (!判断結果)break;
} while (1);
素直にこうしなさい
117デフォルトの名無しさん
2018/08/22(水) 11:11:08.70ID:yAP1ongv 条件判断が目的じゃないと思うぞ
118デフォルトの名無しさん
2018/08/22(水) 11:35:04.81ID:yJL450CM どこが素直なんだ
締め切りが迫ってバグが取れず
なりふり構ってらんなくなったやつが書く
イカレたコードでしかない
締め切りが迫ってバグが取れず
なりふり構ってらんなくなったやつが書く
イカレたコードでしかない
119デフォルトの名無しさん
2018/08/22(水) 11:58:31.90ID:DbwOmzYq >>116
これは酷いw
これは酷いw
120デフォルトの名無しさん
2018/08/22(水) 12:04:07.83ID:MGgq/0yt イカれたコードを紹介するぜ
121デフォルトの名無しさん
2018/08/22(水) 12:27:28.23ID:2YTphjWh ん?
一番素直だろうが
条件判断の為だけにLOCKしてるという前提で
判断を関数に分ける?
分けるかどうかはこんなちっぽけな理由で判断するべきじゃないよ
判断の度に関数にしてたら意味不明な関数で溢れるぞ
もちろん意味が明瞭で他にも同じ判断を使う可能性があるのであれば
関数やマクロでパッキングすべきだが
一番素直だろうが
条件判断の為だけにLOCKしてるという前提で
判断を関数に分ける?
分けるかどうかはこんなちっぽけな理由で判断するべきじゃないよ
判断の度に関数にしてたら意味不明な関数で溢れるぞ
もちろん意味が明瞭で他にも同じ判断を使う可能性があるのであれば
関数やマクロでパッキングすべきだが
122デフォルトの名無しさん
2018/08/22(水) 12:36:44.83ID:yJL450CM LOCK
判断
UNLOCK
というアトミックなシーケンスを関数にする理由はちっぽけじゃない
LOCK/UNLOCKが必要な具体的な場面を想定しての発言には見えない
判断
UNLOCK
というアトミックなシーケンスを関数にする理由はちっぽけじゃない
LOCK/UNLOCKが必要な具体的な場面を想定しての発言には見えない
123デフォルトの名無しさん
2018/08/22(水) 12:50:05.96ID:2YTphjWh124デフォルトの名無しさん
2018/08/22(水) 13:02:48.20ID:Xk7aTjF/ >>123
いやー、わからんのはあなたに実務もしくは勉強の経験がないからよ
いやー、わからんのはあなたに実務もしくは勉強の経験がないからよ
125デフォルトの名無しさん
2018/08/22(水) 13:14:18.16ID:yJL450CM 昨日のvoid func(int ary[100]);にしても
ary[1000]を警告する処理系の具体的な例が挙がってないしな
ary[1000]を警告する処理系の具体的な例が挙がってないしな
126デフォルトの名無しさん
2018/08/22(水) 13:39:37.67ID:2YTphjWh127デフォルトの名無しさん
2018/08/22(水) 14:01:43.77ID:yJL450CM 間違いない、昨日のバカだ
NGIDっと
NGIDっと
128デフォルトの名無しさん
2018/08/22(水) 14:12:07.92ID:JOaq3c53 >>127
そういうあなたは昨日のイキってた方の人?
そういうあなたは昨日のイキってた方の人?
129デフォルトの名無しさん
2018/08/22(水) 14:15:28.00ID:J6lVaoNe パッと見て何をしているか分からないソースって
後の人が取っても苦労するし、気の毒
後の人が取っても苦労するし、気の毒
130デフォルトの名無しさん
2018/08/22(水) 14:19:13.21ID:J6lVaoNe 多分書いた人の意図は
while文内の判定時に
LOCKしたいのかとは思うが
while文内の判定時に
LOCKしたいのかとは思うが
131デフォルトの名無しさん
2018/08/22(水) 14:26:31.81ID:TfhbroeT while ( ^∀^)
132デフォルトの名無しさん
2018/08/22(水) 15:10:17.96ID:44OVOulF check_func()というアドホックっぽい関数名が誤解のもとかな
get条件atomically()にすれば意図が明白
get条件atomically()にすれば意図が明白
133デフォルトの名無しさん
2018/08/22(水) 15:19:38.80ID:yJL450CM atomicallyって文言いるかねえ
いちいち全部につけて回るより
LOCK/UNLOCKしてることは
忘れたフリができるほうがいいと思うが
いちいち全部につけて回るより
LOCK/UNLOCKしてることは
忘れたフリができるほうがいいと思うが
134デフォルトの名無しさん
2018/08/22(水) 16:17:52.89ID:BT6ndhEb 英語圏の人には for (;;) をまとめて熟語的に "forever" と読めて
座りがいいのかも知れん。
カーニハンとパイクの『プログラミング作法』に
それに近いようなことが書いてあった。
座りがいいのかも知れん。
カーニハンとパイクの『プログラミング作法』に
それに近いようなことが書いてあった。
135デフォルトの名無しさん
2018/08/22(水) 16:25:37.12ID:6OOlmfSC >>133
条件取得の関数がすでにあってそれがアトミックでないケースも想定
条件取得の関数がすでにあってそれがアトミックでないケースも想定
136デフォルトの名無しさん
2018/08/22(水) 16:31:28.34ID:UfcjGeQr137デフォルトの名無しさん
2018/08/22(水) 16:44:34.35ID:AU3mefLA138デフォルトの名無しさん
2018/08/22(水) 16:54:07.40ID:yJL450CM139134
2018/08/22(水) 17:01:35.42ID:BT6ndhEb 「その部分のループ、終了条件が色々なんでとりあえず for (;;) で回して」
みたいな口答でのやりとりで for (;;) を forever と読めば手っ取り早いでしょ。
while (1) で…よりも言いやすいんじゃないかと。
これは空想論だけどね。
みたいな口答でのやりとりで for (;;) を forever と読めば手っ取り早いでしょ。
while (1) で…よりも言いやすいんじゃないかと。
これは空想論だけどね。
140デフォルトの名無しさん
2018/08/22(水) 17:28:26.65ID:yJL450CM 無限ループで済むことを
forの第2式を空欄で
なんて回りくどい言い方しねえよ
forの第2式を空欄で
なんて回りくどい言い方しねえよ
141デフォルトの名無しさん
2018/08/22(水) 17:52:35.43ID:l5cdWJfA142デフォルトの名無しさん
2018/08/22(水) 17:59:10.07ID:l5cdWJfA143デフォルトの名無しさん
2018/08/22(水) 18:07:38.93ID:yJL450CM144デフォルトの名無しさん
2018/08/22(水) 18:22:36.66ID:PnEe4J3b マウント取りたくて必死なアスペだから仕方ない
145デフォルトの名無しさん
2018/08/22(水) 18:30:03.99ID:l5cdWJfA 口頭で
forの第2式を空欄で
なんて発想は出て来なかった
forの第2式を空欄で
なんて発想は出て来なかった
146デフォルトの名無しさん
2018/08/22(水) 20:52:31.01ID:ROURn6Ut for ( ;∀;)
147デフォルトの名無しさん
2018/08/22(水) 21:21:35.96ID:yJL450CM > while (条件)でしかループが組めないのはちょっとさみしい
ここは同意
while(1) であろうが for(;;) であろうが同じこと
どっちかが好みで他方で書かれたからって可読性が落ちたとか騒ぐ
救いようのないドアホには付き合ってらんね
それだけだ
ここは同意
while(1) であろうが for(;;) であろうが同じこと
どっちかが好みで他方で書かれたからって可読性が落ちたとか騒ぐ
救いようのないドアホには付き合ってらんね
それだけだ
148デフォルトの名無しさん
2018/08/22(水) 21:23:43.06ID:82KbBjx+ >>116を認めないお前も同じようなものかと
149デフォルトの名無しさん
2018/08/22(水) 21:26:52.07ID:MwkxeX8r whileで無限ループする場合、0じゃなければ1以外を
使ってもいいわけだがどうする?
電話番号とか使えばオシャレかもしれないよ
使ってもいいわけだがどうする?
電話番号とか使えばオシャレかもしれないよ
150デフォルトの名無しさん
2018/08/22(水) 21:27:18.15ID:JglTnHlJ とりあえず、おかしなのに絡まれた >>134 に同情を禁じ得ない。
151デフォルトの名無しさん
2018/08/22(水) 21:28:19.40ID:yJL450CM 別にiocccのコードが読めろとか言ってない
int *aryがint ary[100]じゃなきゃ読めないとかぬかしたり
while(1)がfor(;;)じゃなきゃ読めないとかぬかす
想像を絶するアホには付き合ってらんねつってるだけ
lock/doit/unlockを関数化する必要性がわからないアホも含まれる
int *aryがint ary[100]じゃなきゃ読めないとかぬかしたり
while(1)がfor(;;)じゃなきゃ読めないとかぬかす
想像を絶するアホには付き合ってらんねつってるだけ
lock/doit/unlockを関数化する必要性がわからないアホも含まれる
152デフォルトの名無しさん
2018/08/22(水) 21:33:30.14ID:Jjipv9/i153デフォルトの名無しさん
2018/08/22(水) 21:42:00.39ID:yJL450CM じゃあ喚くのやめろ
うるせえんだよ
うるせえんだよ
154デフォルトの名無しさん
2018/08/22(水) 21:43:08.30ID:Jjipv9/i >>153
やっぱり日本語不自由な人なんだw
やっぱり日本語不自由な人なんだw
155デフォルトの名無しさん
2018/08/22(水) 21:51:19.93ID:Vzjpb7lE 何がじゃあなのかわからない
思考がbool値しかないのか
思考がbool値しかないのか
156デフォルトの名無しさん
2018/08/22(水) 21:51:23.19ID:wgajpaTM アトミックな操作の意味がわかってたらああはならんのですよ
157デフォルトの名無しさん
2018/08/22(水) 21:52:48.42ID:Vzjpb7lE 世の糞コードのほとんどはコミュニケーションの失敗により発生する
158デフォルトの名無しさん
2018/08/22(水) 21:54:35.09ID:Jjipv9/i C言語以前に日本語もちゃんと理解できない人と議論が噛み合うわけない。
相手しただけ損したわ、アホらしい。
相手しただけ損したわ、アホらしい。
159デフォルトの名無しさん
2018/08/22(水) 22:02:56.29ID:yJL450CM 勝手に損してろ
誰にも賠償請求できない
泣き寝入りだな
アホw バカwww
誰にも賠償請求できない
泣き寝入りだな
アホw バカwww
160デフォルトの名無しさん
2018/08/22(水) 22:05:01.83ID:Jjipv9/i はいはい、ちゃんとにほんごをべんきょうしてりかいできるようになってから、かきこんでくださいね。
161デフォルトの名無しさん
2018/08/22(水) 22:13:51.56ID:RPMrdt6N まあ概ね ID:yJL450CM が言っていることは正しい。
>>107のコードは、かなり特殊で、普通はあり得ない。
キモイかと問われれば、キモイと答えるのが正しい。
(必要ならやればいいが)
>>116
それはdo-whileの標準的使い方とは異なるので、混乱を招く。
>>132
check_func()は、107を書き直した場所がすぐに分かる名前にしただけ。
実際、問題なく伝わってるだろ。
本番コードでこの名前はあり得ない。名前が被るから。
ただ、正直、こんなどうでもいいところで拘るのは止めた方がいい。上達しなくなる。
どれでもいいから自分が好きなのを選び、グダグダ言わずにどんどん書いた方がいい。
なお、Goにはwhileが無い。廃止されて、forだけになっている。
ちなみに、俺は
固定長ループ(単純ループ): for … for (int i=0;i<num;i++) 程度の簡単な場合は常にこれ
可変長ループ(複雑なループ): while
無限ループ: while (1)
do-while: 使わない
にしているが、正直、ここら辺は好みだし、自分がどう決めるかだけ。(上記は標準的だとも思っているが)
それよりは、自分の中で統一するほうが重要だ。
(少なくとも自分が書いたコードを読むときに混乱しなくなる)
業務なら、グダグダ言わずコーディングルールに従えばいい。
場所によってはwhileとforのどちらかが禁止とかもある。(どっちかは忘れた)
理由はバグって無限ループにしてしまったときにコード上から判定しづらいとかだったはず。
>>107のコードは、かなり特殊で、普通はあり得ない。
キモイかと問われれば、キモイと答えるのが正しい。
(必要ならやればいいが)
>>116
それはdo-whileの標準的使い方とは異なるので、混乱を招く。
>>132
check_func()は、107を書き直した場所がすぐに分かる名前にしただけ。
実際、問題なく伝わってるだろ。
本番コードでこの名前はあり得ない。名前が被るから。
ただ、正直、こんなどうでもいいところで拘るのは止めた方がいい。上達しなくなる。
どれでもいいから自分が好きなのを選び、グダグダ言わずにどんどん書いた方がいい。
なお、Goにはwhileが無い。廃止されて、forだけになっている。
ちなみに、俺は
固定長ループ(単純ループ): for … for (int i=0;i<num;i++) 程度の簡単な場合は常にこれ
可変長ループ(複雑なループ): while
無限ループ: while (1)
do-while: 使わない
にしているが、正直、ここら辺は好みだし、自分がどう決めるかだけ。(上記は標準的だとも思っているが)
それよりは、自分の中で統一するほうが重要だ。
(少なくとも自分が書いたコードを読むときに混乱しなくなる)
業務なら、グダグダ言わずコーディングルールに従えばいい。
場所によってはwhileとforのどちらかが禁止とかもある。(どっちかは忘れた)
理由はバグって無限ループにしてしまったときにコード上から判定しづらいとかだったはず。
162107
2018/08/22(水) 22:19:27.48ID:Vm7yolE7 非常にくだらない質問にレス付けてくれてサンクス
なんか荒れる原因つくってスマンかった
やっぱりあの書き方きめえよなあ・・・
なんか荒れる原因つくってスマンかった
やっぱりあの書き方きめえよなあ・・・
163デフォルトの名無しさん
2018/08/22(水) 22:57:41.03ID:RPMrdt6N >>112
> LOCK, UNLOCKのインデントがズレててキモい
これは諦めろ。
酷い話、インデントがぴったり合ってないと駄目な奴はプログラマに向いてない。
どうやってもずれるからだ。
googleのコーディングルールにも昔は
・インデントを揃える努力は、キリがないしやるだけ無駄だから諦めろ
と書いてあったはず。(今見る限りないが)
ちなみにキモイ理由は、インデントではなくて、完全に入れ子になっていないからだ。
最近はこの「入れ子」の厳密さも増していて、XML(HTML等)では入れ子しか文法的に認めないだろ。
例えば、
<while>
</while>
ならありだが、
<lock>
<while>
</lock>
</while>
は駄目で、
<while>
<lock>
</lock>
</while>
にしなければならない。
> LOCK, UNLOCKのインデントがズレててキモい
これは諦めろ。
酷い話、インデントがぴったり合ってないと駄目な奴はプログラマに向いてない。
どうやってもずれるからだ。
googleのコーディングルールにも昔は
・インデントを揃える努力は、キリがないしやるだけ無駄だから諦めろ
と書いてあったはず。(今見る限りないが)
ちなみにキモイ理由は、インデントではなくて、完全に入れ子になっていないからだ。
最近はこの「入れ子」の厳密さも増していて、XML(HTML等)では入れ子しか文法的に認めないだろ。
例えば、
<while>
</while>
ならありだが、
<lock>
<while>
</lock>
</while>
は駄目で、
<while>
<lock>
</lock>
</while>
にしなければならない。
164デフォルトの名無しさん
2018/08/23(木) 00:15:44.74ID:wxGNRrqx >>161
do while の標準的な使い方?
無限ループも標準的な使い方ですよ
do whileはforやwhileに比べてパフォーマンスが良いことがあるので
使える時には積極的に使う人もいます
do whileを一切使わない人もいますが
do while の標準的な使い方?
無限ループも標準的な使い方ですよ
do whileはforやwhileに比べてパフォーマンスが良いことがあるので
使える時には積極的に使う人もいます
do whileを一切使わない人もいますが
165デフォルトの名無しさん
2018/08/23(木) 00:29:51.18ID:qYtPM3Ou166デフォルトの名無しさん
2018/08/23(木) 00:38:41.07ID:wxGNRrqx ロックしたい対象がわかりづらい
同じ用途のロック/アンロックが2箇所ずつある
同じ用途のロック/アンロックが2箇所ずつある
167デフォルトの名無しさん
2018/08/23(木) 00:40:13.64ID:wxGNRrqx C++の場合だと
無駄にロック期間が長くなる可能性がある
無駄にロック期間が長くなる可能性がある
168デフォルトの名無しさん
2018/08/23(木) 00:53:05.68ID:/qY100we >>167
なんで?
なんで?
169デフォルトの名無しさん
2018/08/23(木) 00:59:32.58ID:HinwMmX/ 頭が良い人ならすぐに意図がくみ取れるけど
メンテする人が必ずしも頭が良いとは限らない
コメント書いてもバグではまって始めて読まれたりするからね
ワザと作られた落とし穴なんて受けとられる危険もありそう
バカでも分かるような書き方をする方が安全かなと思う
メンテする人が必ずしも頭が良いとは限らない
コメント書いてもバグではまって始めて読まれたりするからね
ワザと作られた落とし穴なんて受けとられる危険もありそう
バカでも分かるような書き方をする方が安全かなと思う
170デフォルトの名無しさん
2018/08/23(木) 01:59:34.18ID:y9Wx8uZn >>164
>>116のコードは、while (1) で開始しても同じだし、(=do-whileを使う意味がない)
そもそも>>113に比べてメリットもないだろ。
そこで do-while 使う奴なんて皆無だと思うぞ。
まあそれでもやりたければやればいい。
個人開発ではメチャやって、その失敗を業務に生かした方がいい。
ただ、上達したければ、ある程度普通のコーディングルールで組んだ方がいい。(世間に合わせる)
自分と相手のルールが一致してたら、相手のコードも読みやすく、
結果、同じ時間、同じ努力でも読める量に違いが出てくるから。
あと、初心者はよく
・色々文法を知ってて、様々な書き方が出来る奴が偉い
と勘違いしがちのようだが、これは明確な間違いだ。(これは他言語では本当に酷い)
こんな糞どうでもいいところを様々な書き方をしているような奴は雑魚だ。
上手い奴は、そいつが決めたやり方に従って、一定の書き方で書く。
だから、後で読み直すときも楽だってこと。
自分の手書き文字なら相当汚くても読めるだろ。それに近い。
基本的には意味のない手動インライン展開は止めた方がいい。
それは無駄に関数を大きくする。
関数呼び出しのコストが気になるなら、C++なら inline が用意されてる。
そもそもロックなんて糞遅いから、そこでCPU命令数個ケチる意味もないはずだが。
可読性を上げる為に最初にやるべきなのは、関数を分割して小さくすることだ。
呼び出しコストは考えず、分割しまくった方がいい。
結果、抽象度が上がり、読みやすくなる。(全体を読まなくても済むようになる)
>>116のコードは、while (1) で開始しても同じだし、(=do-whileを使う意味がない)
そもそも>>113に比べてメリットもないだろ。
そこで do-while 使う奴なんて皆無だと思うぞ。
まあそれでもやりたければやればいい。
個人開発ではメチャやって、その失敗を業務に生かした方がいい。
ただ、上達したければ、ある程度普通のコーディングルールで組んだ方がいい。(世間に合わせる)
自分と相手のルールが一致してたら、相手のコードも読みやすく、
結果、同じ時間、同じ努力でも読める量に違いが出てくるから。
あと、初心者はよく
・色々文法を知ってて、様々な書き方が出来る奴が偉い
と勘違いしがちのようだが、これは明確な間違いだ。(これは他言語では本当に酷い)
こんな糞どうでもいいところを様々な書き方をしているような奴は雑魚だ。
上手い奴は、そいつが決めたやり方に従って、一定の書き方で書く。
だから、後で読み直すときも楽だってこと。
自分の手書き文字なら相当汚くても読めるだろ。それに近い。
基本的には意味のない手動インライン展開は止めた方がいい。
それは無駄に関数を大きくする。
関数呼び出しのコストが気になるなら、C++なら inline が用意されてる。
そもそもロックなんて糞遅いから、そこでCPU命令数個ケチる意味もないはずだが。
可読性を上げる為に最初にやるべきなのは、関数を分割して小さくすることだ。
呼び出しコストは考えず、分割しまくった方がいい。
結果、抽象度が上がり、読みやすくなる。(全体を読まなくても済むようになる)
171デフォルトの名無しさん
2018/08/23(木) 03:30:32.78ID:w8vcpguW あくまで、プログラマが初心者の場合の話だけど。
いろいろなソースを見てきたけど。
仕事としてやるなら、初心者は、なるべく関数化してほしくないかな。
練習としてなら、いいけどね。
関数化する等して、抽象化した方が見やすいソースになるかというと、
間違いじゃないけど、正しくもない。
有能なプログラマーが書いたソースは素晴らしいし、可読性も申し分ない、うん。
でも、クソなコードは、関数化しちゃいけないものが、関数化されているなどが原因で、
追跡が難くなるんだな。
オブジェクト指向を謳う言語のソースなんか、C以上にプログラマーの手腕によって、
可読性の差が生じてしまう。関数だけでなく、クラスの設計が腐ってて、どうしもないとかね。
そうゆうソースの追跡は辛いわ。
Cの場合、ぐちょくちょなソースの場合、関数化されていない方が、
コードのメンテ等で、強引に追跡する際は苦労が少ない、そんな感じ。
いろいろなソースを見てきたけど。
仕事としてやるなら、初心者は、なるべく関数化してほしくないかな。
練習としてなら、いいけどね。
関数化する等して、抽象化した方が見やすいソースになるかというと、
間違いじゃないけど、正しくもない。
有能なプログラマーが書いたソースは素晴らしいし、可読性も申し分ない、うん。
でも、クソなコードは、関数化しちゃいけないものが、関数化されているなどが原因で、
追跡が難くなるんだな。
オブジェクト指向を謳う言語のソースなんか、C以上にプログラマーの手腕によって、
可読性の差が生じてしまう。関数だけでなく、クラスの設計が腐ってて、どうしもないとかね。
そうゆうソースの追跡は辛いわ。
Cの場合、ぐちょくちょなソースの場合、関数化されていない方が、
コードのメンテ等で、強引に追跡する際は苦労が少ない、そんな感じ。
172デフォルトの名無しさん
2018/08/23(木) 04:08:27.50ID:rN/Im7Tc そんなこたねえよ
関数を作った方がいいしファイルを分けた方がいい
ネストは浅い方がいい
関数を作った方がいいしファイルを分けた方がいい
ネストは浅い方がいい
173デフォルトの名無しさん
2018/08/23(木) 05:49:50.39ID:OJr5a4rA174デフォルトの名無しさん
2018/08/23(木) 06:27:06.53ID:OG65bZxS175デフォルトの名無しさん
2018/08/23(木) 06:33:10.57ID:HkL3Bs+i176デフォルトの名無しさん
2018/08/23(木) 07:24:39.71ID:qYtPM3Ou177デフォルトの名無しさん
2018/08/23(木) 07:52:07.91ID:wxGNRrqx178デフォルトの名無しさん
2018/08/23(木) 08:12:35.84ID:wxGNRrqx >>172
行数やファイルの数で値段が決まる業界の人?
行数やファイルの数で値段が決まる業界の人?
179デフォルトの名無しさん
2018/08/23(木) 08:16:18.32ID:wxGNRrqx 全てのLOCK/UNLOCKのペアはそれだけで関数にする
2重ループやループ内のswitch caseは使わないで関数に分ける
いろんな人がいるね
自分では本当に例外なく実践してるんだろうか
2重ループやループ内のswitch caseは使わないで関数に分ける
いろんな人がいるね
自分では本当に例外なく実践してるんだろうか
180デフォルトの名無しさん
2018/08/23(木) 08:31:20.08ID:wxGNRrqx 宗教の例
gotoは使ってはいけない
2重ループは使ってはいけない
3項演算子は使ってはいけない
インデントは全て揃える
全てのリテラルは別途定義する
変数名に型情報を埋め込む
関数の途中でreturnしてはいけない
関数は小さいほど良い
条件分の中に関数コールや副作用のある文を書いてはいけない
インクルードファイルをネストしてはいけない
コメントは全て /* */ で (// や #if 0 を使ってはいけない)
全ての演算子のネストに対して ( ) をつける
全てのロック、アンロックのペアは関数に分けなければいけない
gotoは使ってはいけない
2重ループは使ってはいけない
3項演算子は使ってはいけない
インデントは全て揃える
全てのリテラルは別途定義する
変数名に型情報を埋め込む
関数の途中でreturnしてはいけない
関数は小さいほど良い
条件分の中に関数コールや副作用のある文を書いてはいけない
インクルードファイルをネストしてはいけない
コメントは全て /* */ で (// や #if 0 を使ってはいけない)
全ての演算子のネストに対して ( ) をつける
全てのロック、アンロックのペアは関数に分けなければいけない
181デフォルトの名無しさん
2018/08/23(木) 08:38:21.29ID:NBx27jJF182デフォルトの名無しさん
2018/08/23(木) 08:41:48.74ID:KjqMFLSY switch caseはは無駄にカラムを消費する。から嫌い。
183デフォルトの名無しさん
2018/08/23(木) 09:21:50.49ID:itriZIP9184デフォルトの名無しさん
2018/08/23(木) 09:48:06.49ID:O7XDpWhz >>183
ある程度の規模の関数になると結局その1命令に見えるはずの処理が正確に何してるかを理解するためには関数内を覗くはめになっちゃう。
覗かないですむほど関数仕様を単純化すると今度は関数が増えて管理の手間が増える矛盾。
後者のほうが正解なんだろうけど、なかなか理想通りには行かないよね。
ある程度の規模の関数になると結局その1命令に見えるはずの処理が正確に何してるかを理解するためには関数内を覗くはめになっちゃう。
覗かないですむほど関数仕様を単純化すると今度は関数が増えて管理の手間が増える矛盾。
後者のほうが正解なんだろうけど、なかなか理想通りには行かないよね。
185デフォルトの名無しさん
2018/08/23(木) 09:52:28.00ID:XUhqK5T4 その方向性の行き着く先がオブジェクト指向
186デフォルトの名無しさん
2018/08/23(木) 09:52:54.19ID:itriZIP9 >>184
ある程度の規模ってLOCK/UNLOCKの話だぜ?
ある程度の規模ってLOCK/UNLOCKの話だぜ?
187デフォルトの名無しさん
2018/08/23(木) 10:01:30.20ID:O7XDpWhz188デフォルトの名無しさん
2018/08/23(木) 10:11:39.46ID:rN/Im7Tc >>178
ファイル数とか初めて聞いたよ。
疎結合高凝集は大抵の場面で正義だよ。トータル1000行のソースだったら好きにすればいいが。
あと関数にもファイルにも「意味のある名前をつける」
ある意味大変難しいんだがこれができれば保守性が全然違う。
ファイル数とか初めて聞いたよ。
疎結合高凝集は大抵の場面で正義だよ。トータル1000行のソースだったら好きにすればいいが。
あと関数にもファイルにも「意味のある名前をつける」
ある意味大変難しいんだがこれができれば保守性が全然違う。
189デフォルトの名無しさん
2018/08/23(木) 10:34:14.06ID:3bgfj1QZ 規模は覗かないとわからんよ
1個の関数からしか呼ばれないたった3行の、
ただ単に特定のループの終了条件を示す為の関数
結局両方見ないと意味不明
こんな関数が山ほどあるプロジェクトは悪夢だ
1個の関数からしか呼ばれないたった3行の、
ただ単に特定のループの終了条件を示す為の関数
結局両方見ないと意味不明
こんな関数が山ほどあるプロジェクトは悪夢だ
190デフォルトの名無しさん
2018/08/23(木) 10:36:26.67ID:rN/Im7Tc エディタが悪いんじゃないか?
191デフォルトの名無しさん
2018/08/23(木) 10:40:50.31ID:3bgfj1QZ たった3行の為に
関数名を考え
関数ヘッダを作成し
プロファイリングや静的解析ツールやMAPの項目も増える
大きく依存した関数なのに
グローバル関数とローカル関数を分けて書くという宗教を理由に
全然別の場所に書く
最悪ですねえ
こういう人は
ifなども含め、複数文からなる全ての条件判断を関数にするんでしょうか
あり得ないですね
もちろん単なる1個のループの終了条件ではなくて
その条件に意味があって
他でも使う可能性があるなら関数に分けるべきですが
関数名を考え
関数ヘッダを作成し
プロファイリングや静的解析ツールやMAPの項目も増える
大きく依存した関数なのに
グローバル関数とローカル関数を分けて書くという宗教を理由に
全然別の場所に書く
最悪ですねえ
こういう人は
ifなども含め、複数文からなる全ての条件判断を関数にするんでしょうか
あり得ないですね
もちろん単なる1個のループの終了条件ではなくて
その条件に意味があって
他でも使う可能性があるなら関数に分けるべきですが
192デフォルトの名無しさん
2018/08/23(木) 11:09:24.18ID:itriZIP9 >>187
改めて一般論をしても構わんが
改めて一般論をしても構わんが
193デフォルトの名無しさん
2018/08/23(木) 11:29:56.84ID:rN/Im7Tc プロファイリングのときってstaticな関数も同列に扱うもんなの?
194デフォルトの名無しさん
2018/08/23(木) 11:40:17.42ID:HinwMmX/ ある程度の規模、って
サイトによって違うんだし
一般化はできないんじゃ
サイトによって違うんだし
一般化はできないんじゃ
195デフォルトの名無しさん
2018/08/23(木) 12:10:32.95ID:O7XDpWhz >>194
地雷臭がするから煽るのやめとけってw
地雷臭がするから煽るのやめとけってw
196デフォルトの名無しさん
2018/08/23(木) 12:48:09.07ID:iNuWULI+ >>177
> 私も当然他の処理があると思った
> 無いとするとビジーループか?
> これだと気持ち悪いとかいう以前の問題になる
君のレベルが低いだけ
最近のプロセッサはロック/アンロックをハードウェアレベルで行うようになってるけどビジーループ自体は使われてる
スピンロック でググれ
> 私も当然他の処理があると思った
> 無いとするとビジーループか?
> これだと気持ち悪いとかいう以前の問題になる
君のレベルが低いだけ
最近のプロセッサはロック/アンロックをハードウェアレベルで行うようになってるけどビジーループ自体は使われてる
スピンロック でググれ
197デフォルトの名無しさん
2018/08/23(木) 15:13:34.14ID:HinwMmX/ >>195
アリガトス、鼻の敏感なお方
アリガトス、鼻の敏感なお方
198デフォルトの名無しさん
2018/08/23(木) 15:40:21.02ID:/qY100we >>191
行数の問題じゃないんだよなあ
行数の問題じゃないんだよなあ
199デフォルトの名無しさん
2018/08/23(木) 16:15:45.18ID:rN/Im7Tc 「長いから分割する」という発想で関数作ってる人は割といるんだよ。
そうするとまあコンテクストが広い範囲に分散してつらい。
そうするとまあコンテクストが広い範囲に分散してつらい。
200デフォルトの名無しさん
2018/08/23(木) 16:28:54.58ID:EgEtgRif そういえば昔客とソースレビューしてて、
引数チェックのための早期returnしてたら、
客「途中returnはやめてください」
俺「そうするとネストが深くなりすぎますよ?」
客「それなら関数に分けて下さい」
俺「分けた関数の先でも引数チェックするので同じですよ?」
客「それならその先の関数も別の関数に分けて下さい」
俺「…(反論するのめんどくせえ、言うとおりに作ってしまえ)」
結果、思い出すのも恐ろしい意味不明な関数ばかりのコードが出来上がったわ。
引数チェックのための早期returnしてたら、
客「途中returnはやめてください」
俺「そうするとネストが深くなりすぎますよ?」
客「それなら関数に分けて下さい」
俺「分けた関数の先でも引数チェックするので同じですよ?」
客「それならその先の関数も別の関数に分けて下さい」
俺「…(反論するのめんどくせえ、言うとおりに作ってしまえ)」
結果、思い出すのも恐ろしい意味不明な関数ばかりのコードが出来上がったわ。
201デフォルトの名無しさん
2018/08/23(木) 16:54:56.17ID:rN/Im7Tc 途中リターン禁止ってほんとアホだよね。要はreturnの否定だからな。
最近はMISRAからも外れてるらしいが
最近はMISRAからも外れてるらしいが
202デフォルトの名無しさん
2018/08/23(木) 17:00:42.78ID:itriZIP9 >>191
単なる1個のループの条件に意味がないことなんてあるのか?
たった3行というがlock/unlockという2行で
他のタスクが干渉しないようにガードする必要がある条件だぞ
干渉されるとしたら何でだ? それでも意味がないのか?
単なる1個のループの条件に意味がないことなんてあるのか?
たった3行というがlock/unlockという2行で
他のタスクが干渉しないようにガードする必要がある条件だぞ
干渉されるとしたら何でだ? それでも意味がないのか?
203デフォルトの名無しさん
2018/08/23(木) 18:14:09.43ID:wxGNRrqx204デフォルトの名無しさん
2018/08/23(木) 18:30:50.97ID:9jasVWpA そこまでローレベルの話じゃないと思うよ
無関係ではないけど
無関係ではないけど
205デフォルトの名無しさん
2018/08/23(木) 19:15:54.01ID:iNuWULI+206デフォルトの名無しさん
2018/08/23(木) 19:28:43.42ID:k97Awv43 じゃあハードセマフォか?
それスピンロックじゃないよな
恥の上塗りwww
それスピンロックじゃないよな
恥の上塗りwww
207デフォルトの名無しさん
2018/08/23(木) 19:51:18.42ID:iNuWULI+ >>206 が必死にググって見つけて来た関係ありそうな(でも全く頓珍漢な)言葉 → ハードセマフォ
自爆志願者かよ w
自爆志願者かよ w
208デフォルトの名無しさん
2018/08/23(木) 19:59:05.89ID:k97Awv43 >>196自体がとんちんかんなわけだがwww
209デフォルトの名無しさん
2018/08/23(木) 19:59:23.06ID:EgEtgRif な、ここのスレは読解力が乏しいのにお互いにマウント取り合って傍から見たらアホちゃうのって奴が多いだろ?
よくもまあLOCK/UNLOCK如きで生産性のカケラもない議論できるわ。
よほど暇なんかな?
よくもまあLOCK/UNLOCK如きで生産性のカケラもない議論できるわ。
よほど暇なんかな?
210デフォルトの名無しさん
2018/08/23(木) 20:01:59.92ID:k97Awv43 LOCK/UNLOCKごとき
だよねえ
だよねえ
211デフォルトの名無しさん
2018/08/23(木) 20:17:25.18ID:e3M4pNLl ハードセマフォってなに…?
212デフォルトの名無しさん
2018/08/23(木) 20:24:14.60ID:k97Awv43 ハードウェアセマフォ
213デフォルトの名無しさん
2018/08/23(木) 20:25:47.93ID:HinwMmX/ C言語のはなしに戻ってくるのはあと何日先かな
214デフォルトの名無しさん
2018/08/23(木) 20:27:03.48ID:k97Awv43 話題があれば
215デフォルトの名無しさん
2018/08/23(木) 20:28:12.68ID:EgEtgRif 初心者でもベテランでも新しい気付きがあるような内容に早く戻るといいね。
216デフォルトの名無しさん
2018/08/23(木) 20:49:36.75ID:EgEtgRif 400メートルなら連続で泳げるけど、800メートルはよほどペース落とさないと無理だわ。
217デフォルトの名無しさん
2018/08/23(木) 20:49:53.03ID:EgEtgRif あ、ごめんなさい。
誤爆しましたm(_ _)m
誤爆しましたm(_ _)m
218デフォルトの名無しさん
2018/08/23(木) 20:50:49.19ID:Uo7RxZ0m 400も800も違わんだろう
219デフォルトの名無しさん
2018/08/23(木) 21:08:53.97ID:wxGNRrqx 違うだろ
220デフォルトの名無しさん
2018/08/23(木) 21:13:49.03ID:ZsFwDbjK >>200
客「(コイツらには二度と仕事頼まんとこ、無能すぎ)」
客「(コイツらには二度と仕事頼まんとこ、無能すぎ)」
221デフォルトの名無しさん
2018/08/23(木) 21:41:28.27ID:OJr5a4rA222デフォルトの名無しさん
2018/08/23(木) 22:03:27.73ID:ZsGoqTtC223デフォルトの名無しさん
2018/08/23(木) 22:13:17.45ID:y9Wx8uZn >>176
> 視点移動が増える書き方で、可読性やメンテナンス性が悪いという人もいる。
それは正しく分割出来てないから。(同じ抽象度で分割する)
読まなくても分かる名前を付けて、結果的に読まないから、視点移動はしない。例えば、以下。
while (1) {
int idx = get_data_idx();
if (idx<0) break;
int* data = prepare_data(idx);
calculate_data(data);
write_back_data(data, idx);
}
この部分はマルチスレッドでのデータ処理だとしよう。
get_data_idxは未演算のデータのインデックスを返し、ない場合は、-1を返すとしよう。
単純に、「インデックスを受け取り、チェックし、データを用意して演算して書き戻す」と読めるだろ。
そこでget_data_idxの中身を見ると、マルチスレッド用だからロックされてる、というだけ。
(余談だが>>107にはこういう具体性が見えないので、
> LOCK/UNLOCKが必要な具体的な場面を想定しての発言には見えない (>>122)
と言われている。これも当たっている)
「視点移動ガー」は読み方を間違っている。
プログラムが階層構造のツリーとして、
縦に掘るのではなく、横に読んで、必要であればその部分だけ縦に読むんだよ。
まず最初は同階層で全体の流れを把握して、必要であればその実装を読む。
実装を読む場合、名前と実装が一致しているかだけのチェックしかしない。
家を建てるとして、
全ての柱が設計図通りに組み上げられているか(全体のチェック)と、
それぞれの柱が設計図通りの仕上がりになってるか(ほぞ穴が正しく加工されてるか)は別にチェックするだろ。
プログラミングも同じで、上位と下位は別にチェックするんだよ。
同時に読まないからいちいち子関数に視点移動なんてしないし、視点移動しなくて済むように同抽象度で分割するんだよ。
> 視点移動が増える書き方で、可読性やメンテナンス性が悪いという人もいる。
それは正しく分割出来てないから。(同じ抽象度で分割する)
読まなくても分かる名前を付けて、結果的に読まないから、視点移動はしない。例えば、以下。
while (1) {
int idx = get_data_idx();
if (idx<0) break;
int* data = prepare_data(idx);
calculate_data(data);
write_back_data(data, idx);
}
この部分はマルチスレッドでのデータ処理だとしよう。
get_data_idxは未演算のデータのインデックスを返し、ない場合は、-1を返すとしよう。
単純に、「インデックスを受け取り、チェックし、データを用意して演算して書き戻す」と読めるだろ。
そこでget_data_idxの中身を見ると、マルチスレッド用だからロックされてる、というだけ。
(余談だが>>107にはこういう具体性が見えないので、
> LOCK/UNLOCKが必要な具体的な場面を想定しての発言には見えない (>>122)
と言われている。これも当たっている)
「視点移動ガー」は読み方を間違っている。
プログラムが階層構造のツリーとして、
縦に掘るのではなく、横に読んで、必要であればその部分だけ縦に読むんだよ。
まず最初は同階層で全体の流れを把握して、必要であればその実装を読む。
実装を読む場合、名前と実装が一致しているかだけのチェックしかしない。
家を建てるとして、
全ての柱が設計図通りに組み上げられているか(全体のチェック)と、
それぞれの柱が設計図通りの仕上がりになってるか(ほぞ穴が正しく加工されてるか)は別にチェックするだろ。
プログラミングも同じで、上位と下位は別にチェックするんだよ。
同時に読まないからいちいち子関数に視点移動なんてしないし、視点移動しなくて済むように同抽象度で分割するんだよ。
224デフォルトの名無しさん
2018/08/23(木) 22:16:11.26ID:y9Wx8uZn >>177
> do while のが軽い場合がある
> って常識だと思ったが
それはお前が何も知らない初心者だから。
do while は初回のチェックが入らない分速い。(逆に言えば、その分だけしか速くない)
君は「なんだか知らないが do-while は速いんだ!」位の理解しかしてないだろ。
そんな馬鹿はC界隈にはいない。
問題は、この「初回チェックしない分速い」のをいちいち取り上げる必要があるか、という点で、
殆どの場合はどうでもいいから do-while は使われない。
ただし、どうしてもケチりたい場合は使われる。
(ルール等で駄目なら手動で初回部分だけインライン展開しても同じだが、それよりは do-while 使った方がいい)
禁止する必要はないけど、使う局面もない、といったところだと思うよ。
初回のチェックが必要ない=その前か上位で初回チェックが必要ないことを保証している、であって、
全くチェックしていないわけではないんだよ。
結果、処理を整理して集約していくと、while文に吸収されることもある。
或いはそうならないとして、ど頭でチェックだけして不要ならショートカットしたい等の場合、
別にチェック+ do-while になるが、それはメトリックスを増やしてしまう。(静的コールグラフ)
どのパスを通るかがデータ依存になり、それがかなり大きな区画になってしまうだろ。
それよりはショートカット出来ないけどどんなデータでも同じパス、
whileで弾かれて空振りするだけ、のほうがメンテナンスが遙かに楽なんだよ。
ここら辺はさんざんメンテナンスしてれば分かるようになるし、してないうちには分からない。
お前は相当それ以前だが。
「僕はdo-whileの方が速いケースもあるのを知ってるんだ!」ってのは痛いだけだから止めとけ。
自分でアホだと言っているようなものだ。
そんなことはみんな知ってて、その上で議論している。
コード分岐を増やすのが、1回のチェックを端折るのと釣り合うか?なんだよ。
> do while のが軽い場合がある
> って常識だと思ったが
それはお前が何も知らない初心者だから。
do while は初回のチェックが入らない分速い。(逆に言えば、その分だけしか速くない)
君は「なんだか知らないが do-while は速いんだ!」位の理解しかしてないだろ。
そんな馬鹿はC界隈にはいない。
問題は、この「初回チェックしない分速い」のをいちいち取り上げる必要があるか、という点で、
殆どの場合はどうでもいいから do-while は使われない。
ただし、どうしてもケチりたい場合は使われる。
(ルール等で駄目なら手動で初回部分だけインライン展開しても同じだが、それよりは do-while 使った方がいい)
禁止する必要はないけど、使う局面もない、といったところだと思うよ。
初回のチェックが必要ない=その前か上位で初回チェックが必要ないことを保証している、であって、
全くチェックしていないわけではないんだよ。
結果、処理を整理して集約していくと、while文に吸収されることもある。
或いはそうならないとして、ど頭でチェックだけして不要ならショートカットしたい等の場合、
別にチェック+ do-while になるが、それはメトリックスを増やしてしまう。(静的コールグラフ)
どのパスを通るかがデータ依存になり、それがかなり大きな区画になってしまうだろ。
それよりはショートカット出来ないけどどんなデータでも同じパス、
whileで弾かれて空振りするだけ、のほうがメンテナンスが遙かに楽なんだよ。
ここら辺はさんざんメンテナンスしてれば分かるようになるし、してないうちには分からない。
お前は相当それ以前だが。
「僕はdo-whileの方が速いケースもあるのを知ってるんだ!」ってのは痛いだけだから止めとけ。
自分でアホだと言っているようなものだ。
そんなことはみんな知ってて、その上で議論している。
コード分岐を増やすのが、1回のチェックを端折るのと釣り合うか?なんだよ。
225デフォルトの名無しさん
2018/08/23(木) 22:18:42.67ID:wxGNRrqx 長文から悔しさがにじみ出てますよ
226デフォルトの名無しさん
2018/08/23(木) 22:19:37.23ID:ZsGoqTtC 成功するまでリトライみたいなのってdo-while使わない?
227デフォルトの名無しさん
2018/08/23(木) 22:20:37.13ID:wxGNRrqx do {
} while (0);
こんなのもごくたまに
} while (0);
こんなのもごくたまに
228さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/23(木) 22:22:18.83ID:Z2Fii0dD do-whileはマクロで文をまとめるのによく使うよ。
229デフォルトの名無しさん
2018/08/23(木) 22:23:48.32ID:wxGNRrqx >>227のセミコロンを取ったヤツ
230デフォルトの名無しさん
2018/08/23(木) 22:26:06.91ID:y9Wx8uZn ただマジで、初心者はこの手の話に首を突っ込まない方がいい。
時間の無駄で、上達を阻害するだけ。
コードの美しさ/抽象レベル/分割/隠蔽/疎結合が必要なのは少なくとも200-1000行程度であって、
50行程度ならグダグダ言わずにベタで密結合で書き下した方が分かりやすい。
10行のプログラムを動かすにも苦労する初心者にも、
理解に少なくとも200行程度書ける腕前が必要な内容を教えるから空回りする。
(とはいえ、初段階の洗脳は必要悪だ、というのがJava教団であるが。
そしてFizzBuzzはイテレートするクラス、判定クラス、表示クラスに分割され、
イテレータがインタフェースとして活用される、というのが件の悪ノリだった)
1000行程度も書けない初心者は、まず1000行書けることを目指せ。(1000行程度なら勢いで書ける)
コードの美しさその他はその辺になればだんだん分かってくる。
その後に、自分で「コードを減らす」練習をした方がいい。
(コードを「書く」よりも「減らす」方が上達する、と言う奴は居て、俺もそう思う)
それまでは自分でコーディングルールの優劣を判定する頭もないのだから、(これはちゃんと認めた方がいい)
オレオレルールではなくて、コードを書いている連中のルールをそのまま使った方がいい。
俺はgoogleがいいと思うが。
(なお意識高い系C++erはgoogleのルールはもう古い!と言いだした模様。
俺は布教用のルールなんてゴミだと思っているが、まだチェックはしてない)
>>180-181
MISRAは「自分でどのルールが無駄か判断出来る人向け」であって、
お前らみたいな「自分では判断出来ない初心者向け」ではないんだよ。
素直にとりあえずgoogle使っとけ。
時間の無駄で、上達を阻害するだけ。
コードの美しさ/抽象レベル/分割/隠蔽/疎結合が必要なのは少なくとも200-1000行程度であって、
50行程度ならグダグダ言わずにベタで密結合で書き下した方が分かりやすい。
10行のプログラムを動かすにも苦労する初心者にも、
理解に少なくとも200行程度書ける腕前が必要な内容を教えるから空回りする。
(とはいえ、初段階の洗脳は必要悪だ、というのがJava教団であるが。
そしてFizzBuzzはイテレートするクラス、判定クラス、表示クラスに分割され、
イテレータがインタフェースとして活用される、というのが件の悪ノリだった)
1000行程度も書けない初心者は、まず1000行書けることを目指せ。(1000行程度なら勢いで書ける)
コードの美しさその他はその辺になればだんだん分かってくる。
その後に、自分で「コードを減らす」練習をした方がいい。
(コードを「書く」よりも「減らす」方が上達する、と言う奴は居て、俺もそう思う)
それまでは自分でコーディングルールの優劣を判定する頭もないのだから、(これはちゃんと認めた方がいい)
オレオレルールではなくて、コードを書いている連中のルールをそのまま使った方がいい。
俺はgoogleがいいと思うが。
(なお意識高い系C++erはgoogleのルールはもう古い!と言いだした模様。
俺は布教用のルールなんてゴミだと思っているが、まだチェックはしてない)
>>180-181
MISRAは「自分でどのルールが無駄か判断出来る人向け」であって、
お前らみたいな「自分では判断出来ない初心者向け」ではないんだよ。
素直にとりあえずgoogle使っとけ。
231デフォルトの名無しさん
2018/08/23(木) 22:27:16.39ID:wxGNRrqx こいつNG
232デフォルトの名無しさん
2018/08/23(木) 22:28:37.43ID:y9Wx8uZn >>184
> 覗かないですむほど関数仕様を単純化すると今度は関数が増えて管理の手間が増える矛盾。
管理の手間は増えないと思うが。
もし増えていると感じるのなら、それはCには階層がないことの弊害だ。
関数内関数が普通に使える状況であれば、
関数切り出しは「処理を纏めて名前を付けただけ」でしかなく、
外部からその関数が呼ばれることが文法的にないことを保証出来るから、手間は増えない。
そしてこの点に、妥協的だが現実的なのは「名前に階層も付けてしまう」だ。
つまり、AAA階層内の関数はAAA_get_data_idx()等にし、
もし仮にAAA_get_data_idx内でさらにローカル関数が必要な場合は、AAA_get_data_idx_BBBにしてしまう、というものだ。
関数名が長くなる点を除いて問題はないし、「grep出来るから便利」 by Linus。
OOPも実質同じで、フルパスで呼ぶなら AAA->get_data_idx->BBB()等、_ が -> に代わるだけだが、
実際はオブジェクトポインタ=途中のポインタだから、obj->BBB()となり、長くならずに済む。
(ただし、grep出来なくなる)
俺もCに階層記述能力がないのは問題だと思っているが、
現実的に分割/疎結合化が必要なのは200-1000行単位であり、
ここは「ファイル」(=モジュール)で分割しろ、というのがCだ。
だから不満ではあるが結果的に何とかなってしまうのも事実で、だからこそCがまだ生きながらえている、というのはある。
それにしても「関数内関数」は欲しいんだけどね。あと、ラムダも。
(gccでは前者は標準、後者はマクロで対応出来るが)
> 覗かないですむほど関数仕様を単純化すると今度は関数が増えて管理の手間が増える矛盾。
管理の手間は増えないと思うが。
もし増えていると感じるのなら、それはCには階層がないことの弊害だ。
関数内関数が普通に使える状況であれば、
関数切り出しは「処理を纏めて名前を付けただけ」でしかなく、
外部からその関数が呼ばれることが文法的にないことを保証出来るから、手間は増えない。
そしてこの点に、妥協的だが現実的なのは「名前に階層も付けてしまう」だ。
つまり、AAA階層内の関数はAAA_get_data_idx()等にし、
もし仮にAAA_get_data_idx内でさらにローカル関数が必要な場合は、AAA_get_data_idx_BBBにしてしまう、というものだ。
関数名が長くなる点を除いて問題はないし、「grep出来るから便利」 by Linus。
OOPも実質同じで、フルパスで呼ぶなら AAA->get_data_idx->BBB()等、_ が -> に代わるだけだが、
実際はオブジェクトポインタ=途中のポインタだから、obj->BBB()となり、長くならずに済む。
(ただし、grep出来なくなる)
俺もCに階層記述能力がないのは問題だと思っているが、
現実的に分割/疎結合化が必要なのは200-1000行単位であり、
ここは「ファイル」(=モジュール)で分割しろ、というのがCだ。
だから不満ではあるが結果的に何とかなってしまうのも事実で、だからこそCがまだ生きながらえている、というのはある。
それにしても「関数内関数」は欲しいんだけどね。あと、ラムダも。
(gccでは前者は標準、後者はマクロで対応出来るが)
233デフォルトの名無しさん
2018/08/23(木) 22:34:14.90ID:za+Z/fW8 >>230
1000業かけるお題を教えてください(。・´_`・。)
1000業かけるお題を教えてください(。・´_`・。)
234デフォルトの名無しさん
2018/08/23(木) 22:35:46.52ID:4VjbPjMt 親切に俺condwaitって書いたのに…
235デフォルトの名無しさん
2018/08/23(木) 22:37:11.87ID:ZsGoqTtC 関数のレベル感あわせるのむずい
あわないだろ
あわないだろ
236デフォルトの名無しさん
2018/08/23(木) 22:49:21.25ID:OJr5a4rA237デフォルトの名無しさん
2018/08/23(木) 22:50:32.61ID:/xlV6A++ 現在通過中
風はそれほどでも無いが雨量がヤバい、尋常じゃない
風はそれほどでも無いが雨量がヤバい、尋常じゃない
238デフォルトの名無しさん
2018/08/23(木) 22:50:52.78ID:/xlV6A++ 誤爆した
239デフォルトの名無しさん
2018/08/23(木) 22:50:52.87ID:wxGNRrqx 「軽い場合がある」
240デフォルトの名無しさん
2018/08/23(木) 22:52:49.79ID:wxGNRrqx デメリットは数文字ソースコードが増えるだけ
生成されるバイナリが悪くなることは無い
良くなる可能性はある
生成されるバイナリが悪くなることは無い
良くなる可能性はある
241デフォルトの名無しさん
2018/08/23(木) 22:54:11.95ID:qYtPM3Ou242デフォルトの名無しさん
2018/08/23(木) 22:54:57.75ID:wxGNRrqx do while を使わない(使えない)人っているよね
243デフォルトの名無しさん
2018/08/23(木) 22:57:34.92ID:wxGNRrqx 常に正しく分割されてるコードしかいじらないわけでも無いだろうし
常に正しく分割出来るとも限らないし
正しいか正しくないかは視点によっても違う
理想だけ語るだけで実際にコードを組んだ事が無さそうな人がいるようだけど
常に正しく分割出来るとも限らないし
正しいか正しくないかは視点によっても違う
理想だけ語るだけで実際にコードを組んだ事が無さそうな人がいるようだけど
244デフォルトの名無しさん
2018/08/23(木) 23:01:12.83ID:FIun2PeI >>237
気圧申告しないと!
気圧申告しないと!
245デフォルトの名無しさん
2018/08/23(木) 23:01:58.95ID:wCnARv+4 ワッチョイないのに結局レスするんか
246デフォルトの名無しさん
2018/08/23(木) 23:03:30.31ID:NMfUyUL+ >>230
>FizzBuzzはイテレートするクラス、判定クラス、表示クラスに分割され、イテレータがインタフェースとして活用される、というのが件の悪ノリだった
どんなコードになるのでしょうか?一度みてみたいものです…
fizzbuzz はこんなコードを書いたことがあります
https://mevius.5ch.net/test/read.cgi/tech/1434079972/25
https://ideone.com/i8wMea
>FizzBuzzはイテレートするクラス、判定クラス、表示クラスに分割され、イテレータがインタフェースとして活用される、というのが件の悪ノリだった
どんなコードになるのでしょうか?一度みてみたいものです…
fizzbuzz はこんなコードを書いたことがあります
https://mevius.5ch.net/test/read.cgi/tech/1434079972/25
https://ideone.com/i8wMea
247デフォルトの名無しさん
2018/08/23(木) 23:18:47.64ID:y9Wx8uZn >>226
具体例あるか?
それ以前に「成功するまでリトライ」自体がよろしくないが。
>>236
do-whileに対して何か特殊な最適化がかかるという話なら、
俺は知らんから突っ込めない。
が、そうだとしても、それでコードを汚すこと自体が間違いだが。
>>241
そう思うんならそれでいい。
平行線だし、議論しても結果は出ない。
君のコードを見て他の人がどう思うかはそれぞれの自由だ。
俺はこの場合関数に括り出す方を選択する。
同様の連中もここにいるだろ。それだけの話さ。
ただそれ以前に、アトミックなんて最初から関数に括り出されていると思うが。
インラインアセンブラを使う気でなければそもそも無理だし。例えば、以下。
https://msdn.microsoft.com/ja-jp/library/dd78zt0c(v=vs.110).aspx
>>245
あー、8は俺だ。
ワッチョイありで立て直してくれればそっち行くわ。
(俺が立て直してもいいが)
具体例あるか?
それ以前に「成功するまでリトライ」自体がよろしくないが。
>>236
do-whileに対して何か特殊な最適化がかかるという話なら、
俺は知らんから突っ込めない。
が、そうだとしても、それでコードを汚すこと自体が間違いだが。
>>241
そう思うんならそれでいい。
平行線だし、議論しても結果は出ない。
君のコードを見て他の人がどう思うかはそれぞれの自由だ。
俺はこの場合関数に括り出す方を選択する。
同様の連中もここにいるだろ。それだけの話さ。
ただそれ以前に、アトミックなんて最初から関数に括り出されていると思うが。
インラインアセンブラを使う気でなければそもそも無理だし。例えば、以下。
https://msdn.microsoft.com/ja-jp/library/dd78zt0c(v=vs.110).aspx
>>245
あー、8は俺だ。
ワッチョイありで立て直してくれればそっち行くわ。
(俺が立て直してもいいが)
248デフォルトの名無しさん
2018/08/23(木) 23:43:58.22ID:y9Wx8uZn >>246
俺の記憶では、「FizzBuzz Implementation in Java」みたいなタイトルでGitHubに在ったはず。(だが出てこない)
★も2000位ついていたと思った。
クレームついて取り下げるとも思えないから、検索順位下げられたんじゃね?
そんなに見たければ自分で探せよ。多分まだそのまま公開してると思うぜ。
俺の記憶では、「FizzBuzz Implementation in Java」みたいなタイトルでGitHubに在ったはず。(だが出てこない)
★も2000位ついていたと思った。
クレームついて取り下げるとも思えないから、検索順位下げられたんじゃね?
そんなに見たければ自分で探せよ。多分まだそのまま公開してると思うぜ。
249デフォルトの名無しさん
2018/08/23(木) 23:45:37.65ID:Ml8TmHvL 1000行書けるお題を教えてください
250デフォルトの名無しさん
2018/08/23(木) 23:49:35.97ID:HinwMmX/ 宿題で出されているの?
251デフォルトの名無しさん
2018/08/23(木) 23:52:07.74ID:NMfUyUL+252デフォルトの名無しさん
2018/08/23(木) 23:55:52.97ID:0/a4zf/K253デフォルトの名無しさん
2018/08/23(木) 23:59:12.07ID:y9Wx8uZn254デフォルトの名無しさん
2018/08/24(金) 00:05:09.13ID:iMeaBiRp >>247
> ただそれ以前に、アトミックなんて最初から関数に括り出されていると思うが。
そうだな。すでに atomic 実装されていたら俺も使うわ。
関わっているプロジェクトや文化にも依存するから、絶対はない。
例えば Kernel とかだと大半は関数化していない。俺は見た記憶がない。
まあそれだけの話。
> ただそれ以前に、アトミックなんて最初から関数に括り出されていると思うが。
そうだな。すでに atomic 実装されていたら俺も使うわ。
関わっているプロジェクトや文化にも依存するから、絶対はない。
例えば Kernel とかだと大半は関数化していない。俺は見た記憶がない。
まあそれだけの話。
255デフォルトの名無しさん
2018/08/24(金) 00:16:45.53ID:O3WQJa8X >>254
> 例えば Kernel とかだと大半は関数化していない。俺は見た記憶がない。
それソース出せるか?さすがに嘘だと思うぜ。
> C 言語ではアトミック操作を保証できないことから、Linux は基礎となるアーキテクチャーに依存してアトミック操作を提供します。
> https://www.ibm.com/developerworks/jp/linux/library/l-linux-synchronization.html
いちいちインラインアセンブラでは設計効率が悪すぎる。
APIにも当然用意されてるし、普通の人ならそれを使うし、Linusも当然そうだと思うけど。
根本的に「ロック」自体を勘違いしている気がするが。
> 例えば Kernel とかだと大半は関数化していない。俺は見た記憶がない。
それソース出せるか?さすがに嘘だと思うぜ。
> C 言語ではアトミック操作を保証できないことから、Linux は基礎となるアーキテクチャーに依存してアトミック操作を提供します。
> https://www.ibm.com/developerworks/jp/linux/library/l-linux-synchronization.html
いちいちインラインアセンブラでは設計効率が悪すぎる。
APIにも当然用意されてるし、普通の人ならそれを使うし、Linusも当然そうだと思うけど。
根本的に「ロック」自体を勘違いしている気がするが。
256デフォルトの名無しさん
2018/08/24(金) 00:18:45.88ID:iMeaBiRp >>255
俺は見たことがないだけ。気になったら探してくれ。
俺は見たことがないだけ。気になったら探してくれ。
257デフォルトの名無しさん
2018/08/24(金) 00:34:08.73ID:O3WQJa8X >>256
grepすれば出てきそうだが探す気はない。
linux kernel内でひたすらインラインされているとしたら、
おそらくスタック容量(1スレ当たり256バイトだったか?)の為だろう。
「関数化」はされていなくても「マクロ化」されていて、
ソースコード的には意味が同じという落ちじゃないか?
それなら君の噛みつき方は悪質だと思うがね。(意図的に議論を空回りさせててる)
grepすれば出てきそうだが探す気はない。
linux kernel内でひたすらインラインされているとしたら、
おそらくスタック容量(1スレ当たり256バイトだったか?)の為だろう。
「関数化」はされていなくても「マクロ化」されていて、
ソースコード的には意味が同じという落ちじゃないか?
それなら君の噛みつき方は悪質だと思うがね。(意図的に議論を空回りさせててる)
258デフォルトの名無しさん
2018/08/24(金) 00:37:30.88ID:iMeaBiRp >>257
わざわざ自前で関数化していない、という話だぞ。
わざわざ自前で関数化していない、という話だぞ。
259デフォルトの名無しさん
2018/08/24(金) 00:43:06.32ID:O3WQJa8X260デフォルトの名無しさん
2018/08/24(金) 00:44:16.19ID:iMeaBiRp261デフォルトの名無しさん
2018/08/24(金) 00:49:47.27ID:VJLc5wt0 ソースを示して、突っ込んだ話になることを期待w
262デフォルトの名無しさん
2018/08/24(金) 00:53:41.22ID:ljcg8c0k wktk
263デフォルトの名無しさん
2018/08/24(金) 00:53:57.99ID:TjDOkMEc そしてまた質問者が置き去りになるのであった
264デフォルトの名無しさん
2018/08/24(金) 01:26:32.42ID:VJLc5wt0 C言語なら俺に聞け(答えるとは言っていない)ですか?
265デフォルトの名無しさん
2018/08/24(金) 01:28:36.02ID:A5L5xSI8 >>253
「github にある」が重要なヒントとなりました
「github にある」が重要なヒントとなりました
266デフォルトの名無しさん
2018/08/24(金) 05:28:07.79ID:Nyovr5Qp267デフォルトの名無しさん
2018/08/24(金) 05:50:10.13ID:Nyovr5Qp268デフォルトの名無しさん
2018/08/24(金) 05:54:34.00ID:Nyovr5Qp269デフォルトの名無しさん
2018/08/24(金) 07:43:07.97ID:ZkSPfVdV270デフォルトの名無しさん
2018/08/24(金) 07:52:13.74ID:ZkSPfVdV >>266
> ただ今どきパフォーマンスがいいからdo〜whileにすると言うのはナンセンス
forやwhileを選ぶ理由がある所でも
パフォーマンスを気にしてdo whileを選ぶべき
なんて話はしていない
どれを選んでも良いときに
forを選ぶ人、whileを選ぶ人、do whileを選ぶ人がいると言うだけ
> ただ今どきパフォーマンスがいいからdo〜whileにすると言うのはナンセンス
forやwhileを選ぶ理由がある所でも
パフォーマンスを気にしてdo whileを選ぶべき
なんて話はしていない
どれを選んでも良いときに
forを選ぶ人、whileを選ぶ人、do whileを選ぶ人がいると言うだけ
271デフォルトの名無しさん
2018/08/24(金) 07:57:40.75ID:ZkSPfVdV わざわざCを使うってことは
8bitのチープなマイコン、チープなコンパイラだったり
OSやドライバの開発だったり
アセンブラも混ぜて使うこともありそうな
一番低級な高級言語
他の言語よりも記述方法によるパフォーマンスの差
が語られても良いと思う
8bitのチープなマイコン、チープなコンパイラだったり
OSやドライバの開発だったり
アセンブラも混ぜて使うこともありそうな
一番低級な高級言語
他の言語よりも記述方法によるパフォーマンスの差
が語られても良いと思う
272デフォルトの名無しさん
2018/08/24(金) 07:58:09.19ID:KrjEv78J 自己防衛のためだけのレスになってきたな
そろそろこの話題も終わりかな
そろそろこの話題も終わりかな
273デフォルトの名無しさん
2018/08/24(金) 08:00:01.51ID:Hnd+Ihtp ソース見て do {...} while (1); で無限ループになってたら
さすがに「なんで for (;;) や while (1) にせんの?」と尋ねるわ。
…でも「ループ先頭の(決して成立しない)終了判定が入らないから速いんだ」
と言われたら受け入れるかも。分かってやってるんだな、という意味で。
実際のところ for (;;) は無論のこと while (1) でも判定しないと思うけど。
さすがに「なんで for (;;) や while (1) にせんの?」と尋ねるわ。
…でも「ループ先頭の(決して成立しない)終了判定が入らないから速いんだ」
と言われたら受け入れるかも。分かってやってるんだな、という意味で。
実際のところ for (;;) は無論のこと while (1) でも判定しないと思うけど。
274デフォルトの名無しさん
2018/08/24(金) 08:06:02.46ID:ZkSPfVdV275デフォルトの名無しさん
2018/08/24(金) 08:10:04.46ID:29l6jjMs そういやループの話でgoto使うってレスないな
ネストが浅くなるし好んで使う人は・・・さすがに居ないか
ネストが浅くなるし好んで使う人は・・・さすがに居ないか
276デフォルトの名無しさん
2018/08/24(金) 08:12:56.91ID:LUWnMn3S 無限ループって怖くね?
277デフォルトの名無しさん
2018/08/24(金) 08:14:01.23ID:LUWnMn3S >>274
K&R以来の伝統のCのイディオムだから?
K&R以来の伝統のCのイディオムだから?
278デフォルトの名無しさん
2018/08/24(金) 08:16:04.10ID:ZkSPfVdV goto label2
label1:
処理
label2:
条件判断
if (偽) goto label 1;
----
コンパイル結果的にはforやwhileはこんな感じ
条件が無かったとしても goto label2が入る
最適化しない場合やチープなコンパイラだと
このまま最適化されないかもしれない
goto label2
が不要な時にこれを除いたのがdo while
これのほうがバイナリはシンプル
label1:
処理
label2:
条件判断
if (偽) goto label 1;
----
コンパイル結果的にはforやwhileはこんな感じ
条件が無かったとしても goto label2が入る
最適化しない場合やチープなコンパイラだと
このまま最適化されないかもしれない
goto label2
が不要な時にこれを除いたのがdo while
これのほうがバイナリはシンプル
279デフォルトの名無しさん
2018/08/24(金) 08:18:32.35ID:ZkSPfVdV280デフォルトの名無しさん
2018/08/24(金) 08:18:56.33ID:ZkSPfVdV281デフォルトの名無しさん
2018/08/24(金) 08:30:42.38ID:ZkSPfVdV gotoを使わない(使えない)人だと
多重ループから抜ける為だけにフラグを使ったり
多重ループから抜ける目的の為だけの理由で
関連する複数のループを分けたりする
double data[4][4];
例えばこんな構造のデータのある統計情報を返す関数
ただし、データに非有限値が入っていたらNaNを返す
デバッグ用に計算結果を出力するコードが入っている
どういうコードにする?
多重ループから抜ける為だけにフラグを使ったり
多重ループから抜ける目的の為だけの理由で
関連する複数のループを分けたりする
double data[4][4];
例えばこんな構造のデータのある統計情報を返す関数
ただし、データに非有限値が入っていたらNaNを返す
デバッグ用に計算結果を出力するコードが入っている
どういうコードにする?
282デフォルトの名無しさん
2018/08/24(金) 08:42:44.31ID:srP6ovAZ283デフォルトの名無しさん
2018/08/24(金) 09:30:50.97ID:L5DguHRe マウント取りたくて必死w
284デフォルトの名無しさん
2018/08/24(金) 10:27:50.33ID:tx++RsbT do…whileの方が初回の判定がないから速いとしてもループ回数が多いと誤差レベルだし無限ループならコンパイラで最適化されて差がなくなると思う
285デフォルトの名無しさん
2018/08/24(金) 10:54:27.69ID:ZlD+iWMs 4.3BSDのccを-Oなしで使った場合の話をまだしてるやついるのか
286デフォルトの名無しさん
2018/08/24(金) 11:04:28.35ID:Cl8BSI3h いろいろ誤解が多いので口出ししておく。
アセンブリ言語に手で変換してみるとすぐわかるんだが、
whileは先頭付近に条件分岐が必要な他に、末尾に必ず無条件のジャンプが必要。
対してdo-whileは末尾の条件分岐だけでいい。
このおかげでループ1回あたり命令実行が一つ減る。
しかしコンパイラはwhile文をif文とdo-while文相当に置き換えて最適化するから、差は出ない。
ヘボコンパイラなら最適化しないかもしれないが、
その場合は他の部分も最適化されるはずもないので、速度云々いうだけ無駄。
アセンブリ言語に手で変換してみるとすぐわかるんだが、
whileは先頭付近に条件分岐が必要な他に、末尾に必ず無条件のジャンプが必要。
対してdo-whileは末尾の条件分岐だけでいい。
このおかげでループ1回あたり命令実行が一つ減る。
しかしコンパイラはwhile文をif文とdo-while文相当に置き換えて最適化するから、差は出ない。
ヘボコンパイラなら最適化しないかもしれないが、
その場合は他の部分も最適化されるはずもないので、速度云々いうだけ無駄。
287デフォルトの名無しさん
2018/08/24(金) 11:18:54.46ID:ZlD+iWMs そんな誤解しかねないやつ
いるとしたらおまえだけ
いるとしたらおまえだけ
288デフォルトの名無しさん
2018/08/24(金) 11:36:54.26ID:/2nrSUYs do whileは最後に条件を書くのが気に入らないので使わないです
289デフォルトの名無しさん
2018/08/24(金) 11:38:27.58ID:C22mUEBr 環境に依る 以上
290デフォルトの名無しさん
2018/08/24(金) 11:40:55.91ID:7MrYBE0R 使いどころを知らない自慢
forはwhileの上位互換だからwhileを使わない
ていうならまだわかる
forはwhileの上位互換だからwhileを使わない
ていうならまだわかる
291デフォルトの名無しさん
2018/08/24(金) 11:44:59.31ID:7MrYBE0R292デフォルトの名無しさん
2018/08/24(金) 12:22:55.87ID:srP6ovAZ >>286
> しかしコンパイラはwhile文をif文とdo-while文相当に置き換えて最適化するから、差は出ない。
if文?
do 〜whileに置き換えて単に最後の条件文に飛ぶジャンプ命令入れるだけだぞ
> しかしコンパイラはwhile文をif文とdo-while文相当に置き換えて最適化するから、差は出ない。
if文?
do 〜whileに置き換えて単に最後の条件文に飛ぶジャンプ命令入れるだけだぞ
293デフォルトの名無しさん
2018/08/24(金) 12:29:41.83ID:9+ua1c/R アセンブラのジャンプ命令や条件分岐の使い方が分かってない様子だね
ループ全体で命令が1回増えるだけなのにループ1回当たりの命令実行回数が増えるとか言ってるし
ループ全体で命令が1回増えるだけなのにループ1回当たりの命令実行回数が増えるとか言ってるし
294デフォルトの名無しさん
2018/08/24(金) 12:30:27.52ID:7MrYBE0R ----gotoの使用例----
for (y = 0; y < 9; y++){
. . for (x = 0; x < 9; x++){
. . . . if (判定) goto break_loop;
. . . . 処理
. . }
}
break_loop:
----do whileの使用例----
if (FindFirst()){
. . do {
. . . . 処理
. . } while (FindNext());
}
for (y = 0; y < 9; y++){
. . for (x = 0; x < 9; x++){
. . . . if (判定) goto break_loop;
. . . . 処理
. . }
}
break_loop:
----do whileの使用例----
if (FindFirst()){
. . do {
. . . . 処理
. . } while (FindNext());
}
295デフォルトの名無しさん
2018/08/24(金) 12:31:56.80ID:srP6ovAZ >>291
> 1回目が必ず条件TRUEになることがわかっているwhileループ全て
それ1回目は必ず実行してその結果で2回目以降を実行するかどうかを決めるってことだよね?
典型的なdo〜whileパターン w
むしろそのパターンでwhile(){}使ってるなら単なるアホとしか思えない
> 1回目が必ず条件TRUEになることがわかっているwhileループ全て
それ1回目は必ず実行してその結果で2回目以降を実行するかどうかを決めるってことだよね?
典型的なdo〜whileパターン w
むしろそのパターンでwhile(){}使ってるなら単なるアホとしか思えない
296デフォルトの名無しさん
2018/08/24(金) 12:34:47.80ID:7MrYBE0R297デフォルトの名無しさん
2018/08/24(金) 12:35:02.93ID:srP6ovAZ298デフォルトの名無しさん
2018/08/24(金) 12:38:53.07ID:srP6ovAZ299デフォルトの名無しさん
2018/08/24(金) 12:39:50.18ID:TJU8554I do whileってそんな語ることあるの?良くも悪くも単なる構文だと思うけど
ダラダラと長いループだと継続条件が下方に隠れるので嫌ってのはある
それ以外は正直どうでも良い
ダラダラと長いループだと継続条件が下方に隠れるので嫌ってのはある
それ以外は正直どうでも良い
300デフォルトの名無しさん
2018/08/24(金) 12:40:30.21ID:7MrYBE0R >>297
今とか昔とかじゃなくて...
PCのプログラムしかしたことが無い人は分からないだろうけど
組み込みのチープなマイコンのコンパイラは
いまだに糞なのはたくさんあるよ
あと、
様々な事情により最適化をOFFにして出荷する事もある
今とか昔とかじゃなくて...
PCのプログラムしかしたことが無い人は分からないだろうけど
組み込みのチープなマイコンのコンパイラは
いまだに糞なのはたくさんあるよ
あと、
様々な事情により最適化をOFFにして出荷する事もある
301デフォルトの名無しさん
2018/08/24(金) 12:40:57.41ID:7MrYBE0R >>298
その条件、何か関係ある?
その条件、何か関係ある?
302デフォルトの名無しさん
2018/08/24(金) 12:42:26.92ID:7MrYBE0R >>299
単なる構文を無条件で悪とする人がいるって話
単なる構文を無条件で悪とする人がいるって話
303デフォルトの名無しさん
2018/08/24(金) 12:53:42.33ID:90B7//Ue みんな議論に夢中で楽しそう w
304デフォルトの名無しさん
2018/08/24(金) 13:07:51.92ID:sQPXKPEp305デフォルトの名無しさん
2018/08/24(金) 13:32:55.56ID:Dz3bxc41 https://twitter.com/kondo_orange/status/1032690721822633985
俺は毒舌だから〜、ズバッと切れ味鋭いことも言っちゃうよ〜w、みたいな人、その意見が的を射ていない場合マジでイタイ奴だから気をつけろよ。
勘違いしてる奴けっこういるぞ。
斜に構えて逆張りするならそれなりに思考深めて来ないと。
田端さんとか意見が的外れだったらただのイヤな人だ(笑)
https://twitter.com/5chan_nel (5ch newer account)
俺は毒舌だから〜、ズバッと切れ味鋭いことも言っちゃうよ〜w、みたいな人、その意見が的を射ていない場合マジでイタイ奴だから気をつけろよ。
勘違いしてる奴けっこういるぞ。
斜に構えて逆張りするならそれなりに思考深めて来ないと。
田端さんとか意見が的外れだったらただのイヤな人だ(笑)
https://twitter.com/5chan_nel (5ch newer account)
306デフォルトの名無しさん
2018/08/24(金) 13:41:35.51ID:B0ktSP35 構造体はメモリのスタックとヒープのどちらに格納されるのでしょうか?
307デフォルトの名無しさん
2018/08/24(金) 13:53:06.07ID:MEArwTdw >>306
書き方次第でどちらにもなりうる。
ポインタ変数作って自分で malloc() 等で初期化すればヒープになる。
関数の中で stastc 付けたり関数外で宣言すると data や bss 領域になると思う。
関数内で static 付けずに自動変数として宣言すれば多分スタックになる。
しかし、必ずそのようなコードを作るコンパイラにしなければならないという決まりはない。
書き方次第でどちらにもなりうる。
ポインタ変数作って自分で malloc() 等で初期化すればヒープになる。
関数の中で stastc 付けたり関数外で宣言すると data や bss 領域になると思う。
関数内で static 付けずに自動変数として宣言すれば多分スタックになる。
しかし、必ずそのようなコードを作るコンパイラにしなければならないという決まりはない。
308デフォルトの名無しさん
2018/08/24(金) 16:55:09.53ID:MmiOMKcQ 「C言語」の名前の由来はB言語の後継だからというのは有名だけど、B言語って何でB言語?A言語はないのに。
309デフォルトの名無しさん
2018/08/24(金) 17:04:10.98ID:YufcJqyf BCPLが元だからB
310デフォルトの名無しさん
2018/08/24(金) 17:05:27.92ID:MmiOMKcQ311デフォルトの名無しさん
2018/08/24(金) 17:15:25.56ID:ZlD+iWMs312デフォルトの名無しさん
2018/08/24(金) 17:15:27.99ID:sQPXKPEp >>310
CPLの簡単版
CPLの簡単版
313デフォルトの名無しさん
2018/08/24(金) 17:15:41.51ID:C/3CctmU BCPLの元となったのはCPL
経緯は、CPL→BCPL→B言語→C言語
https://ja.wikipedia.org/wiki/CPL_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)
経緯は、CPL→BCPL→B言語→C言語
https://ja.wikipedia.org/wiki/CPL_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)
314デフォルトの名無しさん
2018/08/24(金) 17:31:50.43ID:MmiOMKcQ へー、BLCLってぱっと見Fortranぽいね。
時代を感じるわ。
C言語みたいにnotationが基本lowercaseになったのって画期的だったのかもね
時代を感じるわ。
C言語みたいにnotationが基本lowercaseになったのって画期的だったのかもね
315デフォルトの名無しさん
2018/08/24(金) 17:41:34.02ID:C/3CctmU つ EBCDIC
316デフォルトの名無しさん
2018/08/24(金) 17:51:17.23ID:srP6ovAZ317デフォルトの名無しさん
2018/08/24(金) 17:51:17.53ID:MmiOMKcQ うちの会社って、まだHungarian notationを強制しようとする人がいるんだけど、make excessiveせずに説得するにはどうしたら良いでしょうか?
318デフォルトの名無しさん
2018/08/24(金) 17:53:50.92ID:srP6ovAZ319デフォルトの名無しさん
2018/08/24(金) 18:14:41.54ID:ZkSPfVdV320デフォルトの名無しさん
2018/08/24(金) 18:40:16.19ID:1mvArulW >>319
どこが?
どこが?
321デフォルトの名無しさん
2018/08/24(金) 19:11:10.10ID:s18ZTF9u322デフォルトの名無しさん
2018/08/24(金) 19:16:16.69ID:C/3CctmU >>320
これだろ
>whileは先頭付近に条件分岐が必要な他に、末尾に必ず無条件のジャンプが必要。
whileの処理構造ならループ開始直後に条件判定の個所に(1度だけ)無条件ジャンプしてしまえば、あとは条件分岐を繰り返すだけで無条件ジャンプを再び使うことはない
ぶっちゃけ条件判定が先頭付近にあろうが末尾にあろうが何処でもいい
(do-whileの構造だと必ず一度は処理を実行する必要があるのでそんなことは出来ないけど)
これだろ
>whileは先頭付近に条件分岐が必要な他に、末尾に必ず無条件のジャンプが必要。
whileの処理構造ならループ開始直後に条件判定の個所に(1度だけ)無条件ジャンプしてしまえば、あとは条件分岐を繰り返すだけで無条件ジャンプを再び使うことはない
ぶっちゃけ条件判定が先頭付近にあろうが末尾にあろうが何処でもいい
(do-whileの構造だと必ず一度は処理を実行する必要があるのでそんなことは出来ないけど)
323デフォルトの名無しさん
2018/08/24(金) 19:23:07.44ID:YufcJqyf 先頭のほうがええやろ
324デフォルトの名無しさん
2018/08/24(金) 19:28:22.47ID:MmiOMKcQ >>321
日本人なんだけど日本育ちじゃないのでニュアンスをどう伝えたら良いのか分からないのですみません
日本人なんだけど日本育ちじゃないのでニュアンスをどう伝えたら良いのか分からないのですみません
325デフォルトの名無しさん
2018/08/24(金) 19:30:09.95ID:1mvArulW >>322
それがdo-while構造に最適化してるってことでは?
それがdo-while構造に最適化してるってことでは?
326デフォルトの名無しさん
2018/08/24(金) 19:37:04.31ID:C/3CctmU >>323
C言語のソースと直接対応させるならそのほうがその方が素直といえば素直だけどね
条件分岐命令はジャンプ範囲に制限があることがある(-128〜+127byte程度)ので下手すれば多段ジャンプを強いられることがある
アセンブラレベルでギリギリの調整をするときはループ構造が制約されることもあるよ
C言語のソースと直接対応させるならそのほうがその方が素直といえば素直だけどね
条件分岐命令はジャンプ範囲に制限があることがある(-128〜+127byte程度)ので下手すれば多段ジャンプを強いられることがある
アセンブラレベルでギリギリの調整をするときはループ構造が制約されることもあるよ
327デフォルトの名無しさん
2018/08/24(金) 19:50:21.18ID:rXR3rzpw 条件分岐で飛び先を相対で1バイトで指定しなければならないがそれ以上飛ばしたいなら逆の条件で無条件ジャンプによるループを抜けるようにすれば良いだけでは?
328デフォルトの名無しさん
2018/08/24(金) 19:52:23.26ID:s18ZTF9u >>324
マジかよ
マジかよ
329デフォルトの名無しさん
2018/08/24(金) 19:59:34.12ID:ZkSPfVdV330デフォルトの名無しさん
2018/08/24(金) 19:59:55.12ID:C/3CctmU >>327
その方が適切な場合であればそうする
結局のところコンパイラの吐き出したバイナリをアセンブラでチューニングするような状況だと少しでも所要クロックが少なく命令バイト長が短くなるようにロジックを弄るんだよ
その方が適切な場合であればそうする
結局のところコンパイラの吐き出したバイナリをアセンブラでチューニングするような状況だと少しでも所要クロックが少なく命令バイト長が短くなるようにロジックを弄るんだよ
331デフォルトの名無しさん
2018/08/24(金) 20:05:00.35ID:s18ZTF9u ぼくのコードを評価してください
https://ideone.com/YEOWVY
https://ideone.com/YEOWVY
332デフォルトの名無しさん
2018/08/24(金) 20:11:20.96ID:ZkSPfVdV >>331
趣味の押し付け合いを望んでる?
趣味の押し付け合いを望んでる?
333デフォルトの名無しさん
2018/08/24(金) 20:11:35.07ID:s18ZTF9u >>332
はい
はい
334デフォルトの名無しさん
2018/08/24(金) 20:13:15.06ID:YufcJqyf いや、後ろにあると見づらいだろ
335デフォルトの名無しさん
2018/08/24(金) 20:13:19.64ID:ZkSPfVdV 弱すぎて話にならん
336デフォルトの名無しさん
2018/08/24(金) 20:15:18.17ID:dK+ILFnq337デフォルトの名無しさん
2018/08/24(金) 20:18:15.07ID:s18ZTF9u >>336
なるほど
なるほど
338デフォルトの名無しさん
2018/08/24(金) 20:18:52.05ID:s18ZTF9u >>335
コーディングを評価してください
コーディングを評価してください
339デフォルトの名無しさん
2018/08/24(金) 20:21:05.45ID:ZlD+iWMs コメントする必要がないのが100点満点なんだが
340デフォルトの名無しさん
2018/08/24(金) 20:27:27.38ID:rXR3rzpw これはダメだ。もう何を言っても無駄だろう。
と思わせれば100点である、と。
と思わせれば100点である、と。
341デフォルトの名無しさん
2018/08/24(金) 20:30:03.18ID:QHdFlAyZ >>331
ネスト不快
ネスト不快
342デフォルトの名無しさん
2018/08/24(金) 20:33:17.73ID:s18ZTF9u >>341
なるほど
なるほど
343デフォルトの名無しさん
2018/08/24(金) 21:19:21.07ID:ZkSPfVdV 関数分け
いまいち
STATE *state
const でいいところもconstが無い
COL/ROW
名前がサイズじゃなくて位置っぽい
board[x][y]
board[y][x]の方が良いことあるかも
key
ifの羅列よりもswitch case
ways
static constをつけよう
directions
return で8個orしてるのがいやだ
名前
規模のわりに名前が長い
srand
なんで何回もよぶ?
いまいち
STATE *state
const でいいところもconstが無い
COL/ROW
名前がサイズじゃなくて位置っぽい
board[x][y]
board[y][x]の方が良いことあるかも
key
ifの羅列よりもswitch case
ways
static constをつけよう
directions
return で8個orしてるのがいやだ
名前
規模のわりに名前が長い
srand
なんで何回もよぶ?
344デフォルトの名無しさん
2018/08/24(金) 21:21:50.11ID:s18ZTF9u >>343
ありがとうございます
ありがとうございます
345デフォルトの名無しさん
2018/08/24(金) 21:27:17.08ID:ZkSPfVdV ROW *2 + 7
同じ式を何度も書かない
state
色の持ち方が変
黒 : user or com
白 : user or com
じゃないの?
directions
意味的にBOOLだよね?
同じ式を何度も書かない
state
色の持ち方が変
黒 : user or com
白 : user or com
じゃないの?
directions
意味的にBOOLだよね?
346デフォルトの名無しさん
2018/08/24(金) 21:30:34.34ID:s18ZTF9u347デフォルトの名無しさん
2018/08/24(金) 21:31:42.96ID:ZkSPfVdV UIとデータ処理を切り離せるといいね
内容的に、
C++のクラス設計のいい練習になりそう
内容的に、
C++のクラス設計のいい練習になりそう
348デフォルトの名無しさん
2018/08/24(金) 21:32:12.09ID:s18ZTF9u >>347
切り離したつもりだったのですが不十分のようですね
切り離したつもりだったのですが不十分のようですね
349デフォルトの名無しさん
2018/08/24(金) 21:34:40.57ID:ZkSPfVdV >>346
どれが「なぜでしょうか?」
どれが「なぜでしょうか?」
350デフォルトの名無しさん
2018/08/24(金) 21:35:17.53ID:s18ZTF9u >>349
二番目です。
二番目です。
351デフォルトの名無しさん
2018/08/24(金) 21:36:50.13ID:s18ZTF9u 理解しました。
352デフォルトの名無しさん
2018/08/24(金) 21:39:53.18ID:ZkSPfVdV com/user が1人ずつ限定なら片方の情報は冗長
データ的にはどっちも黒とかどっちも白とか設定できちゃうので無駄な判別が発生したり
com vs com とか user vs user とか
comアルゴリズム1 とか
将来を考えても
白と黒に対してプレーヤーデータを持つのが良い
データ的にはどっちも黒とかどっちも白とか設定できちゃうので無駄な判別が発生したり
com vs com とか user vs user とか
comアルゴリズム1 とか
将来を考えても
白と黒に対してプレーヤーデータを持つのが良い
353デフォルトの名無しさん
2018/08/24(金) 21:42:16.32ID:s18ZTF9u >>352
ありがとうございます
ありがとうございます
354デフォルトの名無しさん
2018/08/24(金) 21:57:27.71ID:O3WQJa8X 結局俺があらかじめ言ったとおりだろ。再掲するが
> あと、初心者はよく
> ・色々文法を知ってて、様々な書き方が出来る奴が偉い
> と勘違いしがちのようだが、これは明確な間違いだ。(これは他言語では本当に酷い)
> こんな糞どうでもいいところを様々な書き方をしているような奴は雑魚だ。
> 上手い奴は、そいつが決めたやり方に従って、一定の書き方で書く。 (>>170)
do-while 知ってる俺ツエーなんてやってるうちは初心者だし上達しない。
そういう勘違いしている奴も(特に他言語では)多いのも事実だし、Cですらそういう馬鹿が押し寄せてきた、というだけだが。
これも既に言ったが、
> なお、Goにはwhileが無い。廃止されて、forだけになっている。 (>>161)
お前らの定義ではGo言語を使う限り上級者ではないことになるだろ。
それはお前らの頭でもおかしいと気づけるだろ。
昨今の問題は、お前らみたいな馬鹿が嘘デタラメを書いて、全くの初心者がそれに惑わされてしまうことだ。
コードの美しさについて語るのなら、10,000行書けるようになってからにしろ。
というか、お前らは「オレオレ流美しいコード」のようだが、それも間違いで、結局の所、
美しいコード=保守が楽なコード、でしかない。ある意味、これが定義だ。
だから大規模(>10,000行)のコードを数年保守すればいやでも分かるし、それをやらないと『自分の頭では』分からない。
だから1000行すら書けない初心者がコードについて語るのがそもそも間違ってる。
既に言ったが、1000行書けるようになれば、「コードの美しさ」について何を議論しているのか分かるようになる。
逆に言えば、それまでは一体何を議論しているのかすら分からないはずなんだよ。
「疎結合化しろと言われたから分割してみたけど、これって必要なの?」ってのが本音のはず。
そこを意識高い系馬鹿が「疎結合は正義」みたいなことを言うから、必要以上に細切れにして余計に分かりにくくなる。
それを揶揄したのが"FizzBuzzEnterpriseEdition"というわけだ。
実際、お前らも少なからずこれに近い状態だと思うよ。
> あと、初心者はよく
> ・色々文法を知ってて、様々な書き方が出来る奴が偉い
> と勘違いしがちのようだが、これは明確な間違いだ。(これは他言語では本当に酷い)
> こんな糞どうでもいいところを様々な書き方をしているような奴は雑魚だ。
> 上手い奴は、そいつが決めたやり方に従って、一定の書き方で書く。 (>>170)
do-while 知ってる俺ツエーなんてやってるうちは初心者だし上達しない。
そういう勘違いしている奴も(特に他言語では)多いのも事実だし、Cですらそういう馬鹿が押し寄せてきた、というだけだが。
これも既に言ったが、
> なお、Goにはwhileが無い。廃止されて、forだけになっている。 (>>161)
お前らの定義ではGo言語を使う限り上級者ではないことになるだろ。
それはお前らの頭でもおかしいと気づけるだろ。
昨今の問題は、お前らみたいな馬鹿が嘘デタラメを書いて、全くの初心者がそれに惑わされてしまうことだ。
コードの美しさについて語るのなら、10,000行書けるようになってからにしろ。
というか、お前らは「オレオレ流美しいコード」のようだが、それも間違いで、結局の所、
美しいコード=保守が楽なコード、でしかない。ある意味、これが定義だ。
だから大規模(>10,000行)のコードを数年保守すればいやでも分かるし、それをやらないと『自分の頭では』分からない。
だから1000行すら書けない初心者がコードについて語るのがそもそも間違ってる。
既に言ったが、1000行書けるようになれば、「コードの美しさ」について何を議論しているのか分かるようになる。
逆に言えば、それまでは一体何を議論しているのかすら分からないはずなんだよ。
「疎結合化しろと言われたから分割してみたけど、これって必要なの?」ってのが本音のはず。
そこを意識高い系馬鹿が「疎結合は正義」みたいなことを言うから、必要以上に細切れにして余計に分かりにくくなる。
それを揶揄したのが"FizzBuzzEnterpriseEdition"というわけだ。
実際、お前らも少なからずこれに近い状態だと思うよ。
355デフォルトの名無しさん
2018/08/24(金) 21:58:37.52ID:O3WQJa8X あと、ゆとり馬鹿は goto 文に何故か惹かれるようだが、それも止めとけ。
それは goto 文ではなくラベルブレークが必要なだけであり、
Cではそれが goto 文でも書ける、という話でしかない。
なお、ラベルブレークはJavaScriptでは標準だ。(ただしあまり使われていない)
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/break
ポイントは「break文自身がそのラベルブロック中になければならない」(α)という点だ。
今のリンターが「ある/ないでしか判定しないから一律禁止」の可能性はあって、
リンターの精度が上がって上記(α)の判定が出来るようになれば、その用法では許可されてもおかしくはない。
ただそれ以前に、何度も言っているが、こういうのに拘るのは止めとけ。上達を阻害する。
こんな小手先の「数行の見た目」を改善するテクニックより、既に言ったが
> それはメトリックスを増やしてしまう。(静的コールグラフ) (>>224)
とかの方が遙かに重要なんだよ。
こっちは大規模コードをメンテナンスでこねくり回さないと分からない。
さっさとどんどん規模を上げていくべきだ。
(俳句に拘っていてもラノベが書けるようにはならない)
10行しか書けない初心者だからこそ、10行内で改善が見える部分に拘る。
これ自体は自然なのだけど、
低レベルの実装コードを減らす努力はプログラミングに於いてあまり意味がないんだ。
俺の例で言うと、例えば check_func() 内が、goto文無しで15行、ありで10行で書けたとしよう。
だから何?でしかない。
既に言ったとおり、下位の実装コードなんてどうせ読まないし、読むときは名前と一致してるかだけ。
それが10行であっても15行であっても一瞬で読めるのだから、誤差の範囲。
flagが使ってあっても、「ああ、はいはい」だから問題なし。お約束的展開ならいいんだよ。
そんなことより、見慣れない意図不明のコードで???となって詰まる方が問題。
というか、初心者は『見た目でしか判断出来ないから』行数や文字数に拘ったりするけど、それが間違いで、
まずは「読むのにかかる時間」を最小にするように組むんだよ。
それは goto 文ではなくラベルブレークが必要なだけであり、
Cではそれが goto 文でも書ける、という話でしかない。
なお、ラベルブレークはJavaScriptでは標準だ。(ただしあまり使われていない)
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/break
ポイントは「break文自身がそのラベルブロック中になければならない」(α)という点だ。
今のリンターが「ある/ないでしか判定しないから一律禁止」の可能性はあって、
リンターの精度が上がって上記(α)の判定が出来るようになれば、その用法では許可されてもおかしくはない。
ただそれ以前に、何度も言っているが、こういうのに拘るのは止めとけ。上達を阻害する。
こんな小手先の「数行の見た目」を改善するテクニックより、既に言ったが
> それはメトリックスを増やしてしまう。(静的コールグラフ) (>>224)
とかの方が遙かに重要なんだよ。
こっちは大規模コードをメンテナンスでこねくり回さないと分からない。
さっさとどんどん規模を上げていくべきだ。
(俳句に拘っていてもラノベが書けるようにはならない)
10行しか書けない初心者だからこそ、10行内で改善が見える部分に拘る。
これ自体は自然なのだけど、
低レベルの実装コードを減らす努力はプログラミングに於いてあまり意味がないんだ。
俺の例で言うと、例えば check_func() 内が、goto文無しで15行、ありで10行で書けたとしよう。
だから何?でしかない。
既に言ったとおり、下位の実装コードなんてどうせ読まないし、読むときは名前と一致してるかだけ。
それが10行であっても15行であっても一瞬で読めるのだから、誤差の範囲。
flagが使ってあっても、「ああ、はいはい」だから問題なし。お約束的展開ならいいんだよ。
そんなことより、見慣れない意図不明のコードで???となって詰まる方が問題。
というか、初心者は『見た目でしか判断出来ないから』行数や文字数に拘ったりするけど、それが間違いで、
まずは「読むのにかかる時間」を最小にするように組むんだよ。
356デフォルトの名無しさん
2018/08/24(金) 22:03:48.96ID:LUWnMn3S 今北産業
357デフォルトの名無しさん
2018/08/24(金) 22:24:56.15ID:wOXsA+Xs 無限ループから
ずっと
続いてた
ずっと
続いてた
358デフォルトの名無しさん
2018/08/24(金) 22:36:21.12ID:ZkSPfVdV 実はいま初めてプレイした
置ける場所「*」が非常に見にくい
これいらない
現在の個数もいらない
最後に表示すればいい
強くするには、
マスに点数をつける
駒の点数と石の数と置ける場所の数をスコアとする
スコアの重みは序盤と終盤とで変える
数手先まで読む
終盤は最後まで読む
これだけで結構強くなる
置ける場所「*」が非常に見にくい
これいらない
現在の個数もいらない
最後に表示すればいい
強くするには、
マスに点数をつける
駒の点数と石の数と置ける場所の数をスコアとする
スコアの重みは序盤と終盤とで変える
数手先まで読む
終盤は最後まで読む
これだけで結構強くなる
359デフォルトの名無しさん
2018/08/24(金) 22:40:17.59ID:O/FKuFVp ラベルブレークしたらラベルがFor文の頭にくるもんで読みづらい
ブレークしなかったときだけ値を変えるとかもやりづらい
おれはケツにGotoする
ブレークしなかったときだけ値を変えるとかもやりづらい
おれはケツにGotoする
360デフォルトの名無しさん
2018/08/24(金) 22:51:34.52ID:s18ZTF9u >>358
おける場所マークがにくくくて点数も要らないと感じるのですね
自分の感覚ではわからなくてその感覚を理解できなくて残念です
どうすれば人のてを借りずにそういうことがわかるようにできるのでしょうか
おける場所マークがにくくくて点数も要らないと感じるのですね
自分の感覚ではわからなくてその感覚を理解できなくて残念です
どうすれば人のてを借りずにそういうことがわかるようにできるのでしょうか
361デフォルトの名無しさん
2018/08/24(金) 22:53:48.04ID:s18ZTF9u ちなみにjs版もあります
https://pre.aichi.jp/Othello/
https://pre.aichi.jp/Othello/
362デフォルトの名無しさん
2018/08/24(金) 22:55:34.09ID:O3WQJa8X >>359
それはラベルブレーク自体ではなく文法の問題だろ。
後置ラベルであれば問題なし。
TypeScriptもGoも型は後置だし、じきにそういう言語が出てくるかもしれんよ。
label: {} // 前置
{} : label // 後置
goto は自由度が高すぎるんだよ。だからリンターには嫌われる。
ただ、お前らが goto に拘るのはさっぱり分からん。
「禁止されたらからこそ使いたくなる」という若気の至りだとしても、ちょっと行きすぎてる。
それはラベルブレーク自体ではなく文法の問題だろ。
後置ラベルであれば問題なし。
TypeScriptもGoも型は後置だし、じきにそういう言語が出てくるかもしれんよ。
label: {} // 前置
{} : label // 後置
goto は自由度が高すぎるんだよ。だからリンターには嫌われる。
ただ、お前らが goto に拘るのはさっぱり分からん。
「禁止されたらからこそ使いたくなる」という若気の至りだとしても、ちょっと行きすぎてる。
363デフォルトの名無しさん
2018/08/24(金) 23:03:27.47ID:QHdFlAyZ dgt:
if(mmr!=00) free(mmr);
return mdr;
err:
mdr=1;
goto dgt;
if(mmr!=00) free(mmr);
return mdr;
err:
mdr=1;
goto dgt;
364デフォルトの名無しさん
2018/08/24(金) 23:04:40.43ID:ZkSPfVdV365デフォルトの名無しさん
2018/08/24(金) 23:06:04.22ID:ZkSPfVdV >>363
なんで8進数?
なんで8進数?
366デフォルトの名無しさん
2018/08/24(金) 23:07:25.00ID:QHdFlAyZ >>364
10にする
10にする
367デフォルトの名無しさん
2018/08/24(金) 23:09:57.93ID:QHdFlAyZ printf("メンテナンス楽しくさせたる0x%o'",>>365);
368デフォルトの名無しさん
2018/08/24(金) 23:13:00.47ID:ZkSPfVdV こら
369デフォルトの名無しさん
2018/08/24(金) 23:21:50.02ID:QHdFlAyZ for (y = 0; y < 9; y++){
. . for (x = 0; x < 9; x++){
. . . . if (判定) goto break_loop;
. . . . int nico[x+1]=(8^0^8);
. . }
}
break_loop:
. . for (x = 0; x < 9; x++){
. . . . if (判定) goto break_loop;
. . . . int nico[x+1]=(8^0^8);
. . }
}
break_loop:
370デフォルトの名無しさん
2018/08/24(金) 23:21:54.95ID:ZkSPfVdV 8進数使わないよね
0も厳密には8進数だけど
2進数の方が欲しい
コンパイラによっては使えたりする
あと16進数の小数
0も厳密には8進数だけど
2進数の方が欲しい
コンパイラによっては使えたりする
あと16進数の小数
371デフォルトの名無しさん
2018/08/24(金) 23:26:13.62ID:ZkSPfVdV372デフォルトの名無しさん
2018/08/24(金) 23:29:02.20ID:YufcJqyf gcc拡張にはローカルのラベルがある
373デフォルトの名無しさん
2018/08/24(金) 23:31:23.64ID:O3WQJa8X >>364
お前みたいな初心者には目新しいのかもしれんが、それは古典的な議論なんだよ。
https://stackoverflow.com/questions/9695902/how-to-break-out-of-nested-loops
お前みたいな初心者には目新しいのかもしれんが、それは古典的な議論なんだよ。
https://stackoverflow.com/questions/9695902/how-to-break-out-of-nested-loops
374デフォルトの名無しさん
2018/08/24(金) 23:34:21.43ID:srP6ovAZ375デフォルトの名無しさん
2018/08/25(土) 00:24:24.60ID:Jgm8sU0X 前半って具体的にどの箇所のこと言ってんの?
376デフォルトの名無しさん
2018/08/25(土) 01:05:51.76ID:Jgm8sU0X >>286
>しかしコンパイラはwhile文をif文とdo-while文相当に置き換えて最適化するから、差は出ない。
while文をgoto文とdo-while文相当に置き換えて最適化する
の方が正しいような気がする
>しかしコンパイラはwhile文をif文とdo-while文相当に置き換えて最適化するから、差は出ない。
while文をgoto文とdo-while文相当に置き換えて最適化する
の方が正しいような気がする
377デフォルトの名無しさん
2018/08/25(土) 03:21:08.67ID:5+GN6Il1 なぜコンパイル後のアセンブリコードで話をしないのか
この辺LLVMとかだとどうなってるんだろうね
この辺LLVMとかだとどうなってるんだろうね
378デフォルトの名無しさん
2018/08/25(土) 05:48:12.02ID:r5O9PJUC379デフォルトの名無しさん
2018/08/25(土) 06:08:11.27ID:mKHlp3ya380デフォルトの名無しさん
2018/08/25(土) 06:25:56.22ID:mKHlp3ya . . for (y = 0; y < 9; y++){
. . . . for (x = 0; x < 9; x++){
. . . . . . if (判定){
. . . . . . . . [breakする場合だけ行う処理]
. . . . . . . . goto break_loop;
. . . . . . }
. . . . . . 処理
. . . . }
. . }
. . [ループ完了した時だけ行う処理]
break_loop:
. . [共通の処理]
. . . . for (x = 0; x < 9; x++){
. . . . . . if (判定){
. . . . . . . . [breakする場合だけ行う処理]
. . . . . . . . goto break_loop;
. . . . . . }
. . . . . . 処理
. . . . }
. . }
. . [ループ完了した時だけ行う処理]
break_loop:
. . [共通の処理]
381デフォルトの名無しさん
2018/08/25(土) 06:28:41.80ID:/11s7nnG 例外処理にgotoが必要なんて話は
大昔から語り尽くされているのに
今さらドヤられても・・・・
大昔から語り尽くされているのに
今さらドヤられても・・・・
382デフォルトの名無しさん
2018/08/25(土) 06:33:15.79ID:mKHlp3ya gotoの使い方を知らない人がいるようなので
383デフォルトの名無しさん
2018/08/25(土) 08:56:32.19ID:khOLQHnm >>379
お前は本当に無知なようだが、
この議論は昔からある有名な物で、結論も『既に』決まっているんだよ。
> No, don't spoil the fun with a break. This is the last remaining valid use of goto :)
> If not this then you could use flags to break out of deep nested loops.
> Another approach to breaking out of a nested loop is to factor out both loops into a separate function, and return from that function when you want to exit.
>
> Summarized - to break out of nested loops:
>
> 1. use goto
> 2. use flags
> 3. factor out loops into separate function calls
> Couldn't resist not including xkcd here :)
>
> enter image description here
>
> source
>
> Goto's are considered harmful but as many people in the comments suggest it need not be. If used judiciously it can be a great tool. Anything used in moderation is fun.
まさにこの通り。
その中でお前がどれを選択するかは自由だし、それは俺含めた他人の選択とは無関係だ。
○○を選択した俺ツエーとイキれる話でもない。
俺はお前がこの『既に結論が決まっている』話をどう持って行きたいのか分からない。
レス乞食なら死ね。
お前は本当に無知なようだが、
この議論は昔からある有名な物で、結論も『既に』決まっているんだよ。
> No, don't spoil the fun with a break. This is the last remaining valid use of goto :)
> If not this then you could use flags to break out of deep nested loops.
> Another approach to breaking out of a nested loop is to factor out both loops into a separate function, and return from that function when you want to exit.
>
> Summarized - to break out of nested loops:
>
> 1. use goto
> 2. use flags
> 3. factor out loops into separate function calls
> Couldn't resist not including xkcd here :)
>
> enter image description here
>
> source
>
> Goto's are considered harmful but as many people in the comments suggest it need not be. If used judiciously it can be a great tool. Anything used in moderation is fun.
まさにこの通り。
その中でお前がどれを選択するかは自由だし、それは俺含めた他人の選択とは無関係だ。
○○を選択した俺ツエーとイキれる話でもない。
俺はお前がこの『既に結論が決まっている』話をどう持って行きたいのか分からない。
レス乞食なら死ね。
384デフォルトの名無しさん
2018/08/25(土) 09:01:26.86ID:khOLQHnm >>377
LLVMでも変わらない。
あれはコンパイラの制作を楽にするものであって、魔法の杖ではないから。
https://blanktar.jp/blog/2015/07/c-while-do-while.html
LLVMでも変わらない。
あれはコンパイラの制作を楽にするものであって、魔法の杖ではないから。
https://blanktar.jp/blog/2015/07/c-while-do-while.html
385デフォルトの名無しさん
2018/08/25(土) 09:04:29.83ID:qgzET8Il CにはJavaのArrayList、HashMap、TreeMapみたいなライブラリはないみたいですが、普通はどうやってデータを管理するのでしょうか?
386デフォルトの名無しさん
2018/08/25(土) 09:12:41.48ID:iDBA6fbU そう言ったデータ構造を標準機能で使いたいならC++を部分的に利用するのが手っ取り早いのでは?
gccもclangもC言語処理系ではあるけどC++の処理系でもある
gccもclangもC言語処理系ではあるけどC++の処理系でもある
387デフォルトの名無しさん
2018/08/25(土) 09:15:10.60ID:qgzET8Il388デフォルトの名無しさん
2018/08/25(土) 09:23:12.83ID:iDBA6fbU389デフォルトの名無しさん
2018/08/25(土) 09:46:55.20ID:Gb+uOyj2 世の中には便利で高性能なライブラリがあるからね。言語自体が機能を内包してた方が迷いはないかも知れんが。
標準ライブラリのhsearchとか誰も使わんな。俺も使わない。
標準ライブラリのhsearchとか誰も使わんな。俺も使わない。
390デフォルトの名無しさん
2018/08/25(土) 09:50:09.09ID:mKHlp3ya391デフォルトの名無しさん
2018/08/25(土) 09:57:03.08ID:/11s7nnG392デフォルトの名無しさん
2018/08/25(土) 10:17:18.44ID:khOLQHnm393デフォルトの名無しさん
2018/08/25(土) 10:30:26.94ID:OV9APJVg Cのコードを自動生成するようなフレームワークもあると思うけど
そういうのが出てきたらCプログラマって必要なくないか?
最近Cのプログラマが需要がないから減ってる気がする
そういうのが出てきたらCプログラマって必要なくないか?
最近Cのプログラマが需要がないから減ってる気がする
394デフォルトの名無しさん
2018/08/25(土) 10:31:25.04ID:mKHlp3ya >>392
負け宣言www
負け宣言www
395デフォルトの名無しさん
2018/08/25(土) 10:33:04.07ID:/11s7nnG >>392
自己紹介乙
自己紹介乙
396デフォルトの名無しさん
2018/08/25(土) 10:37:34.03ID:mM6Mjb64 >>388>>389
hsearchはHashMapみたいですが、確かに使いづらそう・・・
自作するってやっぱりCは初心者には厳しいですね
ちなみにこのスレの方々は自作しますか?それとも外部ライブラリ使う派ですか?
外部ライブラリ使うのであればオススメありますか?
hsearchはHashMapみたいですが、確かに使いづらそう・・・
自作するってやっぱりCは初心者には厳しいですね
ちなみにこのスレの方々は自作しますか?それとも外部ライブラリ使う派ですか?
外部ライブラリ使うのであればオススメありますか?
397デフォルトの名無しさん
2018/08/25(土) 11:02:02.19ID:khOLQHnm >>393
https://www.tiobe.com/tiobe-index/
PC等、富豪プログラミングが許される状況では書く必要はなくなっていくだろう。
Cは必要なところのみDLLに切り出してピンポイント高速化でいい。
ただ、IoTの場合、速度=バッテリの持ち=小型化に直結するので、
今後ともCで書くのが主流ではないかな。
C++は結局の所、C程の速度は出ないし、DLLもイマイチなので主流になりきれなかった。
Rustが完全に立ち上がれば、Cが駆逐される可能性はある。
Javaがなんだかんだで主流なのは、いろんな意味でバランスが取れているからだ。
https://www.tiobe.com/tiobe-index/
PC等、富豪プログラミングが許される状況では書く必要はなくなっていくだろう。
Cは必要なところのみDLLに切り出してピンポイント高速化でいい。
ただ、IoTの場合、速度=バッテリの持ち=小型化に直結するので、
今後ともCで書くのが主流ではないかな。
C++は結局の所、C程の速度は出ないし、DLLもイマイチなので主流になりきれなかった。
Rustが完全に立ち上がれば、Cが駆逐される可能性はある。
Javaがなんだかんだで主流なのは、いろんな意味でバランスが取れているからだ。
398デフォルトの名無しさん
2018/08/25(土) 11:08:31.00ID:mKHlp3ya C++でCの速度が出ない????
399デフォルトの名無しさん
2018/08/25(土) 11:17:43.56ID:mKHlp3ya ピンポイント高速化とDLLも関係ないし
Cが使われるのはほとんどが小規模組み込み
逆に小規模組み込みはCしか選択肢が無い場合が多い
他の言語と競ってもあまり意味が無い
Cが使われるのはほとんどが小規模組み込み
逆に小規模組み込みはCしか選択肢が無い場合が多い
他の言語と競ってもあまり意味が無い
400デフォルトの名無しさん
2018/08/25(土) 11:23:43.36ID:M70RZcxI401デフォルトの名無しさん
2018/08/25(土) 11:25:52.08ID:06VRwQlu 必要なもの(だけ)を作る
使いたいけどないなら作る
これがC言語
使いたいけどないなら作る
これがC言語
402デフォルトの名無しさん
2018/08/25(土) 11:28:31.78ID:OV9APJVg403デフォルトの名無しさん
2018/08/25(土) 11:30:03.25ID:LrSeHAMC404デフォルトの名無しさん
2018/08/25(土) 11:32:05.97ID:/11s7nnG >>397
C++が使えません、まで読んだ
C++が使えません、まで読んだ
405デフォルトの名無しさん
2018/08/25(土) 11:35:24.37ID:0r5h6/lL 言語なんか関係ない
知恵遅れなクソがコード書けば
クソなコードになる
それ以外ない
すべて知恵遅れが原因
知恵遅れなクソがコード書けば
クソなコードになる
それ以外ない
すべて知恵遅れが原因
406デフォルトの名無しさん
2018/08/25(土) 11:38:10.89ID:OV9APJVg Cで例えばメモリを操作するコードが100行あるとするよな?
そのコードを作成するフレームワークがあるなら
それ使えばいいし、Cいらなくねwwってことな
そのコードを作成するフレームワークがあるなら
それ使えばいいし、Cいらなくねwwってことな
407デフォルトの名無しさん
2018/08/25(土) 11:39:19.95ID:0r5h6/lL いちいちな
試験もされてないような知恵遅れが作ったフレームワーク()
なんかつかわないからな
障害の原因
試験もされてないような知恵遅れが作ったフレームワーク()
なんかつかわないからな
障害の原因
408デフォルトの名無しさん
2018/08/25(土) 11:50:32.60ID:0r5h6/lL 知恵遅れはまとな思考してれば
まともな人間なら書けないようなコードを平気で書くからな
やばいぐらい頭悪いコードを
それも息するように書くからな
しかもその自覚がない
オツムに致命的な問題がある
アルゴリズムを実現するための言語の問題じゃない
アルゴリズムなんかどんな言語でも実現できる
言語なんかただの方言だからな
Cが畿内の方言なら
C++はエミシの方言
Javaはクマソの方言
まともな人間なら書けないようなコードを平気で書くからな
やばいぐらい頭悪いコードを
それも息するように書くからな
しかもその自覚がない
オツムに致命的な問題がある
アルゴリズムを実現するための言語の問題じゃない
アルゴリズムなんかどんな言語でも実現できる
言語なんかただの方言だからな
Cが畿内の方言なら
C++はエミシの方言
Javaはクマソの方言
409デフォルトの名無しさん
2018/08/25(土) 11:57:12.59ID:0NZIGmlJ >>400
自分は馬鹿ですって言ってるな
自分は馬鹿ですって言ってるな
410デフォルトの名無しさん
2018/08/25(土) 11:59:50.71ID:yggGxXGy >>408
コーディングもアルゴリズムも数学も出来ない学歴コンプなアホは黙ってろ
コーディングもアルゴリズムも数学も出来ない学歴コンプなアホは黙ってろ
411デフォルトの名無しさん
2018/08/25(土) 12:09:09.86ID:0r5h6/lL javaはpascalとも混血してる
412デフォルトの名無しさん
2018/08/25(土) 12:13:02.72ID:0r5h6/lL pascalはインチキalgol
413デフォルトの名無しさん
2018/08/25(土) 12:58:06.70ID:OV9APJVg if文の中を抜けたい場合ってどうすればいいですか?
breakはforとwileを抜けるんですよね?
ifを抜けるには?gotoは使いたくないです
breakはforとwileを抜けるんですよね?
ifを抜けるには?gotoは使いたくないです
414デフォルトの名無しさん
2018/08/25(土) 13:05:12.45ID:Q2JYdW4P 意味不明
if文の中ってどういうこと?
ただ条件式があるだけだろ
if文の中ってどういうこと?
ただ条件式があるだけだろ
415デフォルトの名無しさん
2018/08/25(土) 13:05:57.37ID:J3tnFs/w goto使え
宗教的に無理ならdo while (0);で囲んでbreak
宗教的に無理ならdo while (0);で囲んでbreak
416デフォルトの名無しさん
2018/08/25(土) 13:07:57.58ID:YF0z4wS0 continueかbreak
417デフォルトの名無しさん
2018/08/25(土) 13:08:12.82ID:0r5h6/lL switchならbreakで抜けれる
breakで抜けなければ、続きが実行される
breakで抜けなければ、続きが実行される
418デフォルトの名無しさん
2018/08/25(土) 13:18:05.46ID:khOLQHnm419デフォルトの名無しさん
2018/08/25(土) 13:25:50.33ID:0r5h6/lL むかしのc++はcのコードジェネレーターだったからな
昔あったinfomixのesqlもインチキなcのコード書くと、それをcのコードにおきかえて出力する
昔、大量のfortranのコードをcに変換しないといけなかったことがあるが
最初は自動変換したがとても読めるシロモノじゃなかったから
ドカタに人力作業をお願いした
ドカタはこういうのは得意
昔あったinfomixのesqlもインチキなcのコード書くと、それをcのコードにおきかえて出力する
昔、大量のfortranのコードをcに変換しないといけなかったことがあるが
最初は自動変換したがとても読めるシロモノじゃなかったから
ドカタに人力作業をお願いした
ドカタはこういうのは得意
420デフォルトの名無しさん
2018/08/25(土) 13:32:40.10ID:M70RZcxI >>409
お前ほどじゃないよ
お前ほどじゃないよ
421デフォルトの名無しさん
2018/08/25(土) 13:41:52.99ID:0r5h6/lL cで書いとけば間違いない
なんにでも使える
luaからでも超簡単に使えてしまう
なんにでも使える
luaからでも超簡単に使えてしまう
422デフォルトの名無しさん
2018/08/25(土) 13:50:16.83ID:yggGxXGy if や単なる {} をbreakで抜けられたら便利だと思ったことがある
この場合、多段 break もほぼセットで必要
break n
break if
break for
break switch
break while
break do
こんなのでもいいかも
この場合、多段 break もほぼセットで必要
break n
break if
break for
break switch
break while
break do
こんなのでもいいかも
423デフォルトの名無しさん
2018/08/25(土) 13:52:19.69ID:yggGxXGy 名前付きループ
だとbreakやcontinueにも使えるけど
わざわざ名前を付けるくらいならgotoでいい
だとbreakやcontinueにも使えるけど
わざわざ名前を付けるくらいならgotoでいい
424デフォルトの名無しさん
2018/08/25(土) 13:53:56.31ID:0r5h6/lL あいかわらず
低学歴知恵遅れは頭悪いこといってるわ
ループのbreakなのか条件のbreakなのか
コンパイラが解釈できない
コレがザ知恵遅れ
低学歴知恵遅れは頭悪いこといってるわ
ループのbreakなのか条件のbreakなのか
コンパイラが解釈できない
コレがザ知恵遅れ
425デフォルトの名無しさん
2018/08/25(土) 13:56:46.76ID:0r5h6/lL for (;;) {
if (!aho) {
break;
}
}
自覚がないアホが治らないからアホの仕様では無限ループから抜けれない
アホのまま無限ループ
if (!aho) {
break;
}
}
自覚がないアホが治らないからアホの仕様では無限ループから抜けれない
アホのまま無限ループ
426デフォルトの名無しさん
2018/08/25(土) 13:57:14.09ID:Q2JYdW4P ループならいざ知らず、ただの複文ブロックでブロック外に制御が行きつ戻りつする様ならもはや構造化プログラミングとは呼べない
立派なスパゲティプログラムだろう
立派なスパゲティプログラムだろう
427デフォルトの名無しさん
2018/08/25(土) 13:57:35.88ID:yggGxXGy >>422の1行目しか読まずに脊髄反射?
428デフォルトの名無しさん
2018/08/25(土) 13:58:01.93ID:0r5h6/lL 低学歴知恵遅れがなんかいってる
429デフォルトの名無しさん
2018/08/25(土) 13:59:14.30ID:yggGxXGy コーディングもアルゴリズムも数学も出来ない学歴コンプなアホは黙ってろ
430デフォルトの名無しさん
2018/08/25(土) 14:00:01.87ID:yggGxXGy 日本語も読めない
も追加だな
も追加だな
431デフォルトの名無しさん
2018/08/25(土) 14:01:13.44ID:0r5h6/lL まず低学歴知恵遅れは低学歴知恵遅れの自覚がないからな
cの言語構造がどうなってるかすらわかってない
cの言語構造がどうなってるかすらわかってない
432デフォルトの名無しさん
2018/08/25(土) 14:01:22.38ID:yggGxXGy433デフォルトの名無しさん
2018/08/25(土) 14:02:44.53ID:0r5h6/lL まずどう字句解析されて
どう構文解析されてるかすら分かってない
まあ致命的
低学歴知恵遅れがバカなこと書いて
どやがおしてるワケだからな
相変わらず
どう構文解析されてるかすら分かってない
まあ致命的
低学歴知恵遅れがバカなこと書いて
どやがおしてるワケだからな
相変わらず
434デフォルトの名無しさん
2018/08/25(土) 14:04:07.49ID:yggGxXGy435デフォルトの名無しさん
2018/08/25(土) 14:04:47.83ID:XpRMjBtL 短期記憶に障害があるレベル
436デフォルトの名無しさん
2018/08/25(土) 14:06:09.75ID:0r5h6/lL break_if
とかにするならまだ少しは分かる
低学歴知恵遅れは単純になにもモノをしらなすぎる
タイムゾーンスレでも同じように
とかにするならまだ少しは分かる
低学歴知恵遅れは単純になにもモノをしらなすぎる
タイムゾーンスレでも同じように
437デフォルトの名無しさん
2018/08/25(土) 14:07:25.33ID:E22oAZjP438デフォルトの名無しさん
2018/08/25(土) 14:08:13.17ID:yggGxXGy >>436
本当に1行目しか読んで無いんだな
本当に1行目しか読んで無いんだな
439デフォルトの名無しさん
2018/08/25(土) 14:09:13.24ID:0r5h6/lL 顔真っ赤にしなくてもな
低学歴かどうかなんか
レスからすぐにわかっちゃう
残念なことに
低学歴かどうかなんか
レスからすぐにわかっちゃう
残念なことに
440デフォルトの名無しさん
2018/08/25(土) 14:09:42.60ID:E22oAZjP441デフォルトの名無しさん
2018/08/25(土) 14:10:54.85ID:yggGxXGy442デフォルトの名無しさん
2018/08/25(土) 14:20:36.81ID:yggGxXGy 15GBのテキストデータの解析速度
4倍の差
複数の数値データから上位3個を選ぶアルゴリズム
高速、非破壊、安定 / 低速、破壊、不安定
フィボナッチ数列の計算
計算式、計算アルゴリズム、コードいずれも大差
4倍の差
複数の数値データから上位3個を選ぶアルゴリズム
高速、非破壊、安定 / 低速、破壊、不安定
フィボナッチ数列の計算
計算式、計算アルゴリズム、コードいずれも大差
443デフォルトの名無しさん
2018/08/25(土) 14:21:26.04ID:0r5h6/lL まさに阿Q正伝
444デフォルトの名無しさん
2018/08/25(土) 14:32:32.93ID:yggGxXGy >>439の恥ずかしい書き込み
795 :デフォルトの名無しさん (ワッチョイ cf80-gYkF) [] :2018/08/06(月) 23:39:21.68 ID:9v3Lf9b90
全然ずれてない
コールスタックの深さとぴったり一致してる
オツムが足りない知恵遅れのために
さらにムダな補助出力をつけてやったぞ(AとB)
https://ideone.com/2vP2kN
ここまでくると
メクラやツンボを誘導するのに近い。。。
↓この課題は、最終的には、コレにおちつくことになる
(なんでかは、nを増やせばきっと知恵遅れでも分かるとは思ってたからな)
https://ideone.com/eaJEjX
補助出力がないとなにやってるのかすら分からないメクラやツンボでは
コレがなにやってるかもきっと理解できないわ
u_l、u_r、u_yしかないからな
知恵遅れは再帰が理解できてないのが、よおく分かったわ
795 :デフォルトの名無しさん (ワッチョイ cf80-gYkF) [] :2018/08/06(月) 23:39:21.68 ID:9v3Lf9b90
全然ずれてない
コールスタックの深さとぴったり一致してる
オツムが足りない知恵遅れのために
さらにムダな補助出力をつけてやったぞ(AとB)
https://ideone.com/2vP2kN
ここまでくると
メクラやツンボを誘導するのに近い。。。
↓この課題は、最終的には、コレにおちつくことになる
(なんでかは、nを増やせばきっと知恵遅れでも分かるとは思ってたからな)
https://ideone.com/eaJEjX
補助出力がないとなにやってるのかすら分からないメクラやツンボでは
コレがなにやってるかもきっと理解できないわ
u_l、u_r、u_yしかないからな
知恵遅れは再帰が理解できてないのが、よおく分かったわ
445デフォルトの名無しさん
2018/08/25(土) 14:33:32.61ID:yggGxXGy 882 :デフォルトの名無しさん (ワッチョイ de80-oNxq) [] :2018/08/11(土) 19:44:24.09 ID:17qcRus/0
で、>>881の結果に基づいて
一般項で処理するコードを書いた
https://ideone.com/QKTrLi
一般項で処理
やってみたが
一般項で処理なんかするとともかく遅い
6,942,482 bitsの一般項の計算で
お話にならないぐらいものすごい時間がかかる
calculation 6942482bits
f,10000000,35.082393,34.855636
g,10000000,0.722054,0.720584
つまり、結論としてフィボナッチ数を求めるなら
GMPに用意されてる関数を使うのが一番
再帰階乗演算使う方がはるかにマシ
一般項で求めるのはウンコ
で、>>881の結果に基づいて
一般項で処理するコードを書いた
https://ideone.com/QKTrLi
一般項で処理
やってみたが
一般項で処理なんかするとともかく遅い
6,942,482 bitsの一般項の計算で
お話にならないぐらいものすごい時間がかかる
calculation 6942482bits
f,10000000,35.082393,34.855636
g,10000000,0.722054,0.720584
つまり、結論としてフィボナッチ数を求めるなら
GMPに用意されてる関数を使うのが一番
再帰階乗演算使う方がはるかにマシ
一般項で求めるのはウンコ
446デフォルトの名無しさん
2018/08/25(土) 14:35:05.39ID:0r5h6/lL なんか低学歴知恵遅れが
意味不明なこと書いてるわ
意味不明なこと書いてるわ
447デフォルトの名無しさん
2018/08/25(土) 14:35:56.77ID:0r5h6/lL なんかしらんけど
よほど悔しいらしい
低学歴知恵遅れは
自己評価だけは高いからな
よほど悔しいらしい
低学歴知恵遅れは
自己評価だけは高いからな
448デフォルトの名無しさん
2018/08/25(土) 14:37:01.56ID:95iULeOH また半角くんが暴れてんのか・・
449デフォルトの名無しさん
2018/08/25(土) 14:39:15.70ID:0r5h6/lL まず基本的なことが分かってないからな
致命的
致命的
450デフォルトの名無しさん
2018/08/25(土) 14:39:54.36ID:XpRMjBtL 最後に本当に共通ライブラリより高速なロジックがはられてたが
それに対する彼のコメント
// アホが書いたコード
// なにをやってるかは不明
それに対する彼のコメント
// アホが書いたコード
// なにをやってるかは不明
451デフォルトの名無しさん
2018/08/25(土) 14:43:19.36ID:0r5h6/lL オレはちゃんと
アホがスレで書いたコードをwebコンパイラで動かしたからな
アホがスレで書いたコードをwebコンパイラで動かしたからな
452デフォルトの名無しさん
2018/08/25(土) 14:45:50.69ID:yggGxXGy で?
453デフォルトの名無しさん
2018/08/25(土) 14:46:13.55ID:0r5h6/lL で、正しい結果になった?
454デフォルトの名無しさん
2018/08/25(土) 14:49:17.98ID:XpRMjBtL ビット数がWebだと32なのでそこで矛盾があっただけだった
ちゃんと作って張りなおされたやつは数千桁あっという間に求めるやつだったぞ
みただろ?
ちゃんと作って張りなおされたやつは数千桁あっという間に求めるやつだったぞ
みただろ?
455デフォルトの名無しさん
2018/08/25(土) 14:50:29.77ID:0r5h6/lL オレはしっかり低学歴知恵遅れが相当に頭悪いことを
しっかり 実 証 してるからな
しっかり 実 証 してるからな
456デフォルトの名無しさん
2018/08/25(土) 14:51:46.41ID:yggGxXGy 半角君が劣化コピーして
if (32bit変数 & 0x8000000000000000)
がTRUEにならんとか騒いでたね
if (32bit変数 & 0x8000000000000000)
がTRUEにならんとか騒いでたね
457デフォルトの名無しさん
2018/08/25(土) 14:53:18.47ID:XpRMjBtL あれ劣化コピーだったんかいw
最悪だな
最悪だな
458デフォルトの名無しさん
2018/08/25(土) 14:53:24.24ID:0r5h6/lL 1~64まで足して
まず0x8000000000000000
になるとかないからな
ぱっと見で分かるレベルだからな
相当な知恵遅れでなければな
まず0x8000000000000000
になるとかないからな
ぱっと見で分かるレベルだからな
相当な知恵遅れでなければな
459デフォルトの名無しさん
2018/08/25(土) 14:53:37.08ID:yggGxXGy460デフォルトの名無しさん
2018/08/25(土) 14:55:14.91ID:0r5h6/lL かわいそうに
精神的勝利か
低学歴知恵遅れのゴミクズ人間が
まともな人間に勝てるワケがないからな
精神的勝利か
低学歴知恵遅れのゴミクズ人間が
まともな人間に勝てるワケがないからな
461デフォルトの名無しさん
2018/08/25(土) 14:56:30.95ID:yggGxXGy462デフォルトの名無しさん
2018/08/25(土) 14:56:39.44ID:y6eIypE7 あのカウントは統治分割の管理用じゃなかったっけ?
463デフォルトの名無しさん
2018/08/25(土) 14:57:17.04ID:0r5h6/lL で、実行結果みた?
464デフォルトの名無しさん
2018/08/25(土) 14:57:45.75ID:yggGxXGy 単に順番にビットを端からスキャンしてるだけ
465デフォルトの名無しさん
2018/08/25(土) 14:58:36.91ID:0r5h6/lL n = 0 (z)0 (f)0 (m)0 (aho)1
n = 1 (z)1 (f)1 (m)1 (aho)1
n = 2 (z)1 (f)1 (m)1 (aho)1
n = 3 (z)2 (f)2 (m)2 (aho)1
n = 4 (z)3 (f)3 (m)3 (aho)1
n = 5 (z)5 (f)5 (m)5 (aho)1
n = 6 (z)8 (f)8 (m)8 (aho)1
n = 7 (z)13 (f)13 (m)13 (aho)1
n = 8 (z)21 (f)21 (m)21 (aho)1
n = 9 (z)34 (f)34 (m)34 (aho)1
n = 10 (z)55 (f)55 (m)55 (aho)1
n = 11 (z)89 (f)89 (m)89 (aho)1
n = 12 (z)144 (f)144 (m)144 (aho)1
n = 13 (z)233 (f)233 (m)233 (aho)1
n = 14 (z)377 (f)377 (m)377 (aho)1
n = 15 (z)610 (f)610 (m)610 (aho)1
n = 16 (z)987 (f)987 (m)987 (aho)1
64bitとか以前の問題だからな
n = 1 (z)1 (f)1 (m)1 (aho)1
n = 2 (z)1 (f)1 (m)1 (aho)1
n = 3 (z)2 (f)2 (m)2 (aho)1
n = 4 (z)3 (f)3 (m)3 (aho)1
n = 5 (z)5 (f)5 (m)5 (aho)1
n = 6 (z)8 (f)8 (m)8 (aho)1
n = 7 (z)13 (f)13 (m)13 (aho)1
n = 8 (z)21 (f)21 (m)21 (aho)1
n = 9 (z)34 (f)34 (m)34 (aho)1
n = 10 (z)55 (f)55 (m)55 (aho)1
n = 11 (z)89 (f)89 (m)89 (aho)1
n = 12 (z)144 (f)144 (m)144 (aho)1
n = 13 (z)233 (f)233 (m)233 (aho)1
n = 14 (z)377 (f)377 (m)377 (aho)1
n = 15 (z)610 (f)610 (m)610 (aho)1
n = 16 (z)987 (f)987 (m)987 (aho)1
64bitとか以前の問題だからな
466デフォルトの名無しさん
2018/08/25(土) 14:59:30.35ID:yggGxXGy お前が劣化コピーしたのがahoの欄
467デフォルトの名無しさん
2018/08/25(土) 15:00:08.15ID:XpRMjBtL 64ビットのとこ直したうえでその結果?
468デフォルトの名無しさん
2018/08/25(土) 15:00:50.04ID:0r5h6/lL 知恵遅れの脳内では987がunsigned intでオーバーフローする
469デフォルトの名無しさん
2018/08/25(土) 15:00:55.69ID:yggGxXGy470デフォルトの名無しさん
2018/08/25(土) 15:01:52.08ID:0r5h6/lL 当然
https://ideone.com/vhpLPV
851 名前:デフォルトの名無しさん (ワッチョイ 0b50-2km2)[sage] 投稿日:2018年08月11日(土) 00時06分54秒68 [深夜] ID:N9ICkOCi0 [1/10] (PC)
10000進数多倍長
超単純なFFT
演算は乗算と加算のみ
誤差の感じから100000進数でも大丈夫そうですね
計算式は基本以下を多倍長にしただけ
多少の無駄は除いてますが
----
uint64_t f(uint64_t n){
n++;
uint64_t a = 1;
uint64_t b = 0;
uint64_t t;
for (int i = 0 ; i < 64 ; i++){
t = b * b;
b = 2 * a * b + t;
a = a * a + t;
if (n & 0x8000000000000000){
t = b;
b = a + b;
a = t;
}
n += n;
}
return a;
}
https://ideone.com/vhpLPV
851 名前:デフォルトの名無しさん (ワッチョイ 0b50-2km2)[sage] 投稿日:2018年08月11日(土) 00時06分54秒68 [深夜] ID:N9ICkOCi0 [1/10] (PC)
10000進数多倍長
超単純なFFT
演算は乗算と加算のみ
誤差の感じから100000進数でも大丈夫そうですね
計算式は基本以下を多倍長にしただけ
多少の無駄は除いてますが
----
uint64_t f(uint64_t n){
n++;
uint64_t a = 1;
uint64_t b = 0;
uint64_t t;
for (int i = 0 ; i < 64 ; i++){
t = b * b;
b = 2 * a * b + t;
a = a * a + t;
if (n & 0x8000000000000000){
t = b;
b = a + b;
a = t;
}
n += n;
}
return a;
}
471デフォルトの名無しさん
2018/08/25(土) 15:02:52.94ID:yggGxXGy472デフォルトの名無しさん
2018/08/25(土) 15:03:38.02ID:0r5h6/lL 知恵遅れがどっかからコピってきたコードはってるわ
473デフォルトの名無しさん
2018/08/25(土) 15:04:01.61ID:yggGxXGy >>470は正しく動きますよ
474デフォルトの名無しさん
2018/08/25(土) 15:04:45.01ID:5ar3I1wr 半角はいつも負けてるな
475デフォルトの名無しさん
2018/08/25(土) 15:04:48.85ID:0r5h6/lL コレが低学歴知恵遅れが低学歴知恵遅れであることの 実 証 も含めた
エレガントなレス
866 自分:デフォルトの名無しさん (ワッチョイ de80-oNxq)[] 投稿日:2018年08月11日(土) 11時39分50秒69 [朝] ID:17qcRus/0 [1/7] (PC)
とりあえずかわいそうなぐらい頭悪いヤツしかいないのは分かった
一旦、多倍長演算向けに3つの方法を評価する
ちなみにgmpの関数にフィボナッチの関数がついてる
きっとこの速度にすら届かないと考えられる(まだ動かしてない)
↓多倍長演算使ってない3つの方法の簡単なコードがコレ
https://ideone.com/vhpLPV
※ オマケでアホが書いたコード(>>851)も入ってる
※ オレの適切なありがたい注釈がついてる
1.ひたすら足し算
2.一般項
多倍長演算をするまえに適切な精度を設定しないといけない
どれぐらいの精度にすればいいかがまだ未解決 ※ とりあえず2回計算することでいけるような気がしないでもない
3.再帰階乗演算
https://www.ics.uci.edu/~eppstein/161/960109.html
探した中でコイツが一番いい感じがする
> This is a recursive algorithm, so as usual we get a recurrence relation defining time,
> just by writing down the time spent in a call to matpow (O(1)) plus the time in each recursive call
> (only one recursive call, with argument n/2). So the recurrence is
> time(n) = O(1) + time(n / 2)
エレガントなレス
866 自分:デフォルトの名無しさん (ワッチョイ de80-oNxq)[] 投稿日:2018年08月11日(土) 11時39分50秒69 [朝] ID:17qcRus/0 [1/7] (PC)
とりあえずかわいそうなぐらい頭悪いヤツしかいないのは分かった
一旦、多倍長演算向けに3つの方法を評価する
ちなみにgmpの関数にフィボナッチの関数がついてる
きっとこの速度にすら届かないと考えられる(まだ動かしてない)
↓多倍長演算使ってない3つの方法の簡単なコードがコレ
https://ideone.com/vhpLPV
※ オマケでアホが書いたコード(>>851)も入ってる
※ オレの適切なありがたい注釈がついてる
1.ひたすら足し算
2.一般項
多倍長演算をするまえに適切な精度を設定しないといけない
どれぐらいの精度にすればいいかがまだ未解決 ※ とりあえず2回計算することでいけるような気がしないでもない
3.再帰階乗演算
https://www.ics.uci.edu/~eppstein/161/960109.html
探した中でコイツが一番いい感じがする
> This is a recursive algorithm, so as usual we get a recurrence relation defining time,
> just by writing down the time spent in a call to matpow (O(1)) plus the time in each recursive call
> (only one recursive call, with argument n/2). So the recurrence is
> time(n) = O(1) + time(n / 2)
476デフォルトの名無しさん
2018/08/25(土) 15:05:25.56ID:0r5h6/lL webコンパイラで動かしてみ
まちがいなく動かない
まちがいなく動かない
477デフォルトの名無しさん
2018/08/25(土) 15:05:34.74ID:yggGxXGy478デフォルトの名無しさん
2018/08/25(土) 15:10:38.17ID:XpRMjBtL 劣化コピーっていうか
わざわざ書き換えてるじゃねーか!
釣りだった
わざわざ書き換えてるじゃねーか!
釣りだった
479デフォルトの名無しさん
2018/08/25(土) 15:13:33.29ID:XpRMjBtL …ほかがunsigned intだから関数名変えるついでに一緒に変えちゃったのか
これは訴訟レベル
これは訴訟レベル
480デフォルトの名無しさん
2018/08/25(土) 15:49:42.93ID:RtKY5+V3481デフォルトの名無しさん
2018/08/25(土) 15:58:16.40ID:R/mHQH6/ >>396
俺の場合はCを使ってMapみたいなものまで使わねばならないほど膨大なデータを扱うことが
滅多にないのでだいたいは不要。数百から数千のデータのキーでの検索なんか何も考えずに
ループさせて全検索してしまう。億単位のデータの処理が必要な場合は(だいたいはCではない
言語を使って)RDBにデータを入れてやるかな。その方が楽だから。
ああ、でも、昔 dbm ライブラリとか使ったことあるなあ。半端に多い場合はそういうので良いかも。
今だと Linux ディストリビューションとかは最初から gdbm ライブラリ入ってるの多いと思う。これね。
https://linuxjm.osdn.jp/html/GNU_gdbm/man3/gdbm.3.html
俺の場合はCを使ってMapみたいなものまで使わねばならないほど膨大なデータを扱うことが
滅多にないのでだいたいは不要。数百から数千のデータのキーでの検索なんか何も考えずに
ループさせて全検索してしまう。億単位のデータの処理が必要な場合は(だいたいはCではない
言語を使って)RDBにデータを入れてやるかな。その方が楽だから。
ああ、でも、昔 dbm ライブラリとか使ったことあるなあ。半端に多い場合はそういうので良いかも。
今だと Linux ディストリビューションとかは最初から gdbm ライブラリ入ってるの多いと思う。これね。
https://linuxjm.osdn.jp/html/GNU_gdbm/man3/gdbm.3.html
482デフォルトの名無しさん
2018/08/25(土) 16:25:32.56ID:R/mHQH6/483デフォルトの名無しさん
2018/08/25(土) 17:08:52.03ID:kfh++Yrt 半角くん、逃亡www
半角さんは、巷にあふれるただのマウント野郎とは違って、きちんとソースを出している
唯の者ではないと思います
唯の者ではないと思います
485デフォルトの名無しさん
2018/08/25(土) 17:46:03.47ID:zd32/hlD コード保守でのバグはこうやって生まれる
うっかりミスの見事な事例がまさかこのスレで見られるとは思ってなかった
うっかりミスの見事な事例がまさかこのスレで見られるとは思ってなかった
486デフォルトの名無しさん
2018/08/25(土) 18:00:04.35ID:yggGxXGy487デフォルトの名無しさん
2018/08/25(土) 18:02:07.86ID:0r5h6/lL 2ちゃんねるでしか自己主張できない低学歴知恵遅れが
なんか必死になってるわ
わかりやすいわ
ホント
なんか必死になってるわ
わかりやすいわ
ホント
488デフォルトの名無しさん
2018/08/25(土) 18:03:03.76ID:0r5h6/lL つまりクソニートと
断定できる
断定できる
489デフォルトの名無しさん
2018/08/25(土) 18:06:11.05ID:yggGxXGy490デフォルトの名無しさん
2018/08/25(土) 18:13:06.50ID:zd32/hlD 働いてはいないがニートと呼べるほど若くもない
早期退職で悠々自適生活の元組込みソフト開発者だよ
早期退職で悠々自適生活の元組込みソフト開発者だよ
491デフォルトの名無しさん
2018/08/25(土) 19:03:57.78ID:kfh++Yrt 半角くんと長文くんのバトルを見てみたい
492デフォルトの名無しさん
2018/08/25(土) 19:15:27.06ID:06VRwQlu 是非別スレでやって欲しい
スレ数はいくら使っても良いから
スレ数はいくら使っても良いから
493デフォルトの名無しさん
2018/08/25(土) 19:18:01.37ID:0r5h6/lL オマエなかなか分かってるわ
オレのレスも文字列的には長い
しかし、中身が濃いから、情報価値も高い
つまり価値が高い情報を継続して提供している
クソニートの長文は情報価値ゼロ
中身スカスカ
ただの落書き
オレのレスも文字列的には長い
しかし、中身が濃いから、情報価値も高い
つまり価値が高い情報を継続して提供している
クソニートの長文は情報価値ゼロ
中身スカスカ
ただの落書き
494デフォルトの名無しさん
2018/08/25(土) 19:20:58.01ID:sh4ZcDkv >>493
フリがなかなか分かりにくいんだけど、そこ笑うとこ?
フリがなかなか分かりにくいんだけど、そこ笑うとこ?
495デフォルトの名無しさん
2018/08/25(土) 19:23:40.50ID:06VRwQlu >>494
失笑なら
失笑なら
496デフォルトの名無しさん
2018/08/25(土) 19:25:27.77ID:0r5h6/lL オレに敗北はない
このスレのクソニートにも敗北はない
ただコレには違いがある
オレは正面から戦う
クソニートは戦わない
コイツラは身をひそめながら遠くからとりあえず石投げる
この違い
このスレのクソニートにも敗北はない
ただコレには違いがある
オレは正面から戦う
クソニートは戦わない
コイツラは身をひそめながら遠くからとりあえず石投げる
この違い
497デフォルトの名無しさん
2018/08/25(土) 19:28:15.91ID:sh4ZcDkv498デフォルトの名無しさん
2018/08/26(日) 02:50:43.41ID:5Jlr+RDR 一日でこの板に少なくとも 23 回「低学歴知恵遅れ」って書いてるね。
どれだけ拗らせてるの?
どれだけ拗らせてるの?
499デフォルトの名無しさん
2018/08/26(日) 03:24:56.95ID:BwlGzYMc 23/35=65.7%
うぷぷぷ
うぷぷぷ
500デフォルトの名無しさん
2018/08/26(日) 09:18:36.35ID:aDjvXB/e 職場で言われていることをここで
501デフォルトの名無しさん
2018/08/26(日) 11:23:23.80ID:0Dyu3Dip いやぁ、今どき職場で「低学歴知恵遅れ」なんて言ってくる上司がいたら
ネット掲示板で同じセリフを繰り返すより、録音して訴えるだろ。
それにしても、まるで署名のように必ず投稿文に盛り込むから、
何か隠された意図があるのでは、と深読みしてしまうのも事実。
単にクセになってて本人には意味の薄い間投詞になってるのかも知れんけど。
…読み取れないとガッカリなので一応書いておくけど、
「いくら匿名の電子掲示板でもそういう言葉遣いは良くないよ」と
たしなめている(忠告している、の方が受け入れやすいかな)つもり。
ネット掲示板で同じセリフを繰り返すより、録音して訴えるだろ。
それにしても、まるで署名のように必ず投稿文に盛り込むから、
何か隠された意図があるのでは、と深読みしてしまうのも事実。
単にクセになってて本人には意味の薄い間投詞になってるのかも知れんけど。
…読み取れないとガッカリなので一応書いておくけど、
「いくら匿名の電子掲示板でもそういう言葉遣いは良くないよ」と
たしなめている(忠告している、の方が受け入れやすいかな)つもり。
502デフォルトの名無しさん
2018/08/26(日) 11:27:57.33ID:aDjvXB/e それが当たっていると、訴えるのも恥ずかしいような
503デフォルトの名無しさん
2018/08/26(日) 12:44:59.10ID:d3emHXQQ >>501
純粋かよ
純粋かよ
504デフォルトの名無しさん
2018/08/26(日) 14:53:35.15ID:hANAm2gW 低学歴底辺のクソニート、そして底辺ドカタなのは
図星なんでしょ
人間をホントのこといわれると
必死になる
図星なんでしょ
人間をホントのこといわれると
必死になる
505デフォルトの名無しさん
2018/08/26(日) 14:56:43.12ID:hANAm2gW 残念なことに
低学歴かどうかとか
知恵遅れかどうかとか
クソニートかどうか
底辺ドカタかどうか
レスからすぐに分かってしまう
まともに人間がみればすぐに分かる
キミラはなまとなに人間未満のゴミクズなワケ
その自覚すらない
だからまともな人間にすらなれないわけ
わかった?
低学歴かどうかとか
知恵遅れかどうかとか
クソニートかどうか
底辺ドカタかどうか
レスからすぐに分かってしまう
まともに人間がみればすぐに分かる
キミラはなまとなに人間未満のゴミクズなワケ
その自覚すらない
だからまともな人間にすらなれないわけ
わかった?
506デフォルトの名無しさん
2018/08/26(日) 16:10:55.42ID:dQLVYknK 必死なのはお前じゃん
507デフォルトの名無しさん
2018/08/26(日) 16:12:25.06ID:LX/My+gD 半コテって一番タチ悪いな
コテハンつけろよNGにするから
コテハンつけろよNGにするから
508デフォルトの名無しさん
2018/08/26(日) 16:25:44.03ID:lAySnCDy 本当は夏休み中の中高生じゃないのか?
何だか妙に精神年齢が幼く思える
何だか妙に精神年齢が幼く思える
509デフォルトの名無しさん
2018/08/26(日) 16:27:03.18ID:aDjvXB/e 名前は半角カタカナで頼む
510デフォルトの名無しさん
2018/08/26(日) 16:29:48.93ID:hANAm2gW 図星でしっかり反応してるしな
やっぱりなこのスレは
駆除が必要な典型的な低学歴知恵遅れの
クソニートとか底辺ドカタしかいないわ
やっぱりなこのスレは
駆除が必要な典型的な低学歴知恵遅れの
クソニートとか底辺ドカタしかいないわ
511デフォルトの名無しさん
2018/08/26(日) 17:09:28.74ID:BwlGzYMc 小馬鹿にした発言が頭悪そうな最高に痛いやつ
512デフォルトの名無しさん
2018/08/26(日) 18:07:37.48ID:ujNq2aVI >>508
確かに夏休み始まった辺りから見かけるようになった気がする
確かに夏休み始まった辺りから見かけるようになった気がする
513デフォルトの名無しさん
2018/08/27(月) 06:20:27.93ID:sdfxNc/O >>499
このスレだけなら 35 だが、この板全体の数なんだ。
必死チェッカーもどきを見たら堂々の 2 位で笑った。
いや、彼の御高説をもっと見たかったんだ。
ちなみに「知恵遅れ」はその 23 とは別に単独で 16 回出てきたよ。
このスレだけなら 35 だが、この板全体の数なんだ。
必死チェッカーもどきを見たら堂々の 2 位で笑った。
いや、彼の御高説をもっと見たかったんだ。
ちなみに「知恵遅れ」はその 23 とは別に単独で 16 回出てきたよ。
514デフォルトの名無しさん
2018/08/27(月) 08:24:49.48ID:4HBkx10J 自称、俺最強君()は、昔からしばしば見かけるけど。
小学生にも苦笑されそうなレスばかりで、相手をする気にならないんだよね。
http://hissi.org/read.php/tech/20180825/MHI1aDYvbEw.html
http://hissi.org/read.php/tech/20180826/aEFOQW0yZ1c.html
勝手に勝利宣言して逃亡するまで放置しておくのが吉。
小学生にも苦笑されそうなレスばかりで、相手をする気にならないんだよね。
http://hissi.org/read.php/tech/20180825/MHI1aDYvbEw.html
http://hissi.org/read.php/tech/20180826/aEFOQW0yZ1c.html
勝手に勝利宣言して逃亡するまで放置しておくのが吉。
515デフォルトの名無しさん
2018/08/27(月) 08:45:35.65ID:4ArgrBnx 半角さんはこの板の唯一の良心
この板は腐ってる
この板は腐ってる
516デフォルトの名無しさん
2018/08/27(月) 11:56:02.39ID:woJf6ZC9 >>413
if (条件) {
…
…
ここで(ブロックから)抜けたい -(1)
… -(2)
} else { … }
こういうこと? (1) はさらに if で条件付で分岐しないと意味がないけど…
※ (1)で分岐しないかぎり (2) 以降が無意味のコードになる
if の外側を do { } while(0) で外を囲って break; したら?
if (条件) {
…
…
ここで(ブロックから)抜けたい -(1)
… -(2)
} else { … }
こういうこと? (1) はさらに if で条件付で分岐しないと意味がないけど…
※ (1)で分岐しないかぎり (2) 以降が無意味のコードになる
if の外側を do { } while(0) で外を囲って break; したら?
517デフォルトの名無しさん
2018/08/27(月) 12:18:18.46ID:yF4/ft+h >>515
これだな
これだな
518デフォルトの名無しさん
2018/08/27(月) 12:18:56.82ID:yF4/ft+h おまえらはすぐにどうでもいいことに流される
519デフォルトの名無しさん
2018/08/27(月) 12:34:41.00ID:ywsjsNTA >>516
それだったら2を実行するための何らかの条件がある筈なのでそのためのifブロックの中に2を入れればよい。
そつではなく無条件に2を実行したくないならばソースから削除するかコメントにでもすればよい。
それだったら2を実行するための何らかの条件がある筈なのでそのためのifブロックの中に2を入れればよい。
そつではなく無条件に2を実行したくないならばソースから削除するかコメントにでもすればよい。
520デフォルトの名無しさん
2018/08/27(月) 12:36:44.69ID:ywsjsNTA すまん。スマホでフリック入力しててタイプミスした。
521デフォルトの名無しさん
2018/08/27(月) 12:42:48.65ID:woJf6ZC9522デフォルトの名無しさん
2018/08/27(月) 12:48:15.12ID:nj2QXsVo523デフォルトの名無しさん
2018/08/27(月) 12:50:40.87ID:vY3QDx2y だから何でdo while(0)なんて変態コードに固執するんだよ
524デフォルトの名無しさん
2018/08/27(月) 12:51:47.69ID:YYT/vI56525デフォルトの名無しさん
2018/08/27(月) 12:54:54.13ID:woJf6ZC9 元質問者に聞くしかない 「goto は使いたくない」の条件で
526デフォルトの名無しさん
2018/08/27(月) 12:59:44.74ID:ywsjsNTA ブロックというものを中に入ったら出られないものと勘違いしているとか。
最初にforやwhileを覚えちゃって勘違いに繋がったとか。
最初にforやwhileを覚えちゃって勘違いに繋がったとか。
527デフォルトの名無しさん
2018/08/27(月) 13:22:18.19ID:vY3QDx2y 何人たりともforより先に関数のブロックを憶えるのにね
関数のブロックだけが何か特別なものと思い込んでるケースが多い
関数のブロックだけが何か特別なものと思い込んでるケースが多い
528デフォルトの名無しさん
2018/08/27(月) 13:25:30.84ID:Q5lEKL35 goto 便利だけどなぁ。
break するがためのフラグ作って何ブロックも break するとか goto を避けるがためのいびつな if を連続させるとかよりよほど可読性が高い。
もちろん意味を的確に表したフラグやifの構造にできるに越したことはないけどさ。
break するがためのフラグ作って何ブロックも break するとか goto を避けるがためのいびつな if を連続させるとかよりよほど可読性が高い。
もちろん意味を的確に表したフラグやifの構造にできるに越したことはないけどさ。
529デフォルトの名無しさん
2018/08/27(月) 13:28:07.17ID:aXwyVMA/530デフォルトの名無しさん
2018/08/27(月) 13:31:18.13ID:vY3QDx2y ジャクソン法やワーニエ法みたいに
データ構造とプログラム構造を一致させる構造化プログラミング()では
データが損傷していた場合にはプログラム構造を一致させることができない
よって構造化定理を諦めたアプローチをせざるを得ない
こういうのがgotoやlongjmpの出番
データ構造とプログラム構造を一致させる構造化プログラミング()では
データが損傷していた場合にはプログラム構造を一致させることができない
よって構造化定理を諦めたアプローチをせざるを得ない
こういうのがgotoやlongjmpの出番
531デフォルトの名無しさん
2018/08/27(月) 13:32:12.14ID:vY3QDx2y532デフォルトの名無しさん
2018/08/27(月) 13:35:23.06ID:ywsjsNTA ま、Cの場合は適切にgoto使った方が良いだろうな。後から作られた言語では break でラベル指定できるだの例外処理できるだのしてるから使わなくて済むようになってるわけで、それのないCはそれの代わりにgoto利用しちゃった方が分かりやすく書ける。
533デフォルトの名無しさん
2018/08/27(月) 13:41:42.47ID:vY3QDx2y いやCのgotoは制限がキツすぎて
いざという時には役立たず
だからlongjmpがある
いざという時には役立たず
だからlongjmpがある
534デフォルトの名無しさん
2018/08/27(月) 14:22:47.97ID:Q5lEKL35 そんな制限キツかったっけ?
longjump の方がキツいでしょ
longjump の方がキツいでしょ
535デフォルトの名無しさん
2018/08/27(月) 14:23:38.81ID:vY3QDx2y 何がキツいって関数から出らんない
536デフォルトの名無しさん
2018/08/27(月) 14:34:05.72ID:J1p6Vf0T setjump/longjumpは簡易タスクディスパッチャーをC言語だけで実現するためだけにあるのかと思ってたよ。
それ以外の用途はあんまり思い浮かばないなぁ。
それ以外の用途はあんまり思い浮かばないなぁ。
537デフォルトの名無しさん
2018/08/27(月) 14:40:44.92ID:TsaU1TVW 自分で対処不能なエラーが起きたときに、初期化してやり直す時に使ったな
だもんで通常の処理の流れで使うものだとは思わなかった
だもんで通常の処理の流れで使うものだとは思わなかった
538デフォルトの名無しさん
2018/08/27(月) 16:09:02.07ID:vY3QDx2y ディスパッチャとしてはダメダメじゃん
jmp_buf jb;
void sig(int n)
{
longjmp(jb, 1);
}
int main(void)
{
signal(SIGINT, sig);
if (setjmp(jb) == 0) for (;;) ;
else puts("ok");
return 0;
}
俺んとこではokが出ない
おまいらんとこではどんな結果になる?
jmp_buf jb;
void sig(int n)
{
longjmp(jb, 1);
}
int main(void)
{
signal(SIGINT, sig);
if (setjmp(jb) == 0) for (;;) ;
else puts("ok");
return 0;
}
俺んとこではokが出ない
おまいらんとこではどんな結果になる?
539デフォルトの名無しさん
2018/08/27(月) 16:16:45.47ID:J1p6Vf0T 確かsignalとlongjmpは相性悪かったような?
よく覚えてないけど。
よく覚えてないけど。
540デフォルトの名無しさん
2018/08/27(月) 16:27:43.33ID:VuJs8kRo >>538
こちらは Linux (CentOS7)だが、出たよ。
こちらは Linux (CentOS7)だが、出たよ。
541デフォルトの名無しさん
2018/08/27(月) 16:29:13.02ID:VuJs8kRo >>539
sigsetjmp(), siglongjmp() ってのがあるので、そっち使った方が良さそうではあるな。
sigsetjmp(), siglongjmp() ってのがあるので、そっち使った方が良さそうではあるな。
542デフォルトの名無しさん
2018/08/27(月) 16:33:51.80ID:J1p6Vf0T Linuxとかならpthreadがあるのでわざわざ自分でディスパッチャ作ることはないと思うけど、組み込み用に簡易的に作ることはあるかもね。
俺は組み込みならprotothreadsのほうがシンプルで好き。
俺は組み込みならprotothreadsのほうがシンプルで好き。
543デフォルトの名無しさん
2018/08/27(月) 17:20:53.65ID:cJbIVPPr #include <signal.h>
void (*signal(int signum, void (*sighandler)(int signum)))(int signum);
この宣言が読めない
void (*signal(int signum, void (*sighandler)(int signum)))(int signum);
この宣言が読めない
544デフォルトの名無しさん
2018/08/27(月) 17:30:35.88ID:vY3QDx2y signal 関数名
signum 第1仮引数名
sighandler 第2仮引数名
sighandler ポインタ
*sighandler 関数
signum 第1仮引数名
signalの返却値はsighandlerと同じ型
signum 第1仮引数名
sighandler 第2仮引数名
sighandler ポインタ
*sighandler 関数
signum 第1仮引数名
signalの返却値はsighandlerと同じ型
545デフォルトの名無しさん
2018/08/27(月) 18:31:36.73ID:C1HpzEi0546デフォルトの名無しさん
2018/08/27(月) 18:49:30.60ID:C1HpzEi0547デフォルトの名無しさん
2018/08/27(月) 19:22:28.99ID:FN2jn8ES >>546
全て別の方法で実現しちゃうので、俺的にはlongjmpの必要性を感じないかな?
全て別の方法で実現しちゃうので、俺的にはlongjmpの必要性を感じないかな?
548デフォルトの名無しさん
2018/08/27(月) 19:30:11.24ID:m5aHtIH2 >>530
高度すぎてなに言ってるかわからん
高度すぎてなに言ってるかわからん
549デフォルトの名無しさん
2018/08/27(月) 19:46:09.70ID:nZJhjhuf まあデータの損傷をいきなりデータ構造そのものの破綻に結びつけるのは些か強引な論理展開ではあるな
550デフォルトの名無しさん
2018/08/27(月) 19:55:16.65ID:C1HpzEi0551デフォルトの名無しさん
2018/08/27(月) 20:08:36.09ID:FN2jn8ES >>550
こんな感じ。
OSのタスク切り替え処理
→普通にOSの機能を使う、カーネルなしで簡易ディスパッチャ実装はpthread
ブートローダーからアプリケーションへのジャンプ
→アドレス固定ならアドレスを関数ポインタにキャストしてジャンプ、またはインラインアセンブラ
リセット
→周辺機能やbssやdataセクションも初期化したいのでWDT等のCPUリセット機能を使う
例外処理
→密結合を避けるためオーソドックスに返り値で判定、最後にgoto使うかも?
そういや例外処理longjmpで思い出したけど、一昔以上前のCマガジンにマクロでC++と同じようなtry〜catch構文実装方法の記事があったけど、確かにそのマクロ内ではsetjmp/longjmp使ってたわ。
マクロでカプセル化してれば例外処理で使うかも。
こんな感じ。
OSのタスク切り替え処理
→普通にOSの機能を使う、カーネルなしで簡易ディスパッチャ実装はpthread
ブートローダーからアプリケーションへのジャンプ
→アドレス固定ならアドレスを関数ポインタにキャストしてジャンプ、またはインラインアセンブラ
リセット
→周辺機能やbssやdataセクションも初期化したいのでWDT等のCPUリセット機能を使う
例外処理
→密結合を避けるためオーソドックスに返り値で判定、最後にgoto使うかも?
そういや例外処理longjmpで思い出したけど、一昔以上前のCマガジンにマクロでC++と同じようなtry〜catch構文実装方法の記事があったけど、確かにそのマクロ内ではsetjmp/longjmp使ってたわ。
マクロでカプセル化してれば例外処理で使うかも。
552デフォルトの名無しさん
2018/08/27(月) 20:17:29.99ID:C1HpzEi0 カーネルなしでpthreadの意味がわからん
553デフォルトの名無しさん
2018/08/27(月) 20:21:53.00ID:FN2jn8ES554デフォルトの名無しさん
2018/08/28(火) 15:16:05.31ID:wM2MhSxp http://techtipshoge.blogspot.com/2011/02/blog-post.html
このサイトで、書いてることは正しいと思うしし、実際こうなるんだけど、俺の頭悪いせいでわからない。
駄目な例のsetStr(a)の a は、 &a[0] という”アドレス”を渡してる訳ではないんでしょうか?
なんで駄目な例だと上手くいかないのかという理屈がわからない・・・
このサイトで、書いてることは正しいと思うしし、実際こうなるんだけど、俺の頭悪いせいでわからない。
駄目な例のsetStr(a)の a は、 &a[0] という”アドレス”を渡してる訳ではないんでしょうか?
なんで駄目な例だと上手くいかないのかという理屈がわからない・・・
555デフォルトの名無しさん
2018/08/28(火) 15:16:57.00ID:wM2MhSxp あ、レスして気づいたけどcoutがあるってことはc++なのかな?
まあこれはprintfってことにしといてくださいw 重複質問になりそうなのでこちらで処理したい。
まあこれはprintfってことにしといてくださいw 重複質問になりそうなのでこちらで処理したい。
556さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/28(火) 15:27:14.25ID:cEEOiaf2 newもC++のキーワードなんだけど。。
関数に実引数のポインタを渡すとその値が、対応する仮引数に代入(コピー)され、以後、仮引数は変数のように使える。
仮引数の値を変えてもコピーが書き換えられるだけで元の実引数の値には影響しない。
書き換えられるようにするには、書き換えたい場所のアドレスを渡して、*演算子か、[]演算子を使わないといけない。
関数に実引数のポインタを渡すとその値が、対応する仮引数に代入(コピー)され、以後、仮引数は変数のように使える。
仮引数の値を変えてもコピーが書き換えられるだけで元の実引数の値には影響しない。
書き換えられるようにするには、書き換えたい場所のアドレスを渡して、*演算子か、[]演算子を使わないといけない。
557デフォルトの名無しさん
2018/08/28(火) 15:27:46.08ID:10z9ufr/ 駄目な例のa = new char [8];はmainのaの複製への代入なのでmainのaはNULLのまま
良い例の*a = new char [8];はmainのaそのものへの代入なので期待した結果が得られる
良い例の*a = new char [8];はmainのaそのものへの代入なので期待した結果が得られる
558さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/28(火) 15:37:02.95ID:cEEOiaf2 関数呼び出しのとき、実引数がどこにコピーされるかというと、「スタック」という積み上げ式のメモリーブロックか、一時的なCPUレジスタが使われる。
インラインではない関数呼び出しにおいては、関数の戻り先のアドレスと、仮引数のデータがスタックに積み上げられる。
積み上げ式だから、自分自身の関数を呼び出しても動作する。これを「再帰呼び出し」という。
インラインではない関数呼び出しにおいては、関数の戻り先のアドレスと、仮引数のデータがスタックに積み上げられる。
積み上げ式だから、自分自身の関数を呼び出しても動作する。これを「再帰呼び出し」という。
559さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/08/28(火) 15:39:32.69ID:cEEOiaf2 スタックの積み上げには限度がある。限度を超えると、スタックサイズが拡張されたり、異常終了する。
スタックの積み上げが限度を超えて異常な状態になることを「スタックオーバーフロー」という。
スタックの積み上げが限度を超えて異常な状態になることを「スタックオーバーフロー」という。
560デフォルトの名無しさん
2018/08/28(火) 15:52:37.71ID:wM2MhSxp すません。私の質問が曖昧だったので追加で
void setStr(int *a) {
a[0] = 10;
}
int main() {
int a[10];
setStr(&a[0]);
cout << a[0] << endl;
return 0;
}
例えば、この場合は、setStr(&a[0])として、その後、関数内でa[0]=10;と値を代入すればちゃんと 10 が出力されます。
前のHPの失敗例も同じくsetStr(a)としてアドレスを渡し、受け取りはポインタ変数なのに値は変わらない。
単に数値か文字列かの違いなんでしょうか?
void setStr(int *a) {
a[0] = 10;
}
int main() {
int a[10];
setStr(&a[0]);
cout << a[0] << endl;
return 0;
}
例えば、この場合は、setStr(&a[0])として、その後、関数内でa[0]=10;と値を代入すればちゃんと 10 が出力されます。
前のHPの失敗例も同じくsetStr(a)としてアドレスを渡し、受け取りはポインタ変数なのに値は変わらない。
単に数値か文字列かの違いなんでしょうか?
561デフォルトの名無しさん
2018/08/28(火) 16:00:50.42ID:Gzofmim2 とりあえず一度、配列とポインタに対する余計な先入観を捨てて素直に元サイトを読み込めば理解できると思うよ
一つの考え方に囚われ過ぎてると思う
一つの考え方に囚われ過ぎてると思う
562デフォルトの名無しさん
2018/08/28(火) 16:05:47.55ID:10z9ufr/ void setStr(char **a) これを
void setStr(int *a) こう読み替え
char *a = NULL; setStr(&a); これを
int a = 0; setStr(&a); こう読み替えてみそ
つまり char* → int と読み替えるんだ
ポインタ変数とアドレスは違うという話は
整数変数と整数は違うという話と同じだ
void setStr(int *a) こう読み替え
char *a = NULL; setStr(&a); これを
int a = 0; setStr(&a); こう読み替えてみそ
つまり char* → int と読み替えるんだ
ポインタ変数とアドレスは違うという話は
整数変数と整数は違うという話と同じだ
563デフォルトの名無しさん
2018/08/28(火) 16:17:43.85ID:LgBUyhOe まあスタック使えとは規格に書いてないんだけどね
564デフォルトの名無しさん
2018/08/28(火) 16:35:30.28ID:wM2MhSxp ああ分かった!
俺は自分で勝手に「char型のポインタ=文字列だ」と思い込んでて、そのせいで混乱してただけでした。
思い込み怖い・・・
void setStr(char *a) {
a[0]='a';
}
int main() {
char a[] = "test";
setStr(a);
cout << a << endl;
return 0;
}
これで「aest」と表示されたからピンときた。確かに失敗例はポインタ変数を渡しているだけだw
ありがとうございました。
俺は自分で勝手に「char型のポインタ=文字列だ」と思い込んでて、そのせいで混乱してただけでした。
思い込み怖い・・・
void setStr(char *a) {
a[0]='a';
}
int main() {
char a[] = "test";
setStr(a);
cout << a << endl;
return 0;
}
これで「aest」と表示されたからピンときた。確かに失敗例はポインタ変数を渡しているだけだw
ありがとうございました。
565デフォルトの名無しさん
2018/08/28(火) 18:19:39.20ID:4ROMapnq >>563
そりゃそうだよ、世の中にはスタックを持たないマシンもあるからな
そりゃそうだよ、世の中にはスタックを持たないマシンもあるからな
566デフォルトの名無しさん
2018/08/28(火) 18:33:43.92ID:oY+WdDFv ハードウェアスタックを持たなくて再帰呼び出し出来ないうんこ環境があるね
567デフォルトの名無しさん
2018/08/28(火) 18:38:07.52ID:h1lwFjom そういうのは自分で値を積み上げるように作るしかないな
568デフォルトの名無しさん
2018/08/28(火) 18:45:10.17ID:Gzofmim2 そういえばずいぶん昔に昔ながらのBASIC言語でクイックソートを実装したときに当然サブルーチンの再起呼び出しなど使えないので
自分で似たようなことをやったなあ
というか確か何かのプログラム認定試験の定番の出題テーマだった気がする
当時必死に勉強してたことを思い出した
自分で似たようなことをやったなあ
というか確か何かのプログラム認定試験の定番の出題テーマだった気がする
当時必死に勉強してたことを思い出した
569デフォルトの名無しさん
2018/08/28(火) 18:45:55.20ID:Gzofmim2 再起ってなんだ再帰の誤変換
570デフォルトの名無しさん
2018/08/28(火) 18:47:51.41ID:h1lwFjom 再帰 不能
571デフォルトの名無しさん
2018/08/28(火) 19:51:12.99ID:zI7irPVs ぴゅう太なんてレジスタがなかった
572デフォルトの名無しさん
2018/08/28(火) 19:56:09.59ID:c8HqOUoV573デフォルトの名無しさん
2018/08/28(火) 20:04:33.36ID:10z9ufr/ 制御記憶を主記憶とシェアするアーキテクチャはそんなに珍しくない
574デフォルトの名無しさん
2018/08/28(火) 20:09:30.18ID:c8HqOUoV 普通にR0とかのレジスタ名ついてるんだけど実体は内蔵RAMにマッピングされてるアーキテクチャならよく見るけど、外部RAMってのは初めて見たわ。
今もこういうアーキテクチャのCPUあるのかな?
今もこういうアーキテクチャのCPUあるのかな?
575デフォルトの名無しさん
2018/08/28(火) 20:15:00.09ID:Gymzh0gE ない
576デフォルトの名無しさん
2018/08/28(火) 20:25:08.96ID:10z9ufr/ ぴゅうたって内蔵RAMなんだっけ
577デフォルトの名無しさん
2018/08/28(火) 20:28:21.23ID:c8HqOUoV578デフォルトの名無しさん
2018/08/28(火) 20:53:39.14ID:UQgP5OTn579デフォルトの名無しさん
2018/08/28(火) 20:58:39.83ID:10z9ufr/ >>578
必ずしもマイクロ【コード】を入れるところじゃないんだけどね
たとえばメインフレームではDIAGNOSE命令で制御記憶を目的外使用なんてのをやってたよ
それやってるときはTestインジケーターが点灯することになってて
必ずしもマイクロ【コード】を入れるところじゃないんだけどね
たとえばメインフレームではDIAGNOSE命令で制御記憶を目的外使用なんてのをやってたよ
それやってるときはTestインジケーターが点灯することになってて
580デフォルトの名無しさん
2018/08/28(火) 21:38:04.13ID:UQgP5OTn >>579
> たとえばメインフレームではDIAGNOSE命令で制御記憶を目的外使用なんてのをやってたよ
そんな特殊な例出されてもなぁ w
そりゃ記憶装置だから他の物を入れることはできるよ
だから何? って話だけどな
> それやってるときはTestインジケーターが点灯することになってて
で、主記憶と共用ってどこのアーキテクチャなんだ?
> たとえばメインフレームではDIAGNOSE命令で制御記憶を目的外使用なんてのをやってたよ
そんな特殊な例出されてもなぁ w
そりゃ記憶装置だから他の物を入れることはできるよ
だから何? って話だけどな
> それやってるときはTestインジケーターが点灯することになってて
で、主記憶と共用ってどこのアーキテクチャなんだ?
581デフォルトの名無しさん
2018/08/28(火) 21:54:20.28ID:d5vKjLdu >>580
やめたれ w
やめたれ w
582デフォルトの名無しさん
2018/08/28(火) 22:02:06.14ID:lp3F9A9k それってセキュリティ上問題にならないのか?
583デフォルトの名無しさん
2018/08/28(火) 22:15:00.65ID:d5vKjLdu いまはやりのcore iのバグみたいな?
584デフォルトの名無しさん
2018/08/29(水) 23:07:37.73ID:E6lvAa/y メルトダウン事件移行もアップデートの度にどんどんコンパイルとか画像縮小なんかの処理が遅くなってる気がする
もう怖くて淫照は買えない
もう怖くて淫照は買えない
585デフォルトの名無しさん
2018/08/30(木) 05:50:33.67ID:zs5ycFHj ベンチマークしてる?
586デフォルトの名無しさん
2018/08/30(木) 08:20:17.62ID:cD6Bz7+B >>582
そりゃなるよ
命令の動作を書き換えるんだから何でもできちゃう
なのでDiag関連の命令はCE(カスタマーエンジニア)モードでしか使えないとかなってたはず
今時のCPUでもエラッタ対策としてマイクロコードの書換えするけどコード自体は暗号化されてる
この暗号化キーが漏れたらえらいことになると思う
そりゃなるよ
命令の動作を書き換えるんだから何でもできちゃう
なのでDiag関連の命令はCE(カスタマーエンジニア)モードでしか使えないとかなってたはず
今時のCPUでもエラッタ対策としてマイクロコードの書換えするけどコード自体は暗号化されてる
この暗号化キーが漏れたらえらいことになると思う
587デフォルトの名無しさん
2018/08/30(木) 10:16:53.98ID:zs5ycFHj X'83は単に特権命令ってだけだぜ
588デフォルトの名無しさん
2018/08/30(木) 12:25:33.09ID:cD6Bz7+B マシンによって違うのか?
M-180HはCEモードでないと動作しなかったが
M-180HはCEモードでないと動作しなかったが
589デフォルトの名無しさん
2018/08/30(木) 12:43:00.44ID:zs5ycFHj そういうことだね
俺んとこではPWOFFするオウンコードとかできたし
俺んとこではPWOFFするオウンコードとかできたし
590デフォルトの名無しさん
2018/08/30(木) 20:09:52.14ID:cD6Bz7+B それマイクロ関係ないだろ
591デフォルトの名無しさん
2018/08/31(金) 06:31:31.30ID:QWemr4wG すみません思い切り初心者の質問です。
printf("%s: abc", str);
↑こういう文が abcのみが変わる形で(str変数は変更されません)
沢山登場するプログラムを作っており コピペが面倒だしバグの温床になりそうなので
#defineマクロなどを使って引数にabcを指定すると上記の文がまるごと出力されるようにしたいと思いました。
そこで
#define PR_POS(_pos) printf("%s: _pos", str)
という定義を作ったのですが恐らく引用符の中身は変更されることはないので
#include <stdio.h>
#include <stdlib.h>
#define PR_POS(_pos) printf("%s: _pos\n", str)
int main(void) {
char str[256] = "text";
//printf("%s: abc\n", str);
PR_POS(abc);
exit(EXIT_SUCCESS);
}
というプログラムを作っても実際コンパイルしたものを実行すると
text: _pos
という望んでいない出力が返ってくるだけです
これを
text: abc
という出力にするにはどうすればいいでしょうか……。
printf("%s: abc", str);
↑こういう文が abcのみが変わる形で(str変数は変更されません)
沢山登場するプログラムを作っており コピペが面倒だしバグの温床になりそうなので
#defineマクロなどを使って引数にabcを指定すると上記の文がまるごと出力されるようにしたいと思いました。
そこで
#define PR_POS(_pos) printf("%s: _pos", str)
という定義を作ったのですが恐らく引用符の中身は変更されることはないので
#include <stdio.h>
#include <stdlib.h>
#define PR_POS(_pos) printf("%s: _pos\n", str)
int main(void) {
char str[256] = "text";
//printf("%s: abc\n", str);
PR_POS(abc);
exit(EXIT_SUCCESS);
}
というプログラムを作っても実際コンパイルしたものを実行すると
text: _pos
という望んでいない出力が返ってくるだけです
これを
text: abc
という出力にするにはどうすればいいでしょうか……。
592デフォルトの名無しさん
2018/08/31(金) 06:43:34.91ID:jQ6ZKbRR593デフォルトの名無しさん
2018/08/31(金) 06:44:40.48ID:Df6BGOL7 #define PR_POS(_pos) printf("%s: " #_pos, str)
594デフォルトの名無しさん
2018/08/31(金) 06:45:58.45ID:Df6BGOL7595591
2018/08/31(金) 07:04:03.05ID:QWemr4wG596デフォルトの名無しさん
2018/08/31(金) 07:18:20.44ID:4o8e5lPA #include <stdio.h>
#define DEBUG(fmt, ...) \
fprintf(stdout, "%s:%d #%s " fmt "\n", \
__FILE__, __LINE__, __func__, ##__VA_ARGS__);
初心者ならこのマクロを覚えておくと良いぞ。誰もが一度は使うはず。
#define DEBUG(fmt, ...) \
fprintf(stdout, "%s:%d #%s " fmt "\n", \
__FILE__, __LINE__, __func__, ##__VA_ARGS__);
初心者ならこのマクロを覚えておくと良いぞ。誰もが一度は使うはず。
597デフォルトの名無しさん
2018/08/31(金) 07:26:18.95ID:jQ6ZKbRR >>595
> しかもC99でも定められてるっぽい?
X 3010:2003 (ISO/IEC 9899:1999)
6.10.3.2 #演算子
制約
関数形式マクロの置換要素並びの中にある各#前処理字句の次の前処理字句は,仮引数でなければならない。
意味規則
置換要素並びの中で,仮引数の直前に#前処理字句がある場合,対応する実引数の前処理字句列のつづりを含んだ一つの単純文字列リテラル前処理字句によって,#前処理字句と仮引数を置き換える。(後略)
http://kikakurui.com/x3/X3010-2003-01.html
> しかもC99でも定められてるっぽい?
X 3010:2003 (ISO/IEC 9899:1999)
6.10.3.2 #演算子
制約
関数形式マクロの置換要素並びの中にある各#前処理字句の次の前処理字句は,仮引数でなければならない。
意味規則
置換要素並びの中で,仮引数の直前に#前処理字句がある場合,対応する実引数の前処理字句列のつづりを含んだ一つの単純文字列リテラル前処理字句によって,#前処理字句と仮引数を置き換える。(後略)
http://kikakurui.com/x3/X3010-2003-01.html
598デフォルトの名無しさん
2018/08/31(金) 07:48:00.90ID:QWemr4wG >>596
すいません。初心者なのにめちゃめちゃ上から目線みたいになってしまうんですが
assert()を使わないのはなぜですかね。
POSIX C99でも定義されているので ほとんどどのコンパイラでも処理できると思うんです。
すいません。初心者なのにめちゃめちゃ上から目線みたいになってしまうんですが
assert()を使わないのはなぜですかね。
POSIX C99でも定義されているので ほとんどどのコンパイラでも処理できると思うんです。
599デフォルトの名無しさん
2018/08/31(金) 08:16:53.54ID:4o8e5lPA600デフォルトの名無しさん
2018/08/31(金) 08:23:18.46ID:LcHwdHfr フィールドのエラーログ用に>>596みたいなコードをリリースバイナリにも埋めることがあるけど
その場合はassertじゃ役に立たないんだよな。
その場合はassertじゃ役に立たないんだよな。
601デフォルトの名無しさん
2018/08/31(金) 08:31:20.23ID:uM5wy4o0 斜め読みだけど、abcが変わってstrが変更されないならabcの方を文字列変数にしてprintfすれば良いんじゃね?
602デフォルトの名無しさん
2018/08/31(金) 08:33:49.15ID:CKe+Ima+603デフォルトの名無しさん
2018/08/31(金) 08:40:41.19ID:QWemr4wG604デフォルトの名無しさん
2018/08/31(金) 09:08:12.10ID:9zTxkh/J 本番のコードと差が出て邪魔なのでassertはあまり使いませんね。
どうせデバッガ使うというのもあるし。
どうせデバッガ使うというのもあるし。
605デフォルトの名無しさん
2018/08/31(金) 09:17:03.63ID:QWemr4wG >>604
本業の方の意見はほんとありがたいです。
コンパイルエラーと違ってassert(3)は実行時にエラーを吐くので同じ「実行するときに診断する」プログラムでassert(3)より高機能なデバッガ(GDBとか)を使うということですか?
---
>>591の処理ですが以下のように書き直したところ望み通りに動きました。
みなさまありがとうございます。感謝します。
#include <stdio.h>
#include <stdlib.h>
#define PR_POS(_pos) printf("%s:" #_pos "\n", str)
int main(void) {
char str[256] = "text";
//printf("%s: abc\n", str);
PR_POS(abc);
exit(EXIT_SUCCESS);
}
本業の方の意見はほんとありがたいです。
コンパイルエラーと違ってassert(3)は実行時にエラーを吐くので同じ「実行するときに診断する」プログラムでassert(3)より高機能なデバッガ(GDBとか)を使うということですか?
---
>>591の処理ですが以下のように書き直したところ望み通りに動きました。
みなさまありがとうございます。感謝します。
#include <stdio.h>
#include <stdlib.h>
#define PR_POS(_pos) printf("%s:" #_pos "\n", str)
int main(void) {
char str[256] = "text";
//printf("%s: abc\n", str);
PR_POS(abc);
exit(EXIT_SUCCESS);
}
606デフォルトの名無しさん
2018/08/31(金) 10:04:04.85ID:Qsv+Vg4k assertの使い道って「ここでは必ずhogeになる!」という意志をコードに残すという意味はあるかな。
言ってるとおりで動かすときはgdb使うし、開発中は単体テストで同等以上の確認するしで、実用性は今はあまり無いと思いますね。
言ってるとおりで動かすときはgdb使うし、開発中は単体テストで同等以上の確認するしで、実用性は今はあまり無いと思いますね。
607デフォルトの名無しさん
2018/08/31(金) 11:00:23.86ID:mNRFahys assertはどっちかつーと単体テストでよく使う
608デフォルトの名無しさん
2018/08/31(金) 12:32:32.62ID:QMdn6GpG 本番コードでもassert使うかな
ハードエラーみたいなのはカバーしきれない
ハードエラーみたいなのはカバーしきれない
609デフォルトの名無しさん
2018/08/31(金) 12:51:53.38ID:jQ6ZKbRR >>606
> assertの使い道って「ここでは必ずhogeになる!」という意志をコードに残すという意味はあるかな。
assertion の意味は主張だからむしろそれが正しいとも言えるな
> 実用性は今はあまり無いと思いますね。
最初作るときはそうでも改修時に全然触ってない所のassert()に引っかかることもあるから俺は基本入れてる
> assertの使い道って「ここでは必ずhogeになる!」という意志をコードに残すという意味はあるかな。
assertion の意味は主張だからむしろそれが正しいとも言えるな
> 実用性は今はあまり無いと思いますね。
最初作るときはそうでも改修時に全然触ってない所のassert()に引っかかることもあるから俺は基本入れてる
610デフォルトの名無しさん
2018/09/02(日) 07:11:07.60ID:667Fbrpy int a = 42;
a = a++;
↑これがコンパイルエラーになる理由って
「左辺aに対する代入と右辺aに対するインクリメントのどちらの演算を優先して処理するか不定である為」
で合ってますか? 不定じゃなくて未定義かも……。
a = a++;
↑これがコンパイルエラーになる理由って
「左辺aに対する代入と右辺aに対するインクリメントのどちらの演算を優先して処理するか不定である為」
で合ってますか? 不定じゃなくて未定義かも……。
611デフォルトの名無しさん
2018/09/02(日) 07:29:52.76ID:fa3EYjvI エラーになるか? 警告ではなく
612デフォルトの名無しさん
2018/09/02(日) 09:00:51.15ID:667Fbrpy >>611
-Werrorとかにしてました
-Werrorとかにしてました
613611
2018/09/02(日) 09:07:14.14ID:667Fbrpy >>611
あれ。すいません。よく分からなくなりました。
$ gcc -pedantic -std=c99 -Wall -Werror -O2
でコンパイルするとエラーになり停止しますが
$ icc -std=c99 -Wall -Werror -O2
でコンパイルするとあっさり通りますね……。
あれ。すいません。よく分からなくなりました。
$ gcc -pedantic -std=c99 -Wall -Werror -O2
でコンパイルするとエラーになり停止しますが
$ icc -std=c99 -Wall -Werror -O2
でコンパイルするとあっさり通りますね……。
614デフォルトの名無しさん
2018/09/02(日) 09:27:27.59ID:pzXMyV5h615デフォルトの名無しさん
2018/09/02(日) 09:59:41.19ID:GR8jnF/5 未定義だからコンパイラは何をしてもいい
616デフォルトの名無しさん
2018/09/02(日) 10:00:57.15ID:667Fbrpy >>614
ありがとうございます。
ちなみにicc (Intel(R) C/C++ Compiler)で-Wallおよび-Werrorオプションを設定したときは
警告もなにも出力されることなくコンパイルに成功してしまったんですが
理由とか分かりますかね。すいません。変な質問で……。
ありがとうございます。
ちなみにicc (Intel(R) C/C++ Compiler)で-Wallおよび-Werrorオプションを設定したときは
警告もなにも出力されることなくコンパイルに成功してしまったんですが
理由とか分かりますかね。すいません。変な質問で……。
617デフォルトの名無しさん
2018/09/02(日) 10:19:45.38ID:667Fbrpy >>614
あと,おっしゃる通り(すくなくともC99では)未定義でした。ありがとうございます。
> 直前の副作用完了点から次の副作用完了点までの間に,
> 式の評価によって一つのオブジェクトに格納された値を変更する回数は,高々1回でなければならない。
> さらに,変更後の値の読取りは,格納される値を決定するためだけに行われなければならない。
(JIS X 3010:2003 p.48; 参考 https://dotup.org/uploda/dotup.org1632204.png)
あと,おっしゃる通り(すくなくともC99では)未定義でした。ありがとうございます。
> 直前の副作用完了点から次の副作用完了点までの間に,
> 式の評価によって一つのオブジェクトに格納された値を変更する回数は,高々1回でなければならない。
> さらに,変更後の値の読取りは,格納される値を決定するためだけに行われなければならない。
(JIS X 3010:2003 p.48; 参考 https://dotup.org/uploda/dotup.org1632204.png)
618デフォルトの名無しさん
2018/09/02(日) 11:28:11.60ID:owKXNyzr >>610
そういう文法的になことには今は拘らない方がいい。(これは他言語学習者の方が酷いが)
上達の妨げにしかならない。
プログラミング言語は、「正しく書いたときに正しく動作する」ようにしか設計されていない。
特にCはそうだ。
意味不明なことを書いたらだいたい全て「未定義」であり、
意味不明なことを書く奴が悪い、ということになっている。
そしてそれが「未定義」と覚えることも、実質的な意味はない。
そんなコードはすぐに修正され、存在しないからだ。
実際、 a = a++; なんてコードは、どのOSSにもないはずだ。
この意味で、Cは全くの素人の入門者用ではない。
例えばC#はそこら辺厳しい言語で、そういった意味不明な書き方は全てコンパイルエラーにされるはず。
(さすがにその例では知らんが、例えば「未初期化の変数を使用」とかがエラーになる)
というか、マジでそのレベルならC#やった方がいい。
文法エラーなんてサジェストが出てOK押したら自動的に修正してくれる。
お前がどんな環境でやってるのかは知らんが。
ただ、こういった無駄な遠回りをしなくて済むだけでも、君にとってC#は有効だと思うよ。
つか、初心者は全ての文法を押さえないといけないと勘違いするようだが、それは間違いだ。
自分が使うだけの文法を押さえ、さっさと使うべきだ。
お前だって日本語の全ての漢字が読めるわけでもないのに日本語を使ってるだろ。
プログラミング言語も同様で、手段でしかないのだから、文法を一通り確認したら、
さっさとゲーム等何でもいいから作れ。
ネタがないのならそれはそもそも今プログラミングを学ぶ必要がないとも言えるし、
それでもやりたいのならラズパイでも買ってきてLEDチカチカでも目指せ。
文法を学ぶことが目的になってはいけない。それは完全に空回りだ。
そういう文法的になことには今は拘らない方がいい。(これは他言語学習者の方が酷いが)
上達の妨げにしかならない。
プログラミング言語は、「正しく書いたときに正しく動作する」ようにしか設計されていない。
特にCはそうだ。
意味不明なことを書いたらだいたい全て「未定義」であり、
意味不明なことを書く奴が悪い、ということになっている。
そしてそれが「未定義」と覚えることも、実質的な意味はない。
そんなコードはすぐに修正され、存在しないからだ。
実際、 a = a++; なんてコードは、どのOSSにもないはずだ。
この意味で、Cは全くの素人の入門者用ではない。
例えばC#はそこら辺厳しい言語で、そういった意味不明な書き方は全てコンパイルエラーにされるはず。
(さすがにその例では知らんが、例えば「未初期化の変数を使用」とかがエラーになる)
というか、マジでそのレベルならC#やった方がいい。
文法エラーなんてサジェストが出てOK押したら自動的に修正してくれる。
お前がどんな環境でやってるのかは知らんが。
ただ、こういった無駄な遠回りをしなくて済むだけでも、君にとってC#は有効だと思うよ。
つか、初心者は全ての文法を押さえないといけないと勘違いするようだが、それは間違いだ。
自分が使うだけの文法を押さえ、さっさと使うべきだ。
お前だって日本語の全ての漢字が読めるわけでもないのに日本語を使ってるだろ。
プログラミング言語も同様で、手段でしかないのだから、文法を一通り確認したら、
さっさとゲーム等何でもいいから作れ。
ネタがないのならそれはそもそも今プログラミングを学ぶ必要がないとも言えるし、
それでもやりたいのならラズパイでも買ってきてLEDチカチカでも目指せ。
文法を学ぶことが目的になってはいけない。それは完全に空回りだ。
619デフォルトの名無しさん
2018/09/02(日) 11:39:01.45ID:mdI4MGys やりたいことはシンプルに書けよってことだな。
最終的に a にどうなってほしいのか、それってもっと端的に書けないの?ってこと。
Cオタクになるのが目的じゃなければな。
最終的に a にどうなってほしいのか、それってもっと端的に書けないの?ってこと。
Cオタクになるのが目的じゃなければな。
620デフォルトの名無しさん
2018/09/02(日) 12:11:10.31ID:owKXNyzr (ちなみに補足)>>610
初心者には理解不能だと思うが、
「文法で許されていることが全て許される」環境なんて実質的に存在しない。
だから文法のコーナーケースについてはそもそも覚える必要がない。
(とはいえ、肝心のK&Rがフリーダムすぎて…ってのはあるが)
これは小説→ラノベの流れと同じで、
美辞麗句の技巧に走る必要はなく、簡単な文を書き連ねて面白い筋を書け、ということ。
プログラミングにおいてはこれが徹底していて、
同じ物なら、簡単な方が『常に』いい、ということになっている。
ただ、どこからが複雑なのか?というのは議論になる。
例えば自然言語で韓国が漢字を廃止した際、
「停留所」を「ばすが とまる ところ」と書き換え、老人が「舐めとんのか!」と切れた。
実際、全員が読める漢字を「もっと簡単に」という理由で平仮名に書き換えられても困るだろ。
丁度これと同じ(だが方向は逆)で、
新しいプログラミング言語は比較的すんなり書ける文法が用意されており、
それを使うべきかどうかでは揉めたりしている。
ただ、Cは古いのでまどろっこしい文法しかなく、ベタな書き方しか出来ない。
だから比較的この論争に巻き込まれることはないはず。
(それ以前に文法セット自体が小さくて、え?これだけ?のはずだが)
>>619
天然と養殖では学びのベクトルが逆なんだよな。
天然: 1を足したい → a++ と書くのか
養殖: a++と書くと → 1が足されるのか
結果、要因側をenumすると文法一覧になるのが養殖で、これが間違いの元だ。
そしてそれを馬鹿正直に一つずつ潰すから文法エリートになっていく。
そうではなく、要因側のenum結果はやりたいこと一覧になって、全部揃えばゲームが作れる!が正しい。
初心者には理解不能だと思うが、
「文法で許されていることが全て許される」環境なんて実質的に存在しない。
だから文法のコーナーケースについてはそもそも覚える必要がない。
(とはいえ、肝心のK&Rがフリーダムすぎて…ってのはあるが)
これは小説→ラノベの流れと同じで、
美辞麗句の技巧に走る必要はなく、簡単な文を書き連ねて面白い筋を書け、ということ。
プログラミングにおいてはこれが徹底していて、
同じ物なら、簡単な方が『常に』いい、ということになっている。
ただ、どこからが複雑なのか?というのは議論になる。
例えば自然言語で韓国が漢字を廃止した際、
「停留所」を「ばすが とまる ところ」と書き換え、老人が「舐めとんのか!」と切れた。
実際、全員が読める漢字を「もっと簡単に」という理由で平仮名に書き換えられても困るだろ。
丁度これと同じ(だが方向は逆)で、
新しいプログラミング言語は比較的すんなり書ける文法が用意されており、
それを使うべきかどうかでは揉めたりしている。
ただ、Cは古いのでまどろっこしい文法しかなく、ベタな書き方しか出来ない。
だから比較的この論争に巻き込まれることはないはず。
(それ以前に文法セット自体が小さくて、え?これだけ?のはずだが)
>>619
天然と養殖では学びのベクトルが逆なんだよな。
天然: 1を足したい → a++ と書くのか
養殖: a++と書くと → 1が足されるのか
結果、要因側をenumすると文法一覧になるのが養殖で、これが間違いの元だ。
そしてそれを馬鹿正直に一つずつ潰すから文法エリートになっていく。
そうではなく、要因側のenum結果はやりたいこと一覧になって、全部揃えばゲームが作れる!が正しい。
621デフォルトの名無しさん
2018/09/02(日) 12:24:17.27ID:667Fbrpy >>620
ちょっと反論があります。正直Cどころかプログラミング初学者なのですが……。
要するに私は養殖≠ナあり,そのような学び方では成長しないと仰りたいわけですよね。
まあ確かに自分でも「規格厨」というか,衒学的な性格をなのは自覚してます
しかしプログラミング言語というのは自然言語とは違う面が多々あると思います。
そして「文法を網羅すべきか」という点においては特に違うと思います。
プログラミング言語は少なくとも概念においては文法に正確に従えば定められた動作を確実に行ないます。
日本語の文法を遵守して話しても考えが伝わらないのとは全く異るところです。
だから私はプログラミング言語においては先に(かなり厳密に)文法を学ぶべきであり,
「文法を学ぶ」ことのなかには未定義動作に関する諸々の知識を習得することも含まれていると考えます。
偉そうにすいませんでした。まあ上手くいかなければまた考えを改めるつもりではいます。
ちょっと反論があります。正直Cどころかプログラミング初学者なのですが……。
要するに私は養殖≠ナあり,そのような学び方では成長しないと仰りたいわけですよね。
まあ確かに自分でも「規格厨」というか,衒学的な性格をなのは自覚してます
しかしプログラミング言語というのは自然言語とは違う面が多々あると思います。
そして「文法を網羅すべきか」という点においては特に違うと思います。
プログラミング言語は少なくとも概念においては文法に正確に従えば定められた動作を確実に行ないます。
日本語の文法を遵守して話しても考えが伝わらないのとは全く異るところです。
だから私はプログラミング言語においては先に(かなり厳密に)文法を学ぶべきであり,
「文法を学ぶ」ことのなかには未定義動作に関する諸々の知識を習得することも含まれていると考えます。
偉そうにすいませんでした。まあ上手くいかなければまた考えを改めるつもりではいます。
622デフォルトの名無しさん
2018/09/02(日) 12:32:31.40ID:mdI4MGys やりたいことを素直に書いたつもりで未定義な文法になってしまうなら、もっと論理を考えた方がいいかも。
やりたいことを行う手順を整理できてないってことだと思うよ。
a = a++; ということが結局どういう動作するのかを知ることより、何をしたくてそういう(矛盾をはらむ)書き方になったのかを自己分析した方がいい。
もちろん基本的な文法は勉強しておく前提はあるよ。
おれは養殖とか天然とかは分からんけど。
やりたいことを行う手順を整理できてないってことだと思うよ。
a = a++; ということが結局どういう動作するのかを知ることより、何をしたくてそういう(矛盾をはらむ)書き方になったのかを自己分析した方がいい。
もちろん基本的な文法は勉強しておく前提はあるよ。
おれは養殖とか天然とかは分からんけど。
623デフォルトの名無しさん
2018/09/02(日) 13:02:03.12ID:gypPfsRT Cは文法的にはコードのデザインをほとんど規定しないからね。
そういう意味では頑張って覚えるほどでもない。まあ量も少ないので覚えてもいい。
でも古いコードとの互換性にこだわる様なおっさんにはならんでくれやという感じ。
そういう意味では頑張って覚えるほどでもない。まあ量も少ないので覚えてもいい。
でも古いコードとの互換性にこだわる様なおっさんにはならんでくれやという感じ。
624デフォルトの名無しさん
2018/09/02(日) 13:06:08.54ID:nnaQ2akS >>621
あなたの言うことにも一理ある。
でもこの板にいる人は1つの言語しか使えない人って少数派で、たいていは3、4つまたはそれ以上の言語を操るマルチリンガルな人が多いと思う。
んで、その人たちはどうやって新しい言語を使えるようになるかって言うと、1つの言語をマスターすると(Prologとか特殊な言語は除いて)他の言語も方言みたいなもので、書き方の問題だけなことが多いのね。
その際には特定言語の重箱の隅をつつくような知識が必要なわけではなく、むしろ最大公約数的な知識、もっと言うと言語に依存しない設計力のほうが大事になってくる。
なので、特定言語のあまり細かいルールにこだわり過ぎないほうが良い、という経験論での意見は間違ってはないと思うよ。
あなたの言うことにも一理ある。
でもこの板にいる人は1つの言語しか使えない人って少数派で、たいていは3、4つまたはそれ以上の言語を操るマルチリンガルな人が多いと思う。
んで、その人たちはどうやって新しい言語を使えるようになるかって言うと、1つの言語をマスターすると(Prologとか特殊な言語は除いて)他の言語も方言みたいなもので、書き方の問題だけなことが多いのね。
その際には特定言語の重箱の隅をつつくような知識が必要なわけではなく、むしろ最大公約数的な知識、もっと言うと言語に依存しない設計力のほうが大事になってくる。
なので、特定言語のあまり細かいルールにこだわり過ぎないほうが良い、という経験論での意見は間違ってはないと思うよ。
625デフォルトの名無しさん
2018/09/02(日) 13:21:05.23ID:mdI4MGys そうそう、しいて文法を覚えるなら適切に const を指定するクセを付けてほしいな(const に限った話ではないんだが)。
文字列を引数で受ける箇所全部が char* になってるコードを見るとクラクラするw
文字列を引数で受ける箇所全部が char* になってるコードを見るとクラクラするw
626デフォルトの名無しさん
2018/09/02(日) 13:50:09.03ID:owKXNyzr >>621
反論自体は自由にやればいいんだよ。それが匿名掲示板のメリットなのだから。
ただ、書かれている内容については吟味しないといけない。
その中には君にも峻別出来る内容もあるはずだから。
(というか、こっちが君にも分かる範囲で《客観的な範囲で》話せばいいのだが)
事実から言うと、C言語は『当初から』バリバリの実用言語であり、今も現役だ。
これは同世代の他言語とは全然違う。
だから、普通に書いてれば「未定義」なんてのに命中するはずがないんだよ。
そんな言語、使い物にならないだろ?
次に、歴史も長いのだから、何をどうやったら嵌るかのノウハウも溜まっている。
それの集大成がコーディングルールであり、例えば goto 禁止論だ。
これについても是非はあるが、これまでの経験をタダで享受する気なら、乗った方が得だ。
そしてそれに従っておけば大体全て「未定義」は回避出来る。
具体的に言えば、警告レベルを一番か二番目に厳しい状態で使って、警告についてはほぼ全部直し、
google等「コードを実際に書いている連中」のルールに従って書けば、そもそも未定義なんて踏まない。
それらはそのように整備されているから。
業務で「コーディングルール無し、警告も全部無視してよし」なんてのはあり得ないし、
仮に個人レベルでそうでもバグが取れなくて無駄に苦労するだけ。
だから結果的に「未定義」なんて気にする必要ないんだよ。
一般的な環境で普通に書いてれば命中しないし、知る必要もない。
一通りも書けない初心者なら特にそう。他にやることはいくらでもある。
君は休日にプログラミングをやろうとしているのだから、本来は「天然」なんだよ。
それを自分で「養殖」型のカリキュラムにして、無駄に上達しにくくなってる。
そこが勿体ない。
君が何の為にCを学ぶのかは知らないが、もっと直接的にその結果を目指すべきだ。
とりあえず学ぼう、では全く上達しないんだよ。
それは日本人の英語でもそうだろ。使わないと上達しないんだよ。
反論自体は自由にやればいいんだよ。それが匿名掲示板のメリットなのだから。
ただ、書かれている内容については吟味しないといけない。
その中には君にも峻別出来る内容もあるはずだから。
(というか、こっちが君にも分かる範囲で《客観的な範囲で》話せばいいのだが)
事実から言うと、C言語は『当初から』バリバリの実用言語であり、今も現役だ。
これは同世代の他言語とは全然違う。
だから、普通に書いてれば「未定義」なんてのに命中するはずがないんだよ。
そんな言語、使い物にならないだろ?
次に、歴史も長いのだから、何をどうやったら嵌るかのノウハウも溜まっている。
それの集大成がコーディングルールであり、例えば goto 禁止論だ。
これについても是非はあるが、これまでの経験をタダで享受する気なら、乗った方が得だ。
そしてそれに従っておけば大体全て「未定義」は回避出来る。
具体的に言えば、警告レベルを一番か二番目に厳しい状態で使って、警告についてはほぼ全部直し、
google等「コードを実際に書いている連中」のルールに従って書けば、そもそも未定義なんて踏まない。
それらはそのように整備されているから。
業務で「コーディングルール無し、警告も全部無視してよし」なんてのはあり得ないし、
仮に個人レベルでそうでもバグが取れなくて無駄に苦労するだけ。
だから結果的に「未定義」なんて気にする必要ないんだよ。
一般的な環境で普通に書いてれば命中しないし、知る必要もない。
一通りも書けない初心者なら特にそう。他にやることはいくらでもある。
君は休日にプログラミングをやろうとしているのだから、本来は「天然」なんだよ。
それを自分で「養殖」型のカリキュラムにして、無駄に上達しにくくなってる。
そこが勿体ない。
君が何の為にCを学ぶのかは知らないが、もっと直接的にその結果を目指すべきだ。
とりあえず学ぼう、では全く上達しないんだよ。
それは日本人の英語でもそうだろ。使わないと上達しないんだよ。
627デフォルトの名無しさん
2018/09/02(日) 13:50:53.63ID:667Fbrpy628デフォルトの名無しさん
2018/09/02(日) 14:03:37.00ID:667Fbrpy >>626
そうですね。
動くプログラムを作っていたらa=a++;なんていう文は登場することはないですね。
お察しの通りプログラマーでもなんでもない独学状態なので,
そういう人間が犯しがちなミスを防ぎたい一心で規格や文法などを厳密に勉強すべきと思っておりました。
C#についてですが,こういう事を素人が言うのはまさに傲慢ですけど,
どうせ勉強するなら万人が使ってる/種々のソフトウェアを作っている標準言語を勉強したいな
と思ったのがきっかけなので,正直C#はあまり乗り気になれません。
そうですね。
動くプログラムを作っていたらa=a++;なんていう文は登場することはないですね。
お察しの通りプログラマーでもなんでもない独学状態なので,
そういう人間が犯しがちなミスを防ぎたい一心で規格や文法などを厳密に勉強すべきと思っておりました。
C#についてですが,こういう事を素人が言うのはまさに傲慢ですけど,
どうせ勉強するなら万人が使ってる/種々のソフトウェアを作っている標準言語を勉強したいな
と思ったのがきっかけなので,正直C#はあまり乗り気になれません。
629デフォルトの名無しさん
2018/09/02(日) 15:19:58.46ID:mdI4MGys >>627
const の役割はその通り、その値を書き換えないことを意思表示するためのもの。
strcpy の引数なんかを見ても分かると思うけど、このように使い分けするだけで関数の入出力もよくわかる。
ケアレスミスで入出力を逆に書いてもコンパイラが指摘してくれる確率が上がるし、コンパイラにとっても最適化のヒントになってる。
でも実際、const皆無のコードも珍しくない。
そんな所に自分だけ const 付けると、余所の関数を呼ぶために意味不明なキャストをするハメになってストレスMAXになる。
ただ厳密に考え出すと、値受けの引数 int x なんかは const int x であるべきでは?なんて思うけど、個人的にはそこまで強要はしなくてもいいかな… なんて思う。
でもポインタ受けの引数 char* p なんかは const char* p にすることを強要したい。
前者について緩いのは、その const はその関数の中の実装を縛るものであり、そんなことは関数の外の世界の人にとってあまり重要ではないから、というのが理由。
const の役割はその通り、その値を書き換えないことを意思表示するためのもの。
strcpy の引数なんかを見ても分かると思うけど、このように使い分けするだけで関数の入出力もよくわかる。
ケアレスミスで入出力を逆に書いてもコンパイラが指摘してくれる確率が上がるし、コンパイラにとっても最適化のヒントになってる。
でも実際、const皆無のコードも珍しくない。
そんな所に自分だけ const 付けると、余所の関数を呼ぶために意味不明なキャストをするハメになってストレスMAXになる。
ただ厳密に考え出すと、値受けの引数 int x なんかは const int x であるべきでは?なんて思うけど、個人的にはそこまで強要はしなくてもいいかな… なんて思う。
でもポインタ受けの引数 char* p なんかは const char* p にすることを強要したい。
前者について緩いのは、その const はその関数の中の実装を縛るものであり、そんなことは関数の外の世界の人にとってあまり重要ではないから、というのが理由。
630デフォルトの名無しさん
2018/09/02(日) 15:26:12.33ID:FVhWhkTR >>628
C#にマイクロソフト性を強く見出しているのか知らんがJDKがゴタついていて.NET Coreが出てマルチプラットフォームで優位性があり、Unityでゲームも作れる
コンピュータを勉強したいならCでいいけどプログラミングを勉強したいならCと比較してもC#は十分万人が使っている標準言語としての地を持つよ
C#にマイクロソフト性を強く見出しているのか知らんがJDKがゴタついていて.NET Coreが出てマルチプラットフォームで優位性があり、Unityでゲームも作れる
コンピュータを勉強したいならCでいいけどプログラミングを勉強したいならCと比較してもC#は十分万人が使っている標準言語としての地を持つよ
631デフォルトの名無しさん
2018/09/02(日) 15:44:37.64ID:Q8aSECkx 組み込みなどの特殊な分野を除けばC言語の方こそ万人向けとは言い難いな
C言語はそれほど広範な分野で利用されるような言語ではないよ
C言語はそれほど広範な分野で利用されるような言語ではないよ
632デフォルトの名無しさん
2018/09/02(日) 16:20:10.20ID:d8qknsqq C言語が使えない環境は少ないけど、かと言ってC言語を積極的に使う必要のある環境も少ない、かな?
でも全ての基本として、低レベルなCを理解しておくのは有意だと思う。
でも全ての基本として、低レベルなCを理解しておくのは有意だと思う。
633デフォルトの名無しさん
2018/09/02(日) 16:34:34.65ID:mdI4MGys C の前にアセンブラやってみるのも悪くないと思うよ。
今はお手軽なワンチップマイコンも多いし。
欲を言えば昔の 8bitパソコンくらいがメモリもそこそこあってちょうどいいし、16bit くらいになるとスタックフレームも使いやすくていいんだけど、今そういうので丁度いいのはあまり無いのが残念なところだけど。
今はお手軽なワンチップマイコンも多いし。
欲を言えば昔の 8bitパソコンくらいがメモリもそこそこあってちょうどいいし、16bit くらいになるとスタックフレームも使いやすくていいんだけど、今そういうので丁度いいのはあまり無いのが残念なところだけど。
634デフォルトの名無しさん
2018/09/02(日) 16:48:06.49ID:owKXNyzr >>628
君が思っているほど言語間の差異はないよ。
とはいえ、本気でコンピューターについて学ぶのならCは外せない。
最初からやる必要があるとは思わないが、それも含めて自由にすればいい。
最初はスクリプト言語(Ruby/Python/JavaScript)の方が上達は速いとは思うが。
>>627
> ggってみたところconstはその重要性の割に実務で使われていない傾向にあるみたいですね。
constもある意味宗教だからね。
使われてない理由は、単に、苦労に見合う結果を得られないからだよ。
Cに関してはconstを積極的に付ける理由もないからね。
C++は参照を導入したからconstを付けないと変更されるかどうかが分かりにくくなった。
Cだとポインタなら変更される(可能性がある)、そうでないなら変更されないと文法的に確定している。
だからgoogleは参照はconst以外禁止、というルールでC相当にしている。
C#では明示的にoutと書いて分かりやすくしている。
constを付けたことによるメリットは、constに対して代入したときにコンパイルエラーになることだが、
そもそもこれがないんだよ。constなんて間違う場所に使うものではない。
(ただし俺はCでストリング操作を積極的にやったことはないので、char*に関しては分からん。
>>629が引っかかっているのもそこだろうし。
とはいえ、世の中はstringはimmutableということでほぼ確定してしまったし、
今更mutableなstringの作法について学ぶ必要もないはずだが)
君が思っているほど言語間の差異はないよ。
とはいえ、本気でコンピューターについて学ぶのならCは外せない。
最初からやる必要があるとは思わないが、それも含めて自由にすればいい。
最初はスクリプト言語(Ruby/Python/JavaScript)の方が上達は速いとは思うが。
>>627
> ggってみたところconstはその重要性の割に実務で使われていない傾向にあるみたいですね。
constもある意味宗教だからね。
使われてない理由は、単に、苦労に見合う結果を得られないからだよ。
Cに関してはconstを積極的に付ける理由もないからね。
C++は参照を導入したからconstを付けないと変更されるかどうかが分かりにくくなった。
Cだとポインタなら変更される(可能性がある)、そうでないなら変更されないと文法的に確定している。
だからgoogleは参照はconst以外禁止、というルールでC相当にしている。
C#では明示的にoutと書いて分かりやすくしている。
constを付けたことによるメリットは、constに対して代入したときにコンパイルエラーになることだが、
そもそもこれがないんだよ。constなんて間違う場所に使うものではない。
(ただし俺はCでストリング操作を積極的にやったことはないので、char*に関しては分からん。
>>629が引っかかっているのもそこだろうし。
とはいえ、世の中はstringはimmutableということでほぼ確定してしまったし、
今更mutableなstringの作法について学ぶ必要もないはずだが)
635デフォルトの名無しさん
2018/09/02(日) 17:06:32.38ID:4Jf6YH6e >>633
まず、エミュレータを作ります。
まず、エミュレータを作ります。
>>626
>君が何の為にCを学ぶのかは知らないが、もっと直接的にその結果を目指すべきだ。
>とりあえず学ぼう、では全く上達しないんだよ。
うーん、これは非常にいい指摘ですね
私は、これに気が付くのにずいぶんと遅くなってしまいました
>君が何の為にCを学ぶのかは知らないが、もっと直接的にその結果を目指すべきだ。
>とりあえず学ぼう、では全く上達しないんだよ。
うーん、これは非常にいい指摘ですね
私は、これに気が付くのにずいぶんと遅くなってしまいました
637デフォルトの名無しさん
2018/09/02(日) 18:34:07.99ID:5WqNet32 素人は技術もないのに、登山で直線的に、絶壁を登ろうとするから失敗する。
勉強のプロは、斜めに進んでいくから、登れる
素人がすぐに思いつくような、直線的な方法をやってもダメ。
全員が失敗してる。
C の授業を受けた、ほとんどの大学生が、こんな授業は無駄・役に立たないと言ってるw
彼らはなぜ、そう言うのか、理由を考えたらよい
C のようなポインタのある言語を、1年勉強しても、
ポインタを追っかけるだけで時間がつぶれるから、何も作れない
その時間で、Ruby/Python/JavaScript の3つの動的言語をやれば、ツールを作れる
まず素人は、動的言語・静的言語・ポインタのある言語の、
位置付けや難易度をわかっていない
勉強のプロは、斜めに進んでいくから、登れる
素人がすぐに思いつくような、直線的な方法をやってもダメ。
全員が失敗してる。
C の授業を受けた、ほとんどの大学生が、こんな授業は無駄・役に立たないと言ってるw
彼らはなぜ、そう言うのか、理由を考えたらよい
C のようなポインタのある言語を、1年勉強しても、
ポインタを追っかけるだけで時間がつぶれるから、何も作れない
その時間で、Ruby/Python/JavaScript の3つの動的言語をやれば、ツールを作れる
まず素人は、動的言語・静的言語・ポインタのある言語の、
位置付けや難易度をわかっていない
638デフォルトの名無しさん
2018/09/02(日) 18:36:32.73ID:xLyKs+8r ポインタってそんなに難しいか?
640デフォルトの名無しさん
2018/09/02(日) 19:00:28.56ID:zPdaUXCQ Cのポインタはシンプルだからわかりやすいと思います
ビット演算のほうが難しいと思います
m = (m & 052525) + ((m & 0125252) >> 1);
m = (m & 031463) + ((m & 0146314) >> 2);
m = (m & 007417) + ((m & 0170360) >> 4);
m = (m & 000377) + ((m & 0177400) >> 8);
ビット演算のほうが難しいと思います
m = (m & 052525) + ((m & 0125252) >> 1);
m = (m & 031463) + ((m & 0146314) >> 2);
m = (m & 007417) + ((m & 0170360) >> 4);
m = (m & 000377) + ((m & 0177400) >> 8);
641デフォルトの名無しさん
2018/09/02(日) 19:30:02.62ID:nnaQ2akS >>640
8進数表記って滅多に使わないから、たまに良かれと思って桁合わせでゼロパディングすると意図せず8進数になって悩むよな。
8進数表記って滅多に使わないから、たまに良かれと思って桁合わせでゼロパディングすると意図せず8進数になって悩むよな。
642デフォルトの名無しさん
2018/09/02(日) 19:43:35.59ID:4Jf6YH6e >>641
あ、それ、30年ぐらい前にハマった。
幸い8や9を使っている所でコンパイルエラーになったからよかったが(それでも当初はなんでエラーになるのかと悩んだがw)、もし使ってなかったらROMに焼いてからターゲットマシンで変な動きになって悩み続けた事だろう。
あ、それ、30年ぐらい前にハマった。
幸い8や9を使っている所でコンパイルエラーになったからよかったが(それでも当初はなんでエラーになるのかと悩んだがw)、もし使ってなかったらROMに焼いてからターゲットマシンで変な動きになって悩み続けた事だろう。
643デフォルトの名無しさん
2018/09/02(日) 22:38:57.74ID:u9h+2eE3 Cが全盛だった時代、否が応でもプログラミングの勉強はCから始めた。
昔の人は理解できて今の人には難しいと考えるのは傲慢ではなかろうか。
ところでアンサイクロペディアのC言語の項が18禁になってるのは全部椋田のせいだな。
昔の人は理解できて今の人には難しいと考えるのは傲慢ではなかろうか。
ところでアンサイクロペディアのC言語の項が18禁になってるのは全部椋田のせいだな。
644デフォルトの名無しさん
2018/09/02(日) 23:21:32.95ID:owKXNyzr >>643
> 昔の人は理解できて今の人には難しいと考えるのは傲慢ではなかろうか。
いや事実だ。理由は単純で、つまりは裾野が広がっているだけなのだが、以下。
1. C言語の難易度自体は昔と同じだが、C言語の問題点を修正したより簡単な言語が開発された。
2. 昔プログラミングをしてたのは理系の大学生/大卒だけだった。
今は文系も含め、しかも中高生から始めようとしている。
数学で培われる論理/抽象思考能力はプログラミングに不可欠なのだが、
これらがまだ整っていない状態の中高生や文系にプログラミングを教えるってのがそもそもの間違い。
どのみち今の状況で計算機科学専攻ならCは必修だろうし、そういう連中には問題ない。
ただ、そうじゃない連中がCをやる必要はないってこと。
Pythonだけで済む世界ならそれもありだ。
> 昔の人は理解できて今の人には難しいと考えるのは傲慢ではなかろうか。
いや事実だ。理由は単純で、つまりは裾野が広がっているだけなのだが、以下。
1. C言語の難易度自体は昔と同じだが、C言語の問題点を修正したより簡単な言語が開発された。
2. 昔プログラミングをしてたのは理系の大学生/大卒だけだった。
今は文系も含め、しかも中高生から始めようとしている。
数学で培われる論理/抽象思考能力はプログラミングに不可欠なのだが、
これらがまだ整っていない状態の中高生や文系にプログラミングを教えるってのがそもそもの間違い。
どのみち今の状況で計算機科学専攻ならCは必修だろうし、そういう連中には問題ない。
ただ、そうじゃない連中がCをやる必要はないってこと。
Pythonだけで済む世界ならそれもありだ。
645デフォルトの名無しさん
2018/09/03(月) 00:24:24.13ID:gEsVL0BV 昔も中高生の頃からプログラミングは始めていたけどな
いわゆるベーマガ世代の年齢層がBASIC やアセンブラからC言語に流入してたので平均的レベルは比較的高かったように思う
いわゆるベーマガ世代の年齢層がBASIC やアセンブラからC言語に流入してたので平均的レベルは比較的高かったように思う
646デフォルトの名無しさん
2018/09/03(月) 00:32:54.22ID:4uYLlRfz 処理目的の抽象度が上がっているという現実もあるからなぁ
647デフォルトの名無しさん
2018/09/03(月) 00:35:18.97ID:wBpew+1c プログラミングの学習は、最初電卓でやってた
ニーモニックが16進表示みたいなやつだったな
それで、ループや分岐、サブルーチンを覚えた
その後は、Z80のアセンブラに移ったっけ
高級言語やりたかったけど、
8ビットのプアなPCしか持ってなかったし
漢字モア使えないPCで漢字ROM買って取付け
漢字非対応のドットインパクトプリンタに
機械語プログラム使って漢字出力してた
ニーモニックが16進表示みたいなやつだったな
それで、ループや分岐、サブルーチンを覚えた
その後は、Z80のアセンブラに移ったっけ
高級言語やりたかったけど、
8ビットのプアなPCしか持ってなかったし
漢字モア使えないPCで漢字ROM買って取付け
漢字非対応のドットインパクトプリンタに
機械語プログラム使って漢字出力してた
648デフォルトの名無しさん
2018/09/03(月) 01:05:18.32ID:co6OAOoM >>645
ベーマガやってた連中はごく一部なのだから一般化するのは無理がある。
そしてそれに対応する連中は、今はもっと増えている。
家にPCがあるのが当たり前の時代だし、IDEも無料、
インターネットでOSSのソース見放題、質問も出来る。
昔の大学生も、大学で初めてプログラミングした連中はCで撃沈してた。
今は昔と比べてIDE等の環境が断然良くなっているが、
大学生の割合が増えた分、大学生の平均的頭は悪くなっている。
(昔は上位1/4が大学生だったが、今は上位1/2で、東京に至っては2/3じゃなかったっけ?
昔だと当然高卒だった連中が大学に行ってるのだから、Fランでは授業が成立しないのも当然)
だから今の「平均的大学生」が大学でプログラミングを始めても、当然Cでは撃沈する。
今の「上位半分の大学=国公立+有名どころ」(=昔の上位1/4の頃の大学生相当)の理系で、
昔の大学生と同様にCで撃沈するはず。
それを文系含めて全員プログラミングをやらせようってのだからかなり無理がある。
とはいえ、個人差の方が大きいし、やるのは自由だ。
ただ、もっといい言語(改良された言語)は沢山あるのだから、無理してCに拘る必要はない。
情報/計算機系はどうしても速度勝負になるから、どのみちCは外せないが。
ベーマガやってた連中はごく一部なのだから一般化するのは無理がある。
そしてそれに対応する連中は、今はもっと増えている。
家にPCがあるのが当たり前の時代だし、IDEも無料、
インターネットでOSSのソース見放題、質問も出来る。
昔の大学生も、大学で初めてプログラミングした連中はCで撃沈してた。
今は昔と比べてIDE等の環境が断然良くなっているが、
大学生の割合が増えた分、大学生の平均的頭は悪くなっている。
(昔は上位1/4が大学生だったが、今は上位1/2で、東京に至っては2/3じゃなかったっけ?
昔だと当然高卒だった連中が大学に行ってるのだから、Fランでは授業が成立しないのも当然)
だから今の「平均的大学生」が大学でプログラミングを始めても、当然Cでは撃沈する。
今の「上位半分の大学=国公立+有名どころ」(=昔の上位1/4の頃の大学生相当)の理系で、
昔の大学生と同様にCで撃沈するはず。
それを文系含めて全員プログラミングをやらせようってのだからかなり無理がある。
とはいえ、個人差の方が大きいし、やるのは自由だ。
ただ、もっといい言語(改良された言語)は沢山あるのだから、無理してCに拘る必要はない。
情報/計算機系はどうしても速度勝負になるから、どのみちCは外せないが。
649デフォルトの名無しさん
2018/09/03(月) 01:20:48.33ID:kJOKS5+S 今の平均的な大学生のレベル低下はゆとり教育の弊害だと思うが
650デフォルトの名無しさん
2018/09/03(月) 01:38:17.54ID:y7r/YW4w https://ja.m.wikipedia.org/wiki/%E3%82%86%E3%81%A8%E3%82%8A%E6%95%99%E8%82%B2
ゆとり教育(ゆとりきょういく)とは、日本において、1980年度(狭義では2002年度以降)から2010年代初期まで実施されていたゆとりある学校を目指した教育のことである。
1980年度から2010年代初期
1980年度から2010年代初期
1980年度から2010年代初期
1980年度から2010年代初期
1980年度から2010年代初期
ゆとり教育(ゆとりきょういく)とは、日本において、1980年度(狭義では2002年度以降)から2010年代初期まで実施されていたゆとりある学校を目指した教育のことである。
1980年度から2010年代初期
1980年度から2010年代初期
1980年度から2010年代初期
1980年度から2010年代初期
1980年度から2010年代初期
651デフォルトの名無しさん
2018/09/03(月) 01:45:48.17ID:dM1zEtwp アセンブラ(マシン語)からやったほうが
イメージしやすいと思うんだけどな。ポインタ周りとか
現代はPythonやC#が潰しが利くから昔でいうCの位置かな
https://cpplover.blogspot.com/2016/05/mitsicp.html
イメージしやすいと思うんだけどな。ポインタ周りとか
現代はPythonやC#が潰しが利くから昔でいうCの位置かな
https://cpplover.blogspot.com/2016/05/mitsicp.html
652デフォルトの名無しさん
2018/09/03(月) 02:48:03.81ID:WkDP4f9E みなさんほんとうに色々な助言ありがとうございます。
目的はなにかといいますと,ゲームを作りたいのではなく,むしろ計算機の仕組みなどを学びたいと思っています。
やっぱり始めはPythonのほうがいいんですかね……。
(ちなみにガッツりゆとり世代です。中学あたりで土曜日通学が復活したかな?)
目的はなにかといいますと,ゲームを作りたいのではなく,むしろ計算機の仕組みなどを学びたいと思っています。
やっぱり始めはPythonのほうがいいんですかね……。
(ちなみにガッツりゆとり世代です。中学あたりで土曜日通学が復活したかな?)
653デフォルトの名無しさん
2018/09/03(月) 05:37:12.02ID:WkDP4f9E 調べただけですがRustもよさげですね。私が学びたいと思っている計算機の基礎的な部分に触れられると同時に
C99では非常に複雑で非本質的な努力を要求される,安全なメモリ管理やUnicodeに対応した文字列操作が
簡単に実現できるというのは魅力的です。また,Mozilla社が主導しているというのも好印象です。
難点は,かなり新規の言語なので,Cほど開発手法が洗練されておらず,
またコンパイラの実装が一つしかないことですかね。
しかし開発版ながらRust製のOSもあるようですし,私がCを通じて得たいなと思っていた知見や概念を
Cほど紆余曲折を経ずに取得できそうです。(学問に王道なしとは言いますがね……)
これ以上は(というか既に大分)スレチになってしまうので書き込むのはやめます
青二才に貴重な時間を割いて様々な助言を頂いたこと,ほんとうに感謝しています。
C99では非常に複雑で非本質的な努力を要求される,安全なメモリ管理やUnicodeに対応した文字列操作が
簡単に実現できるというのは魅力的です。また,Mozilla社が主導しているというのも好印象です。
難点は,かなり新規の言語なので,Cほど開発手法が洗練されておらず,
またコンパイラの実装が一つしかないことですかね。
しかし開発版ながらRust製のOSもあるようですし,私がCを通じて得たいなと思っていた知見や概念を
Cほど紆余曲折を経ずに取得できそうです。(学問に王道なしとは言いますがね……)
これ以上は(というか既に大分)スレチになってしまうので書き込むのはやめます
青二才に貴重な時間を割いて様々な助言を頂いたこと,ほんとうに感謝しています。
654デフォルトの名無しさん
2018/09/03(月) 07:47:15.40ID:Sux6qqaT 別にCでいいと思うよ。
ただ何使うにしても、画面表示とかができないとモチベーション上がらないかもね。
GUIとまではいかなくてもコンソール上にテキストで簡易グラフィックくらいやらないと、動いてる様を眺める楽しみが半減だ。
エスケープシーケンスとかを一緒に勉強するといいかもな。
とりあえずライフゲームでも作って眺めてみたら。
ただ何使うにしても、画面表示とかができないとモチベーション上がらないかもね。
GUIとまではいかなくてもコンソール上にテキストで簡易グラフィックくらいやらないと、動いてる様を眺める楽しみが半減だ。
エスケープシーケンスとかを一緒に勉強するといいかもな。
とりあえずライフゲームでも作って眺めてみたら。
655デフォルトの名無しさん
2018/09/03(月) 08:01:08.87ID:gEsVL0BV まあ手っ取り早くプログラミング全般を眺めるならマルチパラダイムの言語を最初に学ぶのも悪くはないと思うよ
手続き型、オブジェクト指向、関数型のマルチパラダイムなら、他にはC#やJavaScriptなどが環境が充実してるので手軽ではあるけどね
手続き型、オブジェクト指向、関数型のマルチパラダイムなら、他にはC#やJavaScriptなどが環境が充実してるので手軽ではあるけどね
656デフォルトの名無しさん
2018/09/03(月) 08:20:45.29ID:/AUwjj56 計算機の仕組み、つまりコンピュータの動作原理を学ぶならアセンブラだろうけど、普通のOSのAPIはCなので、やっぱりC言語を勉強するのはベストプラクティスだろうね。
PythonだったりC#だったりはプログラミングは習得できても動作原理は深く学べない。
果たしてC#等の高級言語しか使えない人の何割が割り込みやCPU動作モードやSFRについて正確に理解してるのやら。
PythonだったりC#だったりはプログラミングは習得できても動作原理は深く学べない。
果たしてC#等の高級言語しか使えない人の何割が割り込みやCPU動作モードやSFRについて正確に理解してるのやら。
657デフォルトの名無しさん
2018/09/03(月) 08:30:03.31ID:4uYLlRfz >>653
Rustの方が細かなノウハウでコケずにコンパイラが指摘してくれるというのはあるが今の目的ならCの方が素直でいいと思う
実機の動きを追える上に色々な機能が付いていて嬉しいという言語なので覚える事が滅茶苦茶多いよ
Rustの方が細かなノウハウでコケずにコンパイラが指摘してくれるというのはあるが今の目的ならCの方が素直でいいと思う
実機の動きを追える上に色々な機能が付いていて嬉しいという言語なので覚える事が滅茶苦茶多いよ
658デフォルトの名無しさん
2018/09/03(月) 09:18:58.58ID:co6OAOoM >>652
中高生なら学校の勉強しとけ。結果的にそっちの方が近道だから。
プログラミングは抽象思考が出来て自分でサイクルを回せる奴しか上達しない。
具体的に言うと、「○○→△△って事は●●→▲▲ってことだろ。
ならここをこう改造すればこうなるはず…ビンゴだぜ!俺って頭イー」
を『自分だけ』で勝手に繰り返せる奴だ。(β)
学校の教科でこれに最も近いのは物理で、次点で数学だ。
だからこのタイプの奴は物理と数学は『本人は特に努力した覚えが無くとも』無双出来る。
逆に言えば、そうなっていない奴は本質的にプログラミングに向いてない。
その場合は、そもそもプログラミングをやるべきではないと俺は思っているが、
それでもやるのなら、まず物理と数学の『勉強の仕方』を変えて『抽象思考』を身につけるべきだ。
(単に勉強するだけなら『暗記』でも一定まではカバー出来てしまうが、それでは意味がない)
プログラミングを始める前に、プログラミングが上達する基礎能力としての抽象思考を身につけないといけない。
次に、既にこれが出来ていたとすると、
教科自体の内容はプログラミングには直接は関係ないから、中高生でも出来るのは事実だ。
(ここら辺のことをわきまえず、『中高生でも出来る』とだけ見て全員に教えようとしてるから問題がある。
とはいえ、主導している馬鹿共はプログラミングが出来ない連中だから、話が通じないのも当然だが)
仮に君がここまでは到達しているとして、話を進めると、以下になる。
> むしろ計算機の仕組みなどを学びたい
現状、C以外に選択肢はない。
> Rust
止めとけ。今のRustはプログラミング初心者用には出来てない。C以上に確実に撃沈する。
> Python
海外では「関数呼び出し、ループ、条件分岐」等の基礎の基礎を学ぶのなら一番早いと言われている。
現実的にはAWK/Perl/Ruby/JavaScript等いわゆるスクリプト言語全般は全てこれに当てはまるが。
ただ、上記の「プログラミングが上達出来る奴」ならこの部分は数日〜数週間で通過してしまう為、
言うほど関係ない。「初心者ならどの言語でも同じ」とよく言われているのはこれ。
中高生なら学校の勉強しとけ。結果的にそっちの方が近道だから。
プログラミングは抽象思考が出来て自分でサイクルを回せる奴しか上達しない。
具体的に言うと、「○○→△△って事は●●→▲▲ってことだろ。
ならここをこう改造すればこうなるはず…ビンゴだぜ!俺って頭イー」
を『自分だけ』で勝手に繰り返せる奴だ。(β)
学校の教科でこれに最も近いのは物理で、次点で数学だ。
だからこのタイプの奴は物理と数学は『本人は特に努力した覚えが無くとも』無双出来る。
逆に言えば、そうなっていない奴は本質的にプログラミングに向いてない。
その場合は、そもそもプログラミングをやるべきではないと俺は思っているが、
それでもやるのなら、まず物理と数学の『勉強の仕方』を変えて『抽象思考』を身につけるべきだ。
(単に勉強するだけなら『暗記』でも一定まではカバー出来てしまうが、それでは意味がない)
プログラミングを始める前に、プログラミングが上達する基礎能力としての抽象思考を身につけないといけない。
次に、既にこれが出来ていたとすると、
教科自体の内容はプログラミングには直接は関係ないから、中高生でも出来るのは事実だ。
(ここら辺のことをわきまえず、『中高生でも出来る』とだけ見て全員に教えようとしてるから問題がある。
とはいえ、主導している馬鹿共はプログラミングが出来ない連中だから、話が通じないのも当然だが)
仮に君がここまでは到達しているとして、話を進めると、以下になる。
> むしろ計算機の仕組みなどを学びたい
現状、C以外に選択肢はない。
> Rust
止めとけ。今のRustはプログラミング初心者用には出来てない。C以上に確実に撃沈する。
> Python
海外では「関数呼び出し、ループ、条件分岐」等の基礎の基礎を学ぶのなら一番早いと言われている。
現実的にはAWK/Perl/Ruby/JavaScript等いわゆるスクリプト言語全般は全てこれに当てはまるが。
ただ、上記の「プログラミングが上達出来る奴」ならこの部分は数日〜数週間で通過してしまう為、
言うほど関係ない。「初心者ならどの言語でも同じ」とよく言われているのはこれ。
659デフォルトの名無しさん
2018/09/03(月) 09:19:38.61ID:co6OAOoM 例えば体育、運動神経のいい奴は何をやってもそこそこ上手いし、一瞬で上達するだろ。
あれと同じで、「プログラミング神経」のいい奴はどの言語でも上手く行くし、すぐ上達するんだよ。
だから言語自体よりは「プログラミング神経」としての『抽象思考』能力の方が重要なんだよ。
そしてそれがない奴が頑張ってみたところで、
ちょっと運動神経のいいやつが遊びでやってるのを見たらスゲー上手くて萎える、みたいなことになる。
だから本当は基礎能力としての抽象思考を鍛えることが重要で、プログラミングの上達はその結果にすぎない。
そこを「プログラミングを『教えれば』上達する」と勘違いしている馬鹿が色々やろうとしてるからおかしなことになってる。
『教えれば』上達するのは暗記科目であって、
上達する状況を整えた上で『勝手にやらせる』と自然と上達するのが非暗記科目だ。
で、言っちゃ悪いが君は多分「抽象思考」型ではなく、「暗記」型だ。enumして全潰しというのがそれ。
君は本質的にプログラミングに向いてないタイプだと思うぞ。
教科の延長でプログラミングを学びたいと思ってるのなら止めとけ。
上記(β)タイプは主に一点突破で、むしろ勝手に突っ込んでいって自爆するのが多い。
最近出てきたのはGateboxだが、いい感じに突き抜けてるだろ。
https://gatebox.ai/home/
http://www.itmedia.co.jp/news/articles/1612/14/news092.html
こういうことを平気で出来る奴じゃないと上達しない。
君にはその臭いを感じない。
あれと同じで、「プログラミング神経」のいい奴はどの言語でも上手く行くし、すぐ上達するんだよ。
だから言語自体よりは「プログラミング神経」としての『抽象思考』能力の方が重要なんだよ。
そしてそれがない奴が頑張ってみたところで、
ちょっと運動神経のいいやつが遊びでやってるのを見たらスゲー上手くて萎える、みたいなことになる。
だから本当は基礎能力としての抽象思考を鍛えることが重要で、プログラミングの上達はその結果にすぎない。
そこを「プログラミングを『教えれば』上達する」と勘違いしている馬鹿が色々やろうとしてるからおかしなことになってる。
『教えれば』上達するのは暗記科目であって、
上達する状況を整えた上で『勝手にやらせる』と自然と上達するのが非暗記科目だ。
で、言っちゃ悪いが君は多分「抽象思考」型ではなく、「暗記」型だ。enumして全潰しというのがそれ。
君は本質的にプログラミングに向いてないタイプだと思うぞ。
教科の延長でプログラミングを学びたいと思ってるのなら止めとけ。
上記(β)タイプは主に一点突破で、むしろ勝手に突っ込んでいって自爆するのが多い。
最近出てきたのはGateboxだが、いい感じに突き抜けてるだろ。
https://gatebox.ai/home/
http://www.itmedia.co.jp/news/articles/1612/14/news092.html
こういうことを平気で出来る奴じゃないと上達しない。
君にはその臭いを感じない。
660デフォルトの名無しさん
2018/09/03(月) 09:45:55.75ID:XmaAZlOW https://ja.m.wikipedia.org/wiki/%E3%82%86%E3%81%A8%E3%82%8A%E4%B8%96%E4%BB%A3
ゆとり世代
ゆとり世代(ゆとりせだい)とは、ゆとり教育(ゆとりきょういく)を受けた世代のこと。
定義・範囲
ゆとり世代については明確な定義、範囲はなく諸説ある。
・小中学校において2002年度施行(高等学校は2003年度)の学習指導要領による教育を受けた世代(1987年4月2日 - 2004年4月1日生まれ)。
・小中学校において1980年度以降(高等学校は1982年度以降)の学習指導要領による教育を受けた世代。1966年度生まれ以降。
ゆとり世代
ゆとり世代(ゆとりせだい)とは、ゆとり教育(ゆとりきょういく)を受けた世代のこと。
定義・範囲
ゆとり世代については明確な定義、範囲はなく諸説ある。
・小中学校において2002年度施行(高等学校は2003年度)の学習指導要領による教育を受けた世代(1987年4月2日 - 2004年4月1日生まれ)。
・小中学校において1980年度以降(高等学校は1982年度以降)の学習指導要領による教育を受けた世代。1966年度生まれ以降。
661デフォルトの名無しさん
2018/09/03(月) 09:58:26.53ID:udP6IpNT やっぱりプログラミングより数学の勉強の方が全然大事だと思うわ
無駄な時間を過ごしたおっさんの後悔からの発言だけど
若者は線形代数と物理いっぱいやった方がいいよ
無駄な時間を過ごしたおっさんの後悔からの発言だけど
若者は線形代数と物理いっぱいやった方がいいよ
662デフォルトの名無しさん
2018/09/03(月) 11:14:17.43ID:sjKCXLyo BIOSの割り込みサービスで画面に文字表示するやつよんだらどうなりますか?
663デフォルトの名無しさん
2018/09/03(月) 11:36:38.73ID:CjQwreEv >>653
これでも買っとけ
70年代のTRPGの生の感触がばりばり伝わってくるAD&Dの本
コンパイラ―原理・技法・ツール (Information & Computing) | A.V. エイホ, R. セシィ, J.D. ウルマン, M.S. ラム, Alfred V. Aho, Jeffery D. Ullman, Ravi Sethi, Monica S. Lam, 原田 賢一 |本 | 通販 | Amazon
https://www.amazon.co.jp/dp/478191229X
これでも買っとけ
70年代のTRPGの生の感触がばりばり伝わってくるAD&Dの本
コンパイラ―原理・技法・ツール (Information & Computing) | A.V. エイホ, R. セシィ, J.D. ウルマン, M.S. ラム, Alfred V. Aho, Jeffery D. Ullman, Ravi Sethi, Monica S. Lam, 原田 賢一 |本 | 通販 | Amazon
https://www.amazon.co.jp/dp/478191229X
664デフォルトの名無しさん
2018/09/03(月) 13:23:16.40ID:G6xL0gpW これは表紙買いしてしまう
665デフォルトの名無しさん
2018/09/03(月) 17:00:11.86ID:fBv9u5Bm666デフォルトの名無しさん
2018/09/03(月) 17:42:03.71ID:kgEYN356 そんなに気になるならコンパイラを読めば良い
コンパイラを読まずにああだこうだと言ってそれを学問と言い張るのは今更ニーチェを読んで学問と言い張っているのと似ている
コンパイラを読まずにああだこうだと言ってそれを学問と言い張るのは今更ニーチェを読んで学問と言い張っているのと似ている
667デフォルトの名無しさん
2018/09/03(月) 18:03:25.66ID:bm6csMD2 ゲームブックの訳本かしら
668デフォルトの名無しさん
2018/09/03(月) 18:07:52.25ID:fBv9u5Bm しどろもどろの典型だな
669デフォルトの名無しさん
2018/09/03(月) 18:26:17.33ID:ttVcJTrG 組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006
この本は、日本の大企業から、C の専門家が数十人集まって作った。
この100ルールまで行かないと、教えられない
汎整数拡張・副作用完了点・短絡評価・bool とか、各概念が難しい。
とても初心者に教えられない
特に学生なんて、現実を知らないから、文法があっていれば正しいと思う、
固定概念があるから成長できない
現実には、MISRA-C、100ルールに従わないと話にならない。
学生にはそういう事はわからないから、アホみたいなコードを書く
コードは、正しい文法で書いても、ダメだから。
可読性・保守性・バグを起こさない、Ruby みたいなコーディングが大切
だから、Rubyでプログラミング学ぶのが大切。
学ぶのは文法規則じゃない!
システムを作る・保守するためのプログラミング!
この本は、日本の大企業から、C の専門家が数十人集まって作った。
この100ルールまで行かないと、教えられない
汎整数拡張・副作用完了点・短絡評価・bool とか、各概念が難しい。
とても初心者に教えられない
特に学生なんて、現実を知らないから、文法があっていれば正しいと思う、
固定概念があるから成長できない
現実には、MISRA-C、100ルールに従わないと話にならない。
学生にはそういう事はわからないから、アホみたいなコードを書く
コードは、正しい文法で書いても、ダメだから。
可読性・保守性・バグを起こさない、Ruby みたいなコーディングが大切
だから、Rubyでプログラミング学ぶのが大切。
学ぶのは文法規則じゃない!
システムを作る・保守するためのプログラミング!
670669
2018/09/03(月) 18:34:29.69ID:ttVcJTrG Ruby の女神・女優の池澤あやかも、同じことを言ってる。
慶応大学卒だけど、大学で、C の授業は無意味だって
山陰地方のRuby合宿へ行って、webアプリが作れるようになった
Cの開発時間の大半が、ポインタ・バグでつぶれるから、プログラミングを学べない。
文法がわかるだけで、ものを作れないから楽しくない
だから、Cの授業の評判が悪い。
無意味な授業だよなって
だから初心者は、Rubyから初めて、まず動くものを作る
慶応大学卒だけど、大学で、C の授業は無意味だって
山陰地方のRuby合宿へ行って、webアプリが作れるようになった
Cの開発時間の大半が、ポインタ・バグでつぶれるから、プログラミングを学べない。
文法がわかるだけで、ものを作れないから楽しくない
だから、Cの授業の評判が悪い。
無意味な授業だよなって
だから初心者は、Rubyから初めて、まず動くものを作る
671デフォルトの名無しさん
2018/09/03(月) 18:58:25.85ID:LFbByM25 最初の質問者は計算機の仕組みを知りたいのであってWebアプリを作りたいわけでもMISRA Cルールを知りたいわけでもない件
672デフォルトの名無しさん
2018/09/03(月) 20:30:15.22ID:E2St7m4+ 典型的な超頭悪そうなヤツラが
ひたすら長文連投してる
ひたすら長文連投してる
673デフォルトの名無しさん
2018/09/03(月) 20:31:53.98ID:zLYH5Np3 >>670
またrubyガイジかよ。Cスレにまで出張ってくるななよ
またrubyガイジかよ。Cスレにまで出張ってくるななよ
674デフォルトの名無しさん
2018/09/03(月) 20:35:14.84ID:i7qE7EE1 >>672
そのまんまお前の事だ
そのまんまお前の事だ
675デフォルトの名無しさん
2018/09/03(月) 21:07:08.36ID:e7RcTinN >>674
???
???
676デフォルトの名無しさん
2018/09/03(月) 21:32:03.32ID:i7qE7EE1 半角バカを知らないのか
677デフォルトの名無しさん
2018/09/03(月) 23:39:43.07ID:e7RcTinN あいつか
678デフォルトの名無しさん
2018/09/04(火) 00:25:08.00ID:Ilbb7rlr とりあえずPCCでも読んでみることにします。
679デフォルトの名無しさん
2018/09/04(火) 00:45:19.60ID:LzYZ2uc7 Cのスレに不毛な喧嘩売ってくるのは大体Cで挫折して、
劣等感を何とか慰めようとするカーミング行動だから気にするな
劣等感を何とか慰めようとするカーミング行動だから気にするな
680デフォルトの名無しさん
2018/09/04(火) 00:47:45.68ID:oF8LgJEj >>669的にはコンピュータのしくみはどうでもいいってこと?
681デフォルトの名無しさん
2018/09/04(火) 06:21:50.26ID:4a01gUXa >>663 にある本の紹介文なのか宣伝コピーなのか、
「70年代のTRPGの生の感触がばりばり伝わってくるAD&Dの本」て部分を
どう解釈したら良いのか分からないのだ。
Cや「ドラゴン・ブック」、TRPG, AD&D って言葉くらいは知ってる者に
解題してくれないか。
ひどく野暮な質問かも知れないけど、聞くは一時の恥とか言うし、敢えて頼む。
「70年代のTRPGの生の感触がばりばり伝わってくるAD&Dの本」て部分を
どう解釈したら良いのか分からないのだ。
Cや「ドラゴン・ブック」、TRPG, AD&D って言葉くらいは知ってる者に
解題してくれないか。
ひどく野暮な質問かも知れないけど、聞くは一時の恥とか言うし、敢えて頼む。
682デフォルトの名無しさん
2018/09/04(火) 08:45:47.28ID:HIB3dDVe >むしろ計算機の仕組みなどを学びたいと思っています。
それなら情報処理の基礎なんかをやった方が良い様な気がする
今は基本情報処理とか言うんだっけか?
資格とかのやつよ
それなら情報処理の基礎なんかをやった方が良い様な気がする
今は基本情報処理とか言うんだっけか?
資格とかのやつよ
683デフォルトの名無しさん
2018/09/04(火) 14:29:38.61ID:Ilbb7rlr 向いてないっすか……。正直物理や数学は得意なほうなんですがね……。
684デフォルトの名無しさん
2018/09/04(火) 14:48:39.41ID:0ItemGYT >>683
高齢者はマウンティングする病にかかりがちなので気にすんなよ
高齢者はマウンティングする病にかかりがちなので気にすんなよ
685デフォルトの名無しさん
2018/09/04(火) 15:15:50.63ID:FJBPHmlL >>653
武内覚さんのLinuxの仕組み片手にCやるのがおすすめ
ファイルIOとかなら、システムコール、VFS、FS、Raid、デバドラ、スケジューラー、SCSiまでユーザーランドからデバイスまで一貫して、かつお手軽に触れる
武内覚さんのLinuxの仕組み片手にCやるのがおすすめ
ファイルIOとかなら、システムコール、VFS、FS、Raid、デバドラ、スケジューラー、SCSiまでユーザーランドからデバイスまで一貫して、かつお手軽に触れる
686デフォルトの名無しさん
2018/09/04(火) 16:39:04.23ID:gZnu4stV cの文法で書けるだけの
無能を自覚できてない低学歴知恵遅れの高齢底辺ITどかたに多い
無能を自覚できてない低学歴知恵遅れの高齢底辺ITどかたに多い
687デフォルトの名無しさん
2018/09/04(火) 17:30:33.56ID:DgdW8Zal お。半角文字の入ってない書き込みを久しぶりに見たような気がする。
688デフォルトの名無しさん
2018/09/04(火) 17:53:50.88ID:gZnu4stV 底辺ITドカタさんたちは
今日みたいな台風の日も自宅待機ではなく
出勤でしたか
大変でしたね
今日みたいな台風の日も自宅待機ではなく
出勤でしたか
大変でしたね
689デフォルトの名無しさん
2018/09/04(火) 18:52:18.48ID:Yl2cIsi8 台風で東海道線や環状線が止まるのはまあ想定内だったが阪急や京阪まで止まるのは想定外だったわ
690デフォルトの名無しさん
2018/09/04(火) 20:17:15.30ID:tpLBdVu4 >>683
数学が得意なら諦めるのはまだ早い
数学が得意なら諦めるのはまだ早い
691デフォルトの名無しさん
2018/09/04(火) 20:22:39.67ID:GSpvNdv5 やっぱワンチップマイコンでアセンブラがいいよ。
クリスマスに向けてLEDチカチカさせてジングルベルでも鳴らしてみるとかどうよ。
クリスマスに向けてLEDチカチカさせてジングルベルでも鳴らしてみるとかどうよ。
692デフォルトの名無しさん
2018/09/04(火) 20:27:34.18ID:bz6n3SY3 ジングルベルはJasracフリーだな、心配ない
693デフォルトの名無しさん
2018/09/04(火) 21:12:38.21ID:nrC4An0b ロジアナがあればベストだが無ければせめてオシロは欲しいな
694デフォルトの名無しさん
2018/09/04(火) 21:54:25.98ID:Uy+TuYSZ >>683
向いていないね。それは臭いから分かる。お前は本当の「天然」ではない。
以下参考だが、結局中身は同じだ。
> 一撃必殺!急にマンガ家だの声優だの絵師だのになりたいと言い出した子どもや大人を止める、オススメの方法
> https://togetter.com/li/1130025
今はプログラミングなんて本当に簡単に始められる。そのレベルでグダグダ質問している時点で向いてない。
本当の「天然」なら、もう既にとりあえず何かしらのコードを書いてる。
お前は勉強しないと何も出来ないと考えている「いい子ちゃん」タイプだ。
そういう奴は自分でサイクルを回せず(=暴走出来ない)、上手くなれない。
無理してプログラマになっても、後輩に簡単に抜かれ、馬鹿にされる、悲惨な人生になるぞ。止めとけ。
(ここ見るだけでも老害を馬鹿にしたがっている奴はいくらでもいるのが分かるだろ)
ベーマガ世代だって理解してやっていたわけではない。やりたくてやってただけだ。
先に数学をやった方が効率が良かったはずだが、そんな事は考えてもいない。
お前は、サッカーをやる前に、筋トレして体幹も作り上げ、万全の状態にしようとしている。
勿論そういうのもありだが、それはやはり「養殖」なんだよ。
「天然」はそうじゃない。サッカーをしながら、もっと上手くなりたいから筋トレして体幹も作っていく。
好きだから続けられるし、環境が多少酷くても我慢出来る。(これがIT産業がブラック化しやすい遠因にもなってる)
そういう「天然」向け仕様の環境で、「養殖」では悲惨なことになる。
(勿論、プログラミングをやってみてから好きになる、というのもありだが、それはかなり少数派だと思う)
向いてる/向いてないで言えば、
ちょっとコードを書けるようになって調子に乗ってここで俺ツエーしている馬鹿共の方が向いてると言える。
向いていないね。それは臭いから分かる。お前は本当の「天然」ではない。
以下参考だが、結局中身は同じだ。
> 一撃必殺!急にマンガ家だの声優だの絵師だのになりたいと言い出した子どもや大人を止める、オススメの方法
> https://togetter.com/li/1130025
今はプログラミングなんて本当に簡単に始められる。そのレベルでグダグダ質問している時点で向いてない。
本当の「天然」なら、もう既にとりあえず何かしらのコードを書いてる。
お前は勉強しないと何も出来ないと考えている「いい子ちゃん」タイプだ。
そういう奴は自分でサイクルを回せず(=暴走出来ない)、上手くなれない。
無理してプログラマになっても、後輩に簡単に抜かれ、馬鹿にされる、悲惨な人生になるぞ。止めとけ。
(ここ見るだけでも老害を馬鹿にしたがっている奴はいくらでもいるのが分かるだろ)
ベーマガ世代だって理解してやっていたわけではない。やりたくてやってただけだ。
先に数学をやった方が効率が良かったはずだが、そんな事は考えてもいない。
お前は、サッカーをやる前に、筋トレして体幹も作り上げ、万全の状態にしようとしている。
勿論そういうのもありだが、それはやはり「養殖」なんだよ。
「天然」はそうじゃない。サッカーをしながら、もっと上手くなりたいから筋トレして体幹も作っていく。
好きだから続けられるし、環境が多少酷くても我慢出来る。(これがIT産業がブラック化しやすい遠因にもなってる)
そういう「天然」向け仕様の環境で、「養殖」では悲惨なことになる。
(勿論、プログラミングをやってみてから好きになる、というのもありだが、それはかなり少数派だと思う)
向いてる/向いてないで言えば、
ちょっとコードを書けるようになって調子に乗ってここで俺ツエーしている馬鹿共の方が向いてると言える。
695デフォルトの名無しさん
2018/09/04(火) 21:55:26.59ID:Uy+TuYSZ 今はプログラミングの裾野が広がって、絶対的な人数が全く足りてない。
だから文系をSEとして大量投入してみたものの、いい結果がでたとは言いがたい状況だ。
それで次は「小学生からプログラミングを教える」「国民全員がプログラミング出来るように」
みたいなアホなことをやろうとしているのだが、これは完全に愚策だ。
プログラミング出来ない/したこと無い奴らが仕切ってるからおかしなことになってる。
それにお前がつき合う必要はない。
教育改革ってのは取り返しが付かない人体実験になるから、性急にやっては駄目なんだ。
この認識すらなくゆとり教育を導入した文化省の連中は、
今からでも全員死刑に処すべきだと俺は思っている。
(それくらい罪深いし、社会に対して悪影響を及ぼしている。日本はミスリードに甘すぎだ)
今の「小学生からプログラミング」についてはどうやらお遊び程度だからまあいい。
やるにしても当初はこの程度で様子見しながら拡大するか取りやめるか試すべきなのさ。
(俺は意味無いから止めろと思っているが)
今時PCもスマホもない家なんて珍しいだろ。
なら初心者用のプログラミング環境はすぐに整えられるし、勝手に始められる。
だからそのレベルでこんな所に質問してる時点で間違ってる。
天然:何故プログラミングをするのか?そこにPCがあるからだ (単にいじくり回したいだけ)
幼稚園児:ケーキ屋さんになりたい!(だってケーキ大好きだしもっと食べたいから)
お前には幼稚園児が「ケーキ屋さんになりたい!だってお金儲かるし!」
みたいな事を言っている違和感がある。
初心者の癖に計画しすぎだ。必要があって否応なしに始めるわけでも無し、意味不明すぎる。
そういう奴も中にはいるのかもしれないけどさ。
ただ、確実に言えるのは、プログラミング界隈は良くも悪くも全般的にギーク向けに出来上がってる。
お前がギークになりきれないのなら、ずっとアウェイのままだ。
それは幸せなことではないと思うよ。
だから文系をSEとして大量投入してみたものの、いい結果がでたとは言いがたい状況だ。
それで次は「小学生からプログラミングを教える」「国民全員がプログラミング出来るように」
みたいなアホなことをやろうとしているのだが、これは完全に愚策だ。
プログラミング出来ない/したこと無い奴らが仕切ってるからおかしなことになってる。
それにお前がつき合う必要はない。
教育改革ってのは取り返しが付かない人体実験になるから、性急にやっては駄目なんだ。
この認識すらなくゆとり教育を導入した文化省の連中は、
今からでも全員死刑に処すべきだと俺は思っている。
(それくらい罪深いし、社会に対して悪影響を及ぼしている。日本はミスリードに甘すぎだ)
今の「小学生からプログラミング」についてはどうやらお遊び程度だからまあいい。
やるにしても当初はこの程度で様子見しながら拡大するか取りやめるか試すべきなのさ。
(俺は意味無いから止めろと思っているが)
今時PCもスマホもない家なんて珍しいだろ。
なら初心者用のプログラミング環境はすぐに整えられるし、勝手に始められる。
だからそのレベルでこんな所に質問してる時点で間違ってる。
天然:何故プログラミングをするのか?そこにPCがあるからだ (単にいじくり回したいだけ)
幼稚園児:ケーキ屋さんになりたい!(だってケーキ大好きだしもっと食べたいから)
お前には幼稚園児が「ケーキ屋さんになりたい!だってお金儲かるし!」
みたいな事を言っている違和感がある。
初心者の癖に計画しすぎだ。必要があって否応なしに始めるわけでも無し、意味不明すぎる。
そういう奴も中にはいるのかもしれないけどさ。
ただ、確実に言えるのは、プログラミング界隈は良くも悪くも全般的にギーク向けに出来上がってる。
お前がギークになりきれないのなら、ずっとアウェイのままだ。
それは幸せなことではないと思うよ。
696デフォルトの名無しさん
2018/09/04(火) 22:38:39.94ID:l07xjkBV おいら頭悪いから長い文章よめねんだ
697デフォルトの名無しさん
2018/09/04(火) 22:49:40.55ID:CWUYudxX 今北産業
698デフォルトの名無しさん
2018/09/04(火) 23:00:09.15ID:8Afhx4Yo >>696
周りに迷惑かけない分、頭の悪い長文書く奴より立派だから安心しよう
周りに迷惑かけない分、頭の悪い長文書く奴より立派だから安心しよう
699デフォルトの名無しさん
2018/09/04(火) 23:14:17.99ID:gZnu4stV オレみたいに的確に要点をまとめてる長文なら読める
低学歴知恵遅れの長文は読めるシロモノじゃないからな
文章だけで低学歴知恵遅れかどうかは
簡単に判別できる
このスレに連投されてる長文の駄文は
低学歴知恵遅れが記述したと推認することに疑いの余地がない
低学歴知恵遅れの長文は読めるシロモノじゃないからな
文章だけで低学歴知恵遅れかどうかは
簡単に判別できる
このスレに連投されてる長文の駄文は
低学歴知恵遅れが記述したと推認することに疑いの余地がない
700デフォルトの名無しさん
2018/09/04(火) 23:17:12.74ID:Yl2cIsi8 必要なら数学の知識などなくても感覚で覚えるからな
座標計算の必要があれば三角関数など知らない小中学生でもsinやcosくらいは使う
座標計算の必要があれば三角関数など知らない小中学生でもsinやcosくらいは使う
>>700
小中学生に三角関数は無理でしょう…まず相似の概念を習うのが中学2〜3年くらいなのでは?
小中学生に三角関数は無理でしょう…まず相似の概念を習うのが中学2〜3年くらいなのでは?
702デフォルトの名無しさん
2018/09/04(火) 23:31:24.63ID:dqoEXQdt 数学は教科書で勉強しないとあかんよ
経験で得た知識なんてただの思いこみ
経験で得た知識なんてただの思いこみ
703デフォルトの名無しさん
2018/09/04(火) 23:46:19.73ID:Yl2cIsi8 思い込みでも何でも使っているうちに覚える
自分の場合は30年以上前中学生の頃に画像処理のプログラミングしている間に三角関数(といってもX座標はcos、Y座標はsinといった程度)や
論理演算(RGBの合成はOR、反転はXORなど)を覚えた
その後になって高校の頃に教科書でまともに学んだ覚えがある
自分の場合は30年以上前中学生の頃に画像処理のプログラミングしている間に三角関数(といってもX座標はcos、Y座標はsinといった程度)や
論理演算(RGBの合成はOR、反転はXORなど)を覚えた
その後になって高校の頃に教科書でまともに学んだ覚えがある
704デフォルトの名無しさん
2018/09/05(水) 00:03:44.17ID:ElSUubWJ >>701
三角関数が何なのかは分からなくても、sin と cos を使うだけなら小学生でも定型文的に覚えちゃうんじゃね(おれは中学の頃だったが)。
円を描くところから始まり、直径を変化させると渦巻きにできたり位相や周期を変えて橢円やらリサージュになることに気付いたりで、
パラメータをやみくもに変えて手探りで欲しい結果にたどり着くようになる。
もちろん円的な動きの元ネタは必要で、ベーマガみたいなののコードをパクって出発だな。
小学生の頃はファミリーベーシックだったので三角関数には行き着かず、中学生でMSXになって三角関数に出会ったが、小学生の頃にMSXがあれば手を出してたと思う。
三角関数が何なのかは分からなくても、sin と cos を使うだけなら小学生でも定型文的に覚えちゃうんじゃね(おれは中学の頃だったが)。
円を描くところから始まり、直径を変化させると渦巻きにできたり位相や周期を変えて橢円やらリサージュになることに気付いたりで、
パラメータをやみくもに変えて手探りで欲しい結果にたどり着くようになる。
もちろん円的な動きの元ネタは必要で、ベーマガみたいなののコードをパクって出発だな。
小学生の頃はファミリーベーシックだったので三角関数には行き着かず、中学生でMSXになって三角関数に出会ったが、小学生の頃にMSXがあれば手を出してたと思う。
705デフォルトの名無しさん
2018/09/05(水) 00:11:58.72ID:ElSUubWJ そういや小学生のころはスーパーマリオが出たころで、ファイアバーをどうしても再現したくてファミリーベーシックで頑張ってたわ。
三角関数に行きついてないから、角度の範囲毎の動きを個別に書いたな。
でも長さが伸び縮みしたり軌跡がカクカクで、結局将来の夢に据えてお仕舞いにしたw
三角関数に行きついてないから、角度の範囲毎の動きを個別に書いたな。
でも長さが伸び縮みしたり軌跡がカクカクで、結局将来の夢に据えてお仕舞いにしたw
706デフォルトの名無しさん
2018/09/05(水) 00:29:02.76ID:TND9Xsam ニュー速で話題にしていた、CLA Fortran プログラムですが、
C言語への移植が終わりました。
公開方法について、検討しています。
↓ここを使おう蚊と考えています。
https://ideone.com/
C言語へ書き換えたソースと、入力用データとパラメータの3つですが
入力用データとパラメータについては、サンプルに掲載したものと同一
なので公開は必要ないかも知れません。
ただし実行するには必要になります。どうしましょうか?
テキストファイル形式で単独でアップロードするか、
ソースの一番下にコメントとして載せるかどの方法が良いでしょうか?
あと、オリジナルFortranソースもアップロードした方が良いですか?
これは以前PDFを見つけてくれた方がソースに起こして頂いたものです。
C言語への移植が終わりました。
公開方法について、検討しています。
↓ここを使おう蚊と考えています。
https://ideone.com/
C言語へ書き換えたソースと、入力用データとパラメータの3つですが
入力用データとパラメータについては、サンプルに掲載したものと同一
なので公開は必要ないかも知れません。
ただし実行するには必要になります。どうしましょうか?
テキストファイル形式で単独でアップロードするか、
ソースの一番下にコメントとして載せるかどの方法が良いでしょうか?
あと、オリジナルFortranソースもアップロードした方が良いですか?
これは以前PDFを見つけてくれた方がソースに起こして頂いたものです。
707デフォルトの名無しさん
2018/09/05(水) 00:29:27.46ID:TND9Xsam 間違えました、済みません。
708デフォルトの名無しさん
2018/09/05(水) 00:56:31.50ID:8BhrS90z709デフォルトの名無しさん
2018/09/05(水) 07:35:22.74ID:p5l66rRv C言語ポインタ完全制覇っていう書籍が気になってるんだけどこれはどの程度の知識がある人を対象にしてるの?
710デフォルトの名無しさん
2018/09/05(水) 08:20:43.64ID:2JdbfNpR どの程度っても難しいなw
簡単なポインタは分かるけど、二重ポインタとか配列が絡むと混乱しちゃう程度の知識の人向け?
初心者なら悪い本じゃないから買っちゃえ。
簡単なポインタは分かるけど、二重ポインタとか配列が絡むと混乱しちゃう程度の知識の人向け?
初心者なら悪い本じゃないから買っちゃえ。
711デフォルトの名無しさん
2018/09/05(水) 10:04:35.05ID:TsbO/g0i >>701
円を書く時に使えると聞いて確かに書けるので使っていて、後で高校生向けのやたらやさしく書いてある図と絵が満載の参考書を見てどういうことか詳細がわかった。俺が中2の時の話。
で、今思うに、これぐらいならちゃんと教えれば小学生でもわかるんじゃないか?俺としては単に教えてないからできないだけのような気がしてならないぞ。
しかし後々高校に入ってから数学の授業で「これ割るこれがsin」などと教師が言ってるのを見て、こんな説明だけでわかるやつはいないだろうとも思った。
ちゃんと教えられる人があまり居ない事もわからないやつを続出させる原因なのかもなと。
円を書く時に使えると聞いて確かに書けるので使っていて、後で高校生向けのやたらやさしく書いてある図と絵が満載の参考書を見てどういうことか詳細がわかった。俺が中2の時の話。
で、今思うに、これぐらいならちゃんと教えれば小学生でもわかるんじゃないか?俺としては単に教えてないからできないだけのような気がしてならないぞ。
しかし後々高校に入ってから数学の授業で「これ割るこれがsin」などと教師が言ってるのを見て、こんな説明だけでわかるやつはいないだろうとも思った。
ちゃんと教えられる人があまり居ない事もわからないやつを続出させる原因なのかもなと。
712デフォルトの名無しさん
2018/09/05(水) 10:24:41.46ID:mkiFi/5o あの説明はひどいよな
だから何?がずーっと消えない
だから何?がずーっと消えない
713デフォルトの名無しさん
2018/09/05(水) 10:29:11.29ID:jTYdKpzW sin,cos,tanそのものはアホな小学生でない限り余裕で理解できる。
ただ、それに付随した加法定理やらいろんな公式をセットにして教えたいし、それより先に教えることがたくさんあるので>>711の言っている通り教えてないだけだと思う。
ただ、それに付随した加法定理やらいろんな公式をセットにして教えたいし、それより先に教えることがたくさんあるので>>711の言っている通り教えてないだけだと思う。
714デフォルトの名無しさん
2018/09/05(水) 10:29:52.26ID:TP9d0IJd せんせい
「同じ授業を受けていい点数を取る生徒ももいるんだから、悪いのはIQの低い君達」
「分かる奴は塾に行ってる?じゃあ悪いのは君達の努力不足だ」
「同じ授業を受けていい点数を取る生徒ももいるんだから、悪いのはIQの低い君達」
「分かる奴は塾に行ってる?じゃあ悪いのは君達の努力不足だ」
715デフォルトの名無しさん
2018/09/05(水) 10:36:57.83ID:2JdbfNpR 論破やな・・・w
716デフォルトの名無しさん
2018/09/05(水) 12:34:15.95ID:TWmx8fnR717デフォルトの名無しさん
2018/09/05(水) 12:40:26.88ID:BcgqOcGx718デフォルトの名無しさん
2018/09/05(水) 12:41:23.62ID:vNhhiwgZ 絵が円形に動くときは?
719デフォルトの名無しさん
2018/09/05(水) 12:43:57.25ID:BcgqOcGx 絵が円形に動くとき
は普通に円を書く時ではない
は普通に円を書く時ではない
720デフォルトの名無しさん
2018/09/05(水) 12:45:48.51ID:vNhhiwgZ え、
>>711ってarcとか使わないで円を書くって言ってるの?
>>711ってarcとか使わないで円を書くって言ってるの?
721デフォルトの名無しさん
2018/09/05(水) 12:54:42.87ID:usOBe9qe アスペっすわ
722デフォルトの名無しさん
2018/09/05(水) 12:59:20.81ID:TsbO/g0i 三角関数の説明に三角形だけの図を描いてこれ割るこれとか言って済まそうってのは手抜きな感じがする。やはり円も描かねば。
ま、しかし、sin. cos 使って円が書けるのがわかったのは良いが、当時のマイコンは貧弱で浮動小数点演算なんかやらせてたら遅くて仕方がなかった。
しかしBASICでグラフィックに円を描かせると妙に速い。正数計算して描いてるからだが、どうするとそんなことができるのかを延々と探り続けてようやっとわかったのが高校生になってからだったかな。
今はもうほとんど覚えてないが二乗して足してってオーバーしたら引いてみたいな計算したと思った。
ま、しかし、sin. cos 使って円が書けるのがわかったのは良いが、当時のマイコンは貧弱で浮動小数点演算なんかやらせてたら遅くて仕方がなかった。
しかしBASICでグラフィックに円を描かせると妙に速い。正数計算して描いてるからだが、どうするとそんなことができるのかを延々と探り続けてようやっとわかったのが高校生になってからだったかな。
今はもうほとんど覚えてないが二乗して足してってオーバーしたら引いてみたいな計算したと思った。
723デフォルトの名無しさん
2018/09/05(水) 13:00:45.01ID:TsbO/g0i >>717>>720
まあ40年ぐらい昔の話だからね。
まあ40年ぐらい昔の話だからね。
724デフォルトの名無しさん
2018/09/05(水) 13:01:32.32ID:9Ih296dz >>722
で?
で?
725デフォルトの名無しさん
2018/09/05(水) 13:07:48.81ID:D3bYtmsn ポインタ限定でそんなに語ることがあるのか
726デフォルトの名無しさん
2018/09/05(水) 13:15:30.75ID:Lw38WY1e727デフォルトの名無しさん
2018/09/05(水) 13:22:45.26ID:TsbO/g0i >>726
何て言うのかは知らなかった。何かのプログラム解析してわかったんだったかな。その辺は忘れた。
直線も足してってオーバーしたら引くみたいなやり方だよね。今ではハードウェアで組み込まれてるんだろうな。
何て言うのかは知らなかった。何かのプログラム解析してわかったんだったかな。その辺は忘れた。
直線も足してってオーバーしたら引くみたいなやり方だよね。今ではハードウェアで組み込まれてるんだろうな。
728デフォルトの名無しさん
2018/09/05(水) 13:24:01.11ID:ElSUubWJ >>725
ポインタが指す先が const の場合とかポインタそのものが const の場合とかさらに volatile が組合わさったりさらにそういうののポインタだったり配列だったり関数ポインタまで入り込んだりした場合に、
正確に型宣言したり読んだりするには結構修行が必要だからいろいろややこしいことが書いてあるんじゃないか
ポインタが指す先が const の場合とかポインタそのものが const の場合とかさらに volatile が組合わさったりさらにそういうののポインタだったり配列だったり関数ポインタまで入り込んだりした場合に、
正確に型宣言したり読んだりするには結構修行が必要だからいろいろややこしいことが書いてあるんじゃないか
729デフォルトの名無しさん
2018/09/05(水) 13:27:13.74ID:TND9Xsam >>722
>当時のマイコンは貧弱で浮動小数点演算なんかやらせてたら遅くて仕方がなかった。
この辺は工夫次第
8bitPCが全盛だった頃、動く3Dオブジェクトを表示するのに機械語で演算処理組んでいた
全部整数化し、SIN関数値は全部テーブルで持たせていたな
試して見れば分かるが実際に必要なテーブル範囲は90度もいらない
>当時のマイコンは貧弱で浮動小数点演算なんかやらせてたら遅くて仕方がなかった。
この辺は工夫次第
8bitPCが全盛だった頃、動く3Dオブジェクトを表示するのに機械語で演算処理組んでいた
全部整数化し、SIN関数値は全部テーブルで持たせていたな
試して見れば分かるが実際に必要なテーブル範囲は90度もいらない
730デフォルトの名無しさん
2018/09/05(水) 13:37:21.57ID:7JsiFjUt 敵の弾が自分めがけて飛んでくる
ってたったそれだけでも中学の頃は大変だったな・・・
なつかしい
ってたったそれだけでも中学の頃は大変だったな・・・
なつかしい
731デフォルトの名無しさん
2018/09/05(水) 13:47:10.12ID:ElSUubWJ732デフォルトの名無しさん
2018/09/05(水) 13:51:42.60ID:mkiFi/5o 1フレームごとに最短距離で追尾してくる最も厄介なミサイルが実は一番簡単
733デフォルトの名無しさん
2018/09/05(水) 14:58:15.54ID:jTYdKpzW もうすでにC言語なんか関係なく回顧厨になっとるな。
俺も乗っかろう。
昔はBASIC標準のライン描画やらペイントルーチンが遅いので、いかに高速なアルゴリズムを作るかパソコン雑誌の特集になってたりしたな。
超高速中間色対応ペイントルーチン!みたいな。
ある意味、良い時代だった。
俺も乗っかろう。
昔はBASIC標準のライン描画やらペイントルーチンが遅いので、いかに高速なアルゴリズムを作るかパソコン雑誌の特集になってたりしたな。
超高速中間色対応ペイントルーチン!みたいな。
ある意味、良い時代だった。
734デフォルトの名無しさん
2018/09/05(水) 16:27:30.41ID:GAiajT5F 中間色とか20年以上聞いてない
735デフォルトの名無しさん
2018/09/05(水) 19:06:16.01ID:83kKikU4 中間管理色
736デフォルトの名無しさん
2018/09/05(水) 20:11:02.62ID:oFUMlVxX タイルパターン
737デフォルトの名無しさん
2018/09/05(水) 20:19:51.65ID:dRudxIH1 ランダムディザ
738デフォルトの名無しさん
2018/09/05(水) 20:20:14.55ID:TND9Xsam 液晶上にある発光体の色は3種類
マゼマゼする原理は同じ
マゼマゼする原理は同じ
739デフォルトの名無しさん
2018/09/05(水) 21:50:01.40ID:PklssQfn >>734
CoolType/CelarTypeがそれに近いけどな
CoolType/CelarTypeがそれに近いけどな
740デフォルトの名無しさん
2018/09/05(水) 21:50:31.53ID:YeNc+rPy R成分100%にB成分100%をビット演算で重ねる、みたいな話か。
741デフォルトの名無しさん
2018/09/05(水) 22:58:16.11ID:Lw38WY1e 重ねるというよりも隣接するドットを違う色で決まったパターンで表示することで
擬似的に色調表現するテクニック
基本的に8色しか使えなかった頃に多色表現するために開発された手法
複数ドットでひとつの点を表現するためにいかに自然に見せるかといかに高速化するかが
プログラム的に腕の見せ所だった
擬似的に色調表現するテクニック
基本的に8色しか使えなかった頃に多色表現するために開発された手法
複数ドットでひとつの点を表現するためにいかに自然に見せるかといかに高速化するかが
プログラム的に腕の見せ所だった
742デフォルトの名無しさん
2018/09/05(水) 23:26:42.92ID:ElSUubWJ cleartype はそういうのじゃなく、三原色の並びを利用して擬似的に横方向の解像度を上げる方法でしょ。
1画素内に三原色が RGB と並んでた場合、それを2画素並べると以下のように画素の分解能を超えた位置に白点を表示できる。
RGB___ 白黒 … 座標 0 に白点
_GBR__ シアン赤 … 座標 1/3 に白点
__BRG_ 青黄 … 座標 2/3 に白点
___RGB 黒白 … 座標 1 に白点
1画素内に三原色が RGB と並んでた場合、それを2画素並べると以下のように画素の分解能を超えた位置に白点を表示できる。
RGB___ 白黒 … 座標 0 に白点
_GBR__ シアン赤 … 座標 1/3 に白点
__BRG_ 青黄 … 座標 2/3 に白点
___RGB 黒白 … 座標 1 に白点
743デフォルトの名無しさん
2018/09/05(水) 23:39:34.25ID:PklssQfn >>742
知ってるぞ。
ClearTypeはsubpixel技術で、中間色はsubcolor技術だ。
まあ2)GrayScaleAAの方が近いといえばそうだが。
> 2) Grayscale anti-aliasing
> https://en.wikipedia.org/wiki/ClearType
知ってるぞ。
ClearTypeはsubpixel技術で、中間色はsubcolor技術だ。
まあ2)GrayScaleAAの方が近いといえばそうだが。
> 2) Grayscale anti-aliasing
> https://en.wikipedia.org/wiki/ClearType
744デフォルトの名無しさん
2018/09/06(木) 00:30:08.44ID:RM3Caylz 文字表示から離れればという気もするが
745740
2018/09/06(木) 05:55:34.60ID:UQb09hzL746740 == 745
2018/09/06(木) 06:16:09.23ID:UQb09hzL もちろん「マゼマゼ」は >>738 だよ、引用アンカーを間違えるとは。
マゼマゼでダメダメ。再び「バカだねぇお前さんは」
マゼマゼでダメダメ。再び「バカだねぇお前さんは」
747デフォルトの名無しさん
2018/09/06(木) 09:31:52.28ID:/8o/0CpY >>745
ん?俺は別に煽られたとは捉えてないし問題ないぞ。
そもそも話が通じないのは「抽象思考」が出来てないからだ。
三角関数で → 円も描ける、であって、(演繹)
円を描く為には → 三角関数、ではない。(暗記)
とはいえ適用する場合は大体お約束的だし、
大学入試なんて解けるように作ってあるのだから、「暗記」タイプでも努力すれば数学の点も上げられる。
しかしそれでは駄目なんだよ。意味がない。
そして小学生に三角関数を教えても「暗記」にしかならないから、その時点で教えるのはやはり間違っている。
> これ割るこれがsin (>>711)
これも、結局の所これ以外にどう表現しろと?という話だからね。
これが嫌だったのなら教育関係に就職して改革すべきだが、
実際ゆとり教育を先導した戦犯役人はこのタイプだった(はずな)ので救えない。
理解出来なかった奴が「俺が理解出来なかったから」という理由で主導するからおかしな事になる。
今現在の「プログラミング教育導入」もこれに近く、
そもそもプログラミングできない/やったこと無い奴らが主導してるから暴走してる。
三角関数なんて、円以外で適用される場合の方が多い。
それを過度に円に結びつけるのは数学としては間違っている。
単振動なんて、本来は円運動とは関係ないだろ。あれはma=kxの解がsinxだって話であって。
内積が|a||b|cosθになるのだって、円なんて全く関係ないし。
三角関数は、「偶々そういう関数を定義したら、何か知らんけど色々使える」であって、その見方だと
> これ割るこれがsin
になってしまう。これ以外に表現しようがない。
逆に、「宇宙の全ては円で出来ている」(なぜなら三角関数が適用出来る場合が多いから)
という捉え方も出来なくはないが、こっちの方がカルトだろ。
おそらく、数学の発達過程で他にも色々関数が定義されて、でも使えない物は淘汰されて、
結果的に今の三角関数だけが残ったのだと思うぜ。
ん?俺は別に煽られたとは捉えてないし問題ないぞ。
そもそも話が通じないのは「抽象思考」が出来てないからだ。
三角関数で → 円も描ける、であって、(演繹)
円を描く為には → 三角関数、ではない。(暗記)
とはいえ適用する場合は大体お約束的だし、
大学入試なんて解けるように作ってあるのだから、「暗記」タイプでも努力すれば数学の点も上げられる。
しかしそれでは駄目なんだよ。意味がない。
そして小学生に三角関数を教えても「暗記」にしかならないから、その時点で教えるのはやはり間違っている。
> これ割るこれがsin (>>711)
これも、結局の所これ以外にどう表現しろと?という話だからね。
これが嫌だったのなら教育関係に就職して改革すべきだが、
実際ゆとり教育を先導した戦犯役人はこのタイプだった(はずな)ので救えない。
理解出来なかった奴が「俺が理解出来なかったから」という理由で主導するからおかしな事になる。
今現在の「プログラミング教育導入」もこれに近く、
そもそもプログラミングできない/やったこと無い奴らが主導してるから暴走してる。
三角関数なんて、円以外で適用される場合の方が多い。
それを過度に円に結びつけるのは数学としては間違っている。
単振動なんて、本来は円運動とは関係ないだろ。あれはma=kxの解がsinxだって話であって。
内積が|a||b|cosθになるのだって、円なんて全く関係ないし。
三角関数は、「偶々そういう関数を定義したら、何か知らんけど色々使える」であって、その見方だと
> これ割るこれがsin
になってしまう。これ以外に表現しようがない。
逆に、「宇宙の全ては円で出来ている」(なぜなら三角関数が適用出来る場合が多いから)
という捉え方も出来なくはないが、こっちの方がカルトだろ。
おそらく、数学の発達過程で他にも色々関数が定義されて、でも使えない物は淘汰されて、
結果的に今の三角関数だけが残ったのだと思うぜ。
748デフォルトの名無しさん
2018/09/06(木) 09:33:21.82ID:/8o/0CpY 中間色/CoolType./AAも、俺にとっては「隣接するピクセルを用いて中間値を表現すること」で同じだ。
お前らはそれを
・フォントの場合
・色/ピクセルの場合
と別々に覚えてるから別物に見える。それはお前らの脳内が「暗記」ベースだからだよ。
暗記ベースでプログラミングの上達を目指すのは「デザインパターン」だ。
しかしこれも必要以上に細分化し、しかもJava文法が足りない点を必死で補っていたりで、
はっきり言ってポシャったろ。あれでは無理があるのさ。
勿論、「暗記」しかできない奴はいまだにそれにすがり続けているようだが。
ただ、実際の所、プログラミングは当然実装出来ると分かっている範囲で為されることが圧倒的に多いので、
「暗記」ベースの手法でもほぼ全ケースで何かしらの適用が出来、対応出来る。
だからそんなに問題にはならず、ある意味Javaプログラマが一定レベルまで順当に成長するのはこれがある。
ただ、「暗記」ベースだと、知らない事は発想出来ない。別物扱いだから。
中間色を「抽象思考」で捉えているのなら、
方向を変えて適用した結果がCoolTypeでありAAでしかなく、これらは自然に連結する。
この点がずいぶん違う。
お前らはそれを
・フォントの場合
・色/ピクセルの場合
と別々に覚えてるから別物に見える。それはお前らの脳内が「暗記」ベースだからだよ。
暗記ベースでプログラミングの上達を目指すのは「デザインパターン」だ。
しかしこれも必要以上に細分化し、しかもJava文法が足りない点を必死で補っていたりで、
はっきり言ってポシャったろ。あれでは無理があるのさ。
勿論、「暗記」しかできない奴はいまだにそれにすがり続けているようだが。
ただ、実際の所、プログラミングは当然実装出来ると分かっている範囲で為されることが圧倒的に多いので、
「暗記」ベースの手法でもほぼ全ケースで何かしらの適用が出来、対応出来る。
だからそんなに問題にはならず、ある意味Javaプログラマが一定レベルまで順当に成長するのはこれがある。
ただ、「暗記」ベースだと、知らない事は発想出来ない。別物扱いだから。
中間色を「抽象思考」で捉えているのなら、
方向を変えて適用した結果がCoolTypeでありAAでしかなく、これらは自然に連結する。
この点がずいぶん違う。
749デフォルトの名無しさん
2018/09/06(木) 09:34:16.38ID:/8o/0CpY この点に於いて、「暗記」ベースの奴は文法リッチな言語、JavaやC++の方がいい。
というかな、プログラミングが上達する奴と全く上達しない奴が居て、
別段人間的に問題がある(全く努力をしてない)訳ではないのが不思議だったのだが、
今のところの俺の結論はこれだ。
「暗記」ベースの奴はCやJavaScript等の文法がスカスカな言語では上達しにくい。(上達出来ない)
文法リッチな言語だと、「この文法はこのときに使う」というやり方で、
「プログラミングパターン」を「暗記」で積み上げることが出来る。
(これは本来「デザインパターン」と呼ばれるべき物だが、
この用語は継承をこねくり回したゴミの呼称となってしまっているので、敢えて別に命名する)
だから、文法を一通り押さえれば、知識としてのプログラミングパターンを一定量積み上げることが出来、
結果、一定までは確実に上達するというわけだ。
Javaはこの手法で平均レベルのプログラマを大量確保出来ている。
ただし逆に、文法等の暗記事項に計上されてないと、彼等は上達出来ないので、過度に暗記にすがる。
これが今の「デザインパターン」の状態だ。必要以上に細分化し、また、無駄に増やし続けている。
彼等にとっては新規パターンの登録と暗記がすなわち上達であり、それ以外に方法がないからだ。
したがって、今後ともこの暴走は続く。
C++erで言えば、彼等は shared_ptr/unique_ptr/weak_ptr の使い方にはご執心だが、そこまでしか見えていない。
次に導入されようとしている observer_ptr については必要性も使い方も分かっておらず、理解も出来ない。
なぜなら、「暗記」出来るのはそれらが定義されて以降であり、
「暗記」では現在未定義の物を演繹的に作り出すことが出来ないからだ。
良くも悪くも、C++が文法リッチになる過程で、CerとC++erが自然発生的に分かれてきたのはこの辺だと思う。
Linusから見ると、C++の文法もデザインパターンと同様のゴミの山に見えているはず。
(JavaScriptなんて、たったあれだけの文法で、C++で表現出来る範囲を越えるのだから笑える)
というかな、プログラミングが上達する奴と全く上達しない奴が居て、
別段人間的に問題がある(全く努力をしてない)訳ではないのが不思議だったのだが、
今のところの俺の結論はこれだ。
「暗記」ベースの奴はCやJavaScript等の文法がスカスカな言語では上達しにくい。(上達出来ない)
文法リッチな言語だと、「この文法はこのときに使う」というやり方で、
「プログラミングパターン」を「暗記」で積み上げることが出来る。
(これは本来「デザインパターン」と呼ばれるべき物だが、
この用語は継承をこねくり回したゴミの呼称となってしまっているので、敢えて別に命名する)
だから、文法を一通り押さえれば、知識としてのプログラミングパターンを一定量積み上げることが出来、
結果、一定までは確実に上達するというわけだ。
Javaはこの手法で平均レベルのプログラマを大量確保出来ている。
ただし逆に、文法等の暗記事項に計上されてないと、彼等は上達出来ないので、過度に暗記にすがる。
これが今の「デザインパターン」の状態だ。必要以上に細分化し、また、無駄に増やし続けている。
彼等にとっては新規パターンの登録と暗記がすなわち上達であり、それ以外に方法がないからだ。
したがって、今後ともこの暴走は続く。
C++erで言えば、彼等は shared_ptr/unique_ptr/weak_ptr の使い方にはご執心だが、そこまでしか見えていない。
次に導入されようとしている observer_ptr については必要性も使い方も分かっておらず、理解も出来ない。
なぜなら、「暗記」出来るのはそれらが定義されて以降であり、
「暗記」では現在未定義の物を演繹的に作り出すことが出来ないからだ。
良くも悪くも、C++が文法リッチになる過程で、CerとC++erが自然発生的に分かれてきたのはこの辺だと思う。
Linusから見ると、C++の文法もデザインパターンと同様のゴミの山に見えているはず。
(JavaScriptなんて、たったあれだけの文法で、C++で表現出来る範囲を越えるのだから笑える)
750デフォルトの名無しさん
2018/09/06(木) 09:35:06.90ID:/8o/0CpY Cの場合には文法がスカスカだから、
ポインタで → 何でも出来る、とならないと上達しにくい。(演繹)
この場合は → shared_ptr、では無理だ。暴走出来ない。(暗記)
だから「暗記」ベースな奴は文法リッチな言語を選んだ方がいい。
(ただしポインタがあまりに汎用性がありすぎて最適化等に問題があり、
結果、他言語では色々制限を付けられてきたのはご存じの通り)
逆に「たったこれだけの文法で全て表現出来るなんてステキ」と思える奴は
CやJavaScript等の文法スカスカ言語の方が向いてる。
JavaScriptがゴミゴミ言われながらもここまで残っているのもこの点が大きい。
あれは使える奴が使ったら凄く使える言語だ。
ただ、今のJavaScriptプログラマの大半がゴミなのも事実だが。
Cの授業が全く無駄だ、という話も出所はここだ。
プログラミングなんて、結局、「代入、条件分岐、関数呼び出し、ループ」でしかなく、
ループですら代入と条件分岐で実装出来るのだから冗長だ。
一応チューリング完全であるbrainfuckは関数呼び出しすらないので、これも冗長とも言える。
そしてCの授業で行われるのはまさに「代入、条件分岐、関数呼び出し、ループ」だけであり、
これでどうやって初音ミクが歌って踊るのだ?と初心者には思えるだろう。
最終的にはGPUを介してVRAM上に代入(ラスタライズ)しているだけだとしても、
それが初心者に見えるはずもない。
(もっとも、今の3Dベースの2D《テクスチャとして貼ってるだけ》だと
ラスタライズ結果をVRAMに戻しているかも怪しいが)
ただ、MITがSICPを止めたのと同様、今時初心者がCをやる必要はない。
DrawLineで線が描ける、HTML出力したら絵が出る、で済む連中がCやるのが間違ってる。
逆に、デバイスドライバ等を書いたり、
計算機自体の専門家(HighPerformanceComputing)等を目指すならCは必修になる。
ポインタで → 何でも出来る、とならないと上達しにくい。(演繹)
この場合は → shared_ptr、では無理だ。暴走出来ない。(暗記)
だから「暗記」ベースな奴は文法リッチな言語を選んだ方がいい。
(ただしポインタがあまりに汎用性がありすぎて最適化等に問題があり、
結果、他言語では色々制限を付けられてきたのはご存じの通り)
逆に「たったこれだけの文法で全て表現出来るなんてステキ」と思える奴は
CやJavaScript等の文法スカスカ言語の方が向いてる。
JavaScriptがゴミゴミ言われながらもここまで残っているのもこの点が大きい。
あれは使える奴が使ったら凄く使える言語だ。
ただ、今のJavaScriptプログラマの大半がゴミなのも事実だが。
Cの授業が全く無駄だ、という話も出所はここだ。
プログラミングなんて、結局、「代入、条件分岐、関数呼び出し、ループ」でしかなく、
ループですら代入と条件分岐で実装出来るのだから冗長だ。
一応チューリング完全であるbrainfuckは関数呼び出しすらないので、これも冗長とも言える。
そしてCの授業で行われるのはまさに「代入、条件分岐、関数呼び出し、ループ」だけであり、
これでどうやって初音ミクが歌って踊るのだ?と初心者には思えるだろう。
最終的にはGPUを介してVRAM上に代入(ラスタライズ)しているだけだとしても、
それが初心者に見えるはずもない。
(もっとも、今の3Dベースの2D《テクスチャとして貼ってるだけ》だと
ラスタライズ結果をVRAMに戻しているかも怪しいが)
ただ、MITがSICPを止めたのと同様、今時初心者がCをやる必要はない。
DrawLineで線が描ける、HTML出力したら絵が出る、で済む連中がCやるのが間違ってる。
逆に、デバイスドライバ等を書いたり、
計算機自体の専門家(HighPerformanceComputing)等を目指すならCは必修になる。
751デフォルトの名無しさん
2018/09/06(木) 09:42:07.42ID:MYy5/YOc 量子化誤差の拡散!
752デフォルトの名無しさん
2018/09/06(木) 09:50:36.43ID:2H4On29+ コードもだらだら書いてるんだろうなぁ
753デフォルトの名無しさん
2018/09/06(木) 10:01:03.49ID:BRF//rri メモリーリークについて質問です
プログラム終了時に残ってしまったものに関してはOSが解放してくれるから対処しなくていいと聞きました
今までデバッグしてメモリーリークが出ると無くなるまで結構あれこれやってたんですが全部無駄だったんでしょうか
プログラム終了時に残ってしまったものに関してはOSが解放してくれるから対処しなくていいと聞きました
今までデバッグしてメモリーリークが出ると無くなるまで結構あれこれやってたんですが全部無駄だったんでしょうか
754デフォルトの名無しさん
2018/09/06(木) 10:10:29.24ID:2H4On29+755デフォルトの名無しさん
2018/09/06(木) 10:21:17.68ID:BRF//rri あーいや想定してるのはちょっとした処理を行って出力して落ちるだけのプログラムなんです
ループの中で何回もmallocしてメモリを食いつぶすとかそんなことも無くて、ただ終了時まで動的確保した変数が解放されてないみたいな
そういう状況でお願いします
ループの中で何回もmallocしてメモリを食いつぶすとかそんなことも無くて、ただ終了時まで動的確保した変数が解放されてないみたいな
そういう状況でお願いします
756デフォルトの名無しさん
2018/09/06(木) 10:37:52.78ID:2H4On29+ >>755
そういう限定的な条件では解放は省略するって方針もあるかもね。
終了パターンがいろいろあると解放するだけでも一苦労だったりするし。
ただせっかく作ったそのコードは制約が多く他には転用しづらかったりと資産としての価値は低いと思う。
そもそもデバッグでメモリリークを発見とか言ってるとなると、メモリの管理はしっかりしてて解放を省略していることも設計に入ってる、という状況ではないんじゃないの?
それはメモリを管理できてないってことじゃないのかな。
そんな場当たり的なことやってると大きなコード書けないよ。
メモリリークを潰させるのは、メモリを解放すること自体が目的というよりメモリを管理させる教育的な目的じゃないかね。
そういう限定的な条件では解放は省略するって方針もあるかもね。
終了パターンがいろいろあると解放するだけでも一苦労だったりするし。
ただせっかく作ったそのコードは制約が多く他には転用しづらかったりと資産としての価値は低いと思う。
そもそもデバッグでメモリリークを発見とか言ってるとなると、メモリの管理はしっかりしてて解放を省略していることも設計に入ってる、という状況ではないんじゃないの?
それはメモリを管理できてないってことじゃないのかな。
そんな場当たり的なことやってると大きなコード書けないよ。
メモリリークを潰させるのは、メモリを解放すること自体が目的というよりメモリを管理させる教育的な目的じゃないかね。
757デフォルトの名無しさん
2018/09/06(木) 11:35:05.98ID:BRF//rri いや教育というか、上司が作ったAPIを利用して機能作れって指示が出ててですね
そのAPIが上で説明したように変数解放しないままプログラム終了してたって状況です
んでこれいいんですかこうすれば治りますがみたいなこと言ったらいいんだ勝手に解放されるかと
ともあれそういう方針が有りだということは分かりました。どうもです
そのAPIが上で説明したように変数解放しないままプログラム終了してたって状況です
んでこれいいんですかこうすれば治りますがみたいなこと言ったらいいんだ勝手に解放されるかと
ともあれそういう方針が有りだということは分かりました。どうもです
758デフォルトの名無しさん
2018/09/06(木) 11:39:51.63ID:2H4On29+ 上司を教育してやりたいなw
759デフォルトの名無しさん
2018/09/06(木) 11:42:26.02ID:b42HI45e ここに呼んできて
760デフォルトの名無しさん
2018/09/06(木) 11:55:09.68ID:MYy5/YOc >>753
プロセス終了するなら、無駄です。
プロセス終了するなら、無駄です。
761デフォルトの名無しさん
2018/09/06(木) 12:07:29.83ID:NrF/VtsZ そのAPIを流用するのは難しいな。
しないつもりなのかも知れないが。
まあしかしできればメモリリークしない方が良いな。
そのままだと常駐するプログラムのループの中で使えないし。
しないつもりなのかも知れないが。
まあしかしできればメモリリークしない方が良いな。
そのままだと常駐するプログラムのループの中で使えないし。
762デフォルトの名無しさん
2018/09/06(木) 12:44:35.90ID:5MBNHP4w >>757
上司の指示ならそのままにしとけばいい
メモリーリークしてもプロセス終了で解放されるから問題なし
って言う奴は一定数いて説得しても改心しないから放置しとくしかない
後々何かで事故った時のためにドキュメントに書いとけ
上司の指示ならそのままにしとけばいい
メモリーリークしてもプロセス終了で解放されるから問題なし
って言う奴は一定数いて説得しても改心しないから放置しとくしかない
後々何かで事故った時のためにドキュメントに書いとけ
763デフォルトの名無しさん
2018/09/06(木) 13:36:44.44ID:N1zpzsdE たいていドキュメントは失われるので俺ならソースコメントに書いておくな。
「2018/09/06 メモリ解放してないので注意(先輩の指示で改修見送り)」
「2018/09/06 メモリ解放してないので注意(先輩の指示で改修見送り)」
764デフォルトの名無しさん
2018/09/06(木) 14:37:14.38ID:3QzfQDga そりゃ、そういう状況では解放処理は抽象的な書き方にすべきなんですよ。
freeがなければ安心できないのって病気に近いよ。
freeがなければ安心できないのって病気に近いよ。
765デフォルトの名無しさん
2018/09/06(木) 19:28:33.32ID:5MBNHP4w どういう状況か知らんけど
> こうすれば治りますがみたいなこと
言ってるにも関わらず対応しないのは宗教に近いよ
> こうすれば治りますがみたいなこと
言ってるにも関わらず対応しないのは宗教に近いよ
766デフォルトの名無しさん
2018/09/06(木) 19:34:20.37ID:hjZ1m3yx >>755
mayersだったかdinkumの人だったか忘れたけど、これはリソースリークじゃないって力説してて、
自分も同じセリフを言ってみたくてmain関数で確保したものを開放せずにいたら、
あとからそのmainだった関数に再入しないといけない要件が増えて涙した。
(小物ツールだったのに…)
というわけでfreeしようぜ
mayersだったかdinkumの人だったか忘れたけど、これはリソースリークじゃないって力説してて、
自分も同じセリフを言ってみたくてmain関数で確保したものを開放せずにいたら、
あとからそのmainだった関数に再入しないといけない要件が増えて涙した。
(小物ツールだったのに…)
というわけでfreeしようぜ
767デフォルトの名無しさん
2018/09/06(木) 19:56:53.52ID:/8o/0CpY >>757
> ちょっとした処理を行って出力して落ちるだけのプログラム
> 上司が作ったAPIを利用して機能作れって指示
× API
○ ツール
上司が作ったちょっとした「ツール」を使って(データの一部を切り出してきて)パイプ等で受ける場合、
そのツールがプロセス終了時に解放してないと文句を言うのは煙たがられる。
それは「意識高い系」すぎるし、そもそも君の担当範囲に何も悪影響はない。
そんなことはいいからお前の担当部分のバグを直せ、と思われているはず。
一応言っておくとfreeもタダではないので速度は落ちる。
必ずその後にプロセスが終了すると分かり切っているのなら放置もありだし、そっちの方が速い。
大方、精々1000行以下の上から下までつるっと動くだけのプログラムで、
最初に1回ワーク領域としてmallocして終わり、のパターンだろ。
割とどうでもいいね。実行形式のみでの配布なら問題になることはない。
(俺ならfreeしておくが。理由は>>766と同じで、流用するときにバグるから)
なお「API」では通常、別プロセスを起動して呼び出すことはない。(俺の知る限り)
本来「ツール」と表現すべき所を意図的に「API」と言うなら、相当な悪意だと受け取られる。
ただ単に間違ったのなら、お前は上司に対していちいち文句を言わず、
指示されたようにやるべきレベルだ。わきまえた方がいい。
ソースコードにコメント、は止めた方がいい。そこは上司への不満を書く場所ではない。
直すなら「潜在バグ」として正式登録、その必要がないと判断するなら放置したほうがいい。
数年後、君によって後輩が助かれば君は讃えられるだろうし、
そうでなければ君は痛かった奴だなと思われる、ただそれだけの話だ。
コメントだけ残して修正してませんでした、ってのはマジで痛いだけだから止めとけ。
誰も助からないし、生産性がない。
(バグを踏んだ後輩から見れば責任逃れせずにちゃんと直しておいてくれ、としか見えない)
そもそもそのツールがバグってたのなら作った上司の責任だし、
上司がそれを面倒がるのなら、そのソースの管理責任を君が受け取って自由に出来るはず。
> ちょっとした処理を行って出力して落ちるだけのプログラム
> 上司が作ったAPIを利用して機能作れって指示
× API
○ ツール
上司が作ったちょっとした「ツール」を使って(データの一部を切り出してきて)パイプ等で受ける場合、
そのツールがプロセス終了時に解放してないと文句を言うのは煙たがられる。
それは「意識高い系」すぎるし、そもそも君の担当範囲に何も悪影響はない。
そんなことはいいからお前の担当部分のバグを直せ、と思われているはず。
一応言っておくとfreeもタダではないので速度は落ちる。
必ずその後にプロセスが終了すると分かり切っているのなら放置もありだし、そっちの方が速い。
大方、精々1000行以下の上から下までつるっと動くだけのプログラムで、
最初に1回ワーク領域としてmallocして終わり、のパターンだろ。
割とどうでもいいね。実行形式のみでの配布なら問題になることはない。
(俺ならfreeしておくが。理由は>>766と同じで、流用するときにバグるから)
なお「API」では通常、別プロセスを起動して呼び出すことはない。(俺の知る限り)
本来「ツール」と表現すべき所を意図的に「API」と言うなら、相当な悪意だと受け取られる。
ただ単に間違ったのなら、お前は上司に対していちいち文句を言わず、
指示されたようにやるべきレベルだ。わきまえた方がいい。
ソースコードにコメント、は止めた方がいい。そこは上司への不満を書く場所ではない。
直すなら「潜在バグ」として正式登録、その必要がないと判断するなら放置したほうがいい。
数年後、君によって後輩が助かれば君は讃えられるだろうし、
そうでなければ君は痛かった奴だなと思われる、ただそれだけの話だ。
コメントだけ残して修正してませんでした、ってのはマジで痛いだけだから止めとけ。
誰も助からないし、生産性がない。
(バグを踏んだ後輩から見れば責任逃れせずにちゃんと直しておいてくれ、としか見えない)
そもそもそのツールがバグってたのなら作った上司の責任だし、
上司がそれを面倒がるのなら、そのソースの管理責任を君が受け取って自由に出来るはず。
768デフォルトの名無しさん
2018/09/06(木) 19:59:05.01ID:xdo6cDUj そんなに速度のことが気になるなら、グローバルでドカッと変数確保すりゃ良いだろう
>>755
きちんと malloc() した領域を free() できているように、それを重点的に書き直していくだけでも、プログラムの構造がわかりやすくなり、バグも少なくなるとおもいます
きちんと malloc() した領域を free() できているように、それを重点的に書き直していくだけでも、プログラムの構造がわかりやすくなり、バグも少なくなるとおもいます
>>768
そうそう、malloc() したポインタを線形リストに登録しておいて、最後にまとめて free() するとか…
そうそう、malloc() したポインタを線形リストに登録しておいて、最後にまとめて free() するとか…
771デフォルトの名無しさん
2018/09/06(木) 20:09:17.57ID:L7E4s+iy772デフォルトの名無しさん
2018/09/06(木) 20:12:16.01ID:xdo6cDUj ツールに使う程度の小規模なプログラムなら、
グローバルで取ろうと気にしなくて良いと思うけどな
グローバルで取ろうと気にしなくて良いと思うけどな
773デフォルトの名無しさん
2018/09/06(木) 20:16:36.65ID:/8o/0CpY >>768
さすがにプロセス起動/終了の方がfreeより100倍以上重いはずなので、
ここでfreeを速度の為にケチる、というのはナンセンス。
ただ、free一個分速いのは事実だし、Cは精神論的に速度を希求するからねえ。
多分、最初はグローバルで固定長バッファだったが、
もっと大きなサイズも必要になって、面倒だったからど頭でmallocに変更、だと思うよ。
割とありがちなパターンだし、この場合はfreeしない文化のような気もする。
さすがにプロセス起動/終了の方がfreeより100倍以上重いはずなので、
ここでfreeを速度の為にケチる、というのはナンセンス。
ただ、free一個分速いのは事実だし、Cは精神論的に速度を希求するからねえ。
多分、最初はグローバルで固定長バッファだったが、
もっと大きなサイズも必要になって、面倒だったからど頭でmallocに変更、だと思うよ。
割とありがちなパターンだし、この場合はfreeしない文化のような気もする。
774デフォルトの名無しさん
2018/09/06(木) 20:32:13.62ID:5MBNHP4w 最近はあまりないけど実メモリーがカツカツの状態だとfree()する為にディスクからページを読み込む処理が大量に発生してなかなかアプリケーションが終了しないと言う事があったりする
775デフォルトの名無しさん
2018/09/06(木) 20:36:44.52ID:w4APQ8t2 exitって重いの?
まあfreeするもんだと決め打ちはしたらあかんよ
まあfreeするもんだと決め打ちはしたらあかんよ
776デフォルトの名無しさん
2018/09/06(木) 20:38:25.83ID:64ZwjQvb freeしてないコードを池沼が書いて
freeしてないコードを
実績があるコードといって池沼が確かめもせずそのままコピペして流用する
よくあること
freeしてないコードを
実績があるコードといって池沼が確かめもせずそのままコピペして流用する
よくあること
777デフォルトの名無しさん
2018/09/06(木) 20:40:44.45ID:64ZwjQvb つまり池沼の代重ねで
どんどんメモリリークが酷くなっていく
どんどんメモリリークが酷くなっていく
778デフォルトの名無しさん
2018/09/06(木) 20:49:38.63ID:u/2SwpDg dtr は作るけど、コメントに「プロセス終了時にしか実行しないのでfreeしてない」と書いて放置してるわ
779デフォルトの名無しさん
2018/09/06(木) 20:57:43.99ID:/8o/0CpY780デフォルトの名無しさん
2018/09/06(木) 21:05:57.78ID:2H4On29+ >>779
うちの FireFox も終了時にモタモタしてるから、そうなるのが分かってる時はタスクマネージャーで殺したりするw
つかアプリは終了時に保存するもの保存したらリソースそのままで exit しちゃう方がいい気がしてきたわ。
うちの FireFox も終了時にモタモタしてるから、そうなるのが分かってる時はタスクマネージャーで殺したりするw
つかアプリは終了時に保存するもの保存したらリソースそのままで exit しちゃう方がいい気がしてきたわ。
781デフォルトの名無しさん
2018/09/06(木) 21:22:48.78ID:lfEPMv1j freeでスワップからページ読み込みするってマジ?
freeだけならdirtyページドロップするだけだと思ってたわ
freeだけならdirtyページドロップするだけだと思ってたわ
782デフォルトの名無しさん
2018/09/06(木) 21:38:33.95ID:iyjSCMca freeがいちいちSVCなんかするわけねえだろ
それと、おまえスワップとページを混同してるな
それと、おまえスワップとページを混同してるな
783デフォルトの名無しさん
2018/09/06(木) 21:42:11.21ID:RfogV38/ >>781
ポインタ書き換えたりするから一度ディスクからメモリに戻さざるを得ないのでは?
ものすごく大きい領域を一括で確保した場合は全部戻す必要ないけど細切れに沢山確保してあるのをバラバラにfreeしたらなりそうだよね。
ポインタ書き換えたりするから一度ディスクからメモリに戻さざるを得ないのでは?
ものすごく大きい領域を一括で確保した場合は全部戻す必要ないけど細切れに沢山確保してあるのをバラバラにfreeしたらなりそうだよね。
784デフォルトの名無しさん
2018/09/06(木) 21:46:37.65ID:7YUMDOtR >>781
free()すると管理領域を書き換えるためにページインが必要になる
free()すると管理領域を書き換えるためにページインが必要になる
785デフォルトの名無しさん
2018/09/06(木) 21:52:07.32ID:SMB/Y5b1 ランタイムの実装とOSにどう伝えてるかの間のことを考え出すと激しく禿る思考停止
unix/linux な人はどう実装してるか確認してるの?
unix/linux な人はどう実装してるか確認してるの?
786デフォルトの名無しさん
2018/09/06(木) 21:54:14.48ID:N6MGums/787デフォルトの名無しさん
2018/09/06(木) 23:11:21.70ID:xdo6cDUj 皆さん、実メモリってどの位積んでいるの?
>>787
DDR3 16G です、もっとほしい…
DDR3 16G です、もっとほしい…
789デフォルトの名無しさん
2018/09/06(木) 23:43:10.77ID:f49/P0Og 8G
しかしこのPCは5年以上前に買ったやつ。
しかしこのPCは5年以上前に買ったやつ。
790デフォルトの名無しさん
2018/09/06(木) 23:53:41.06ID:iNL3W5R4 >>781
単純に free だけの話じゃなく、自分が作り上げたオブジェクトツリーを辿りながら free していく過程でその(結局解放する)オブジェクトをページインすることになる。
C でオブジェクトとか言うことの是非は置いといて。
単純に free だけの話じゃなく、自分が作り上げたオブジェクトツリーを辿りながら free していく過程でその(結局解放する)オブジェクトをページインすることになる。
C でオブジェクトとか言うことの是非は置いといて。
791デフォルトの名無しさん
2018/09/07(金) 00:04:11.13ID:oKo9UKIA792デフォルトの名無しさん
2018/09/07(金) 06:00:25.35ID:Pk3Mmzkj 個人で使うための大したことないツールだったか、
この件の実験用に作ったプログラムだったか忘れたけど…。
そこそこ沢山のデータを、ひとつ読み取ってはmallocで確保した領域に保存、
ハッシュテーブル(値が重複する要素はリンクド・リストでつなぐ)にブチ込んで
個々のデータはプログラム終了まで破棄しない、て条件。
終了前に真面目にfreeして回るのと、そのままexitしてOSに片付けてもらうのと、
比較してみたらfreeのループ処理が意外に重かったんで、
解放処理の関数を残したまま呼び出し部だけ注釈にして、
// 解放すべきだと思いつつも無駄に重いんでOSに上手いことやってもらう
みたいな自分用のメモを残したわ。我ながらどっちつかずの折衷案。
この件の実験用に作ったプログラムだったか忘れたけど…。
そこそこ沢山のデータを、ひとつ読み取ってはmallocで確保した領域に保存、
ハッシュテーブル(値が重複する要素はリンクド・リストでつなぐ)にブチ込んで
個々のデータはプログラム終了まで破棄しない、て条件。
終了前に真面目にfreeして回るのと、そのままexitしてOSに片付けてもらうのと、
比較してみたらfreeのループ処理が意外に重かったんで、
解放処理の関数を残したまま呼び出し部だけ注釈にして、
// 解放すべきだと思いつつも無駄に重いんでOSに上手いことやってもらう
みたいな自分用のメモを残したわ。我ながらどっちつかずの折衷案。
793デフォルトの名無しさん
2018/09/07(金) 07:56:45.53ID:ZG8Bsw3G >787
Win7以降で最低4G、可能なら8G。3Dゲームやるなら16G以上。
XP時代は2Gか3Gだった。
Win7以降で最低4G、可能なら8G。3Dゲームやるなら16G以上。
XP時代は2Gか3Gだった。
794デフォルトの名無しさん
2018/09/07(金) 07:57:24.56ID:1SEeRaQU >>787
今使ってるマイコンのRAMは64バイト
今使ってるマイコンのRAMは64バイト
795デフォルトの名無しさん
2018/09/07(金) 08:06:16.22ID:1SEeRaQU メモリを確保しっぱなしでわざわざ明示的に解放コードを書かないことはある
C++じゃなくてCだと特に
組み込みだとそもそも終了処理なんて物が無かったりする
C++じゃなくてCだと特に
組み込みだとそもそも終了処理なんて物が無かったりする
796デフォルトの名無しさん
2018/09/07(金) 08:35:25.77ID:Ge6Y8svS >>792
(俺はそういう状況に遭遇したことがないが、)やるなら、
freeを生かしたまま残し、その直前でexit、
exitに「// free が遅いからここで強制終了」とコメントかな。
そもそもCはやたらfreeするようには出来てない。それはK&Rのfree実装をみても明らかだ。
C++や他GC言語のようにインスタンスを個別にmalloc/freeした方が
プログラミング的に美しく、自由度があるのも確かだが、
古来C流なら
> 個々のデータはプログラム終了まで破棄しない、て条件。
が分かっている時点で纏めてmallocし、内部的に切り出して使う、とかじゃないかな?
大きなテキストを1発mallocで確保し、内部的に改行コードで区切って使うみたいに。
初期データはインミュータブル扱い、追加/変更はインスタンス毎個別に確保、だ。
ただこれだと結局コードは増えてしまうし、個別freeすべきかのフラグを導入するか、
解放関数でインミュータブル領域かどうかを判定する必要がある。
そういうのが面倒だと最初から全部C++流にインスタンス毎個別に確保になり、
その分動作が遅くなるが、コード自体は綺麗に(統一的に)保たれる。
結局、コードを取るか、手間かけてその分高速化するか、でしかない。
気にならない程度なら、俺はC++流の個別確保の方がコードが綺麗だからいいと思うが。
(つまり今の君の実装)
気になるのなら、選択の余地無く高速化するしかないし。
(俺はそういう状況に遭遇したことがないが、)やるなら、
freeを生かしたまま残し、その直前でexit、
exitに「// free が遅いからここで強制終了」とコメントかな。
そもそもCはやたらfreeするようには出来てない。それはK&Rのfree実装をみても明らかだ。
C++や他GC言語のようにインスタンスを個別にmalloc/freeした方が
プログラミング的に美しく、自由度があるのも確かだが、
古来C流なら
> 個々のデータはプログラム終了まで破棄しない、て条件。
が分かっている時点で纏めてmallocし、内部的に切り出して使う、とかじゃないかな?
大きなテキストを1発mallocで確保し、内部的に改行コードで区切って使うみたいに。
初期データはインミュータブル扱い、追加/変更はインスタンス毎個別に確保、だ。
ただこれだと結局コードは増えてしまうし、個別freeすべきかのフラグを導入するか、
解放関数でインミュータブル領域かどうかを判定する必要がある。
そういうのが面倒だと最初から全部C++流にインスタンス毎個別に確保になり、
その分動作が遅くなるが、コード自体は綺麗に(統一的に)保たれる。
結局、コードを取るか、手間かけてその分高速化するか、でしかない。
気にならない程度なら、俺はC++流の個別確保の方がコードが綺麗だからいいと思うが。
(つまり今の君の実装)
気になるのなら、選択の余地無く高速化するしかないし。
797デフォルトの名無しさん
2018/09/07(金) 08:38:20.43ID:oKo9UKIA >>795
むしろ C++ の方が気安く new するから、そっちの方が放置したくならないかね。
根っこのオブジェクトを delete すれば後のはデストラクタがやってくれるとかで面倒さは少ないのかもしれないが。
何にしても、許されるのはきちんと解放できるけどあえてしない、ってのだけだな。
なんだかよく分かんないし面倒からOSに尻拭いしてもらうなんてのはダメだ。
fork で起こした子プロセスがメモリを free せず終了しても問題無いが、それをスレッドにしましょうなんてなった瞬間に破綻する。
むしろ C++ の方が気安く new するから、そっちの方が放置したくならないかね。
根っこのオブジェクトを delete すれば後のはデストラクタがやってくれるとかで面倒さは少ないのかもしれないが。
何にしても、許されるのはきちんと解放できるけどあえてしない、ってのだけだな。
なんだかよく分かんないし面倒からOSに尻拭いしてもらうなんてのはダメだ。
fork で起こした子プロセスがメモリを free せず終了しても問題無いが、それをスレッドにしましょうなんてなった瞬間に破綻する。
798デフォルトの名無しさん
2018/09/07(金) 09:28:39.55ID:8HJNQC7B 商業プログラムだとラッパだらけで直接free呼ばんし。
freeなしという選択肢は常に確保しとけばよい。
freeなしという選択肢は常に確保しとけばよい。
799デフォルトの名無しさん
2018/09/07(金) 11:25:43.88ID:/+XJI6DP >>786
え、WindowsにSystem z版てあるんだっけ?
え、WindowsにSystem z版てあるんだっけ?
800デフォルトの名無しさん
2018/09/07(金) 12:12:28.24ID:veel+fh4 >>799
え?System z限定の話だったの?
え?System z限定の話だったの?
801デフォルトの名無しさん
2018/09/07(金) 12:18:34.93ID:/+XJI6DP >>800
だってSVCって。。。
だってSVCって。。。
802デフォルトの名無しさん
2018/09/07(金) 12:28:11.67ID:veel+fh4803デフォルトの名無しさん
2018/09/07(金) 12:36:08.16ID:H0y7xQ1z >>781
mmap経由ならOSによってはそうかもな
mmap経由ならOSによってはそうかもな
804デフォルトの名無しさん
2018/09/07(金) 12:51:04.62ID:/+XJI6DP >>802
おk
じゃあ、その前提で話を戻そう
freeはISO/IEC9899では宣言と引数の意味のみが規定され実装は未規定だ
782でああ言ったのは、freeする度毎にタイムスライスを放棄するような実装は
まずなかろうということだ
おk
じゃあ、その前提で話を戻そう
freeはISO/IEC9899では宣言と引数の意味のみが規定され実装は未規定だ
782でああ言ったのは、freeする度毎にタイムスライスを放棄するような実装は
まずなかろうということだ
805デフォルトの名無しさん
2018/09/07(金) 14:34:23.02ID:lg5TGvmQ >>804
まず、786で書いたようにあくまで「思ってた」だけで確固たる根拠はないことを前提に。
freeするならどこからか借りていたメモリ領域を返却するわけで、仮想メモリ返却にはMMUを使ったページ管理が必要だよね?
仮想メモリページ管理はメモリマネージャー的なカーネルモードドライバが必要なはずで、つまり解放時にはシステムコールを伴う。
ただ、HeapFree時に直接カーネルモードで解放が実行されずメモリマネージャがガーベジコレクション的に後々回収するなら、あなたの言うとおりfree時にユーザーモードで閉じて処理されるかも。
このへん、Linuxとかどういう実装になってるんだろうね?
まず、786で書いたようにあくまで「思ってた」だけで確固たる根拠はないことを前提に。
freeするならどこからか借りていたメモリ領域を返却するわけで、仮想メモリ返却にはMMUを使ったページ管理が必要だよね?
仮想メモリページ管理はメモリマネージャー的なカーネルモードドライバが必要なはずで、つまり解放時にはシステムコールを伴う。
ただ、HeapFree時に直接カーネルモードで解放が実行されずメモリマネージャがガーベジコレクション的に後々回収するなら、あなたの言うとおりfree時にユーザーモードで閉じて処理されるかも。
このへん、Linuxとかどういう実装になってるんだろうね?
806デフォルトの名無しさん
2018/09/07(金) 14:55:15.04ID:Yr/2DouQ 画期的なメモリ確保方式とか出来ないかな
例えばさ、名前付きタグを付けてメモリ確保し、
名前指定で一気に解放できるようにするとか
例えばさ、名前付きタグを付けてメモリ確保し、
名前指定で一気に解放できるようにするとか
807デフォルトの名無しさん
2018/09/07(金) 15:22:58.08ID:OFkeqRjw Rust?
808デフォルトの名無しさん
2018/09/07(金) 15:56:06.95ID:/+XJI6DP >>805
freeがメモリを返却する相手が何者なのかは未規定だぞ
いちいちOSへ直に返しているとおまえさんの言うとおりだが
スタティックリンクライブラリがOSから大口で借りたメモリを切り売りする
スタイルならシステムコールの回数をガクンと減らせる
よくある実装は1MiBあたりを境に小容量は切り売りで大容量は直にという形
freeがメモリを返却する相手が何者なのかは未規定だぞ
いちいちOSへ直に返しているとおまえさんの言うとおりだが
スタティックリンクライブラリがOSから大口で借りたメモリを切り売りする
スタイルならシステムコールの回数をガクンと減らせる
よくある実装は1MiBあたりを境に小容量は切り売りで大容量は直にという形
809デフォルトの名無しさん
2018/09/07(金) 16:07:14.96ID:lg5TGvmQ >>808
いや、俺はANSI Cとかの規定の話してるんじゃなくて、SVCって単語からこの議論がスタートしてるのでモダンなOS上の一般的な実装の話をしてると思ってたんだけど、違ったのか。
確かにアプリ起動時にある程度のヒープを最初から用意ってのはありそう。
いや、俺はANSI Cとかの規定の話してるんじゃなくて、SVCって単語からこの議論がスタートしてるのでモダンなOS上の一般的な実装の話をしてると思ってたんだけど、違ったのか。
確かにアプリ起動時にある程度のヒープを最初から用意ってのはありそう。
810デフォルトの名無しさん
2018/09/07(金) 16:15:46.30ID:lg5TGvmQ811デフォルトの名無しさん
2018/09/07(金) 17:07:55.49ID:+cI6iexZ >>805
Linux+glibcの環境なら、mallocは昔ながらのbrkシステムコールの方法と
mmapシステムコールの方法が状況に応じて使われる
freeしたときmmapをmunmapしてOSに返されることもある
はず。…たしか
Linux+glibcの環境なら、mallocは昔ながらのbrkシステムコールの方法と
mmapシステムコールの方法が状況に応じて使われる
freeしたときmmapをmunmapしてOSに返されることもある
はず。…たしか
812デフォルトの名無しさん
2018/09/07(金) 18:11:36.24ID:lg5TGvmQ813デフォルトの名無しさん
2018/09/07(金) 20:33:47.92ID:lg5TGvmQ ちらっとmmapとglibc斜め読みしてみた。
こんな世界があるんだとソフトエンジニア7年目にして新しい視点が開眼しそう。
色々気付きをくれた方々、ありがとうございました。
こんな世界があるんだとソフトエンジニア7年目にして新しい視点が開眼しそう。
色々気付きをくれた方々、ありがとうございました。
814デフォルトの名無しさん
2018/09/07(金) 23:08:07.85ID:Ge6Y8svS >>806
ゆとりりゅうのすごいめもりかくほ、まで読んだ。
マジレスすると、
> 名前付きタグ
このコストが分からない馬鹿はCを学ぶ意味はあるだろう。
スクリプト言語しか使ったことのない奴に多いが。(例:ハッシュはタダだと思ってる)
>>805
> 仮想メモリ返却にはMMUを使ったページ管理が必要だよね?
お前は中途半端に勉強してるな。まあ悪いことではないが。
ページの単位は今も昔も4KBだ。その方法ではインスタンス毎の確保は出来ないと分かるだろ。
>>812-813
読むのは勝手だが、あまり関係ないところに深入りしても意味はないぞ。
7年目なら業務関連は一通り出来るようになっており、知識を横に広げているのかもしれないが、
OS関連の知識があってもな。
時間が有り余っていて手当たり次第に知識を吸収するのも一つの手だが、
もし大きい(10,000行以上)のを書いたことがないのなら、
まずは規模の限界(複雑さの限界)に挑戦する方がいいと思うが。
ゆとりりゅうのすごいめもりかくほ、まで読んだ。
マジレスすると、
> 名前付きタグ
このコストが分からない馬鹿はCを学ぶ意味はあるだろう。
スクリプト言語しか使ったことのない奴に多いが。(例:ハッシュはタダだと思ってる)
>>805
> 仮想メモリ返却にはMMUを使ったページ管理が必要だよね?
お前は中途半端に勉強してるな。まあ悪いことではないが。
ページの単位は今も昔も4KBだ。その方法ではインスタンス毎の確保は出来ないと分かるだろ。
>>812-813
読むのは勝手だが、あまり関係ないところに深入りしても意味はないぞ。
7年目なら業務関連は一通り出来るようになっており、知識を横に広げているのかもしれないが、
OS関連の知識があってもな。
時間が有り余っていて手当たり次第に知識を吸収するのも一つの手だが、
もし大きい(10,000行以上)のを書いたことがないのなら、
まずは規模の限界(複雑さの限界)に挑戦する方がいいと思うが。
>>814
>もし大きい(10,000行以上)のを書いたことがないのなら、まずは規模の限界(複雑さの限界)に挑戦する方がいいと思うが。
そうですね…
1万行ですか…
せいぜい 1000 行程度までしかやったことがありません、モチベーションが続かない・燃料切れ、という感じです
>もし大きい(10,000行以上)のを書いたことがないのなら、まずは規模の限界(複雑さの限界)に挑戦する方がいいと思うが。
そうですね…
1万行ですか…
せいぜい 1000 行程度までしかやったことがありません、モチベーションが続かない・燃料切れ、という感じです
816デフォルトの名無しさん
2018/09/08(土) 00:12:07.00ID:kEOPIOXH 行数が多ければいいというものでもないと思うが・・・
817デフォルトの名無しさん
2018/09/08(土) 00:16:36.09ID:L3ZkEci+ だいぶ初歩の質問なんだけどextern宣言って本当に必須なの?コンパイラというかリンカによるのかもしれないけど、つけなくても同じ動作するよね?
今まで疑問に思わず書いてたけど、これを聞かれて色々試してみると実際つけなくても同様の動きしてるように見えるし、ちゃんと答えられなかったわ
今まで疑問に思わず書いてたけど、これを聞かれて色々試してみると実際つけなくても同様の動きしてるように見えるし、ちゃんと答えられなかったわ
818デフォルトの名無しさん
2018/09/08(土) 00:16:57.63ID:Bduckbke >>816
ならお前なりの妥当な規模を測る単位でも示せよ
ならお前なりの妥当な規模を測る単位でも示せよ
819デフォルトの名無しさん
2018/09/08(土) 00:24:37.23ID:cJyrgWby >>816
否定ばかりして新しい提案をしない典型的無能要員
否定ばかりして新しい提案をしない典型的無能要員
>>817
ライブラリ関数をコールするだけなら extern は要らない子です、でもライブラリが独自の変数を定義して公開しているのならば extern がないと困ります
例えば <stdio.h> の stdin, stdout, stderr
ライブラリ関数をコールするだけなら extern は要らない子です、でもライブラリが独自の変数を定義して公開しているのならば extern がないと困ります
例えば <stdio.h> の stdin, stdout, stderr
821デフォルトの名無しさん
2018/09/08(土) 01:03:55.35ID:Bduckbke >>817
> 1. Declaration can be done any number of times but definition only once.
> 2. “extern” keyword is used to extend the visibility of variables/functions().
> 3. Since functions are visible through out the program by default. The use of extern is not needed in function declaration/definition. Its use is redundant.
> 4. When extern is used with a variable, it’s only declared not defined.
> 5. As an exception, when an extern variable is declared with initialization, it is taken as definition of the variable as well.
> https://www.geeksforgeeks.org/understanding-extern-keyword-in-c/
下のコード例が見やすい。
これが規格と合致しているのかは知らん。
> 1. Declaration can be done any number of times but definition only once.
> 2. “extern” keyword is used to extend the visibility of variables/functions().
> 3. Since functions are visible through out the program by default. The use of extern is not needed in function declaration/definition. Its use is redundant.
> 4. When extern is used with a variable, it’s only declared not defined.
> 5. As an exception, when an extern variable is declared with initialization, it is taken as definition of the variable as well.
> https://www.geeksforgeeks.org/understanding-extern-keyword-in-c/
下のコード例が見やすい。
これが規格と合致しているのかは知らん。
>>821
しかし C には仮定義 "tentative definition" があったりして混迷するのです
ISO/IEC 9899:1999 6.9.2.2
the behavior is exactly as if the translation unit contains a file scope declaration of that
identifier, with the composite type as of the end of the translation unit, with an initializer
equal to 0.
私には、これはリンカの仕業であってコンパイラが自ら行動しているようには見えないのですが…
しかし C には仮定義 "tentative definition" があったりして混迷するのです
ISO/IEC 9899:1999 6.9.2.2
the behavior is exactly as if the translation unit contains a file scope declaration of that
identifier, with the composite type as of the end of the translation unit, with an initializer
equal to 0.
私には、これはリンカの仕業であってコンパイラが自ら行動しているようには見えないのですが…
823デフォルトの名無しさん
2018/09/08(土) 04:02:52.50ID:5gcJr6RX glibc は malloc だけで 5000行あるってね。
上級者スレに解説動画があったけど面白かったよ。
上級者スレに解説動画があったけど面白かったよ。
824デフォルトの名無しさん
2018/09/08(土) 09:36:45.93ID:gGqp1fFu >>814
>ページの単位は今も昔も4KBだ。その方法ではインスタンス毎の確保は出来ないと分かるだろ。
ごめん、これがよく分かんない。
MMUのページ単位が4KBなのと、インスタンス毎の確保はできないってのがつながらない。
てかここで言うインスタンスって何?
>ページの単位は今も昔も4KBだ。その方法ではインスタンス毎の確保は出来ないと分かるだろ。
ごめん、これがよく分かんない。
MMUのページ単位が4KBなのと、インスタンス毎の確保はできないってのがつながらない。
てかここで言うインスタンスって何?
825デフォルトの名無しさん
2018/09/08(土) 09:55:06.11ID:+lRq1NsW >>824
インスタンス1つにいちいち4KBもアロケートするのかって話だろ
インスタンス1つにいちいち4KBもアロケートするのかって話だろ
826デフォルトの名無しさん
2018/09/08(土) 10:01:56.96ID:gGqp1fFu >>825
別に1回のmallocで必ずしも毎回4KBのベージを割り当てる必要ないのでは?
mallocするのが小さいサイズなら確保済みの4KBの空いてるとこから割り当てれば良いし。
実際にはどういう実装になってるか知らんけど。
別に1回のmallocで必ずしも毎回4KBのベージを割り当てる必要ないのでは?
mallocするのが小さいサイズなら確保済みの4KBの空いてるとこから割り当てれば良いし。
実際にはどういう実装になってるか知らんけど。
827デフォルトの名無しさん
2018/09/08(土) 10:10:27.96ID:3yA/EH7F そもそも動的メモリ確保/解放と仮想メモリ管理は直接関係ない話
組み込みだとMMUなんて存在しない環境もある
組み込みだとMMUなんて存在しない環境もある
828デフォルトの名無しさん
2018/09/08(土) 10:12:51.74ID:Bduckbke >>826
それだとお前のレス
> freeするならどこからか借りていたメモリ領域を返却するわけで、仮想メモリ返却にはMMUを使ったページ管理が必要だよね?
> 仮想メモリページ管理はメモリマネージャー的なカーネルモードドライバが必要なはずで、つまり解放時にはシステムコールを伴う。
と矛盾するだろ。
お前は日本語が駄目なタイプか?
それだとお前のレス
> freeするならどこからか借りていたメモリ領域を返却するわけで、仮想メモリ返却にはMMUを使ったページ管理が必要だよね?
> 仮想メモリページ管理はメモリマネージャー的なカーネルモードドライバが必要なはずで、つまり解放時にはシステムコールを伴う。
と矛盾するだろ。
お前は日本語が駄目なタイプか?
829デフォルトの名無しさん
2018/09/08(土) 10:15:40.02ID:gGqp1fFu830デフォルトの名無しさん
2018/09/08(土) 10:25:31.57ID:+lRq1NsW831デフォルトの名無しさん
2018/09/08(土) 10:29:17.43ID:Bduckbke >>829
ぷろぐらみんぐのまえににほんごをがんばれ
ぷろぐらみんぐのまえににほんごをがんばれ
832デフォルトの名無しさん
2018/09/08(土) 10:29:54.08ID:gGqp1fFu 業務に関係なく完全に知的好奇心からのmalloc実装の想像だったので、やっぱりglibc読んでみよう。
色々レスくれた人、ありがとう。
色々レスくれた人、ありがとう。
833デフォルトの名無しさん
2018/09/08(土) 10:38:55.04ID:LzkjeqyB ファイルシステムの管理領域が大きくなりすぎて、
4KB以下のページサイズには出来ない
4MBで千個、4GBで百万個のページを管理しないといけないから、
管理領域だけでも、100MB以上になる
だから、ページサイズをもっと大きい、2MBにすると、
2GBで千個、2TBで百万個のページを管理できるから、今のHDD の容量に対応できる
4KB以下のページサイズには出来ない
4MBで千個、4GBで百万個のページを管理しないといけないから、
管理領域だけでも、100MB以上になる
だから、ページサイズをもっと大きい、2MBにすると、
2GBで千個、2TBで百万個のページを管理できるから、今のHDD の容量に対応できる
834デフォルトの名無しさん
2018/09/08(土) 10:43:05.81ID:+lRq1NsW HDDだとシリンダ容量との親和性を考えないとね
だけどSSDが普及してる今どきの事情だとどうなんだろう
だけどSSDが普及してる今どきの事情だとどうなんだろう
835デフォルトの名無しさん
2018/09/08(土) 10:55:59.74ID:AeS6DVc8836デフォルトの名無しさん
2018/09/08(土) 10:58:20.45ID:cJyrgWby 一領域当たり100byte
837デフォルトの名無しさん
2018/09/08(土) 11:02:40.38ID:AeS6DVc8838デフォルトの名無しさん
2018/09/08(土) 11:31:35.27ID:Bduckbke >>833
つHugePage
つHugePage
839デフォルトの名無しさん
2018/09/08(土) 16:08:33.18ID:u7HqPj1f utf8procというUnicodeライブラリを使いたいのですが、C99に準拠してるかどうかって分かりますか?
「emulate C99 bool」というコメントがソースコードにあったのでおそらくC89あたりからサポートしていると思うんですが。
https://github.com/JuliaStrings/utf8proc
「emulate C99 bool」というコメントがソースコードにあったのでおそらくC89あたりからサポートしていると思うんですが。
https://github.com/JuliaStrings/utf8proc
840デフォルトの名無しさん
2018/09/08(土) 17:17:58.22ID:AMMRWQYD >>839
C99に準拠している
そのコメントの少し前に
「MSVC prior to 2013 lacked stdbool.h and inttypes.h」ってコメントがあるからWindowsの古い環境のためにboolとかを定義しているだけだね
C99に準拠している
そのコメントの少し前に
「MSVC prior to 2013 lacked stdbool.h and inttypes.h」ってコメントがあるからWindowsの古い環境のためにboolとかを定義しているだけだね
841デフォルトの名無しさん
2018/09/08(土) 18:36:43.66ID:LzkjeqyB OSのすべての機能を学びたいなら、ムック本の
Linuxエンジニア養成読本、第3版、2016
カーネル、起動処理、仮想記憶、
ファイルシステム、シェルスクリプトなど
ファイルシステム・管理領域の仕組みなどを読んで
Linuxエンジニア養成読本、第3版、2016
カーネル、起動処理、仮想記憶、
ファイルシステム、シェルスクリプトなど
ファイルシステム・管理領域の仕組みなどを読んで
842デフォルトの名無しさん
2018/09/08(土) 18:44:21.19ID:+lRq1NsW タネンバウム先生の本でしょ
すごい弟子を育てた伝説の師匠
すごい弟子を育てた伝説の師匠
843デフォルトの名無しさん
2018/09/08(土) 18:49:46.85ID:kiLcyFGE なにそれ、すごい面白そう!
アラサーだけどまだまだ青二才だしとっても勉強になります!
アラサーだけどまだまだ青二才だしとっても勉強になります!
844デフォルトの名無しさん
2018/09/08(土) 19:31:07.27ID:AeS6DVc8845デフォルトの名無しさん
2018/09/09(日) 05:27:49.39ID:pVz5FNGY846デフォルトの名無しさん
2018/09/09(日) 14:54:16.40ID:/XE3HNn6 ここのスレの人はValgrindは
使っているんだろうか。
メモリリークとか考えれば
ぜひ使うべきツールだと思う。
https://qiita.com/tjun/items/e9d2f7da3c94eb0240d8
使っているんだろうか。
メモリリークとか考えれば
ぜひ使うべきツールだと思う。
https://qiita.com/tjun/items/e9d2f7da3c94eb0240d8
847デフォルトの名無しさん
2018/09/09(日) 15:31:42.46ID:pIlBTOwT 便利だよね
ただ役に立ってるときはクソコードを触ってるときでもあると思う
ただ役に立ってるときはクソコードを触ってるときでもあると思う
848デフォルトの名無しさん
2018/09/09(日) 15:44:39.72ID:DwszjCT1 変数中の "1" のビット数を数える効率的方法ありますか?
aが32ビットとして
for (i = 0; i < 32; i++) {
j = j + a & 1;
a = a >> 1;
}
みたいに1ビットずつカウントするしかないでしょうか
あるいは、8bitとかで区切ってテーブルを引いて加算とかでしょうか(16ビットや32ビットのテーブルは現実的でないので)
aが32ビットとして
for (i = 0; i < 32; i++) {
j = j + a & 1;
a = a >> 1;
}
みたいに1ビットずつカウントするしかないでしょうか
あるいは、8bitとかで区切ってテーブルを引いて加算とかでしょうか(16ビットや32ビットのテーブルは現実的でないので)
849デフォルトの名無しさん
2018/09/09(日) 15:50:52.78ID:V1LakR3i850デフォルトの名無しさん
2018/09/09(日) 15:53:41.89ID:V1LakR3i a = (a & 0x55555555) + (a >> 1 & 0x55555555);
a = (a & 0x33333333) + (a >> 2 & 0x33333333);
a = (a & 0x0F0F0F0F) + (a >> 4 & 0x0F0F0F0F);
a = (a & 0x00FF00FF) + (a >> 8 & 0x00FF00FF);
a = (a & 0x0000FFFF) + (a >> 16 & 0x0000FFFF);
a = (a & 0x33333333) + (a >> 2 & 0x33333333);
a = (a & 0x0F0F0F0F) + (a >> 4 & 0x0F0F0F0F);
a = (a & 0x00FF00FF) + (a >> 8 & 0x00FF00FF);
a = (a & 0x0000FFFF) + (a >> 16 & 0x0000FFFF);
851デフォルトの名無しさん
2018/09/09(日) 16:07:17.49ID:TAQT5wBe 32ビットだしその書き方良くないと思います
852デフォルトの名無しさん
2018/09/09(日) 16:54:40.77ID:V1LakR3i https://ideone.com/FGqs1S
なにも問題ない
レスをコピペで普通に動く
アホがいちいち車輪の再発明するよりとりあえず↓コレ使っとけば間違いない
http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
Built-in Function: int __builtin_popcount (unsigned int x)
Returns the number of 1-bits in x.
Built-in Function: int __builtin_popcountl (unsigned long)
Similar to __builtin_popcount, except the argument type is unsigned long.
Built-in Function: int __builtin_parityll (unsigned long long)
Similar to __builtin_parity, except the argument type is unsigned long long.
なにも問題ない
レスをコピペで普通に動く
アホがいちいち車輪の再発明するよりとりあえず↓コレ使っとけば間違いない
http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
Built-in Function: int __builtin_popcount (unsigned int x)
Returns the number of 1-bits in x.
Built-in Function: int __builtin_popcountl (unsigned long)
Similar to __builtin_popcount, except the argument type is unsigned long.
Built-in Function: int __builtin_parityll (unsigned long long)
Similar to __builtin_parity, except the argument type is unsigned long long.
853デフォルトの名無しさん
2018/09/09(日) 17:39:09.00ID:/XE3HNn6854デフォルトの名無しさん
2018/09/09(日) 17:57:06.08ID:2r/FT+Vi >>850
うまいやり方だなぁ
うまいやり方だなぁ
855デフォルトの名無しさん
2018/09/09(日) 17:57:22.00ID:lGJ+2GvF856デフォルトの名無しさん
2018/09/09(日) 18:06:01.01ID:2r/FT+Vi >>850
少なくとも最後の行だけは
a = (a + (a >> 16)) & 0x0000FFFF;
の方がよさそう。
正確には最大 32 にしかならないから & 0x0000001F でもよさそうだし、値の上限を考えながらだと途中の行ももう少し演算を減らせたりするかも?
少なくとも最後の行だけは
a = (a + (a >> 16)) & 0x0000FFFF;
の方がよさそう。
正確には最大 32 にしかならないから & 0x0000001F でもよさそうだし、値の上限を考えながらだと途中の行ももう少し演算を減らせたりするかも?
857デフォルトの名無しさん
2018/09/09(日) 18:06:59.52ID:2r/FT+Vi >>856
0x0000003F だったw
0x0000003F だったw
858デフォルトの名無しさん
2018/09/09(日) 20:35:00.38ID:2r/FT+Vi >>850
a = (a & 0x55555555) + (a >> 1 & 0x55555555);
a = (a & 0x33333333) + (a >> 2 & 0x33333333);
a = (a + (a >> 4)) & 0x0F0F0F0F0F;
a += a >> 8;
a = (a + (a >> 16)) & 0x3F;
でも同じ結果が得られた。
最適化無しだと 9% くらい速くなった。
a = (a & 0x55555555) + (a >> 1 & 0x55555555);
a = (a & 0x33333333) + (a >> 2 & 0x33333333);
a = (a + (a >> 4)) & 0x0F0F0F0F0F;
a += a >> 8;
a = (a + (a >> 16)) & 0x3F;
でも同じ結果が得られた。
最適化無しだと 9% くらい速くなった。
859デフォルトの名無しさん
2018/09/09(日) 20:36:22.47ID:2r/FT+Vi860デフォルトの名無しさん
2018/09/09(日) 21:00:45.14ID:4c2hO8gX しね
861デフォルトの名無しさん
2018/09/09(日) 21:13:17.93ID:2r/FT+Vi a = (a & 0x55555555) + (a >> 1 & 0x55555555);
a = (a & 0x33333333) + (a >> 2 & 0x33333333);
a = (a + (a >> 4)) & 0x0F0F0F0F;
a = (a * 0x101 * 0x10001) >> 24;
にしたら >>850 より 24% 速くなった(pentiumM linux)。
でも gcc の速度最適化を入れるとどれも変わらないね。
a = (a & 0x33333333) + (a >> 2 & 0x33333333);
a = (a + (a >> 4)) & 0x0F0F0F0F;
a = (a * 0x101 * 0x10001) >> 24;
にしたら >>850 より 24% 速くなった(pentiumM linux)。
でも gcc の速度最適化を入れるとどれも変わらないね。
862デフォルトの名無しさん
2018/09/09(日) 21:19:41.88ID:4c2hO8gX なに1人ではしゃいでんのこいつ。
863デフォルトの名無しさん
2018/09/09(日) 21:28:41.02ID:Vmegj8Hy CPUにそういう命令なかったっけ?
使うところでは割と使いそうだけど
使うところでは割と使いそうだけど
864デフォルトの名無しさん
2018/09/09(日) 21:45:09.16ID:5vkdTLeD865デフォルトの名無しさん
2018/09/09(日) 21:54:33.81ID:nMOWxsiw ああ、SSEにpopcntがあるね
866デフォルトの名無しさん
2018/09/09(日) 22:32:42.62ID:hCV1tk8e ポックント
867デフォルトの名無しさん
2018/09/10(月) 02:37:34.95ID:hUyLWeb6 ビットを数える・探すアルゴリズム
http://www.nminoru.jp/~nminoru/programming/bitcount.html
http://www.nminoru.jp/~nminoru/programming/bitcount.html
868デフォルトの名無しさん
2018/09/10(月) 10:36:25.17ID:o5mvkory ビット数の数えあげが欲しくなるのってパリティチェックで末尾付加したりするとき?
869デフォルトの名無しさん
2018/09/10(月) 10:44:53.73ID:cl7nWcjG ソケットみたいにフラグをビット管理してるときとかもほしくなるかな
870デフォルトの名無しさん
2018/09/10(月) 10:56:31.39ID:ddUFIgl6 符号とか暗号とかの世界ではしょっちゅう使うよ。
1の数で最適なアルゴリズムが変わるってケースもあるし、
暗号にサイドチャネル攻撃仕掛けるにはハミング距離とか重要。
1の数で最適なアルゴリズムが変わるってケースもあるし、
暗号にサイドチャネル攻撃仕掛けるにはハミング距離とか重要。
871デフォルトの名無しさん
2018/09/10(月) 11:27:01.59ID:o5mvkory872デフォルトの名無しさん
2018/09/10(月) 11:51:19.73ID:kNISuHie フラグは数えねえよな
性能重視でもなければビットフィールド使って読みやすくして欲しいわ
性能重視でもなければビットフィールド使って読みやすくして欲しいわ
873デフォルトの名無しさん
2018/09/10(月) 11:54:23.84ID:iqhXZjjt バラで書くから読みにくいのであって
関数にしておけば外から見た仕様は変わらない
関数にしておけば外から見た仕様は変わらない
874デフォルトの名無しさん
2018/09/10(月) 12:16:32.03ID:/R6yufrK 普通の通信でエラー検出以外の目的でビット数を数える必要性がわからない。
そんな特定のCPU以外は必ず無駄な計算が必要になる方式をなぜ使う?
そんな特定のCPU以外は必ず無駄な計算が必要になる方式をなぜ使う?
875デフォルトの名無しさん
2018/09/10(月) 12:46:33.22ID:x2RTnFiS >>874
エラー検出、訂正目的以外の通信のためにビットの数え上げするって誰かレスしてたっけ?
エラー検出、訂正目的以外の通信のためにビットの数え上げするって誰かレスしてたっけ?
877デフォルトの名無しさん
2018/09/10(月) 19:25:38.98ID:YAHzQjjo878デフォルトの名無しさん
2018/09/10(月) 19:32:05.94ID:WVFJrP31 Common Lisp にビットを数える関数があるけどcでも同様のものがあったようなゔ
879デフォルトの名無しさん
2018/09/10(月) 20:00:47.59ID:pZnz0RBT int a=0;
printf("%p" ,a);
printf("%p",&a);
同じアドレスが表示されると思っていたのですが、上下で違う数字が出力されました。
アドレスを表示するのはどちらが正しいのでしょうか?
よろしくお願いします。
printf("%p" ,a);
printf("%p",&a);
同じアドレスが表示されると思っていたのですが、上下で違う数字が出力されました。
アドレスを表示するのはどちらが正しいのでしょうか?
よろしくお願いします。
880さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/09/10(月) 20:06:35.73ID:NJC2soWX 下。
881デフォルトの名無しさん
2018/09/10(月) 20:07:47.31ID:WGo2tHWR882デフォルトの名無しさん
2018/09/10(月) 20:26:02.04ID:6MAzJtEj %p は ポインタを要求しているが
ポインタのサイズと intのサイズが違ってたら 鼻から悪魔
ポインタのサイズと intのサイズが違ってたら 鼻から悪魔
883デフォルトの名無しさん
2018/09/10(月) 20:28:01.62ID:pZnz0RBT884デフォルトの名無しさん
2018/09/10(月) 20:29:18.90ID:WGo2tHWR 天文学的な値が出るかも知れんね
885デフォルトの名無しさん
2018/09/10(月) 20:30:01.84ID:WGo2tHWR >>883
そうそう。そういうこと。
そうそう。そういうこと。
886デフォルトの名無しさん
2018/09/10(月) 20:43:33.30ID:l5sdNefZ887デフォルトの名無しさん
2018/09/10(月) 21:01:01.97ID:XzQQxj6r https://ideone.com/bsjclG
また、低学歴知恵遅れのクルクルパーがウソ書いてるわ。。。
64bitのアドレス空間を持ってて、intのサイズが32bitならちゃんと動くワケがないからな
また、低学歴知恵遅れのクルクルパーがウソ書いてるわ。。。
64bitのアドレス空間を持ってて、intのサイズが32bitならちゃんと動くワケがないからな
888デフォルトの名無しさん
2018/09/10(月) 21:07:42.09ID:XxqHEWUO >>887
どの書き込みに対してのレス?
どの書き込みに対してのレス?
889デフォルトの名無しさん
2018/09/10(月) 21:11:41.72ID:7zqNUn7X >>887
これまたチンケな知識でマウント取りに来たな w
これまたチンケな知識でマウント取りに来たな w
890デフォルトの名無しさん
2018/09/10(月) 21:12:59.71ID:XzQQxj6r ID:WGo2tHWR ← コイツにきまってんだろ
なあにが
そうそう。そういうこと。
だ
なにも知らないムクなヤツ相手に
低学歴知恵遅れの分際でテキトーなことばっかり書き込んでる
なあにが
そうそう。そういうこと。
だ
なにも知らないムクなヤツ相手に
低学歴知恵遅れの分際でテキトーなことばっかり書き込んでる
891デフォルトの名無しさん
2018/09/10(月) 21:16:56.02ID:XxqHEWUO ん?これのこと?
> printf() に a の内容である 0 を渡している
> printf() に a の内容である 0 を渡している
892デフォルトの名無しさん
2018/09/10(月) 21:19:04.26ID:6SoA/END こんなにでかい釣り針だと
鯨が釣れるかも
鯨が釣れるかも
893デフォルトの名無しさん
2018/09/10(月) 21:19:36.92ID:XzQQxj6r894デフォルトの名無しさん
2018/09/10(月) 21:21:51.21ID:XxqHEWUO あれ?
int *a;
int b=0;
a=&b;
printf("%p",a);
って別に正しくね?
int *a;
int b=0;
a=&b;
printf("%p",a);
って別に正しくね?
895デフォルトの名無しさん
2018/09/10(月) 21:22:53.59ID:XzQQxj6r896デフォルトの名無しさん
2018/09/10(月) 21:25:52.44ID:XxqHEWUO ううむ、俺にはaは64ビット環境だと64ビット長に見えるのだが違うのか?
897デフォルトの名無しさん
2018/09/10(月) 21:27:36.20ID:XzQQxj6r で、処理結果みた?
で、処理結果みた?
で、処理結果みた?
で、処理結果みた?
で、処理結果みた?
898デフォルトの名無しさん
2018/09/10(月) 21:29:43.88ID:XxqHEWUO おたくのサンプルは64ビットアドレスをintにキャストしちゃてるやん。そりゃ実行結果違うわ。
899デフォルトの名無しさん
2018/09/10(月) 21:31:35.87ID:XzQQxj6r https://ideone.com/PGwK6j
キャストはずしたったぞ
当然、結果はかわらない
やっぱりなこの板は低学歴知恵遅れしかいない
この程度のこともわからずにいきってレスしてるワケだからな
キャストはずしたったぞ
当然、結果はかわらない
やっぱりなこの板は低学歴知恵遅れしかいない
この程度のこともわからずにいきってレスしてるワケだからな
900デフォルトの名無しさん
2018/09/10(月) 21:31:51.59ID:6MAzJtEj たまたま 足りない分 0 を引っ張ってきてるけど(レジスタで渡ったから?)
スタックに積んでるリターンアドレスの一部から足りないのを補ってると、もっとわけわかな数値に
未定儀の挙動を推測すすのもまたオツなもの か
スタックに積んでるリターンアドレスの一部から足りないのを補ってると、もっとわけわかな数値に
未定儀の挙動を推測すすのもまたオツなもの か
901デフォルトの名無しさん
2018/09/10(月) 21:32:51.39ID:XxqHEWUO いやいや、883のaはポインタなんだってw
なんでintに入れちゃうのw
なんでintに入れちゃうのw
902デフォルトの名無しさん
2018/09/10(月) 21:33:36.29ID:XzQQxj6r903デフォルトの名無しさん
2018/09/10(月) 21:40:38.56ID:lZ/O7dtJ 半角クンていつも周りを見ずに自分の思い込みだけでレスしちゃって誤り訂正できないから、恥ずかしい(*/□\*)
直進しかできない目隠しされたイノシシみたい
直進しかできない目隠しされたイノシシみたい
904デフォルトの名無しさん
2018/09/10(月) 21:42:09.42ID:XzQQxj6r なにが間違いなわけ
指摘してみ
一切間違ったこと書いてないからな
低学歴知恵遅れはそもそも認知能力に問題がある
指摘してみ
一切間違ったこと書いてないからな
低学歴知恵遅れはそもそも認知能力に問題がある
905デフォルトの名無しさん
2018/09/10(月) 21:47:36.63ID:XxqHEWUO なぜ64ビットポインタをintに入れたの?
883ではそんなこと一切してないんだけど。
逆に
>printf() に a の内容である 0 を渡している
は整数リテラルがintなのに%pで受けてるので、64ビット環境なら4バイト分スタックのゴミを拾ってきそうだけど。
883ではそんなこと一切してないんだけど。
逆に
>printf() に a の内容である 0 を渡している
は整数リテラルがintなのに%pで受けてるので、64ビット環境なら4バイト分スタックのゴミを拾ってきそうだけど。
906デフォルトの名無しさん
2018/09/10(月) 21:48:46.40ID:XzQQxj6r はずかしくなって
こっち側にこようとしても
もう手遅れだからな
こっち側にこようとしても
もう手遅れだからな
907デフォルトの名無しさん
2018/09/10(月) 21:50:57.43ID:XxqHEWUO なんだ、結局はaがポインタだってことを見逃しただけかよw
908デフォルトの名無しさん
2018/09/10(月) 21:55:18.07ID:cYYSBBs1 >>906
つ鏡
つ鏡
910デフォルトの名無しさん
2018/09/11(火) 06:35:01.60ID:pvBPsgEg >>909
半角野郎が数行のプログラムも理解できないくせに自分で改竄したコードが動かねぇって騒いでただけ。
半角野郎こそ低学歴知恵遅れクルクルパーで認知能力とオツムに相当な問題があるってことが証明されただけなので気にするな。
本人は顔真っ赤にして逃げたみたいだけど。
半角野郎が数行のプログラムも理解できないくせに自分で改竄したコードが動かねぇって騒いでただけ。
半角野郎こそ低学歴知恵遅れクルクルパーで認知能力とオツムに相当な問題があるってことが証明されただけなので気にするな。
本人は顔真っ赤にして逃げたみたいだけど。
911デフォルトの名無しさん
2018/09/11(火) 07:57:47.34ID:2zsIBj+S912デフォルトの名無しさん
2018/09/11(火) 08:11:06.15ID:NBDkJ3+C >>911
半角クンのレスは、5%の真実と15%の間違い・思い込みと80%の繰り言・罵詈雑言でできてるからね。まっとうに読む価値はない。
半角クンのレスは、5%の真実と15%の間違い・思い込みと80%の繰り言・罵詈雑言でできてるからね。まっとうに読む価値はない。
913デフォルトの名無しさん
2018/09/11(火) 09:54:24.68ID:oX9GyHv1 まれにいいこと言う
850とか
850とか
914デフォルトの名無しさん
2018/09/11(火) 10:00:02.68ID:R1B4IsqD 釣り針が大きすぎて、クジラじゃないと釣れない
915デフォルトの名無しさん
2018/09/11(火) 11:44:57.89ID:zLtJmO+E musl-libcのiconvコマンドの本体ってここを見ればいいよね?
https://git.musl-libc.org/cgit/musl/tree/src/locale/iconv.c
https://git.musl-libc.org/cgit/musl/tree/src/locale/iconv.c
916デフォルトの名無しさん
2018/09/11(火) 20:05:08.62ID:YMBQMGAL 処理系って何?
cpuかコンパイラの事かなと思ってるんだけど。
間違ってる?
cpuかコンパイラの事かなと思ってるんだけど。
間違ってる?
917デフォルトの名無しさん
2018/09/11(火) 20:29:34.46ID:5X7KAgIC 処理系は、翻訳環境と、実行環境に大別される
翻訳環境とはコンパイラ等開発ツールを実行する環境
実行環境とはコンパイル結果のバイナリが稼働する環境、客先と言ってもよい
翻訳環境とはコンパイラ等開発ツールを実行する環境
実行環境とはコンパイル結果のバイナリが稼働する環境、客先と言ってもよい
918デフォルトの名無しさん
2018/09/11(火) 20:36:50.64ID:YMBQMGAL919デフォルトの名無しさん
2018/09/11(火) 20:45:37.73ID:5X7KAgIC cpuだけじゃないメモリが実装されているアドレス
i/oが実装されているアドレス
osの挙動
など様々な要因が絡む
i/oが実装されているアドレス
osの挙動
など様々な要因が絡む
920デフォルトの名無しさん
2018/09/11(火) 21:01:49.97ID:LZbcaZ/B CPUが同じであっても、
Windowsでは動かせてもmacOSでは動かないとか
同じWindowsでも、64bit環境では動いても32bit環境だと動かないとか
Windowsでは動かせてもmacOSでは動かないとか
同じWindowsでも、64bit環境では動いても32bit環境だと動かないとか
921デフォルトの名無しさん
2018/09/11(火) 21:12:52.13ID:ShO/owiX 半角くん、いたの?
lynx で見てるから何言ってるかわからない。
lynx で見てるから何言ってるかわからない。
922デフォルトの名無しさん
2018/09/11(火) 21:17:38.28ID:pVzZZpUQ ゴミPC早く捨てろ
923デフォルトの名無しさん
2018/09/11(火) 21:28:47.48ID:zLtJmO+E 処理系ってC99に関してはJISで定義されてたよね。
924デフォルトの名無しさん
2018/09/13(木) 21:21:47.72ID:1sKEH3Wo 昔の教科書には
C言語の原稿
↓プリプロセッサ
マクロ・ヘッダファイルが展開された原稿
↓翻訳機
アセンブリ言語の原稿
↓アセンブラ
機械語
↓リンカ
実行可能ファイル
っていう図がよく描かれてて,今でもWebを検索するとよく見掛けるんだけど,ほんとに今現在のコンパイラってこういうことやってんの?
gccやclangって,もはやC言語の原稿からほぼほぼ直接に実行可能ファイルを生成してるんじゃない?
さすがにプリプロセッサくらいはあるかもしれんが。
C言語の原稿
↓プリプロセッサ
マクロ・ヘッダファイルが展開された原稿
↓翻訳機
アセンブリ言語の原稿
↓アセンブラ
機械語
↓リンカ
実行可能ファイル
っていう図がよく描かれてて,今でもWebを検索するとよく見掛けるんだけど,ほんとに今現在のコンパイラってこういうことやってんの?
gccやclangって,もはやC言語の原稿からほぼほぼ直接に実行可能ファイルを生成してるんじゃない?
さすがにプリプロセッサくらいはあるかもしれんが。
925デフォルトの名無しさん
2018/09/13(木) 21:32:27.37ID:CY4XgXEU -vつけて起動してみ。
プリプロcppはcc1に統合された。
gccだと、cc1とかasとかcollect2とかが動いてるはず。
clangはデフォルトだとasなしかも。
プリプロcppはcc1に統合された。
gccだと、cc1とかasとかcollect2とかが動いてるはず。
clangはデフォルトだとasなしかも。
926デフォルトの名無しさん
2018/09/13(木) 21:54:33.53ID:1sKEH3Wo >>925
あざす
やっぱり減ってはいるんだな。
結構ああいう図を見掛けるんで,なんか(ほんとにこんな段階踏んでんのか?)ってモヤモヤしてた。
素人考えだが,あんな風に幾つも重ねてビルドしてたら最適化しにくい気がするし。
あざす
やっぱり減ってはいるんだな。
結構ああいう図を見掛けるんで,なんか(ほんとにこんな段階踏んでんのか?)ってモヤモヤしてた。
素人考えだが,あんな風に幾つも重ねてビルドしてたら最適化しにくい気がするし。
927デフォルトの名無しさん
2018/09/13(木) 22:33:23.35ID:brIJUf4C 処理としてはわかれてるよそりゃ
928デフォルトの名無しさん
2018/09/13(木) 23:18:13.03ID:1sKEH3Wo え そうなん
と思って空のファイルをgcc -vで処理したら
たしかにある程度進んでリンカの段階で エラーになったわ。
と思って空のファイルをgcc -vで処理したら
たしかにある程度進んでリンカの段階で エラーになったわ。
929デフォルトの名無しさん
2018/09/13(木) 23:28:49.69ID:yqnwLH2V bash-4.3$ gcc -v -o aho aho.c ←開始
/usr/lib/gcc/i586-slackware-linux/5.3.0/specs から spec を読み込んでいます
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i586-slackware-linux/5.3.0/lto-wrapper
ターゲット: i586-slackware-linux
configure 設定: ../gcc-5.3.0/configure --prefix=/usr --libdir=/usr/lib --mandir
=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-langu
ages=ada,c,c++,fortran,go,java,lto,objc --enable-threads=posix --enable-checkin
g=release --enable-objc-gc --with-system-zlib --with-python-dir=/lib/python2.7/
site-packages --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=gcc4-com
patible --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --
enable-lto --disable-install-libiberty --with-gnu-ld --verbose --enable-java-ho
me --with-java-home=/usr/lib/jvm/jre --with-jvm-root-dir=/usr/lib/jvm --with-jv
m-jar-dir=/usr/lib/jvm/jvm-exports --with-arch-directory=i386 --with-antlr-jar=
/root/slackware-current/source/d/gcc/antlr-runtime-3.4.jar --enable-java-awt=gt
k --disable-gtktest --with-arch=i586 --target=i586-slackware-linux --build=i586
-slackware-linux --host=i586-slackware-linux
スレッドモデル: posix
gcc バージョン 5.3.0 (GCC)
(-続く-)
/usr/lib/gcc/i586-slackware-linux/5.3.0/specs から spec を読み込んでいます
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i586-slackware-linux/5.3.0/lto-wrapper
ターゲット: i586-slackware-linux
configure 設定: ../gcc-5.3.0/configure --prefix=/usr --libdir=/usr/lib --mandir
=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-langu
ages=ada,c,c++,fortran,go,java,lto,objc --enable-threads=posix --enable-checkin
g=release --enable-objc-gc --with-system-zlib --with-python-dir=/lib/python2.7/
site-packages --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=gcc4-com
patible --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --
enable-lto --disable-install-libiberty --with-gnu-ld --verbose --enable-java-ho
me --with-java-home=/usr/lib/jvm/jre --with-jvm-root-dir=/usr/lib/jvm --with-jv
m-jar-dir=/usr/lib/jvm/jvm-exports --with-arch-directory=i386 --with-antlr-jar=
/root/slackware-current/source/d/gcc/antlr-runtime-3.4.jar --enable-java-awt=gt
k --disable-gtktest --with-arch=i586 --target=i586-slackware-linux --build=i586
-slackware-linux --host=i586-slackware-linux
スレッドモデル: posix
gcc バージョン 5.3.0 (GCC)
(-続く-)
930デフォルトの名無しさん
2018/09/13(木) 23:29:23.47ID:yqnwLH2V (-続き-)
COLLECT_GCC_OPTIONS='-v' '-o' 'aho' '-mtune=pentium' '-march=i586'
/usr/libexec/gcc/i586-slackware-linux/5.3.0/cc1 -quiet -v aho.c -quiet -dumpba
se aho.c -mtune=pentium -march=i586 -auxbase aho -version -o /tmp/ccVi37md.s ← @プリプロセス
GNU C11 (GCC) version 5.3.0 (i586-slackware-linux)
compiled by GNU C version 5.3.0, GMP version 6.1.0, MPFR version 3.1.4, MPC
version 1.0.3
warning: GMP header version 6.1.0 differs from library version 6.1.2.
GGC heuristics: --param ggc-min-expand=63 --param ggc-min-heapsize=62246
存在しないディレクトリ "/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i58
6-slackware-linux/include" を無視します
#include "..." の探索はここから始まります:
#include <...> の探索はここから始まります:
/usr/lib/gcc/i586-slackware-linux/5.3.0/include
/usr/local/include
/usr/lib/gcc/i586-slackware-linux/5.3.0/include-fixed
/usr/include
探索リストの終わりです。
(-続く-)
COLLECT_GCC_OPTIONS='-v' '-o' 'aho' '-mtune=pentium' '-march=i586'
/usr/libexec/gcc/i586-slackware-linux/5.3.0/cc1 -quiet -v aho.c -quiet -dumpba
se aho.c -mtune=pentium -march=i586 -auxbase aho -version -o /tmp/ccVi37md.s ← @プリプロセス
GNU C11 (GCC) version 5.3.0 (i586-slackware-linux)
compiled by GNU C version 5.3.0, GMP version 6.1.0, MPFR version 3.1.4, MPC
version 1.0.3
warning: GMP header version 6.1.0 differs from library version 6.1.2.
GGC heuristics: --param ggc-min-expand=63 --param ggc-min-heapsize=62246
存在しないディレクトリ "/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i58
6-slackware-linux/include" を無視します
#include "..." の探索はここから始まります:
#include <...> の探索はここから始まります:
/usr/lib/gcc/i586-slackware-linux/5.3.0/include
/usr/local/include
/usr/lib/gcc/i586-slackware-linux/5.3.0/include-fixed
/usr/include
探索リストの終わりです。
(-続く-)
931デフォルトの名無しさん
2018/09/13(木) 23:30:05.16ID:yqnwLH2V (-続き-)
GNU C11 (GCC) version 5.3.0 (i586-slackware-linux) ← Aコンパイル
compiled by GNU C version 5.3.0, GMP version 6.1.0, MPFR version 3.1.4, MPC
version 1.0.3
MPC version 1.0.3
warning: GMP header version 6.1.0 differs from library version 6.1.2.
GGC heuristics: --param ggc-min-expand=63 --param ggc-min-heapsize=62246
Compiler executable checksum: c5a3ffed702d1cd048214b2b66d4a98a
(-続く-)
GNU C11 (GCC) version 5.3.0 (i586-slackware-linux) ← Aコンパイル
compiled by GNU C version 5.3.0, GMP version 6.1.0, MPFR version 3.1.4, MPC
version 1.0.3
MPC version 1.0.3
warning: GMP header version 6.1.0 differs from library version 6.1.2.
GGC heuristics: --param ggc-min-expand=63 --param ggc-min-heapsize=62246
Compiler executable checksum: c5a3ffed702d1cd048214b2b66d4a98a
(-続く-)
932デフォルトの名無しさん
2018/09/13(木) 23:30:29.37ID:yqnwLH2V (-続き-)
COLLECT_GCC_OPTIONS='-v' '-o' 'aho' '-mtune=pentium' '-march=i586'
/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/a
s -v --32 -o /tmp/ccMFr9O6.o /tmp/ccVi37md.s ← Bアセンブル
GNU アセンブラ バージョン 2.26 (i586-slackware-linux)、BFD バージョン version 2
.26.20160125 を使用
(-続く-)
COLLECT_GCC_OPTIONS='-v' '-o' 'aho' '-mtune=pentium' '-march=i586'
/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/a
s -v --32 -o /tmp/ccMFr9O6.o /tmp/ccVi37md.s ← Bアセンブル
GNU アセンブラ バージョン 2.26 (i586-slackware-linux)、BFD バージョン version 2
.26.20160125 を使用
(-続く-)
933デフォルトの名無しさん
2018/09/13(木) 23:31:04.04ID:yqnwLH2V (-続き-)
COMPILER_PATH=/usr/libexec/gcc/i586-slackware-linux/5.3.0/:/usr/libexec/gcc/i58
6-slackware-linux/5.3.0/:/usr/libexec/gcc/i586-slackware-linux/:/usr/lib/gcc/i5
86-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackware-linux/:/usr/lib/gcc/i586-
slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/
LIBRARY_PATH=/usr/lib/gcc/i586-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackwa
re-linux/5.3.0/../../../../i586-slackware-linux/lib/:/usr/lib/gcc/i586-slackwar
e-linux/5.3.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'aho' '-mtune=pentium' '-march=i586'
/usr/libexec/gcc/i586-slackware-linux/5.3.0/collect2 -plugin /usr/libexec/gcc/
i586-slackware-linux/5.3.0/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/i586-s
lackware-linux/5.3.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccGuF6mf.res -pl
ugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pas
s-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s
--eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o aho /usr/lib/
gcc/i586-slackware-linux/5.3.0/../../../crt1.o /usr/lib/gcc/i586-slackware-linu
x/5.3.0/../../../crti.o /usr/lib/gcc/i586-slackware-linux/5.3.0/crtbegin.o -L/u
sr/lib/gcc/i586-slackware-linux/5.3.0 -L/usr/lib/gcc/i586-slackware-linux/5.3.0
/../../../../i586-slackware-linux/lib -L/usr/lib/gcc/i586-slackware-linux/5.3.0
/../../.. /tmp/ccMFr9O6.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --
as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i586-slackware-linux/5.3.0/crtend
.o /usr/lib/gcc/i586-slackware-linux/5.3.0/../../../crtn.o ← Cリンク
COMPILER_PATH=/usr/libexec/gcc/i586-slackware-linux/5.3.0/:/usr/libexec/gcc/i58
6-slackware-linux/5.3.0/:/usr/libexec/gcc/i586-slackware-linux/:/usr/lib/gcc/i5
86-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackware-linux/:/usr/lib/gcc/i586-
slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/
LIBRARY_PATH=/usr/lib/gcc/i586-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackwa
re-linux/5.3.0/../../../../i586-slackware-linux/lib/:/usr/lib/gcc/i586-slackwar
e-linux/5.3.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'aho' '-mtune=pentium' '-march=i586'
/usr/libexec/gcc/i586-slackware-linux/5.3.0/collect2 -plugin /usr/libexec/gcc/
i586-slackware-linux/5.3.0/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/i586-s
lackware-linux/5.3.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccGuF6mf.res -pl
ugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pas
s-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s
--eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o aho /usr/lib/
gcc/i586-slackware-linux/5.3.0/../../../crt1.o /usr/lib/gcc/i586-slackware-linu
x/5.3.0/../../../crti.o /usr/lib/gcc/i586-slackware-linux/5.3.0/crtbegin.o -L/u
sr/lib/gcc/i586-slackware-linux/5.3.0 -L/usr/lib/gcc/i586-slackware-linux/5.3.0
/../../../../i586-slackware-linux/lib -L/usr/lib/gcc/i586-slackware-linux/5.3.0
/../../.. /tmp/ccMFr9O6.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --
as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i586-slackware-linux/5.3.0/crtend
.o /usr/lib/gcc/i586-slackware-linux/5.3.0/../../../crtn.o ← Cリンク
934デフォルトの名無しさん
2018/09/13(木) 23:34:54.24ID:yqnwLH2V 普通に別々のモジュールで独立して処理されてる
@プリプロセス /usr/libexec/gcc/i586-slackware-linux/5.3.0/cc1
Aコンパイル /usr/bin/gcc
Bアセンブル /usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/as
Cリンク /usr/libexec/gcc/i586-slackware-linux/5.3.0/collect2
@プリプロセス /usr/libexec/gcc/i586-slackware-linux/5.3.0/cc1
Aコンパイル /usr/bin/gcc
Bアセンブル /usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/as
Cリンク /usr/libexec/gcc/i586-slackware-linux/5.3.0/collect2
935デフォルトの名無しさん
2018/09/14(金) 00:17:52.55ID:lqNqtREE >>934
/usr/bib/gccはちげーだろ
/usr/bib/gccはちげーだろ
936デフォルトの名無しさん
2018/09/14(金) 00:51:20.40ID:q3l06dS7937デフォルトの名無しさん
2018/09/14(金) 00:58:32.39ID:fXySkelb bash-4.3$ gcc -v -E -o aho_.c aho.c ←開始
/usr/lib/gcc/i586-slackware-linux/5.3.0/specs から spec を読み込んでいます
COLLECT_GCC=gcc
ターゲット: i586-slackware-linux
configure 設定: ../gcc-5.3.0/configure --prefix=/usr --libdir=/usr/lib --mandir
=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-langu
ages=ada,c,c++,fortran,go,java,lto,objc --enable-threads=posix --enable-checkin
g=release --enable-objc-gc --with-system-zlib --with-python-dir=/lib/python2.7/
site-packages --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=gcc4-com
patible --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --
enable-lto --disable-install-libiberty --with-gnu-ld --verbose --enable-java-ho
me --with-java-home=/usr/lib/jvm/jre --with-jvm-root-dir=/usr/lib/jvm --with-jv
m-jar-dir=/usr/lib/jvm/jvm-exports --with-arch-directory=i386 --with-antlr-jar=
/root/slackware-current/source/d/gcc/antlr-runtime-3.4.jar --enable-java-awt=gt
k --disable-gtktest --with-arch=i586 --target=i586-slackware-linux --build=i586
-slackware-linux --host=i586-slackware-linux
スレッドモデル: posix
(-続く-)
/usr/lib/gcc/i586-slackware-linux/5.3.0/specs から spec を読み込んでいます
COLLECT_GCC=gcc
ターゲット: i586-slackware-linux
configure 設定: ../gcc-5.3.0/configure --prefix=/usr --libdir=/usr/lib --mandir
=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-langu
ages=ada,c,c++,fortran,go,java,lto,objc --enable-threads=posix --enable-checkin
g=release --enable-objc-gc --with-system-zlib --with-python-dir=/lib/python2.7/
site-packages --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=gcc4-com
patible --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --
enable-lto --disable-install-libiberty --with-gnu-ld --verbose --enable-java-ho
me --with-java-home=/usr/lib/jvm/jre --with-jvm-root-dir=/usr/lib/jvm --with-jv
m-jar-dir=/usr/lib/jvm/jvm-exports --with-arch-directory=i386 --with-antlr-jar=
/root/slackware-current/source/d/gcc/antlr-runtime-3.4.jar --enable-java-awt=gt
k --disable-gtktest --with-arch=i586 --target=i586-slackware-linux --build=i586
-slackware-linux --host=i586-slackware-linux
スレッドモデル: posix
(-続く-)
938デフォルトの名無しさん
2018/09/14(金) 00:59:43.97ID:fXySkelb (-続き-)
gcc バージョン 5.3.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-E' '-o' 'aho_.c' '-mtune=pentium' '-march=i586'
/usr/libexec/gcc/i586-slackware-linux/5.3.0/cc1 -E -quiet -v aho.c -o aho_.c -
mtune=pentium -march=i586
存在しないディレクトリ "/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i58
6-slackware-linux/include" を無視します
#include "..." の探索はここから始まります:
#include <...> の探索はここから始まります:
/usr/lib/gcc/i586-slackware-linux/5.3.0/include
/usr/local/include
/usr/lib/gcc/i586-slackware-linux/5.3.0/include-fixed
/usr/include
探索リストの終わりです。
COMPILER_PATH=/usr/libexec/gcc/i586-slackware-linux/5.3.0/:/usr/libexec/gcc/i58
6-slackware-linux/5.3.0/:/usr/libexec/gcc/i586-slackware-linux/:/usr/lib/gcc/i5
86-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackware-linux/:/usr/lib/gcc/i586-
slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/
LIBRARY_PATH=/usr/lib/gcc/i586-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackwa
re-linux/5.3.0/../../../../i586-slackware-linux/lib/:/usr/lib/gcc/i586-slackwar
e-linux/5.3.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-E' '-o' 'aho_.c' '-mtune=pentium' '-march=i586'
エラーなし
gcc バージョン 5.3.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-E' '-o' 'aho_.c' '-mtune=pentium' '-march=i586'
/usr/libexec/gcc/i586-slackware-linux/5.3.0/cc1 -E -quiet -v aho.c -o aho_.c -
mtune=pentium -march=i586
存在しないディレクトリ "/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i58
6-slackware-linux/include" を無視します
#include "..." の探索はここから始まります:
#include <...> の探索はここから始まります:
/usr/lib/gcc/i586-slackware-linux/5.3.0/include
/usr/local/include
/usr/lib/gcc/i586-slackware-linux/5.3.0/include-fixed
/usr/include
探索リストの終わりです。
COMPILER_PATH=/usr/libexec/gcc/i586-slackware-linux/5.3.0/:/usr/libexec/gcc/i58
6-slackware-linux/5.3.0/:/usr/libexec/gcc/i586-slackware-linux/:/usr/lib/gcc/i5
86-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackware-linux/:/usr/lib/gcc/i586-
slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/
LIBRARY_PATH=/usr/lib/gcc/i586-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackwa
re-linux/5.3.0/../../../../i586-slackware-linux/lib/:/usr/lib/gcc/i586-slackwar
e-linux/5.3.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-E' '-o' 'aho_.c' '-mtune=pentium' '-march=i586'
エラーなし
939デフォルトの名無しさん
2018/09/14(金) 01:02:16.51ID:fXySkelb プリプロセス前
bash-4.3$ cat aho.c
#include <stdio.h>
#define ahobaka "あほばか"
#define AHOBAKA aho##baka
#define LIT(str) #str
#define PRINT(f,...) fprintf(stdout, f, __VA_ARGS__)
#define SHINE PRINT("%s%s\n", AHOBAKA, LIT(a"b"c))
int main(void) {
SHINE;
return 0;
}
プリプロセス後
bash-4.3$ cat aho_.c
(-略-)
# 8 "aho.c"
int main(void) {
fprintf(
# 9 "aho.c" 3 4
stdout
# 9 "aho.c"
, "%s%s\n", "あほばか", "a\"b\"c");
return 0;
}
bash-4.3$ cat aho.c
#include <stdio.h>
#define ahobaka "あほばか"
#define AHOBAKA aho##baka
#define LIT(str) #str
#define PRINT(f,...) fprintf(stdout, f, __VA_ARGS__)
#define SHINE PRINT("%s%s\n", AHOBAKA, LIT(a"b"c))
int main(void) {
SHINE;
return 0;
}
プリプロセス後
bash-4.3$ cat aho_.c
(-略-)
# 8 "aho.c"
int main(void) {
fprintf(
# 9 "aho.c" 3 4
stdout
# 9 "aho.c"
, "%s%s\n", "あほばか", "a\"b\"c");
return 0;
}
940デフォルトの名無しさん
2018/09/14(金) 04:27:04.26ID:q3l06dS7 pcc(1)とかで試すとわかりやすいとおもう。
941デフォルトの名無しさん
2018/09/14(金) 05:58:00.88ID:3Ef1q6jY コンパイラが(プリプロセス済みの)ソースを処理する際、
直接にはアセンブリのソースに持っていかず、いったん中間言語に変換。
その中間言語の段階でも最適化を行ってから
アセンブリに変換してアセンブル・リンク。
……みたいな手順になってると聞いたことがある。
中間言語段階の中間ファイルを出力させることができるか知らんけど。
プリプロセッサ、コンパイラ、アセンブラ、リンカよりも
内部的な手順はむしろ増えてるのかも。
直接にはアセンブリのソースに持っていかず、いったん中間言語に変換。
その中間言語の段階でも最適化を行ってから
アセンブリに変換してアセンブル・リンク。
……みたいな手順になってると聞いたことがある。
中間言語段階の中間ファイルを出力させることができるか知らんけど。
プリプロセッサ、コンパイラ、アセンブラ、リンカよりも
内部的な手順はむしろ増えてるのかも。
942デフォルトの名無しさん
2018/09/14(金) 07:13:28.65ID:RUHHwTRx943デフォルトの名無しさん
2018/09/14(金) 08:36:29.54ID:SYmkUqRw JITとなんの関係が?
944デフォルトの名無しさん
2018/09/14(金) 08:49:57.91ID:q3l06dS7945デフォルトの名無しさん
2018/09/14(金) 09:12:54.86ID:d02sSTx1 昔 LSIゲームってあったでしょ
ああいうゲームをCで書いてパソコンで遊びたいんだけど
技術的な情報が不足してんだ 特に画面を動かす方法
そういうのどこで手に入るか分かる人いる? 教えてくださいヽ(^o^)丿
ああいうゲームをCで書いてパソコンで遊びたいんだけど
技術的な情報が不足してんだ 特に画面を動かす方法
そういうのどこで手に入るか分かる人いる? 教えてくださいヽ(^o^)丿
946デフォルトの名無しさん
2018/09/14(金) 09:49:18.88ID:1qfFvEAu cursesライブラリを使う
947デフォルトの名無しさん
2018/09/14(金) 10:39:42.96ID:i1kWv4b4 CでGUIまでやりたいということか?
うーん・・・
うーん・・・
948デフォルトの名無しさん
2018/09/14(金) 12:08:50.95ID:9XnUq3uB949デフォルトの名無しさん
2018/09/14(金) 12:34:30.19ID:3Ef1q6jY >>945 の言うLSIゲームってのが、
ドットマトリクスの汎用液晶パネルを使ったゲームじゃなくて、
ゲーム&ウォッチみたいな専用にデザインされた液晶のゲームだと
ちょいと変わってくるかもな。
大筋は同じだけど、少数のデカキャラ表示を点けたり消したり。
ドットマトリクスの汎用液晶パネルを使ったゲームじゃなくて、
ゲーム&ウォッチみたいな専用にデザインされた液晶のゲームだと
ちょいと変わってくるかもな。
大筋は同じだけど、少数のデカキャラ表示を点けたり消したり。
950デフォルトの名無しさん
2018/09/14(金) 12:48:17.13ID:9XnUq3uB イメージ伝えるためにLSIゲームと言うならドットマトリックスというよりゲームウォッチ式じゃないかな。
ただその趣旨は、簡易な操作と表示のゲームなんじゃないかと。
キャラクタ端末ゲームを知ればそっちに倒れるんじゃないかな?
ただその趣旨は、簡易な操作と表示のゲームなんじゃないかと。
キャラクタ端末ゲームを知ればそっちに倒れるんじゃないかな?
951デフォルトの名無しさん
2018/09/14(金) 12:53:46.05ID:/Lpq1ndz >>945
画面表示はglut
画面表示はglut
952デフォルトの名無しさん
2018/09/14(金) 13:39:29.18ID:GvbetZ+k ゲームウォッチみたいなのってビットマップじゃないけど、表示する情報量どんくらいなんだろうね?
64bitくらい?
64bitくらい?
953デフォルトの名無しさん
2018/09/14(金) 13:53:35.51ID:q3l06dS7 エスケープシーケンスの話が出たついでに質問なんだけど
コマンド名: エラーレベル: エラーメッセージ
↑こういう形式のエラーで、エラーレベルが赤や黄に色付けされてる場合があるんだけども
これってなにかライブラリがあるのかな。それとも各種アプリケーションが自力でやってんのかな。
コマンド名: エラーレベル: エラーメッセージ
↑こういう形式のエラーで、エラーレベルが赤や黄に色付けされてる場合があるんだけども
これってなにかライブラリがあるのかな。それとも各種アプリケーションが自力でやってんのかな。
954デフォルトの名無しさん
2018/09/14(金) 14:03:35.51ID:xLMWwHO5 LSI-Cと聞いて飛んできました
懐かしい・・・
懐かしい・・・
955デフォルトの名無しさん
2018/09/14(金) 15:19:32.14ID:d02sSTx1956デフォルトの名無しさん
2018/09/14(金) 15:37:28.55ID:GvbetZ+k 色付けはほぼ自前なんじゃないかねえ。単に制御文字挟むたけだからね。
端末にお絵かきするならローグでも使った伝統あるcursesで。
端末にお絵かきするならローグでも使った伝統あるcursesで。
957デフォルトの名無しさん
2018/09/15(土) 10:21:05.36ID:iTkubaya >>955
ttp://www.orchid.co.jp/computer/cgame/index.html
ttp://www.orchid.co.jp/computer/cgame/index.html
958デフォルトの名無しさん
2018/09/15(土) 10:24:40.59ID:RjcPqpvv >>952
ttps://www.nintendo.co.jp/n10/interview/game_and_watch/vol1/index2.html
>というのも、ゲーム&ウオッチで採用したチップは、電卓で使われているのと同じものだったんです。
>そもそも電卓のディスプレイのひとつの数字は7セグメントで表示されるようになっていまして・・・。
(略)
>72セグメントの表示が可能だったそのチップを使って『ボール』をつくったんです。
ttps://www.nintendo.co.jp/n10/interview/game_and_watch/vol1/index2.html
>というのも、ゲーム&ウオッチで採用したチップは、電卓で使われているのと同じものだったんです。
>そもそも電卓のディスプレイのひとつの数字は7セグメントで表示されるようになっていまして・・・。
(略)
>72セグメントの表示が可能だったそのチップを使って『ボール』をつくったんです。
959デフォルトの名無しさん
2018/09/15(土) 12:30:45.82ID:WJY+K2bP960デフォルトの名無しさん
2018/09/15(土) 12:52:26.12ID:rgCMOp4r コンピュータというほど抽象化もされてないんだろうね。
コントローラではあるけども。
コントローラではあるけども。
961デフォルトの名無しさん
2018/09/15(土) 12:53:38.17ID:iTkubaya 配線の都合で配置がぐちゃぐちゃ?
962デフォルトの名無しさん
2018/09/15(土) 13:31:29.74ID:OUVvcRON ゲームウオッチは知らんけど配線パターンの都合でビット配置が変則的になるとかはあるよ
963デフォルトの名無しさん
2018/09/15(土) 18:43:35.47ID:8KftQgLD 蒸し返すようだが近代的な処理系でも,ビルドの各作業は分担して実行してると思っていいのね。
プリプロセッサで展開→中間言語に翻訳→アセンブリ言語に翻訳→機械語にアセンブラ→リンク
プリプロセッサで展開→中間言語に翻訳→アセンブリ言語に翻訳→機械語にアセンブラ→リンク
964デフォルトの名無しさん
2018/09/15(土) 18:59:03.04ID:kl+My5NF >>957
ありがとう すごい参考になった
ありがとう すごい参考になった
965デフォルトの名無しさん
2018/09/16(日) 06:08:26.07ID:QKaZz7Xi >>963 そう考えて良いと思うよ。
ただし、各段階で実行されるツールが独立した実行ファイルか、とか
それぞれの段階で作られる中間状態をファイルとして取り出せるか、
という話なら「場合による」ってことになる。
ただし、各段階で実行されるツールが独立した実行ファイルか、とか
それぞれの段階で作られる中間状態をファイルとして取り出せるか、
という話なら「場合による」ってことになる。
966デフォルトの名無しさん
2018/09/16(日) 23:54:07.55ID:ynEgKPZ+ >>965
ありがとうございます。
ありがとうございます。
967デフォルトの名無しさん
2018/09/17(月) 00:45:31.62ID:jghdaJ/O save-tempsは割と使います
968デフォルトの名無しさん
2018/09/17(月) 06:09:25.28ID:5TL9cO8s gcc -save-temps -o prog prog.c
と指定すると prog.i, prog.s, prog.o が残るのね。
それでもプリプロセス済みCとアセンブリとの中間段階は見られないか。
ちなみに -save-temps と -pipe を同時に指定すると、
gcc: 警告: -save-temps が指定されたため、-pipe は無視されました
……ですってよ、奥様。
と指定すると prog.i, prog.s, prog.o が残るのね。
それでもプリプロセス済みCとアセンブリとの中間段階は見られないか。
ちなみに -save-temps と -pipe を同時に指定すると、
gcc: 警告: -save-temps が指定されたため、-pipe は無視されました
……ですってよ、奥様。
969デフォルトの名無しさん
2018/09/17(月) 07:57:34.69ID:SBpxj18K970デフォルトの名無しさん
2018/09/17(月) 08:09:11.53ID:hbuTlOjm プリプロセスとかアセンブリとかがあるとなんか困るの?
なんでそんなに必死なのか分からん。
処理が過度に複雑にならないためとか、様々な言語やCPUといった対象に幅広く対応するためとか、いろんな理由で工程を分ける方が合理的でしょうに。
なんでそんなに必死なのか分からん。
処理が過度に複雑にならないためとか、様々な言語やCPUといった対象に幅広く対応するためとか、いろんな理由で工程を分ける方が合理的でしょうに。
971デフォルトの名無しさん
2018/09/17(月) 08:13:06.60ID:BwzrWhGR 鉄鉱石とボーキサイトと石油入れたら自動車が出てくる装置があると思ってるんでしょ
972968
2018/09/17(月) 08:27:18.66ID:5TL9cO8s .i がプリプロセス済みのC
.s がアセンブリ
ということは分かってるのよ、それらの間にある状態を
ファイルとして見ることができないという話。
GCC用語ではGENERICの段階てことになるかな。
GENERICとアセンブリの間にもまだあるみたいだけど。
.s がアセンブリ
ということは分かってるのよ、それらの間にある状態を
ファイルとして見ることができないという話。
GCC用語ではGENERICの段階てことになるかな。
GENERICとアセンブリの間にもまだあるみたいだけど。
973デフォルトの名無しさん
2018/09/17(月) 08:28:59.23ID:SBpxj18K974デフォルトの名無しさん
2018/09/17(月) 08:36:20.28ID:SBpxj18K >>972
> それらの間にある状態を
> ファイルとして見ることができないという話。
gccならこの辺りを見ればいいんじゃね
https://code-examples.net/ja/docs/gcc~7/developer-options
> それらの間にある状態を
> ファイルとして見ることができないという話。
gccならこの辺りを見ればいいんじゃね
https://code-examples.net/ja/docs/gcc~7/developer-options
975デフォルトの名無しさん
2018/09/17(月) 09:14:28.38ID:z+cSzUXJ TASMとTCCとTLINKにお世話になった20年前。
976デフォルトの名無しさん
2018/09/17(月) 09:19:33.19ID:5TL9cO8s977デフォルトの名無しさん
2018/09/17(月) 10:17:59.30ID:qtGPC3c9 -Eだろjk
978デフォルトの名無しさん
2018/09/17(月) 11:58:09.09ID:5NB0QfSZ たとえばpccなんかはものすごく外部コマンドにたよってるよね。
man pccとするとその解説が載ってる。
man pccとするとその解説が載ってる。
979デフォルトの名無しさん
2018/09/17(月) 12:00:30.90ID:5NB0QfSZ 質問者はここを参照するといいかも
http://pcc.ludd.ltu.se/how-it-works/
ただ,PCCはGCCやらClangと違って小ささ,見通しのよさを重視してるから,
GCCとかClangとかはそんなことやってないかもしれん。
(ていうかGCCやClangにおける↑上のリンクみたいなドキュメントはないのかな)
http://pcc.ludd.ltu.se/how-it-works/
ただ,PCCはGCCやらClangと違って小ささ,見通しのよさを重視してるから,
GCCとかClangとかはそんなことやってないかもしれん。
(ていうかGCCやClangにおける↑上のリンクみたいなドキュメントはないのかな)
980デフォルトの名無しさん
2018/09/18(火) 20:12:09.59ID:2waW+Aqm 分かってて使こてたんちゃうん
981デフォルトの名無しさん
2018/09/19(水) 05:40:46.68ID:6Ke1Nn09 C言語(じゃなくてもいいけど)をやってると
標準出力に出力するというのがいかに便利かを痛感するねぇ
下手にファイルやなんかに出力先を指定しようものなら一気に
パーミッションや属性値の問題が噴出するのに対して
標準出力ではそういう一切を気にせずに垂れ流せる
標準出力に出力するというのがいかに便利かを痛感するねぇ
下手にファイルやなんかに出力先を指定しようものなら一気に
パーミッションや属性値の問題が噴出するのに対して
標準出力ではそういう一切を気にせずに垂れ流せる
982デフォルトの名無しさん
2018/09/19(水) 07:56:02.42ID:bRibFDbQ C++の学習(入門レベル〜初心者レベル)をするのにC言語の知識って必須なんですか?
読んでるC++入門書が途中から分かりづらかったので独習C++って入門書を買おうとしたんですけど
とあるレビューにC言語を習得してるのが望ましいとか書いてあって気になったんですが…
プログラミング言語自体経験皆無なのですが、どうすればいいでしょうか?
読んでるC++入門書が途中から分かりづらかったので独習C++って入門書を買おうとしたんですけど
とあるレビューにC言語を習得してるのが望ましいとか書いてあって気になったんですが…
プログラミング言語自体経験皆無なのですが、どうすればいいでしょうか?
983デフォルトの名無しさん
2018/09/19(水) 08:04:03.02ID:37LGoDD1 >>982
C++はCの大半の部分を包含したような言語仕様になっているから、必然的にCの知識も必要になってくる。本を書く方も、Cと重複するような内容まですべて書いてると膨大になってくるから、Cを知っている前提になっている本は多い。
C++の流儀でコーディングするなら使われないCなりの書き方とかもあるけど、基本的にはCは避けて通れないはず。
頑張ってCも身に付けるか、もっと初心者が取っつきやすい言語から始めた方がいいかも。
C++はCの大半の部分を包含したような言語仕様になっているから、必然的にCの知識も必要になってくる。本を書く方も、Cと重複するような内容まですべて書いてると膨大になってくるから、Cを知っている前提になっている本は多い。
C++の流儀でコーディングするなら使われないCなりの書き方とかもあるけど、基本的にはCは避けて通れないはず。
頑張ってCも身に付けるか、もっと初心者が取っつきやすい言語から始めた方がいいかも。
984デフォルトの名無しさん
2018/09/19(水) 08:29:50.54ID:t41Iifgl じゃあCの知識を前提にしてないC++の本探せば
やさしいC++とかでいいんじゃね
やさしいC++とかでいいんじゃね
985デフォルトの名無しさん
2018/09/19(水) 08:47:40.49ID:OxeqQ4V7 全部やればいいと思うよ。pythonもlispも
C++の必要性を実感するのってプログラムが大規模になってからなので、最初はちょっとポイント絞るのが大変かもね
C++の必要性を実感するのってプログラムが大規模になってからなので、最初はちょっとポイント絞るのが大変かもね
986デフォルトの名無しさん
2018/09/19(水) 10:31:35.10ID:bRibFDbQ >>983
回答ありがとうございます
ロベールって本読んでたんですが(クラスの章で読むの中断)今の所特にC言語などの前提知識は
要求されてなかったんですが、これから必要になっていく感じですかね・・
具体的にはどれくらいC言語のスキルを付けてからC++に逝くのが望ましいですか?苦しんで覚えるC言語って本はざっと読んだんですがこれじゃ弱いですよね・・
.....それともCに拘らずに何かpythonとかrubyみたいな人気そうで簡単そうな言語で何か作れるくらいまで覚えてからC言語に戻ってきたほうが
一見遠回りのように見えて近道なんでしょうか?質問ばかりですいません;
回答ありがとうございます
ロベールって本読んでたんですが(クラスの章で読むの中断)今の所特にC言語などの前提知識は
要求されてなかったんですが、これから必要になっていく感じですかね・・
具体的にはどれくらいC言語のスキルを付けてからC++に逝くのが望ましいですか?苦しんで覚えるC言語って本はざっと読んだんですがこれじゃ弱いですよね・・
.....それともCに拘らずに何かpythonとかrubyみたいな人気そうで簡単そうな言語で何か作れるくらいまで覚えてからC言語に戻ってきたほうが
一見遠回りのように見えて近道なんでしょうか?質問ばかりですいません;
987デフォルトの名無しさん
2018/09/19(水) 10:41:53.75ID:h/A1qpKl ロベール読めないってマ?
988デフォルトの名無しさん
2018/09/19(水) 17:03:44.61ID:t41Iifgl >プログラミング言語自体経験皆無なのですが
>クラスの章で読むの中断
>ざっと読んだんですがこれじゃ弱いですよね・・
C++にこだわる理由を知りたくなったw
そして読んでるだけ?手動かしてる?
>クラスの章で読むの中断
>ざっと読んだんですがこれじゃ弱いですよね・・
C++にこだわる理由を知りたくなったw
そして読んでるだけ?手動かしてる?
989デフォルトの名無しさん
2018/09/19(水) 17:18:24.07ID:5wa+YDhW 俺が禿1stを読み始めた当時も大した理由はなかったな
なんだか凄そう、その程度のことだった
なんだか凄そう、その程度のことだった
990さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/09/19(水) 17:29:55.07ID:hbV0PURz 次スレ頼む。
991デフォルトの名無しさん
2018/09/19(水) 17:57:48.07ID:XSTNMnDw992デフォルトの名無しさん
2018/09/19(水) 20:24:47.33ID:nVz8f0fv 今から覚えるならcはやってもc++はやらんでも良いと思うわ
993デフォルトの名無しさん
2018/09/19(水) 20:27:17.70ID:9wwh2JnW C++は拡張が酷すぎると思う
994デフォルトの名無しさん
2018/09/19(水) 22:45:11.03ID:+Hv0QgVJ Cの拡張の無さの方がひどい
995デフォルトの名無しさん
2018/09/19(水) 22:48:46.48ID:xLP4ypV2 むしろ昔はC++のコードからCのコードを出力してたからな
Cは拡張性は抜群
ウンコスクリプトもCで書かれてる
C以外の言語が淘汰されることがあっても
Cが淘汰されることはない
Cは拡張性は抜群
ウンコスクリプトもCで書かれてる
C以外の言語が淘汰されることがあっても
Cが淘汰されることはない
996デフォルトの名無しさん
2018/09/19(水) 23:00:14.31ID:XIk0tg++ C++で作っていいのは継続的な開発がない場合だけだな
継続的に開発やメンテナンスをするならC++は使っちゃいかん
継続的に開発やメンテナンスをするならC++は使っちゃいかん
997デフォルトの名無しさん
2018/09/20(木) 02:32:23.68ID:v2140bTt998デフォルトの名無しさん
2018/09/20(木) 02:59:01.53ID:OZxd0eW0 たのしいRuby 第5版、2016
Effective Ruby、2015
さらに、JavaScript, jQuery をやっても、
C++ の1冊よりも、はるかに簡単だろ
C++ を読んでも、何も作れないし、長時間のムダ!
Effective Ruby、2015
さらに、JavaScript, jQuery をやっても、
C++ の1冊よりも、はるかに簡単だろ
C++ を読んでも、何も作れないし、長時間のムダ!
999デフォルトの名無しさん
2018/09/20(木) 03:28:24.58ID:90KUJ2ts1000デフォルトの名無しさん
2018/09/20(木) 03:52:33.79ID:v2140bTt >>998-999
ありがとうございます
C#からやったほうがいい理由も教えていただきたいところですが1000レス目ですね…
RubyもやってみたいんですがViisualSの導入出来てるのでそれで動くC#からやってみます
C言語から脱線してしまいすいませんでした
ありがとうございます
C#からやったほうがいい理由も教えていただきたいところですが1000レス目ですね…
RubyもやってみたいんですがViisualSの導入出来てるのでそれで動くC#からやってみます
C言語から脱線してしまいすいませんでした
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 34日 4時間 16分 31秒
新しいスレッドを立ててください。
life time: 34日 4時間 16分 31秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★4 [ぐれ★]
- 【速報】高市総理が官邸入り [Hitzeschleier★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 高市内閣「支持」64%「不支持」19% NHK世論調査 ★2 [少考さん★]
- 【芸能】岡田紗佳、新幹線でありえない迷惑客に遭遇 自分の席に荷物が「ここ私の席ですって言っても…」 [冬月記者★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 青森・東北町で陥没した道路に車が転落 [256556981]
- 巨大地震 [957955821]
- つるの剛士「名古屋も揺れています。とにかく慌てずに落ち着いて行動しましょう!」 [594040874]
- 【速報】高市早苗、起床 [779938112]
- 大地震
