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言語なら俺に聞け 147
http://mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
C言語なら俺に聞け 148
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん (アウアウカー Sacf-slpW)
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa867デフォルトの名無しさん (ワイモマー MM8a-e2v7)
2018/10/24(水) 04:01:46.93ID:fzPXyYYOM >>866
いやいや・・・
それ丸ごとマクロにした方が楽でしょ・・・
https://stackoverflow.com/questions/3219393/stdlib-and-colored-output-in-c
いやいや・・・
それ丸ごとマクロにした方が楽でしょ・・・
https://stackoverflow.com/questions/3219393/stdlib-and-colored-output-in-c
868デフォルトの名無しさん (ワッチョイ 66d5-7cZp)
2018/10/24(水) 05:49:24.17ID:X/sBrfkw0 >>867
説明のための例だからそういう定義が分かりやすいとして、
>>866
こういうのを定義するときは、手段じゃなくて目的で定義する方がいいんじゃないかな。
ソース位置の強調をするために STYLE_LINE、タイムスタンプを強調するために STYLE_TIME、プロセスIDを強調するために STYLE_PID、みたいな。
それらを定義するときに YELLOW とか RED とか使う感じ。
#define STYLE_LINE(FMT) (ANSI_COLOR_YELLOW FMT ANSI_COLOR_RESET)
みたいにして、
fprintf(stdout, STYLE_TIME("%s.%lu") " " STYLE_LINE("%s:%d") " " STYLE_MSG(fmt) "¥n",
とか。
説明のための例だからそういう定義が分かりやすいとして、
>>866
こういうのを定義するときは、手段じゃなくて目的で定義する方がいいんじゃないかな。
ソース位置の強調をするために STYLE_LINE、タイムスタンプを強調するために STYLE_TIME、プロセスIDを強調するために STYLE_PID、みたいな。
それらを定義するときに YELLOW とか RED とか使う感じ。
#define STYLE_LINE(FMT) (ANSI_COLOR_YELLOW FMT ANSI_COLOR_RESET)
みたいにして、
fprintf(stdout, STYLE_TIME("%s.%lu") " " STYLE_LINE("%s:%d") " " STYLE_MSG(fmt) "¥n",
とか。
869デフォルトの名無しさん (アウアウウー Sa9f-Egl2)
2018/10/24(水) 07:45:53.57ID:hBENxp+1a870デフォルトの名無しさん (ワッチョイ 66d5-7cZp)
2018/10/24(水) 09:48:15.70ID:X/sBrfkw0 >>869
例だから派手にしたけど、言いたいのは目的にちなんだ定義名にした方がいいってこと。
ログレベル毎に色を変えるなら、STYLE_ERROR、STYLE_WARN、STYLE_INFO とかさ。
例だから派手にしたけど、言いたいのは目的にちなんだ定義名にした方がいいってこと。
ログレベル毎に色を変えるなら、STYLE_ERROR、STYLE_WARN、STYLE_INFO とかさ。
871デフォルトの名無しさん (アウアウエー Sae2-DAUi)
2018/10/24(水) 09:56:16.01ID:WhwEQaTDa まあ抽象は正義だからな
872デフォルトの名無しさん (ドコグロ MM3b-b3y3)
2018/10/24(水) 19:57:27.64ID:a4OXlgOjM 正論と同じであまり振りかざされても実務では面倒なだけ
>>868とか正直ウザって思うわ
>>868とか正直ウザって思うわ
873デフォルトの名無しさん (アウアウウー Sa9f-L0SM)
2018/10/24(水) 20:20:46.99ID:k2aW8IHEa cursesライブラリは使えないなかな?
874デフォルトの名無しさん (ワッチョイ f364-qPjg)
2018/10/24(水) 20:56:00.65ID:+vpF9pgu0 ていうかログのフォーマットってCでは標準化されていないのね、SUS含め。
Javaのlog4jやPythonのloggerみたいなものがあれば 一番嬉しいんだけどね
Javaのlog4jやPythonのloggerみたいなものがあれば 一番嬉しいんだけどね
875デフォルトの名無しさん (スッップ Sd8a-Iuwz)
2018/10/24(水) 21:31:34.66ID:0y0LlX3od C初心者です、よろしくお願いします
ubuntuのvimでしこしこ書いてgccでコンパイルしています
CでIDEを使ってみたいのですがオススメありましたら教えてください
仕事ではJavaでEclipseを使ってるのですがCで使ってみたらいまいちピンと来ませんでした
やはり皆さんVisualStadioとかVSCodeあたりでしょうか?
ubuntuのvimでしこしこ書いてgccでコンパイルしています
CでIDEを使ってみたいのですがオススメありましたら教えてください
仕事ではJavaでEclipseを使ってるのですがCで使ってみたらいまいちピンと来ませんでした
やはり皆さんVisualStadioとかVSCodeあたりでしょうか?
876デフォルトの名無しさん (ワイモマー MM8a-e2v7)
2018/10/24(水) 23:14:58.20ID:GbRp+dd6M そうですね
ぜひ使ってみて下さい
ぜひ使ってみて下さい
877デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/25(木) 09:43:50.32ID:hw/Q19JUa >>874
ないけどUNIXで昔からsyslog使われてた。というかそれがあったせいで他のログ出力ライブラリが広まらなかったのかも知れない。
ないけどUNIXで昔からsyslog使われてた。というかそれがあったせいで他のログ出力ライブラリが広まらなかったのかも知れない。
878デフォルトの名無しさん (アウアウエー Sa93-S3gW)
2018/10/25(木) 10:55:57.05ID:OLog262Fa ログ出力も奥が深いよな。
大量かつ高速が条件だとなかなか悩む
大量かつ高速が条件だとなかなか悩む
879デフォルトの名無しさん (ワッチョイ 0781-HyCk)
2018/10/25(木) 12:17:11.73ID:3CeE+Pyi0 最近はログをDBに格納している
880デフォルトの名無しさん (JP 0H19-+toU)
2018/10/25(木) 15:07:02.91ID:UNvjysmaH DBのログは?
881デフォルトの名無しさん (ワッチョイ 9764-Ed1r)
2018/10/25(木) 15:27:49.50ID:R/0gSUq30 syslogは日付がISOに従ってないのがちょっと嫌だな。
[YYYY-MM-DDThh-mm-ss,ssZ] LOGLEVEL: some messages.
こんな感じがいい
[YYYY-MM-DDThh-mm-ss,ssZ] LOGLEVEL: some messages.
こんな感じがいい
882デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/25(木) 15:40:47.48ID:hw/Q19JUa rsyslogdだと設定できなかったっけ?
883デフォルトの名無しさん (ドコグロ MMcf-YOnW)
2018/10/25(木) 17:56:49.79ID:zmVgc+jlM884デフォルトの名無しさん (ワッチョイ 9764-g60c)
2018/10/25(木) 18:37:09.60ID:R/0gSUq30 うーん。素人考えなんだけどfprintf()関数を呼び出したり,その中で__FILE__マクロ変数を展開したりするのって
そんなにコスト掛かる動作じゃないよね。
いくら大量の処理とは言え,ログを出力しただけで影響がでるような厳しい環境ってそうなくない?
そしてそもそもそんな環境でログ処理ではないメインの処理って動くの?
そんなにコスト掛かる動作じゃないよね。
いくら大量の処理とは言え,ログを出力しただけで影響がでるような厳しい環境ってそうなくない?
そしてそもそもそんな環境でログ処理ではないメインの処理って動くの?
885デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
2018/10/25(木) 18:46:33.19ID:s6Ph9fEn0 >>884
マルチプロセスやマルチスレッドだったりすれば排他も必要だし、fprintf 使っただけだとプロセスの突然死なんかではバッファがフラッシュされず失われ、一番欲しい落ちる寸前の情報が欠けかねない。
小まめにフラッシュしたらそれはそれで性能の問題が出る。
奥が深いと思うよ。
マルチプロセスやマルチスレッドだったりすれば排他も必要だし、fprintf 使っただけだとプロセスの突然死なんかではバッファがフラッシュされず失われ、一番欲しい落ちる寸前の情報が欠けかねない。
小まめにフラッシュしたらそれはそれで性能の問題が出る。
奥が深いと思うよ。
886デフォルトの名無しさん (アウアウウー Saf1-6HWJ)
2018/10/25(木) 23:51:29.92ID:GsCjxORea887デフォルトの名無しさん (アウアウウー Saf1-6HWJ)
2018/10/26(金) 00:21:48.90ID:7237jhqNa >>884
どの程度の性能を求めてるか次第だと思うよ
時刻取得でも clock_gettime と gettimeofday でうるさく言う人もいるしね
トレースログみたいに高速かつ大容量を考えるなら
ログがN件入るバッファを複数持っておいて
情報は基本バイナリで登録、ローテート時にファイル書き出し、
別途パーサーを作る、とかかな
まあそこまでする必要のあるソフトなんて稀だろうけど
どの程度の性能を求めてるか次第だと思うよ
時刻取得でも clock_gettime と gettimeofday でうるさく言う人もいるしね
トレースログみたいに高速かつ大容量を考えるなら
ログがN件入るバッファを複数持っておいて
情報は基本バイナリで登録、ローテート時にファイル書き出し、
別途パーサーを作る、とかかな
まあそこまでする必要のあるソフトなんて稀だろうけど
888デフォルトの名無しさん (ワッチョイ 5b30-7TBo)
2018/10/26(金) 09:13:38.45ID:hAbqlzFH0 ポインタをややこしくしてるのは
int* a;
の a がポインタ変数で
a[10]
という配列がある時、a と書くだけで配列の先頭アドレスの別の書き方として許されてるがいけないんじゃないのかな?って思ったんだけど合ってる?
配列の先頭アドレスは常に&a[0]って書くようにするようにすればポインタのごちゃごちゃって解消されない?
int* a;
の a がポインタ変数で
a[10]
という配列がある時、a と書くだけで配列の先頭アドレスの別の書き方として許されてるがいけないんじゃないのかな?って思ったんだけど合ってる?
配列の先頭アドレスは常に&a[0]って書くようにするようにすればポインタのごちゃごちゃって解消されない?
889デフォルトの名無しさん (アウアウエー Sa93-S3gW)
2018/10/26(金) 09:51:00.93ID:2eu7c7Ria Cだったら配列なんてものがあると思わん方がいいかもね
入門書的にはポインタより配列の紹介が先に書いてあったりするが、確かに問題はある。
入門書的にはポインタより配列の紹介が先に書いてあったりするが、確かに問題はある。
890デフォルトの名無しさん (ブーイモ MMbf-+toU)
2018/10/26(金) 10:26:55.40ID:8auh1e/NM >>888
あと、p[i] も禁止して、*(p+i) を強制しないとだめ。
あと、p[i] も禁止して、*(p+i) を強制しないとだめ。
891デフォルトの名無しさん (ワッチョイ 1323-7TBo)
2018/10/26(金) 10:54:29.59ID:cduwye+60892デフォルトの名無しさん (ワッチョイ 7312-SUE8)
2018/10/26(金) 11:21:53.96ID:E0U+wNaz0 違う
違うナァ
機械語→BASICのころには
「変数って何だ?!!」として変数なる概念をなかなか理解できなかったやつがいた……
と言う話を聞いてる
今の初心者の一部もなじめないヤツが一定数いる
言ってしまえばC言語は「変数指向」のプログラミング言語だ
オブジェクト指向や関数型に並び立つような、な
気付いてないが現代プログラミング言語は「変数指向」で出来てる
そしてどんな思想であろうとどんだけ説明してもその概念の片鱗すら理解出来ないヤツはいる
なので「変数」概念の理解に原理原則なんて存在しない
一発で理解出来るか素直に受け入れるかのどちらかしかない
それ以上説明しても意味が無い、という人物は少数だがいる
これはしょうがない
違うナァ
機械語→BASICのころには
「変数って何だ?!!」として変数なる概念をなかなか理解できなかったやつがいた……
と言う話を聞いてる
今の初心者の一部もなじめないヤツが一定数いる
言ってしまえばC言語は「変数指向」のプログラミング言語だ
オブジェクト指向や関数型に並び立つような、な
気付いてないが現代プログラミング言語は「変数指向」で出来てる
そしてどんな思想であろうとどんだけ説明してもその概念の片鱗すら理解出来ないヤツはいる
なので「変数」概念の理解に原理原則なんて存在しない
一発で理解出来るか素直に受け入れるかのどちらかしかない
それ以上説明しても意味が無い、という人物は少数だがいる
これはしょうがない
893デフォルトの名無しさん (ワッチョイ c3e7-t6cX)
2018/10/26(金) 12:12:26.16ID:k/2ANTBE0 なんかの本に
int *a;
と宣言してあったら、式の中で
*a
と書かれたものが整数であると的確に説明してあった。
int *a;
と宣言してあったら、式の中で
*a
と書かれたものが整数であると的確に説明してあった。
894デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
2018/10/26(金) 13:39:36.53ID:T+aWo9i70 >>893
それが分かりやすいかはちょっと微妙じゃね。
int i; ならその領域は確保されてるけど、int *a; と宣言した *a は型としては i と同じだけどそのままで i と同じように使えるわけじゃないし。
ポインタで迷うレベルに通じる話じゃなさそうだし、これが通じるならポインタで迷ってないんじゃね。
それが分かりやすいかはちょっと微妙じゃね。
int i; ならその領域は確保されてるけど、int *a; と宣言した *a は型としては i と同じだけどそのままで i と同じように使えるわけじゃないし。
ポインタで迷うレベルに通じる話じゃなさそうだし、これが通じるならポインタで迷ってないんじゃね。
895デフォルトの名無しさん (ワッチョイ 9764-Ed1r)
2018/10/26(金) 14:13:47.90ID:ScQN6FWl0 じゃんね?
896デフォルトの名無しさん (ワッチョイ 9764-Ed1r)
2018/10/26(金) 14:14:23.54ID:ScQN6FWl0 あ んじゃね か。
馬鹿だった。
馬鹿だった。
897デフォルトの名無しさん (アウアウウー Sa6d-eYkk)
2018/10/26(金) 15:09:00.24ID:WWw+Yxena >>892
マシン語でもレジスタが変数みたいなもんだろ
マシン語でもレジスタが変数みたいなもんだろ
898デフォルトの名無しさん (スプッッ Sd9b-UHBe)
2018/10/26(金) 17:09:00.87ID:JLzES5S7d これを実行するときに、argcに3が入っているとsegmentation faultとなってしまうのですがなぜだかわかりますか?
OSはopensuseでコンパイラはccです
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{
int cmp=0;
char *s1=argv[1],*s2=argv[2];
cmp=strcmp(s1,s2);
if(argc!=3){
fprintf(stderr,"usage:%s[string1][string2]\n",argv[0]);
return -1;
}
if(cmp<0){
printf("%d : %s\n",strlen(s2),argv[2]);
}
else{
printf("%d : %s\n",strlen(s1),argv[1]);
}
return 0;
}
OSはopensuseでコンパイラはccです
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{
int cmp=0;
char *s1=argv[1],*s2=argv[2];
cmp=strcmp(s1,s2);
if(argc!=3){
fprintf(stderr,"usage:%s[string1][string2]\n",argv[0]);
return -1;
}
if(cmp<0){
printf("%d : %s\n",strlen(s2),argv[2]);
}
else{
printf("%d : %s\n",strlen(s1),argv[1]);
}
return 0;
}
899デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/26(金) 17:14:58.46ID:8JGFizbaa >>898
argc調べる前にstrcmp()するのは変だろう。
argc調べる前にstrcmp()するのは変だろう。
900デフォルトの名無しさん (ガラプー KKa3-XSGY)
2018/10/26(金) 17:17:49.51ID:BF6Z7BaaK 組み込みでsicpて読む価値あんの?
901デフォルトの名無しさん (スプッッ Sd9b-UHBe)
2018/10/26(金) 17:21:54.90ID:JLzES5S7d >>899
それを直したらsegmentation faultしなくなったんですけど、理由が知りたくて…
それを直したらsegmentation faultしなくなったんですけど、理由が知りたくて…
902デフォルトの名無しさん (アウアウエー Sa93-S3gW)
2018/10/26(金) 18:06:31.80ID:XW9xoDKGa >>901
たとえばargv[2]が空だったらstrcmpの引数は何になるんだという
たとえばargv[2]が空だったらstrcmpの引数は何になるんだという
903デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
2018/10/26(金) 18:16:18.06ID:T+aWo9i70 >>902
argc が 3 なら argv[2] は何か入ってるだろ
argc が 3 なら argv[2] は何か入ってるだろ
904デフォルトの名無しさん (ブーイモ MMbf-+toU)
2018/10/26(金) 18:20:05.25ID:pYWWPyQzM どうでもいいけどargvが3じゃなきゃいけないのにそのusageはどうよ
905デフォルトの名無しさん (ワッチョイ eb72-UHBe)
2018/10/26(金) 18:25:03.95ID:HaLyiKNA0906デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/26(金) 18:25:43.74ID:8JGFizbaa >>901
引数がなかったり一つだったりした時に先に無条件にstrcmp()をしてしまうと両方または一方が不定値やNULLになるので落ちたり変な動きになったりする。
引数がなかったり一つだったりした時に先に無条件にstrcmp()をしてしまうと両方または一方が不定値やNULLになるので落ちたり変な動きになったりする。
907デフォルトの名無しさん (ワッチョイ eb72-UHBe)
2018/10/26(金) 18:28:06.65ID:HaLyiKNA0 >>906
詳しい説明ありがとうございます
詳しい説明ありがとうございます
908デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
2018/10/26(金) 19:03:31.73ID:T+aWo9i70909デフォルトの名無しさん (ワッチョイ eb72-UHBe)
2018/10/26(金) 19:42:46.18ID:HaLyiKNA0910デフォルトの名無しさん (アウアウエー Sa93-S3gW)
2018/10/26(金) 20:16:13.66ID:XW9xoDKGa main(void)の場合もメモリ上のどこかにargvが入ってるだろうか?
911デフォルトの名無しさん (ブーイモ MMf3-+toU)
2018/10/26(金) 20:46:48.73ID:TAH5LWiNM912デフォルトの名無しさん (ワッチョイ 9764-g60c)
2018/10/26(金) 21:08:53.88ID:ScQN6FWl0 みんな知ってるかもしれないが
[--foo]で--fooオプションが省略可能だということはかなり広範な決まりで,
POSIXに始まりGNUプロジェクトやPythonのインターフェース規格でも取り入れられてる。
[--foo]で--fooオプションが省略可能だということはかなり広範な決まりで,
POSIXに始まりGNUプロジェクトやPythonのインターフェース規格でも取り入れられてる。
913デフォルトの名無しさん (アウアウウー Saf1-6HWJ)
2018/10/26(金) 22:48:54.99ID:dAefMjKVa >>910
そりゃいるだろうよ、と思って確認してみた
ubuntuだと環境変数の近くにいるね
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *c = getenv("PATH");
while (--c != NULL)
if (!strcmp(c, "hoge")) {
printf("%s\n", c);
while (++c != NULL)
if (!strcmp(c, "foo")) {
printf("%s\n", c);
return 0;
}
return 0;
}
return 0;
}
$ ./a.out hoge foo
hoge
foo
そりゃいるだろうよ、と思って確認してみた
ubuntuだと環境変数の近くにいるね
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *c = getenv("PATH");
while (--c != NULL)
if (!strcmp(c, "hoge")) {
printf("%s\n", c);
while (++c != NULL)
if (!strcmp(c, "foo")) {
printf("%s\n", c);
return 0;
}
return 0;
}
return 0;
}
$ ./a.out hoge foo
hoge
foo
914デフォルトの名無しさん (アウアウウー Saf1-6HWJ)
2018/10/26(金) 22:54:36.13ID:dAefMjKVa >>912
これだな
https://ja.wikipedia.org/wiki/Man%E3%83%9A%E3%83%BC%E3%82%B8
https://qiita.com/aosho235/items/0f2b73d08eb645c05208
俺が生まれる20年以上前からあるとか感慨深い
これだな
https://ja.wikipedia.org/wiki/Man%E3%83%9A%E3%83%BC%E3%82%B8
https://qiita.com/aosho235/items/0f2b73d08eb645c05208
俺が生まれる20年以上前からあるとか感慨深い
915デフォルトの名無しさん (ワッチョイ 9764-g60c)
2018/10/26(金) 23:22:14.01ID:ScQN6FWl0916デフォルトの名無しさん (ワッチョイ bb80-+toU)
2018/10/26(金) 23:22:24.86ID:gi8K36IH0 man読む習慣があれば自然と身につくのに
917デフォルトの名無しさん (ワッチョイ 457b-gsMg)
2018/10/26(金) 23:50:26.20ID:vTWFo6xp0 ナウなヤングはinfo使ってるから…
918デフォルトの名無しさん (ワッチョイ 9764-Ed1r)
2018/10/27(土) 00:13:55.83ID:BbyQQXdF0 infoの使い方分からないマン
919デフォルトの名無しさん (アウアウエー Sa93-S3gW)
2018/10/27(土) 00:36:12.58ID:QSCXw9iYa ]で次のページに行く
920デフォルトの名無しさん (アウアウウー Saf1-6HWJ)
2018/10/27(土) 00:49:36.02ID:If2PGrjfa921デフォルトの名無しさん (ワッチョイ eb72-UHBe)
2018/10/27(土) 01:29:30.14ID:x+9raBkh0922デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/27(土) 13:15:19.86ID:8fc2vBvs0 >>892
違うぞ。
その世代(ベーマガ世代)で変数が理解出来なかったのは、数学的素養がなかったからだ。
数学で「変数」が導入されるのは「方程式」からで、それ以前の小学校の算数は全部「定数」で出来ているから、
その世代の『小学生』はそこに戸惑っただけ。
機械語/BASICとかは関係ない。
高一で物理を始めると、三角関数が出てきて戸惑うようなもの。
学校によっては高二から始めるらしいが、その場合は戸惑うことはないだろ。
或いはアフィン変換も同じ。
あれも数学で回転行列を習った後なら容易いが、
『小学生プログラマ』にやらせようと思ったら、まず座標を教えて、その後に…と色々必要だろ。
数学的素養がないと、プログラミングは理解出来ないんだよ。
小学校教育に取り入れた馬鹿共は、プログラミングが出来ないから、それが分からないだけ。
○○が分からない、と言う奴は大概、数学の素養がないか、そもそも全てを『暗記』で済ませてきたタイプだ。
(世の中大概それでどうとでもなるのも事実ではあるが、)それではどうあがいてもプログラミングは上達しない。
頭を切り換えて、全てを『理解』する癖を付けることだね。そしてまず数学を勉強すべきだ。
そうしないとただのコピペ(写経)マンになってしまう。
(はっきり言って昔のベーマガ世代も実際やっていたのは写経でしかないし)
色々理解したら、なるほどCは文法的にも構造的にも美しく出来ているし、
色々無駄がないからこそ、いまだに現役で使われ続けていることが理解出来るようになる。
ただし、分かりやすいわけではないので、俺は初心者はCから始めるべきではないと思うがな。
違うぞ。
その世代(ベーマガ世代)で変数が理解出来なかったのは、数学的素養がなかったからだ。
数学で「変数」が導入されるのは「方程式」からで、それ以前の小学校の算数は全部「定数」で出来ているから、
その世代の『小学生』はそこに戸惑っただけ。
機械語/BASICとかは関係ない。
高一で物理を始めると、三角関数が出てきて戸惑うようなもの。
学校によっては高二から始めるらしいが、その場合は戸惑うことはないだろ。
或いはアフィン変換も同じ。
あれも数学で回転行列を習った後なら容易いが、
『小学生プログラマ』にやらせようと思ったら、まず座標を教えて、その後に…と色々必要だろ。
数学的素養がないと、プログラミングは理解出来ないんだよ。
小学校教育に取り入れた馬鹿共は、プログラミングが出来ないから、それが分からないだけ。
○○が分からない、と言う奴は大概、数学の素養がないか、そもそも全てを『暗記』で済ませてきたタイプだ。
(世の中大概それでどうとでもなるのも事実ではあるが、)それではどうあがいてもプログラミングは上達しない。
頭を切り換えて、全てを『理解』する癖を付けることだね。そしてまず数学を勉強すべきだ。
そうしないとただのコピペ(写経)マンになってしまう。
(はっきり言って昔のベーマガ世代も実際やっていたのは写経でしかないし)
色々理解したら、なるほどCは文法的にも構造的にも美しく出来ているし、
色々無駄がないからこそ、いまだに現役で使われ続けていることが理解出来るようになる。
ただし、分かりやすいわけではないので、俺は初心者はCから始めるべきではないと思うがな。
923デフォルトの名無しさん (ワッチョイ 7312-SUE8)
2018/10/27(土) 15:37:40.83ID:BkFfYRiz0 >>922
中学の授業では便宜上は今まで変数を習ったことの無い中学なりたてホヤホヤのガキに変数を教えるんだよな?
なのになんでそれで新中学一年生は変数を理解出来るんだ?
素養が無いのにも関わらず変数を授業で教えると理解できるんだぞ?
不思議じゃないか?
中学の授業では便宜上は今まで変数を習ったことの無い中学なりたてホヤホヤのガキに変数を教えるんだよな?
なのになんでそれで新中学一年生は変数を理解出来るんだ?
素養が無いのにも関わらず変数を授業で教えると理解できるんだぞ?
不思議じゃないか?
924デフォルトの名無しさん (ワッチョイ 5761-JHIh)
2018/10/27(土) 15:55:34.30ID:IeSn2Jid0 ベーマガのゲーム入力して
兄「ここの数字増やすと自機数が増えるんだよ」
自分「へぇ」
兄「ここの P=P-1を消すと死んでも自機数減らないんだよ」
自分「へぇ」
当時小学3年ごろ。
これで変数と言うのを理解したわ。
兄「ここの数字増やすと自機数が増えるんだよ」
自分「へぇ」
兄「ここの P=P-1を消すと死んでも自機数減らないんだよ」
自分「へぇ」
当時小学3年ごろ。
これで変数と言うのを理解したわ。
925デフォルトの名無しさん (アウアウカー Sad3-S3gW)
2018/10/27(土) 15:59:43.62ID:YzjvNBrca どういう順番でも抽象的な理解はできると思うよ。本当に「理解」なのかわからんけど。
でも数学が先じゃないと時間の無駄という気はする。
でも数学が先じゃないと時間の無駄という気はする。
926デフォルトの名無しさん (アウアウカー Sad3-S3gW)
2018/10/27(土) 16:01:45.78ID:YzjvNBrca 線形代数はプログラミングと同時にやってもいいと思うわ。紙の上の操作はちょっとつまらん
927デフォルトの名無しさん (ガックシ 06af-UHBe)
2018/10/27(土) 17:08:17.28ID:pWQGtgcn6 線形代数とプログラミングってなんの関係があるん?
最近、プログラミング始めたからよくわからんのよな
最近、プログラミング始めたからよくわからんのよな
928デフォルトの名無しさん (ワッチョイ 0781-HyCk)
2018/10/27(土) 17:14:52.39ID:NY1AcmJf0 >P=P-1
プログラム上と代数学上の記法の違い、最初面食らわなかったか?
プログラム上と代数学上の記法の違い、最初面食らわなかったか?
929デフォルトの名無しさん (ブーイモ MMf3-JP9K)
2018/10/27(土) 17:36:20.97ID:DmauAY/3M >>923
変数にしろ関数にしろ教え方がアホすぎて全然理解できてなかったわ
単に計算できるだけだった
後にプログラミングやるようになって何で学校の数学ではあんな馬鹿な教え方をされたんだろうかと思ったわ
変数にしろ関数にしろ教え方がアホすぎて全然理解できてなかったわ
単に計算できるだけだった
後にプログラミングやるようになって何で学校の数学ではあんな馬鹿な教え方をされたんだろうかと思ったわ
930デフォルトの名無しさん (ワッチョイ 5b30-7TBo)
2018/10/27(土) 17:38:52.04ID:Ttfv0KRj0 やねうらおとか小学生の時にはもう大学の数学をやっていたというが・・・冗談なのか本当なのかわからんがとんでもねぇプログラマなのは確かだからな・・・
931デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/27(土) 17:43:25.28ID:8fc2vBvs0 >>923
だからお前は猿のままなんだな、納得した
だからお前は猿のままなんだな、納得した
932デフォルトの名無しさん (ワッチョイ bb80-+toU)
2018/10/27(土) 17:53:34.74ID:zu36BJom0 代入に=を使ったFORTRANの罪は大きい
933デフォルトの名無しさん (アウアウカー Sad3-jr42)
2018/10/27(土) 17:59:56.52ID:p3Z91K38a P=P-1みたいなのが解らない人は関数型言語に行けば良いんじゃ無いかな。
代数学に比較的近い。
代数学に比較的近い。
934デフォルトの名無しさん (アウアウカー Sad3-jr42)
2018/10/27(土) 18:06:00.09ID:p3Z91K38a >>930
プログラミングに必ずしも数学が得意で有る必要は無いとは言われてるけど、数学得意な人がプログラミング出来るようになる事が多い気はする。
どちらも例外はあるけれども。
少なくともプログラミング関係の専門書って大学数学前提が多い。
前提じゃ無いのはわざわざ高校数学で出来るとか書いてるし。
プログラミングに必ずしも数学が得意で有る必要は無いとは言われてるけど、数学得意な人がプログラミング出来るようになる事が多い気はする。
どちらも例外はあるけれども。
少なくともプログラミング関係の専門書って大学数学前提が多い。
前提じゃ無いのはわざわざ高校数学で出来るとか書いてるし。
935デフォルトの名無しさん (ワッチョイ 530a-7TBo)
2018/10/27(土) 18:16:50.52ID:C9jhaecu0 推論型言語でP=P-1
936デフォルトの名無しさん (ガックシ 06d9-e7ji)
2018/10/27(土) 18:24:00.38ID:HWNtkJs26 1〜12月を入力し、入力した月の日数を表示する。
これを論理演算子で表示しろという。
else if( month == 3)
{ printf("3月は31日です\n")}
というのを作ったが不可。
論理演算子を使っていないからという。
論理演算子をどう使えばいいんですか。
これを論理演算子で表示しろという。
else if( month == 3)
{ printf("3月は31日です\n")}
というのを作ったが不可。
論理演算子を使っていないからという。
論理演算子をどう使えばいいんですか。
937デフォルトの名無しさん (ワッチョイ bb80-+toU)
2018/10/27(土) 18:28:29.79ID:zu36BJom0938デフォルトの名無しさん (ワッチョイ bb80-+toU)
2018/10/27(土) 18:31:23.89ID:zu36BJom0 ; も || に置換可。
939デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/27(土) 18:38:10.74ID:8fc2vBvs0940デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
2018/10/27(土) 19:17:35.26ID:5acUAORp0941デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/27(土) 19:24:28.76ID:8fc2vBvs0 >>940
それはビット演算子、そして+、あと普通は0x*****で書く
それはビット演算子、そして+、あと普通は0x*****で書く
942デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
2018/10/27(土) 19:29:22.72ID:5acUAORp0943デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/27(土) 19:54:11.57ID:8fc2vBvs0 >>942
まあ普通はな。
ただそれ以前に、if文11個連ねて書くよりは…のはずだから、
普通は正しく動けばまずはよしで、それより断然いい書き方があるよね、となる。
いずれにしても先生に聞け、でしかないが。
まあ普通はな。
ただそれ以前に、if文11個連ねて書くよりは…のはずだから、
普通は正しく動けばまずはよしで、それより断然いい書き方があるよね、となる。
いずれにしても先生に聞け、でしかないが。
944デフォルトの名無しさん (ワッチョイ 3f9f-JHIh)
2018/10/27(土) 20:31:12.68ID:FFMC2/bw0 第三回バーチャルYouTuber人気投票リベンジ募集中(全287名、2018年10月27日〜)
あなたの好きなVtuberは?(一人十票)
https://script.google.com/macros/s/AKfycbzW_Er5wP6kI0ZNcmcZVA4UdlXPiernQqL4xG1dVv146T8LwGKZ/exec
・前回(2018/8/22)は不正投票が行われた為、投票を途中で中止させていただきました。大変申し訳ありませんでした。
・Googleフォームは標準仕様では不正投票が可能な為、改造して対策を行いました。
・2018/10/27時点でチャンネル登録数10,000人以上のVtuberを対象としています。
・一つのチャンネルでVtuberが複数人いる場合は、それぞれ分けています。
・一人十票です。(全287名の中からお好きなVtuber10名を選んでください。)
・このフォームに投票するにはグーグルアカウントでログインする必要はありません。
・並び順は前回の得票数の高い順と新人は登録者数の多い順に並んでいます。
・今回も1,000人の方が投票するまで継続します。
なお投票結果はスプレッドシートにリアルタイムで表示されるようにしました。
また【概要】と【詳細】でシートを分けております。
https://docs.google.com/spreadsheets/d/1qvhqRdbbOFGQ2veqrnQmaAXIA79xTAANKUKa3HEUUC0
▽過去の投票結果はこちら
第二回バーチャルYouTuber人気投票結果(2018年6月5日〜8月6日、全投票数1,000票)(スプレッドシート)
https://docs.google.com/spreadsheets/d/1HqVp41DzLXPSuarWKkqNFZRyL20-nkMF5O5kkeEmqnA
第一回バーチャルYouTuber人気投票結果(2018年5月7日〜5月30日、全投票数1,000票)(スプレッドシート)
https://docs.google.com/spreadsheets/d/1uaKoB3pJQHgC9VEkvg74v9OaSNW3Zvccr91mPN1lt5k
tyjty
あなたの好きなVtuberは?(一人十票)
https://script.google.com/macros/s/AKfycbzW_Er5wP6kI0ZNcmcZVA4UdlXPiernQqL4xG1dVv146T8LwGKZ/exec
・前回(2018/8/22)は不正投票が行われた為、投票を途中で中止させていただきました。大変申し訳ありませんでした。
・Googleフォームは標準仕様では不正投票が可能な為、改造して対策を行いました。
・2018/10/27時点でチャンネル登録数10,000人以上のVtuberを対象としています。
・一つのチャンネルでVtuberが複数人いる場合は、それぞれ分けています。
・一人十票です。(全287名の中からお好きなVtuber10名を選んでください。)
・このフォームに投票するにはグーグルアカウントでログインする必要はありません。
・並び順は前回の得票数の高い順と新人は登録者数の多い順に並んでいます。
・今回も1,000人の方が投票するまで継続します。
なお投票結果はスプレッドシートにリアルタイムで表示されるようにしました。
また【概要】と【詳細】でシートを分けております。
https://docs.google.com/spreadsheets/d/1qvhqRdbbOFGQ2veqrnQmaAXIA79xTAANKUKa3HEUUC0
▽過去の投票結果はこちら
第二回バーチャルYouTuber人気投票結果(2018年6月5日〜8月6日、全投票数1,000票)(スプレッドシート)
https://docs.google.com/spreadsheets/d/1HqVp41DzLXPSuarWKkqNFZRyL20-nkMF5O5kkeEmqnA
第一回バーチャルYouTuber人気投票結果(2018年5月7日〜5月30日、全投票数1,000票)(スプレッドシート)
https://docs.google.com/spreadsheets/d/1uaKoB3pJQHgC9VEkvg74v9OaSNW3Zvccr91mPN1lt5k
tyjty
945デフォルトの名無しさん (ワッチョイ 0f80-JP9K)
2018/10/27(土) 22:39:08.44ID:aNTv90Ss0 >>943
…お前の中ではif文で書いて当然の処理なのか
…お前の中ではif文で書いて当然の処理なのか
946デフォルトの名無しさん (ワッチョイ 7312-SUE8)
2018/10/27(土) 22:39:25.58ID:BkFfYRiz0947デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/27(土) 23:26:48.51ID:tUxhH/wza >>936
2月は何日で出すんだ?
2月は何日で出すんだ?
948デフォルトの名無しさん (ワッチョイ 0781-HyCk)
2018/10/27(土) 23:30:49.74ID:NY1AcmJf0 論理演算子なんて要求がなければ、配列作ってテーブル参照にしてしまう
949デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/27(土) 23:55:00.74ID:8fc2vBvs0950デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/27(土) 23:56:21.90ID:8fc2vBvs0 >>946
それだとお前が今現在も猿と同程度なのと矛盾するだろ
それだとお前が今現在も猿と同程度なのと矛盾するだろ
951デフォルトの名無しさん (ワッチョイ 5b9f-7TBo)
2018/10/28(日) 00:11:48.31ID:D9Gt7gmT0 >>936
m を月の数として
printf("%d月は%d日です。\n", m, m == 2 ? 28 : (30 + ((m & 1) ^ (m >= 8 ? 1 : 0))));
なんてのはどうかな。年がわからないので2月は28日固定だが。
バグの温床になりそうなので普通はこんな複雑なの書かないが。
m を月の数として
printf("%d月は%d日です。\n", m, m == 2 ? 28 : (30 + ((m & 1) ^ (m >= 8 ? 1 : 0))));
なんてのはどうかな。年がわからないので2月は28日固定だが。
バグの温床になりそうなので普通はこんな複雑なの書かないが。
952デフォルトの名無しさん (ブーイモ MMa1-JP9K)
2018/10/28(日) 00:20:30.07ID:oSIXYZ/dM 書かないのはバグの温床だからじゃなくて
他人に意図が伝わらないオナニーに過ぎないからだぞ
他人に意図が伝わらないオナニーに過ぎないからだぞ
953デフォルトの名無しさん (ワッチョイ 5b9f-7TBo)
2018/10/28(日) 00:23:07.12ID:D9Gt7gmT0 >>952
あー。まあそういうことでもあるか。
あー。まあそういうことでもあるか。
954デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/28(日) 00:55:30.03ID:0+vzkOx80 >>951
お前ら初心者にも分かる言い方を思いついた。
・コードからお題に戻せるコードを書け
なんだよ。
初心者は「お題○○を実現するコードは?」ばかりやってるから、「お題→コード」の変換ばかり考えるけど、
実際に重要なのは逆で、「コード→お題」の変換なんだよ。
今回の例で言うと、お題は
・月を与えて日数を得る関数
だが、これが重要なのではなくて、
・この関数は、月を与えたら日数が得られる
とコードからお題に『逆変換』出来ることが重要なのであって。
お前ら初心者にも分かる言い方を思いついた。
・コードからお題に戻せるコードを書け
なんだよ。
初心者は「お題○○を実現するコードは?」ばかりやってるから、「お題→コード」の変換ばかり考えるけど、
実際に重要なのは逆で、「コード→お題」の変換なんだよ。
今回の例で言うと、お題は
・月を与えて日数を得る関数
だが、これが重要なのではなくて、
・この関数は、月を与えたら日数が得られる
とコードからお題に『逆変換』出来ることが重要なのであって。
955デフォルトの名無しさん (アウアウカー Sad3-jr42)
2018/10/28(日) 04:41:04.83ID:vBzuIBdia それで行くとクイックソートとか最早ムリぽ。
コメント使わ無いのかな。。。
他にも命名規則とか、そう言うので推測し易くしてるもんでしょ。
理想だけじゃ何も書けなくなる。
コメント使わ無いのかな。。。
他にも命名規則とか、そう言うので推測し易くしてるもんでしょ。
理想だけじゃ何も書けなくなる。
956デフォルトの名無しさん (ワッチョイ 530a-7TBo)
2018/10/28(日) 05:50:13.54ID:Lt7UAQQy0 殺人的にくだらん
957デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/28(日) 08:48:10.56ID:0+vzkOx80 >>955
コメント自体が既に次善策なんだよ。
可能であれば、コード見たら分かることを目指すべき。
クイックソートが意味不明なコードだとも思わないけど、
あの手の「末端の」関数は適切な名前を付ければそれで問題なくなる。
つまり、sort()なら、「ソートする」と分かり、使う分に支障はないだろ。
数学関数の sin() とかも、実際の中身なんて気にしてないだろ。これと同じ。
問題は、
int d0 = (15657907 >> (m - 1) * 2) & 3 | 28; // 940
int d1 = m == 2 ? 28 : (30 + ((m & 1) ^ (m >= 8 ? 1 : 0))); // 951
では、ぱっと見意味不明だろ。
だから最低限、「関数として切り出して適切な名前を付ける」か、「コメントを付ける」かが必要になる。
これが上記みたいにベタでコメント無しで書かれてたら、殺すぞテメー、になるって話さ。
コメント自体が既に次善策なんだよ。
可能であれば、コード見たら分かることを目指すべき。
クイックソートが意味不明なコードだとも思わないけど、
あの手の「末端の」関数は適切な名前を付ければそれで問題なくなる。
つまり、sort()なら、「ソートする」と分かり、使う分に支障はないだろ。
数学関数の sin() とかも、実際の中身なんて気にしてないだろ。これと同じ。
問題は、
int d0 = (15657907 >> (m - 1) * 2) & 3 | 28; // 940
int d1 = m == 2 ? 28 : (30 + ((m & 1) ^ (m >= 8 ? 1 : 0))); // 951
では、ぱっと見意味不明だろ。
だから最低限、「関数として切り出して適切な名前を付ける」か、「コメントを付ける」かが必要になる。
これが上記みたいにベタでコメント無しで書かれてたら、殺すぞテメー、になるって話さ。
958デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
2018/10/28(日) 11:51:08.52ID:W0+pPBsw0959デフォルトの名無しさん (アウアウエー Sa93-S3gW)
2018/10/28(日) 12:06:15.31ID:/iW8vuMIa ポッカント
960デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/28(日) 12:53:44.56ID:0+vzkOx80 >>958
それはいつぞやのコードだろ。
末端の関数だから、適切な名前を付けた関数にすれば問題ない。
俺なら count_1_bits か get_nof_1_bits とかにする。
勿論そのコードがベタでコメント無しで書かれてたらアウトだ。
あと、戻り値は int にしておけ。
それはいつぞやのコードだろ。
末端の関数だから、適切な名前を付けた関数にすれば問題ない。
俺なら count_1_bits か get_nof_1_bits とかにする。
勿論そのコードがベタでコメント無しで書かれてたらアウトだ。
あと、戻り値は int にしておけ。
961デフォルトの名無しさん (オイコラミネオ MM09-nh9x)
2018/10/28(日) 12:57:22.68ID:lZrPQQ03M >>960
どんなコメント付けるの?
どんなコメント付けるの?
962デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/28(日) 13:29:34.14ID:0+vzkOx80 >>961
// count nof 1 bits
// count nof 1 bits
963デフォルトの名無しさん (スプッッ Sd9b-UHBe)
2018/10/28(日) 13:45:43.40ID:Bm6vOY0Hd >>954
かけるようになるのも大事だけど、それよりもまず読めるようになれってこと?
かけるようになるのも大事だけど、それよりもまず読めるようになれってこと?
964デフォルトの名無しさん (ワッチョイ 614f-SUE8)
2018/10/28(日) 13:51:17.06ID:0+vzkOx80 >>963
1年後に読んでも分かるコードを書け、ということ。
1年後に読んでも分かるコードを書け、ということ。
965デフォルトの名無しさん (ワッチョイ e33f-7TBo)
2018/10/28(日) 14:44:33.68ID:lBJoUXxI0 963にそのアドバイスはまだ早い
966デフォルトの名無しさん (ワッチョイ 5761-JHIh)
2018/10/28(日) 15:00:37.51ID:6j1kxIYb0 // なぜこのコードが動いているのかわからない
// 以下、あるはずのないコード群でお送りします。
/* 俺のせいじゃない */
//ここに来ることは絶対にない
// 以下、あるはずのないコード群でお送りします。
/* 俺のせいじゃない */
//ここに来ることは絶対にない
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- たぬかなの“結婚隠し”に「弱者男性ビジネス」の声…本人が異例の対応「支払いの履歴持ってきてくれたら返金するから連絡してや」 [muffin★]
- 【物価高対策】「おこめ券を配布しません」大阪府交野の市長が明言「経費率が高い」「今高い米をムリして…」 [1ゲットロボ★]
- 舛添要一「日本は亡国への道をひた走り」「相対的国力は中国が増大し日本が低下している」 [冬月記者★]
- 従来の健康保険証、12月1日に期限切れ マイナ利用率は37% [蚤の市★]
- 【地方】「もうヤメとけ、また移住者様が帰っちゃうぞ」田舎の「いじめ体質」★3 [七波羅探題★]
- 落ち度はゼレンスキー氏に 内政混乱、市民怒り [蚤の市★]
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1813
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap606
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap607
- 【U-NEXT】プレミアリーグ総合 ★37
- 巨専】 ★3
- こいせん 全レス転載禁止
- お布団に入ったよー
- 確認用
- 会社で臭豆腐食おうと思う!
- 外国人「初めての着物?嬉しい❤」 ⇦普通の日本人「全然似合ってない」「気持ち悪い」「無理」「日本文化を破壊するな」 [455031798]
- TBS山本恵里伽アナ「今の日本社会は世界平和や反戦など当たり前のことを言えない空気になっている」これもう新しい戦前だろ高市 [931948549]
- 今のチェンソーマンってエヴァ終盤に似てるよな
