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
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/08/16(木) 23:36:02.22ID:fOCSKLtw256デフォルトの名無しさん
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が使ってあっても、「ああ、はいはい」だから問題なし。お約束的展開ならいいんだよ。
そんなことより、見慣れない意図不明のコードで???となって詰まる方が問題。
というか、初心者は『見た目でしか判断出来ないから』行数や文字数に拘ったりするけど、それが間違いで、
まずは「読むのにかかる時間」を最小にするように組むんだよ。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 高市内閣「支持」64%「不支持」19% NHK世論調査 ★2 [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 高市首相「多様なコメの増産を進める」 方針転換への懸念払拭狙いか ★2 [どどん★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 初めて顔パックしたけど凄いなこれ
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 巨大地震 [957955821]
- 胃腸弱い奴は社会的弱者←ガチ
- 【🏡】岩手ビックウェーブ🏄うおおおおおおおおおおお🌊
- 千晴の住所教えてよ!
