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/
前
http://mevius.2ch.net/test/read.cgi/tech/1494508803/
http://www.geocities.jp/c_cpp_cs/about_c/
C言語なら俺に聞け 141 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/07/17(月) 21:06:47.63ID:J4JGo3XO2デフォルトの名無しさん
2017/07/17(月) 21:15:16.42ID:bGVplWmj < `∀´>ニダー
2017/07/17(月) 21:41:46.56ID:/QULOYxM
#include < `∀´>
2017/07/17(月) 21:56:04.46ID:PKmAGp8M
2017/07/17(月) 21:57:25.18ID:4pA3RK/K
ちょっと書いてみてよ
2017/07/17(月) 21:58:43.30ID:n17oqQVv
プログラムカウンタをスタックに積まないでコール元に戻れるわけ無いだろ
プログラムの動作原理を知らなさ過ぎる
プログラムの動作原理を知らなさ過ぎる
2017/07/17(月) 22:02:11.80ID:PKmAGp8M
逆に関数内関数じゃないとできない処理ってどんなの?
2017/07/17(月) 22:08:32.43ID:LYlgQVUQ
Python信者がうるさいのでもう一度書いておくと、以下URLの下のほう、
> しかし、16行目にある print func_a(5) を 4行目の def func_a(a): 行よりも上に移動すると、次のようなエラーが返る。
> http://www.isc.meiji.ac.jp/~mizutani/python/recursive_call.html
これはJavaScriptは通るんだよ。
つーか、他言語は多分全部通る。落ちるのはPythonだけ。
お前らPythonしか使って無いからこれが糞だと認識できないんだよ多分。
> しかし、16行目にある print func_a(5) を 4行目の def func_a(a): 行よりも上に移動すると、次のようなエラーが返る。
> http://www.isc.meiji.ac.jp/~mizutani/python/recursive_call.html
これはJavaScriptは通るんだよ。
つーか、他言語は多分全部通る。落ちるのはPythonだけ。
お前らPythonしか使って無いからこれが糞だと認識できないんだよ多分。
2017/07/17(月) 22:16:47.67ID:LYlgQVUQ
前スレ>>995
990にレスが付いているのはヘッダについてか?
それなら俺はGCCに「自動ヘッダ生成器」を組み込んでくれよと思う。
というかCはヘッダで妙なトリック使いすぎてて自動生成できる状況ではないのだとは思うが、
それなら足りない関数だけでも自動で追加してくれよ、と思う。
つっても「後方参照」できるようになれば解決する話で、
マジでこれをいまだに放置している理由はよく分からん。
というか、俺に反論している連中ですらこれについては多分賛成なんだよな?
「後方参照」出来ない方がいいんだ!って理由がある奴っていないだろ。
だからこそ、Pythonが出来ないのがアホすぎて際立つわけでね。
990にレスが付いているのはヘッダについてか?
それなら俺はGCCに「自動ヘッダ生成器」を組み込んでくれよと思う。
というかCはヘッダで妙なトリック使いすぎてて自動生成できる状況ではないのだとは思うが、
それなら足りない関数だけでも自動で追加してくれよ、と思う。
つっても「後方参照」できるようになれば解決する話で、
マジでこれをいまだに放置している理由はよく分からん。
というか、俺に反論している連中ですらこれについては多分賛成なんだよな?
「後方参照」出来ない方がいいんだ!って理由がある奴っていないだろ。
だからこそ、Pythonが出来ないのがアホすぎて際立つわけでね。
2017/07/17(月) 22:25:47.17ID:Dn7+fEGp
前後を理解してないバカは参加するな
ID:LYlgQVUQ お前のことだ
ID:LYlgQVUQ お前のことだ
11デフォルトの名無しさん
2017/07/17(月) 22:28:20.57ID:WpdYiVZf 何でわっちょい無くなったの?
2017/07/17(月) 22:32:47.62ID:LYlgQVUQ
2017/07/17(月) 22:43:11.36ID:Zyqgn8pO
2017/07/17(月) 22:53:34.33ID:PKmAGp8M
2017/07/17(月) 22:53:37.21ID:Zyqgn8pO
>>8
> > しかし、16行目にある print func_a(5) を 4行目の def func_a(a): 行よりも上に移動すると、次のようなエラーが返る。
> > http://www.isc.meiji.ac.jp/~mizutani/python/recursive_call.html
まだやってるのかよ w
他の言語に倣うなら頭に
def main:
print func_a(5)
って書いて最後に
if __name__ == 'main':
main()
書けばいいだけ
> お前らPythonしか使って無いからこれが糞だと認識できないんだよ多分。
お前がPython知らんだけ
> > しかし、16行目にある print func_a(5) を 4行目の def func_a(a): 行よりも上に移動すると、次のようなエラーが返る。
> > http://www.isc.meiji.ac.jp/~mizutani/python/recursive_call.html
まだやってるのかよ w
他の言語に倣うなら頭に
def main:
print func_a(5)
って書いて最後に
if __name__ == 'main':
main()
書けばいいだけ
> お前らPythonしか使って無いからこれが糞だと認識できないんだよ多分。
お前がPython知らんだけ
2017/07/17(月) 22:59:52.61ID:HedtDN7o
x86なら ENTER/LEAVEで実装されているな
出来るっていうならコードで示せよ
出来るっていうならコードで示せよ
2017/07/17(月) 23:01:17.10ID:Zyqgn8pO
>>14
void f( ){
void g( ){
...
}
g();
g();
}
goto 使って同じ処理書いてみろよ
void f( ){
void g( ){
...
}
g();
g();
}
goto 使って同じ処理書いてみろよ
2017/07/17(月) 23:02:18.10ID:vodzC7WI
/ ̄\
| |
\_/
| __
┴´ ``ヽ
/::::::::::|:::::: `ヽ gotoで戻りゃいいんだから!!
/:::\::::::::<● > `ヽ
(( / <●>::::::::::⌒ )
| ⌒(_人__) ノ | |
ヽ )vvノ: / ノノ
ヽ (__ン 人
人 \
/
| |
\_/
| __
┴´ ``ヽ
/::::::::::|:::::: `ヽ gotoで戻りゃいいんだから!!
/:::\::::::::<● > `ヽ
(( / <●>::::::::::⌒ )
| ⌒(_人__) ノ | |
ヽ )vvノ: / ノノ
ヽ (__ン 人
人 \
/
2017/07/17(月) 23:07:04.75ID:LYlgQVUQ
2017/07/17(月) 23:13:04.25ID:PKmAGp8M
>>17
void f( ){
void *ret;
goto a;
g:
printf("g¥n");
goto *ret;
a:
printf("a¥n");
ret = &&b;
goto g;
b:
printf("b¥n");
ret = &&c;
goto g;
c:;
printf("c¥n");
}
void f( ){
void *ret;
goto a;
g:
printf("g¥n");
goto *ret;
a:
printf("a¥n");
ret = &&b;
goto g;
b:
printf("b¥n");
ret = &&c;
goto g;
c:;
printf("c¥n");
}
2017/07/17(月) 23:18:43.57ID:n17oqQVv
ID:PKmAGp8Mはプログラムの動作原理なーんも分かってない
2017/07/17(月) 23:21:10.09ID:4pA3RK/K
>>15で出来るうちに入らないとかいちゃもんつけたいだけやん
それCで関数の外にprintf書いてコンパイル通らなくて発狂してるようなもんだから
それCで関数の外にprintf書いてコンパイル通らなくて発狂してるようなもんだから
2017/07/17(月) 23:25:27.16ID:4pA3RK/K
いや、こんなこと書いたら揚げ足とってアホ認定されそうだから重ねておくけど、上のレスではコードの見た目の話に話を絞ってある
その範囲では、関数外に書いても通るだけ有難く思うべきである
その範囲では、関数外に書いても通るだけ有難く思うべきである
2017/07/17(月) 23:27:45.16ID:LYlgQVUQ
>>20
まあ俺はそっちの話にあんまり突っ込む気はないんだけどさ、、、
アイデアは理解した。
が、そのラベルの使い方が保障されてるかというと、かなり微妙だと思う。
俺は仕様には詳しく無いからなんともいえないが。
とはいえ、実際はそれで動くケースが大半だとも思う。
まあ俺はそっちの話にあんまり突っ込む気はないんだけどさ、、、
アイデアは理解した。
が、そのラベルの使い方が保障されてるかというと、かなり微妙だと思う。
俺は仕様には詳しく無いからなんともいえないが。
とはいえ、実際はそれで動くケースが大半だとも思う。
2017/07/17(月) 23:29:34.59ID:81nqESXy
2017/07/17(月) 23:35:29.76ID:4pA3RK/K
実用上問題なくてもイチャモンつけたいだけw
2017/07/17(月) 23:51:06.35ID:LYlgQVUQ
>>22-23,25,26
だからPython信者はアホなんだよ。何度も言っている通り、
JavaScriptは以下のコードが動く=後方参照できる
Pythonは以下のコードが動かない=後方参照できない
といっているだけ。マジで分かれよアホ。
以下コードをブラウザ上でF12押してコピペしてみろ。動くから。
(function(){
say_hello();
say_world();
function say_hello(){console.log('hello');}
function say_world(){console.log('world');}
})()
Cはこの順に配置しようとすると《歴史的理由で》プロトタイプ宣言が必要。しかしやれば出来る。
Pythonはこの順に配置することがどうやっても出来ない。だから糞。
CもJavaScriptも設計者の自由を制限しない言語だ。
子関数をどこに配置するのが良いのかは設計者が考え、最適化できる。
これがCやJavaScriptの思想。
対してPythonは設計者の自由を制限し、
設計者ごとに異なる部分が無いことこそが読みやすさだと嘯く。
それはPythonerは馬鹿であると定義しているのと同じ。
だってCでもJavaScriptでも、Pythonと同じ順に配置は出来るのだから、
Pythoner以上の脳みそがあればPythonより読みやすく書くことは出来る。
もちろん馬鹿が書けばPython以上に読みにくくなるが、それはそういう仕様だ。(馬鹿は死ねという仕様)
Python馬鹿がCスレまで来て思想が全く異なることを理解せずに喚いているから話が通じない。
Pythonは馬鹿用言語だということを自覚しろアホ。
だからPython信者はアホなんだよ。何度も言っている通り、
JavaScriptは以下のコードが動く=後方参照できる
Pythonは以下のコードが動かない=後方参照できない
といっているだけ。マジで分かれよアホ。
以下コードをブラウザ上でF12押してコピペしてみろ。動くから。
(function(){
say_hello();
say_world();
function say_hello(){console.log('hello');}
function say_world(){console.log('world');}
})()
Cはこの順に配置しようとすると《歴史的理由で》プロトタイプ宣言が必要。しかしやれば出来る。
Pythonはこの順に配置することがどうやっても出来ない。だから糞。
CもJavaScriptも設計者の自由を制限しない言語だ。
子関数をどこに配置するのが良いのかは設計者が考え、最適化できる。
これがCやJavaScriptの思想。
対してPythonは設計者の自由を制限し、
設計者ごとに異なる部分が無いことこそが読みやすさだと嘯く。
それはPythonerは馬鹿であると定義しているのと同じ。
だってCでもJavaScriptでも、Pythonと同じ順に配置は出来るのだから、
Pythoner以上の脳みそがあればPythonより読みやすく書くことは出来る。
もちろん馬鹿が書けばPython以上に読みにくくなるが、それはそういう仕様だ。(馬鹿は死ねという仕様)
Python馬鹿がCスレまで来て思想が全く異なることを理解せずに喚いているから話が通じない。
Pythonは馬鹿用言語だということを自覚しろアホ。
2017/07/17(月) 23:55:03.58ID:PKmAGp8M
なんか問題あったかい?
ラベルのポインタはGCCとclangは対応してる
標準じゃなく拡張だけどなw
ラベルのポインタはGCCとclangは対応してる
標準じゃなく拡張だけどなw
2017/07/17(月) 23:55:41.84ID:81nqESXy
>>27
で、どんな問題があるの?
で、どんな問題があるの?
2017/07/17(月) 23:57:28.74ID:4pA3RK/K
>>27
まずCスレでPythonの話題持ち出したお前が何言ってんの?w
まずCスレでPythonの話題持ち出したお前が何言ってんの?w
2017/07/18(火) 00:06:20.95ID:zmpO/wkd
>>27
うわー最初は
viod say_hello(count){
if (--count<0) return;
printf("hello");
say_world(count);
}
void say_world(count){
printf(" world!\n");
say_hello(count);
}
みたいな例を出してたのに、それが出来ると分かるないなやわざわざPythonで出来ない例持ち出して来てら
これアンチしたいだけじゃん
うわー最初は
viod say_hello(count){
if (--count<0) return;
printf("hello");
say_world(count);
}
void say_world(count){
printf(" world!\n");
say_hello(count);
}
みたいな例を出してたのに、それが出来ると分かるないなやわざわざPythonで出来ない例持ち出して来てら
これアンチしたいだけじゃん
2017/07/18(火) 00:08:33.09ID:tZS7qvye
>>28
いや、ラベルって「そこから下」に対しては保証されてるが、
「そこから上」って保証されてるか?
まあこの言い方では通じないと思うから具体的に書くと、
(A)
label:
(B)
で(B)側にゴミがない=次の命令がすぐ詰まっていてそこにJUMPすれば動作する
ことは保障されていると思う。これは普通の使い方だから。
ただ、上から流れてきたときに、(A)側にパディングされてたりしないか?というのは微妙で、
x86だとイミディエートに十分な長さがあるから問題ないとして、
16bitとか8bitとかの場合、コード領域にイミディエートを積んでいることは普通にあって、
しかも結構適当な場所に吐かれていた記憶が。
だからコンパイラ側に「ここは明らかに通らない」という風に見える場所はかなり危険かと。
ただし既に言っているが、俺は仕様には詳しく無いから、なんともいえないのだが。
いや、ラベルって「そこから下」に対しては保証されてるが、
「そこから上」って保証されてるか?
まあこの言い方では通じないと思うから具体的に書くと、
(A)
label:
(B)
で(B)側にゴミがない=次の命令がすぐ詰まっていてそこにJUMPすれば動作する
ことは保障されていると思う。これは普通の使い方だから。
ただ、上から流れてきたときに、(A)側にパディングされてたりしないか?というのは微妙で、
x86だとイミディエートに十分な長さがあるから問題ないとして、
16bitとか8bitとかの場合、コード領域にイミディエートを積んでいることは普通にあって、
しかも結構適当な場所に吐かれていた記憶が。
だからコンパイラ側に「ここは明らかに通らない」という風に見える場所はかなり危険かと。
ただし既に言っているが、俺は仕様には詳しく無いから、なんともいえないのだが。
2017/07/18(火) 00:20:24.14ID:yhFxnttF
>>32
この場合実行時にジャンプ先のアドレスを代入するのでその手の問題は無いでしょう
https://docs.oracle.com/cd/E19205-01/821-0386/bjabt/index.html
この場合実行時にジャンプ先のアドレスを代入するのでその手の問題は無いでしょう
https://docs.oracle.com/cd/E19205-01/821-0386/bjabt/index.html
2017/07/18(火) 00:21:58.12ID:tZS7qvye
>>29
子関数を下に書いた方が分かりやすいときに、それが出来ないのが問題。
>>31
それは俺の間違いだった。俺が思っていたほどは糞ではないのも事実だ。
ただしやっぱりJavaScriptやCと比べたら糞だよ。
しかしお前らも知っていると思うが、
Pythonの最大の糞ポイントはラムダに式しか書けない事だろ。
つか、糞ポイントがぽこぽこ出せる時点で糞言語なのは確定なんだよマジで。
そしてCやJavaScriptの思想とは対極にあるのがPythonだ。
それを使うのはお前らの自由だが、それをCスレで喚くのはキチガイだ。
C的価値観からするとPythonなんてキチガイ馬鹿用言語だよ。
逆にお前らがPythonスレで
「Cみたいなシートベルトもエアバッグもない車に今更乗れるか!」って
言ってりゃいいんだよ。
というわけでお帰りくださいマジで。
俺は思想的にPythonとは合わないから、自主的に使うことはないと思います。
子関数を下に書いた方が分かりやすいときに、それが出来ないのが問題。
>>31
それは俺の間違いだった。俺が思っていたほどは糞ではないのも事実だ。
ただしやっぱりJavaScriptやCと比べたら糞だよ。
しかしお前らも知っていると思うが、
Pythonの最大の糞ポイントはラムダに式しか書けない事だろ。
つか、糞ポイントがぽこぽこ出せる時点で糞言語なのは確定なんだよマジで。
そしてCやJavaScriptの思想とは対極にあるのがPythonだ。
それを使うのはお前らの自由だが、それをCスレで喚くのはキチガイだ。
C的価値観からするとPythonなんてキチガイ馬鹿用言語だよ。
逆にお前らがPythonスレで
「Cみたいなシートベルトもエアバッグもない車に今更乗れるか!」って
言ってりゃいいんだよ。
というわけでお帰りくださいマジで。
俺は思想的にPythonとは合わないから、自主的に使うことはないと思います。
2017/07/18(火) 00:25:56.65ID:tZS7qvye
2017/07/18(火) 00:30:29.84ID:NDJOFNKG
>>32
コード領域にイミディエイト積んでいるのは当たり前
イミディエイトは即値
アセンブリコードのニーモニックでオペコードに直接データ(値)を指定するのだから
コード領域にしかイミディエイト値は存在し得ない
コード領域にイミディエイト積んでいるのは当たり前
イミディエイトは即値
アセンブリコードのニーモニックでオペコードに直接データ(値)を指定するのだから
コード領域にしかイミディエイト値は存在し得ない
2017/07/18(火) 00:31:52.64ID:zmpO/wkd
38デフォルトの名無しさん
2017/07/18(火) 00:34:45.35ID:/ZeLwNbO >>34
なんか知らんがHaskellみたいな順序に依存しない言語がおまいさんにあってる気がする。
なんか知らんがHaskellみたいな順序に依存しない言語がおまいさんにあってる気がする。
2017/07/18(火) 00:44:21.05ID:tZS7qvye
>>36
いや、オペランドの長さが足りなかった場合、
中途半端なところにデータ領域を確保するCPUもあるって事。
>>38
Haskellは意識高すぎて無理だった。
てかあれ、遅延評価以外目新しくないよな?
そしてその遅延評価はC++にテンプレートでパクられてて笑ったが。
あれでC++のテンプレートの汎用性の高さに驚いたよ。
ちなみに、他言語のすごいコードって知ってるか?見てみたいとは思うから。
例えばCなら、LinuxのカーネルやGit(作者同じ)がそうだし、
C++ならchromeやV8が多分そう(といっても割とCらしいが)
PythonやHaskellって喚いているだけで現物がなくね?
所詮スクリプトで使い捨てコードが多いってことか?
いや、オペランドの長さが足りなかった場合、
中途半端なところにデータ領域を確保するCPUもあるって事。
>>38
Haskellは意識高すぎて無理だった。
てかあれ、遅延評価以外目新しくないよな?
そしてその遅延評価はC++にテンプレートでパクられてて笑ったが。
あれでC++のテンプレートの汎用性の高さに驚いたよ。
ちなみに、他言語のすごいコードって知ってるか?見てみたいとは思うから。
例えばCなら、LinuxのカーネルやGit(作者同じ)がそうだし、
C++ならchromeやV8が多分そう(といっても割とCらしいが)
PythonやHaskellって喚いているだけで現物がなくね?
所詮スクリプトで使い捨てコードが多いってことか?
2017/07/18(火) 00:47:51.04ID:gHxy0snY
2017/07/18(火) 00:55:04.83ID:tZS7qvye
そういやgotoで思い出したが、
マルチレベルbreakはあってもいいと思うけどね。
gotoがあればなあ、ってのは大体このケースだろうし。
オレオレパーサも組めない範囲でもないんだろうけど、
やっぱ誰かががっつりデバッグ済みにしてくれてるのを使いたいよ。
マルチレベルbreakはあってもいいと思うけどね。
gotoがあればなあ、ってのは大体このケースだろうし。
オレオレパーサも組めない範囲でもないんだろうけど、
やっぱ誰かががっつりデバッグ済みにしてくれてるのを使いたいよ。
2017/07/18(火) 01:00:22.85ID:NDJOFNKG
>41
その用途に最も近いのは例外処理のtry-cattch構文だろうな
C言語では使えないけど
その用途に最も近いのは例外処理のtry-cattch構文だろうな
C言語では使えないけど
2017/07/18(火) 01:00:53.59ID:NDJOFNKG
try-catch
2017/07/18(火) 01:03:09.04ID:zmpO/wkd
try-catch遅くなかった?
2017/07/18(火) 01:03:12.76ID:r4nh1nKp
で
そのCスタイル22k行のコードはどういう書き方をしてたから読みやすかったんだ?
そのCスタイル22k行のコードはどういう書き方をしてたから読みやすかったんだ?
2017/07/18(火) 01:06:51.15ID:NDJOFNKG
2017/07/18(火) 01:09:17.66ID:zmpO/wkd
48デフォルトの名無しさん
2017/07/18(火) 01:10:26.49ID:sjXtAWuw setjmp, longjmp はペア
2017/07/18(火) 01:11:57.66ID:tZS7qvye
>>42
いやtry-catchはだいぶ違うぞ。
てかあれはC的エラー処理とは逆を行っている。
ただ最近は非同期が流行りだしてtry-catchでは対応できなくて
値埋め込み≒C的にはなってきてる。
個人的にはtry-catchは要らないなあ。
マルチレベルブレークはまあ、フラグ使って書けはするが、
見た目汚いから何とかならんのか、といったところ。
どっちかというとショートカット論理に使う。
いやtry-catchはだいぶ違うぞ。
てかあれはC的エラー処理とは逆を行っている。
ただ最近は非同期が流行りだしてtry-catchでは対応できなくて
値埋め込み≒C的にはなってきてる。
個人的にはtry-catchは要らないなあ。
マルチレベルブレークはまあ、フラグ使って書けはするが、
見た目汚いから何とかならんのか、といったところ。
どっちかというとショートカット論理に使う。
2017/07/18(火) 01:21:43.38ID:yLpc3eXF
>>34
Pythonがゴミだからなんなの? わざわざCスレでPythonアンチしていい理由にはならないよね
しかもあんな的外れで何も知らないこと丸わかりなアンチ書き込みしたら対象がどんな言語であっても荒れるに決まってるよね?
帰るのは君だよ
Pythonがゴミだからなんなの? わざわざCスレでPythonアンチしていい理由にはならないよね
しかもあんな的外れで何も知らないこと丸わかりなアンチ書き込みしたら対象がどんな言語であっても荒れるに決まってるよね?
帰るのは君だよ
51デフォルトの名無しさん
2017/07/18(火) 01:32:30.51ID:/ZeLwNbO >>39
すごいコードってのが分からんが、Haskellのprintfはコード見れるけど全く分からん。
(Hoogleでprintfで検索してソース覗く)
型推論出来れば普通のprintfにも、フォーマット済の文字列欲しい時はsprintf的にも使える関数なんだが。。。
すごいコードってのが分からんが、Haskellのprintfはコード見れるけど全く分からん。
(Hoogleでprintfで検索してソース覗く)
型推論出来れば普通のprintfにも、フォーマット済の文字列欲しい時はsprintf的にも使える関数なんだが。。。
2017/07/18(火) 02:23:27.20ID:tZS7qvye
>>51
おうサンクス。見てみたがなるほど分からん。
つっても俺はHaskellの文法も覚えてないレベルなんだが。
ただまあ、その仕様なら、確かに短いのかもね。
GNUのprintfって確か400行程度でgotoが20個くらいあるトンデモコードだったはずだが、
(探したけどすぐには出てこなかった)
それよりも仕様は大きいからねえ。
おうサンクス。見てみたがなるほど分からん。
つっても俺はHaskellの文法も覚えてないレベルなんだが。
ただまあ、その仕様なら、確かに短いのかもね。
GNUのprintfって確か400行程度でgotoが20個くらいあるトンデモコードだったはずだが、
(探したけどすぐには出てこなかった)
それよりも仕様は大きいからねえ。
2017/07/18(火) 02:24:26.42ID:tZS7qvye
>>51
> すごいコード
これな。
俺が思うに問題はこういう「下位コード」ではなくて、
printfやオブジェクトを呼び出す「中位コード」の書きやすさだと思うんだよ。
関数型の連中と話していて違和感を感じるのはそこで、
奴らは10行のコードを5行にすることに精を出しているが、
10k行のコードを5k行にすることには興味が無いように見える。
実際のアプリを書いていて差が出るのはそこで、
Cはその点、最適なデータ構造を目指す、という方向に特化している。
だから構造体ポインタの塊になってしまうわけでさ。
それをもうちょっと自動的に取り扱おうとするとオブジェクト指向になり、C++になる。
で、そこらへんの「中位コード」のサンプルが無いんだよ。
具体的には10k-数万行を必要とするOSSアプリ。
Cの場合はこれはいくらでもあって、既に書いた通りlinuxやGit等。
C++ならFireFoxでもchromeでも、OSSで開発されているからいくらでも読める。
JavaScriptは最近atomエディタというのが出てきた。まあそれ以前から見放題ではあったが。
これに対して、「Haskell製の有名アプリ(OSS)」ってないよね?
(というか俺が知らないだけではあるが)
関数型の連中はCみたいな手続き型を悪く言うのだけど、それは全て下位コードなんだよ。
そして現実的には、下位コードなんて短く書けても大して意味無いんだよ。
どうせ読まないから。(名前がprintfな時点で読み飛ばし決定だし)
ただ、短く書けること自体はやはりすごくて、ポテンシャルがあるのは認めるが、
それが本当に使い物になるのか?については俺はちょっと疑問なんだ。
だから実際に動いているものを見て、どうなのか確認したいわけでさ。
というわけでHaskell製の有名OSSアプリあったら教えてください。
> すごいコード
これな。
俺が思うに問題はこういう「下位コード」ではなくて、
printfやオブジェクトを呼び出す「中位コード」の書きやすさだと思うんだよ。
関数型の連中と話していて違和感を感じるのはそこで、
奴らは10行のコードを5行にすることに精を出しているが、
10k行のコードを5k行にすることには興味が無いように見える。
実際のアプリを書いていて差が出るのはそこで、
Cはその点、最適なデータ構造を目指す、という方向に特化している。
だから構造体ポインタの塊になってしまうわけでさ。
それをもうちょっと自動的に取り扱おうとするとオブジェクト指向になり、C++になる。
で、そこらへんの「中位コード」のサンプルが無いんだよ。
具体的には10k-数万行を必要とするOSSアプリ。
Cの場合はこれはいくらでもあって、既に書いた通りlinuxやGit等。
C++ならFireFoxでもchromeでも、OSSで開発されているからいくらでも読める。
JavaScriptは最近atomエディタというのが出てきた。まあそれ以前から見放題ではあったが。
これに対して、「Haskell製の有名アプリ(OSS)」ってないよね?
(というか俺が知らないだけではあるが)
関数型の連中はCみたいな手続き型を悪く言うのだけど、それは全て下位コードなんだよ。
そして現実的には、下位コードなんて短く書けても大して意味無いんだよ。
どうせ読まないから。(名前がprintfな時点で読み飛ばし決定だし)
ただ、短く書けること自体はやはりすごくて、ポテンシャルがあるのは認めるが、
それが本当に使い物になるのか?については俺はちょっと疑問なんだ。
だから実際に動いているものを見て、どうなのか確認したいわけでさ。
というわけでHaskell製の有名OSSアプリあったら教えてください。
2017/07/18(火) 02:49:55.27ID:FK0nGZqt
>>27
LLで関数をオブジェクト扱いするような言語だと宣言前の関数を呼び出せるの相性悪いんだよね
一応確認して見た(シェルスクリプトみたいな特殊なものは無視)
Ruby→呼べない
perl→呼べない
lua→呼べない
PHP→呼べる(ただし、条件分岐内などの文脈で宣言されていない関数のみ)
JavaScriptl→呼べる(関数宣言「文」のみ)
JavaScriptの「巻き上げる」っていう仕様は結局わかりにくくて、ECMAScript以外で採用してる言語はないはず
LLで関数をオブジェクト扱いするような言語だと宣言前の関数を呼び出せるの相性悪いんだよね
一応確認して見た(シェルスクリプトみたいな特殊なものは無視)
Ruby→呼べない
perl→呼べない
lua→呼べない
PHP→呼べる(ただし、条件分岐内などの文脈で宣言されていない関数のみ)
JavaScriptl→呼べる(関数宣言「文」のみ)
JavaScriptの「巻き上げる」っていう仕様は結局わかりにくくて、ECMAScript以外で採用してる言語はないはず
2017/07/18(火) 03:10:01.00ID:FK0nGZqt
>>53
Pandocは現状かなり知名度あるんじゃないかな
https://github.com/jgm/pandoc
適当にググったらMoongiftのHaskellタグのやつそこそこあった
http://www.moongift.jp/tag/haskell
Pythonに関しては現物を見たことないの常識的にやばいと思うが・・・
機械学習とか数値処理とかの学術系はpython無双だし、Ansibleやyumみたいな管理系統、GUIソフトですらお前Python通って時がちらほら
Googleも社内標準言語にPython入ってて、Githubにもいくつか公開されてるな
Pandocは現状かなり知名度あるんじゃないかな
https://github.com/jgm/pandoc
適当にググったらMoongiftのHaskellタグのやつそこそこあった
http://www.moongift.jp/tag/haskell
Pythonに関しては現物を見たことないの常識的にやばいと思うが・・・
機械学習とか数値処理とかの学術系はpython無双だし、Ansibleやyumみたいな管理系統、GUIソフトですらお前Python通って時がちらほら
Googleも社内標準言語にPython入ってて、Githubにもいくつか公開されてるな
2017/07/18(火) 05:04:08.81ID:a2LOcSSt
>>20
それ再起呼び出しに対応できないことぐらいは理解してるよね?
それ再起呼び出しに対応できないことぐらいは理解してるよね?
2017/07/18(火) 05:45:17.46ID:yhFxnttF
>>56
そもそも、Cでは大抵別の関数に切り出すからそんな心配いらんよ
そもそも、Cでは大抵別の関数に切り出すからそんな心配いらんよ
2017/07/18(火) 08:27:43.78ID:qfl2Yypx
2017/07/18(火) 08:41:06.12ID:NDJOFNKG
別の関数として切り出しているから再起が出来るということだろ
無名関数の場合は再起には工夫が必要
>>20は無名関数とすら呼べない代物ではあるが…
https://ja.wikipedia.org/wiki/%E7%84%A1%E5%90%8D%E5%86%8D%E5%B8%B0
無名関数の場合は再起には工夫が必要
>>20は無名関数とすら呼べない代物ではあるが…
https://ja.wikipedia.org/wiki/%E7%84%A1%E5%90%8D%E5%86%8D%E5%B8%B0
2017/07/18(火) 08:58:56.41ID:yhFxnttF
心配性だねえ
再帰な
再帰な
61デフォルトの名無しさん
2017/07/18(火) 10:00:20.99ID:9AYHL0AJ >> https://mevius.2ch.net/test/read.cgi/tech/1494508803/990
> しかしヘッダファイルを用意するなんて完全に二度手間だし、
失笑
仕様と実装に分けて管理することが何の二度手間なんだよボケ
APIだとかインターフェイスだとかみんなそうだろうが
> コンパイラが自動的にやれよマジで、と思ったことは無いのか?
あああるよ
内製でサクッと作れてしまうほど簡単なことだからなおまえには簡単じゃないかも知れんがw
> 面倒ならなしでよし、
そうなってるだろうが、まさか知らんのか?
> その場合はコンパイラが勝手に探してくる、
これがおまえの言う「自動化」か
ワードやエクセルが「自動で」いらんことしやがるようなのがコンパイラにもついていて欲しいのかw
俺は反対、ライブラリをバージョン管理してるときなど断りもなく最新だか旧版だかとやられたら殺意がわく
> お前みたいに疑問を持ってない奴
疑問は持つぜ
おまえみたいに間違った正義を説くアホは見逃してねえだろ
> しかしヘッダファイルを用意するなんて完全に二度手間だし、
失笑
仕様と実装に分けて管理することが何の二度手間なんだよボケ
APIだとかインターフェイスだとかみんなそうだろうが
> コンパイラが自動的にやれよマジで、と思ったことは無いのか?
あああるよ
内製でサクッと作れてしまうほど簡単なことだからなおまえには簡単じゃないかも知れんがw
> 面倒ならなしでよし、
そうなってるだろうが、まさか知らんのか?
> その場合はコンパイラが勝手に探してくる、
これがおまえの言う「自動化」か
ワードやエクセルが「自動で」いらんことしやがるようなのがコンパイラにもついていて欲しいのかw
俺は反対、ライブラリをバージョン管理してるときなど断りもなく最新だか旧版だかとやられたら殺意がわく
> お前みたいに疑問を持ってない奴
疑問は持つぜ
おまえみたいに間違った正義を説くアホは見逃してねえだろ
2017/07/18(火) 11:46:36.57ID:Oj2nYHmM
CL /Zg じゃあかんのけ?
2017/07/18(火) 12:41:25.17ID:gVG2yFi+
>>59
無名関数の話なんて誰もしてないから無駄に絡んでこないでくれ
無名関数の話なんて誰もしてないから無駄に絡んでこないでくれ
64デフォルトの名無しさん
2017/07/18(火) 12:41:58.87ID:IlqGlOEF まだ続いてたのか……
仕様に不満があるのは理解できた。同意できるかどうかはともかく。
そろそろ、「不満があるから何をしてるのか」という話を聞きたいな。
仕様に不満があるのは理解できた。同意できるかどうかはともかく。
そろそろ、「不満があるから何をしてるのか」という話を聞きたいな。
2017/07/18(火) 14:49:00.45ID:D0vI4DI2
そもそも個人的にPythonをプログラムと呼ぶのに違和感ある
Pythonはスクリプトだろ
Pythonはスクリプトだろ
66デフォルトの名無しさん
2017/07/18(火) 15:27:18.14ID:P4sGRRLT お願いします。どうしても、課題ができません。どなたかわかる方いませんか?
text.txtというファイルに以下のような個人情報が保存されているとする。これを読み込み、実行例のように画面に出力するプログラムを作成しなさい。
ヒント: 氏名の読み込みでは"name: %s\n"のような変換仕様を用いると良い。
▼text.txtの内容
name: Ichiro
age: 20
weight: 65.5
e-mail: ichiro@foo.bar
▼実行例
氏名: Ichiro
年齢: 20
体重: 65.5
Eメール: ichiro@foo.bar
text.txtというファイルに以下のような個人情報が保存されているとする。これを読み込み、実行例のように画面に出力するプログラムを作成しなさい。
ヒント: 氏名の読み込みでは"name: %s\n"のような変換仕様を用いると良い。
▼text.txtの内容
name: Ichiro
age: 20
weight: 65.5
e-mail: ichiro@foo.bar
▼実行例
氏名: Ichiro
年齢: 20
体重: 65.5
Eメール: ichiro@foo.bar
67デフォルトの名無しさん
2017/07/18(火) 15:27:59.32ID:P4sGRRLT #include <stdio.h>
int main(void)
{
int x;
double b;
char str[100];
FILE*fp;
fp=fopen("test.txt","r");
if(fp==NULL){
printf("ファイルをオープンできませんでした。\n");
return 1;
}else{
printf("ファイルをオープンしました\n");
}
int main(void)
{
int x;
double b;
char str[100];
FILE*fp;
fp=fopen("test.txt","r");
if(fp==NULL){
printf("ファイルをオープンできませんでした。\n");
return 1;
}else{
printf("ファイルをオープンしました\n");
}
68デフォルトの名無しさん
2017/07/18(火) 15:28:25.02ID:P4sGRRLT fscanf(fp,"name:%s",&str);
printf("氏名:%s\n",str);
fscanf(fp,"age:%d",&x);
printf("年齢:%d\n",x);
fscanf(fp,"weight:%d",&b);
printf("体重:%.1lf\n",b);
fscanf(fp,"e-mail:%s",&str);
printf("Eメール:ichiro@foo.bar\n",str);
printf ("ファイルを読み込みました\n");
fclose(fp);
printf("ファイルをクローズしました\n");
return 0;
}
printf("氏名:%s\n",str);
fscanf(fp,"age:%d",&x);
printf("年齢:%d\n",x);
fscanf(fp,"weight:%d",&b);
printf("体重:%.1lf\n",b);
fscanf(fp,"e-mail:%s",&str);
printf("Eメール:ichiro@foo.bar\n",str);
printf ("ファイルを読み込みました\n");
fclose(fp);
printf("ファイルをクローズしました\n");
return 0;
}
69デフォルトの名無しさん
2017/07/18(火) 18:43:44.87ID:/pPGIQYg Makefileの書き方で質問なんだけど
all: hoge piyo fuga
みたいな行があるとして、 依存ファイルを変数みたいに使いたいんだけど
どう書いたらいいの? いちいち
HOGE := hoge piyo fuga
all: $(HOGE)
みたいに書かないとだめなの?
all: hoge piyo fuga
みたいな行があるとして、 依存ファイルを変数みたいに使いたいんだけど
どう書いたらいいの? いちいち
HOGE := hoge piyo fuga
all: $(HOGE)
みたいに書かないとだめなの?
70デフォルトの名無しさん
2017/07/18(火) 20:34:14.13ID:Cdvgr3b82017/07/18(火) 21:58:43.01ID:zbCywyZZ
2017/07/18(火) 22:05:43.42ID:zbCywyZZ
>>69
変数みたいにつかって何したいかわからんな。
makefileってそういうものだとしか、言えない。
依存関係は依存するファイルをコンパイラが出力してくれるから、それをincludeするなんてのも良くある。
変数みたいにつかって何したいかわからんな。
makefileってそういうものだとしか、言えない。
依存関係は依存するファイルをコンパイラが出力してくれるから、それをincludeするなんてのも良くある。
73デフォルトの名無しさん
2017/07/18(火) 23:26:17.54ID:fPBWIN/L74デフォルトの名無しさん
2017/07/18(火) 23:30:58.21ID:fPBWIN/L >>68
もう一箇所。
> fscanf(fp,"e-mail:%s",&str);
> printf("Eメール:ichiro@foo.bar\n",str);
惜しいな。strに読む所は良い。その後、それを出す所。これだと固定の文字列が出るだけだよね。
もう一箇所。
> fscanf(fp,"e-mail:%s",&str);
> printf("Eメール:ichiro@foo.bar\n",str);
惜しいな。strに読む所は良い。その後、それを出す所。これだと固定の文字列が出るだけだよね。
2017/07/18(火) 23:36:18.53ID:Th9l296P
専門学校一年です
プログラム言語っていくつも必要?応用性ある最強言語一つあればいいんでないの?
プログラム言語っていくつも必要?応用性ある最強言語一つあればいいんでないの?
2017/07/18(火) 23:48:43.24ID:tZS7qvye
>>46,48
なんか実装している奴いるぞ。
http://www.nurs.or.jp/~sug/soft/super/longjmp.htm
http://www.nurs.or.jp/~sug/soft/java/java25.htm
なんか実装している奴いるぞ。
http://www.nurs.or.jp/~sug/soft/super/longjmp.htm
http://www.nurs.or.jp/~sug/soft/java/java25.htm
2017/07/18(火) 23:49:23.68ID:tZS7qvye
>>54
Perlは出来るぞ。
Rubyは出来ないようだが。これは予想外だった。つかMatzはこっち側のはずだが。
luaは出来ないね。LiveDemoで確認した。
http://d.hatena.ne.jp/perlcodesample/20080615/1213501216
https://soudan1.biglobe.ne.jp/qa776599.html
JavaScriptが文だけなのは全く問題ない。以下コードは動く。
代入は他文と同様上から順に評価されるだけであって、シンボルは見えてる。
(function(){
say_hello();
var say_something = say_world;
say_something();
function say_hello(){console.log('hello');}
function say_world(){console.log('world');}
})()
> JavaScriptの「巻き上げる」っていう仕様は結局わかりにくくて
これは俺は「分かりにくい」というのが理解不能で、単に関数スコープなだけだ。
Cで言うANSI以前の「ド頭で全部宣言しとけ」でしかない。(C89と言うのか?)
ここで間違ったらCはSyntaxErrorだったはずだが、
JavaScriptの場合はそこらへんがユルくて、
「どこで宣言しても頭で宣言したことにして、エラー無しで動作」となるだけ。
Rubyが出来ないのはMatzが方針を間違えてるね。
「全部先に宣言した方が読みやすい」ってのはMatzの意見であって、
全員がそう思っているわけではない。だからRubyの思想なら制限しては駄目だ。一貫性がない。
逆にPythonはユーザーごとのばらつきこそが可読性を低下させるという思想だから、
制限するべきだし、実際にそうなっているから問題ない。こちらは一貫性がある。
結果、俺にとってはRubyも糞だと判明しだだけだな。
Perlは出来るぞ。
Rubyは出来ないようだが。これは予想外だった。つかMatzはこっち側のはずだが。
luaは出来ないね。LiveDemoで確認した。
http://d.hatena.ne.jp/perlcodesample/20080615/1213501216
https://soudan1.biglobe.ne.jp/qa776599.html
JavaScriptが文だけなのは全く問題ない。以下コードは動く。
代入は他文と同様上から順に評価されるだけであって、シンボルは見えてる。
(function(){
say_hello();
var say_something = say_world;
say_something();
function say_hello(){console.log('hello');}
function say_world(){console.log('world');}
})()
> JavaScriptの「巻き上げる」っていう仕様は結局わかりにくくて
これは俺は「分かりにくい」というのが理解不能で、単に関数スコープなだけだ。
Cで言うANSI以前の「ド頭で全部宣言しとけ」でしかない。(C89と言うのか?)
ここで間違ったらCはSyntaxErrorだったはずだが、
JavaScriptの場合はそこらへんがユルくて、
「どこで宣言しても頭で宣言したことにして、エラー無しで動作」となるだけ。
Rubyが出来ないのはMatzが方針を間違えてるね。
「全部先に宣言した方が読みやすい」ってのはMatzの意見であって、
全員がそう思っているわけではない。だからRubyの思想なら制限しては駄目だ。一貫性がない。
逆にPythonはユーザーごとのばらつきこそが可読性を低下させるという思想だから、
制限するべきだし、実際にそうなっているから問題ない。こちらは一貫性がある。
結果、俺にとってはRubyも糞だと判明しだだけだな。
■ このスレッドは過去ログ倉庫に格納されています
