エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
探検
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2018/12/28(金) 06:04:52.38ID:ufThBpcD
115デフォルトの名無しさん
2019/01/14(月) 13:02:31.28ID:BcFaCsuL >>110
constexpr指定はコンパイラにはわからない関数呼び出し先で
定数化できる計算であるとコンパイラに教えられるので
指定できるならした方がいいだろうけど
>本当に速度が必要な個所のチューニング
そういう個所がコンパイル時にわかってる定数だけで構成されてる例なんて
まず滅多にないんだけどね
constexpr指定はコンパイラにはわからない関数呼び出し先で
定数化できる計算であるとコンパイラに教えられるので
指定できるならした方がいいだろうけど
>本当に速度が必要な個所のチューニング
そういう個所がコンパイル時にわかってる定数だけで構成されてる例なんて
まず滅多にないんだけどね
116はちみつ餃子 ◆8X2XSCHEME
2019/01/14(月) 13:29:30.02ID:ybeYuaGe >>115
>> 本当に速度が必要な個所のチューニング
> そういう個所がコンパイル時にわかってる定数だけで構成されてる例なんて
> まず滅多にないんだけどね
constexpr はコンパイラに対するヒントであるだけでなく、プログラマにとっての制約でもある。
「そういう (速度が必要な) 箇所」であるにもかかわらず実行時の値に依存しているということを
プログラマが気づくことが出来る (ので分離するなどの工夫をする機会があるかもしれない)
というのは十分に便利だよ。
>> 本当に速度が必要な個所のチューニング
> そういう個所がコンパイル時にわかってる定数だけで構成されてる例なんて
> まず滅多にないんだけどね
constexpr はコンパイラに対するヒントであるだけでなく、プログラマにとっての制約でもある。
「そういう (速度が必要な) 箇所」であるにもかかわらず実行時の値に依存しているということを
プログラマが気づくことが出来る (ので分離するなどの工夫をする機会があるかもしれない)
というのは十分に便利だよ。
117デフォルトの名無しさん
2019/01/14(月) 13:39:03.52ID:BcFaCsuL わかってないな
本当に解決しなきゃいけないボトルネックが、たかだか定数の畳み込みだけで
解決出来ることなどまず無いと言ってんの
ただの数回、数十回の普通の演算はそのままやっても十分速いんだよ
むしろ定数化できるとこを全部定数化したせいで、(即値にならないような構造体の場合)定数を読みに行くコストの方が大幅に高くなる可能性もある
constexprというか言語の機能を盲信しすぎ
本当に解決しなきゃいけないボトルネックが、たかだか定数の畳み込みだけで
解決出来ることなどまず無いと言ってんの
ただの数回、数十回の普通の演算はそのままやっても十分速いんだよ
むしろ定数化できるとこを全部定数化したせいで、(即値にならないような構造体の場合)定数を読みに行くコストの方が大幅に高くなる可能性もある
constexprというか言語の機能を盲信しすぎ
118デフォルトの名無しさん
2019/01/14(月) 13:47:53.15ID:BcFaCsuL あと、
>「そういう (速度が必要な) 箇所」であるにもかかわらず実行時の値に依存しているということを
ファイルから読んだ内容、mainに渡された引数、ネットワークから受け取ったデータ
そういうの(および一度でもそれらと関わった変数)全て実行時の値だってわかってる?
>「そういう (速度が必要な) 箇所」であるにもかかわらず実行時の値に依存しているということを
ファイルから読んだ内容、mainに渡された引数、ネットワークから受け取ったデータ
そういうの(および一度でもそれらと関わった変数)全て実行時の値だってわかってる?
119デフォルトの名無しさん
2019/01/14(月) 22:35:17.67ID:SOyXSPCI オフラインで複雑な計算して、結果をバイナリで埋め込んでおくことはよくやる
ゲームなら当たり前にやるワークフローだよな
しかしそういう典型的な用途にconstexprは向いてないという間抜け具合
C++でなんでもやるというのが目的になってんだよね
こういうのをオナニーって言う
ゲームなら当たり前にやるワークフローだよな
しかしそういう典型的な用途にconstexprは向いてないという間抜け具合
C++でなんでもやるというのが目的になってんだよね
こういうのをオナニーって言う
120はちみつ餃子 ◆8X2XSCHEME
2019/01/15(火) 09:17:36.65ID:f9+1p0X/121デフォルトの名無しさん
2019/01/15(火) 09:57:48.09ID:fPstZ0f7 何度も言ってきたが、負けを認めたら死ぬ病気なのか?君は
122デフォルトの名無しさん
2019/01/15(火) 10:02:02.52ID:fPstZ0f7 ついでに言えば、俺は「指定できるならした方がいい」と書いた
俺が成果を限定的だと貶してるんじゃなくて、
君が過信してるの
俺が成果を限定的だと貶してるんじゃなくて、
君が過信してるの
123はちみつ餃子 ◆8X2XSCHEME
2019/01/15(火) 10:05:46.91ID:f9+1p0X/124デフォルトの名無しさん
2019/01/15(火) 10:23:37.90ID:p3r+u4ET >本当に速度が必要な個所のチューニング
>をしたいとき、つまりコンパイラの最適化以上のことがしたいときに
>打てる手段が無かったりだとか処理系の拡張構文を使わなければならないというよりは、
>不格好でも constexpr の方がマシ。
>をしたいとき、つまりコンパイラの最適化以上のことがしたいときに
>打てる手段が無かったりだとか処理系の拡張構文を使わなければならないというよりは、
>不格好でも constexpr の方がマシ。
125デフォルトの名無しさん
2019/01/15(火) 10:26:22.74ID:fPstZ0f7 (途中送信してしまった)
本当に"速度"が必要なときに速度より移植性やC++標準への準拠を優先してconstexprマンセーする
これを過信と言わずして何と言う
本当に"速度"が必要なときに速度より移植性やC++標準への準拠を優先してconstexprマンセーする
これを過信と言わずして何と言う
126はちみつ餃子 ◆8X2XSCHEME
2019/01/15(火) 10:40:35.59ID:f9+1p0X/ >>125
速度が必要な個所が「なるべく」移植性が高い形で表現できればそれに越したことは無いし、
更にそれ以上が欲しいなら移植性を犠牲にすることも出来るんだから、
constexpr の導入に何の問題もないだろ?
速度が必要な個所が「なるべく」移植性が高い形で表現できればそれに越したことは無いし、
更にそれ以上が欲しいなら移植性を犠牲にすることも出来るんだから、
constexpr の導入に何の問題もないだろ?
127デフォルトの名無しさん
2019/01/15(火) 19:01:25.37ID:CKmovdLr 何でC++スレはプログラム板で勢いあるんですか?
128デフォルトの名無しさん
2019/01/15(火) 19:02:26.94ID:CKmovdLr C++で有名人になりたいです
どうすればいいでしょうか?
どうすればいいでしょうか?
130デフォルトの名無しさん
2019/01/15(火) 22:36:39.63ID:CKmovdLr >>129
それって無理では‥
それって無理では‥
131デフォルトの名無しさん
2019/01/16(水) 01:23:29.16ID:CLrL7dI7 >>130
つ ttps://www.amazon.co.jp/dp/4797344369
つ ttps://www.amazon.co.jp/dp/4797344369
132デフォルトの名無しさん
2019/01/16(水) 04:10:04.96ID:GtMBox+p >>94
はちみつなんとかもそーだけど、
おまえもほんま馬鹿やね。表面しか読めないんだな。
10年間、言語オタを隔離してしまえといってるのだよ間抜けちゃん。
世の中から隔離された世界でせんずりこいてろといってる。ザーメン臭でくさいやつは地上に出るな。
大体、大規模プログラミングはすでにC++には向かないことが露呈して久しく、
せいぜいbetter Cとして生き残るぐらいしか道はないのにどういう意図を持っての3年ごとの改訂なんだ。
ポリシーなき改訂ははた迷惑なだけ
これだけ頻繁に改訂されると、スペック以外の解説本では、すでにストラウストラップ本自体改訂をキャッチアップできてない。
その邦訳ともなればますます現行仕様から浦島太郎になるのは必至。せっかく覚えた頃に新スペックの登場か?
C++初心者はいったいどの本買ってるのさ?キチガイ言語オタ江添本でも買うのか?
結局、ユーザー減少させてるだけだろうが
はちみつなんとかもそーだけど、
おまえもほんま馬鹿やね。表面しか読めないんだな。
10年間、言語オタを隔離してしまえといってるのだよ間抜けちゃん。
世の中から隔離された世界でせんずりこいてろといってる。ザーメン臭でくさいやつは地上に出るな。
大体、大規模プログラミングはすでにC++には向かないことが露呈して久しく、
せいぜいbetter Cとして生き残るぐらいしか道はないのにどういう意図を持っての3年ごとの改訂なんだ。
ポリシーなき改訂ははた迷惑なだけ
これだけ頻繁に改訂されると、スペック以外の解説本では、すでにストラウストラップ本自体改訂をキャッチアップできてない。
その邦訳ともなればますます現行仕様から浦島太郎になるのは必至。せっかく覚えた頃に新スペックの登場か?
C++初心者はいったいどの本買ってるのさ?キチガイ言語オタ江添本でも買うのか?
結局、ユーザー減少させてるだけだろうが
133デフォルトの名無しさん
2019/01/16(水) 04:55:20.85ID:M8dG57eU 他人をけなす人には、なりたくないな
https://lavender.5ch.net/test/read.cgi/pav/1534982458/
https://lavender.5ch.net/test/read.cgi/pav/1534982458/
134デフォルトの名無しさん
2019/01/16(水) 05:13:03.61ID:CLrL7dI7 なるな人間になるな
135デフォルトの名無しさん
2019/01/16(水) 09:06:01.53ID:Cj0f6L/5 もしかして、最初の「なる」はNULLと掛かってる?
中身のない人間、アクセスしちゃダメな奴、みたいな意味で。
ちなみに自分は「ヌル」派。
だってNULLを「ナル」と読んだら「ぬるぽ」と言えなくなるもの。
中身のない人間、アクセスしちゃダメな奴、みたいな意味で。
ちなみに自分は「ヌル」派。
だってNULLを「ナル」と読んだら「ぬるぽ」と言えなくなるもの。
136デフォルトの名無しさん
2019/01/16(水) 09:58:04.96ID:qfBMRYbT137デフォルトの名無しさん
2019/01/16(水) 12:17:10.07ID:qfBMRYbT C++好きな人って、C‡‡、Java嫌いな人が多いのって偏見ですか?
関数型言語かRustの話しかしてない気がします
関数型言語かRustの話しかしてない気がします
138デフォルトの名無しさん
2019/01/16(水) 13:56:12.46ID:CLrL7dI7 >>135
回文
回文
139はちみつ餃子 ◆8X2XSCHEME
2019/01/16(水) 15:05:52.98ID:kJO3cJ8H >>132
C++ の言語としてのポリシーはこのように提示されている。
Stroustrup 自身がその著書に書いたもの。
委員会の公式な文書にするとかどうとかいう議論はあったけど、
結局どうなったのかは知らない。
・C++ の進化は現実の問題をその動因とする
・完全主義にはこだわらない
・C++ は今現在役に立つ言語でなければならない
・人に何かを強制しない
・静的タイプシステムに対する暗黙の違反が無い
・同じ機能なら人に教えやすい方を選ぶ
・C のプリプロセッサは使わないように
・C との正当でない非互換性が無い
・C++ 以外に他の低レベル言語を必要としない (アセンブラは除く)
・使わない機能はコストを発生させない
これらの考え方に基づいて今要求されているものが (不完全でも) より素早く反映しやすくする
リリース体制として ship train model が導入された。
多くの人が関わるので妥協はあるだろうが、一環したポリシーの下で改定されている。
そのポリシーを気に入らないでいる自由はあるし、それはどんどん主張して良いが、
ポリシーが無いというのは事実誤認だし、自分にとって妥当ではないからといって
必要としている人を侮辱するべきではないよ。
C++ の言語としてのポリシーはこのように提示されている。
Stroustrup 自身がその著書に書いたもの。
委員会の公式な文書にするとかどうとかいう議論はあったけど、
結局どうなったのかは知らない。
・C++ の進化は現実の問題をその動因とする
・完全主義にはこだわらない
・C++ は今現在役に立つ言語でなければならない
・人に何かを強制しない
・静的タイプシステムに対する暗黙の違反が無い
・同じ機能なら人に教えやすい方を選ぶ
・C のプリプロセッサは使わないように
・C との正当でない非互換性が無い
・C++ 以外に他の低レベル言語を必要としない (アセンブラは除く)
・使わない機能はコストを発生させない
これらの考え方に基づいて今要求されているものが (不完全でも) より素早く反映しやすくする
リリース体制として ship train model が導入された。
多くの人が関わるので妥協はあるだろうが、一環したポリシーの下で改定されている。
そのポリシーを気に入らないでいる自由はあるし、それはどんどん主張して良いが、
ポリシーが無いというのは事実誤認だし、自分にとって妥当ではないからといって
必要としている人を侮辱するべきではないよ。
140デフォルトの名無しさん
2019/01/16(水) 15:25:10.37ID:mUX6kDFm 俺が以前「D&E読んでないのか」、って言ったせいではちみつはD&Eの受け売りするようになったな・・・
ttp://i-saint.hatenablog.com/entry/20101012/1286822888
「あるプログラム言語を使うためにその言語の弁護人になるべきではない。」
そういうただの弁護人になってるバカは大抵C++を実用レベルで使ってない人間ばっかりだ
ttp://i-saint.hatenablog.com/entry/20101012/1286822888
「あるプログラム言語を使うためにその言語の弁護人になるべきではない。」
そういうただの弁護人になってるバカは大抵C++を実用レベルで使ってない人間ばっかりだ
141デフォルトの名無しさん
2019/01/16(水) 15:27:49.73ID:vTKVQdGX そやな
142はちみつ餃子 ◆8X2XSCHEME
2019/01/16(水) 15:39:55.50ID:kJO3cJ8H >>140
?
このスレで言われたから読んだということは無いはずだが、どの発言のこと?
正確に覚えてないけど
私が持ってるやつは (日本語版の) 初版だからたぶん 2006〜2007 年頃には読んでるはず。
?
このスレで言われたから読んだということは無いはずだが、どの発言のこと?
正確に覚えてないけど
私が持ってるやつは (日本語版の) 初版だからたぶん 2006〜2007 年頃には読んでるはず。
143はちみつ餃子 ◆8X2XSCHEME
2019/01/16(水) 15:56:46.23ID:kJO3cJ8H 現実的な問題があるならそれは解決されなければならない問題であって、
改定を先延ばしにすることを要求するのはおかしな話じゃない?
ドキュメントが追い付いていないのは、これは確かにあるけど、
翻訳とかに時間がかかるのが分かっているから
早め早めに改定がリリースされるのはむしろありがたいことでしょ。
デカい改定が一気にくるよりは。
constexpr が限定的に過ぎるとかいうのはわかってる話で、
だから制限を緩くしたり consteval を検証したりしてるんだろ。
それでも必要だと判断したから入れたんだから、
そこに文句付けたって今更な話で擁護もクソもない。
駄目な部分があるのは知ってるっつーの。 それでも要るんだよ!
改定を先延ばしにすることを要求するのはおかしな話じゃない?
ドキュメントが追い付いていないのは、これは確かにあるけど、
翻訳とかに時間がかかるのが分かっているから
早め早めに改定がリリースされるのはむしろありがたいことでしょ。
デカい改定が一気にくるよりは。
constexpr が限定的に過ぎるとかいうのはわかってる話で、
だから制限を緩くしたり consteval を検証したりしてるんだろ。
それでも必要だと判断したから入れたんだから、
そこに文句付けたって今更な話で擁護もクソもない。
駄目な部分があるのは知ってるっつーの。 それでも要るんだよ!
144135
2019/01/16(水) 17:16:27.25ID:Cj0f6L/5 >>138 回文には気づかなかった。
「なるな」「人間に」がそれぞれ反転同一で、
それらフレーズを反転同一になるように並べて作成した回文か。
「人間になるな人間に」でも構造的には同じね。
いくらかPPAPな感じがしないでもない。
あと、正規表現のパズルっぽくもある。
「なるな」「人間に」がそれぞれ反転同一で、
それらフレーズを反転同一になるように並べて作成した回文か。
「人間になるな人間に」でも構造的には同じね。
いくらかPPAPな感じがしないでもない。
あと、正規表現のパズルっぽくもある。
145はちみつ餃子 ◆8X2XSCHEME
2019/01/16(水) 17:26:40.42ID:kJO3cJ8H 酢にピリッとした風味を足すのに使えます
_人人人人人人_
> スピリタス <
 ̄Y^Y^Y^Y^Y^Y ̄
_人人人人人人_
> スピリタス <
 ̄Y^Y^Y^Y^Y^Y ̄
147デフォルトの名無しさん
2019/01/16(水) 17:58:49.69ID:Cj0f6L/5 はちみつと関係ないと思ったけど、餃子の方には関係ありそう。
しかし、C++スレッドでの真摯な態度と裏腹に、
他所ではどういうキャラクタなんだろ、と思わせる投稿ね。
しかし、C++スレッドでの真摯な態度と裏腹に、
他所ではどういうキャラクタなんだろ、と思わせる投稿ね。
148デフォルトの名無しさん
2019/01/16(水) 18:12:30.55ID:mUX6kDFm 真摯かねぇ・・・・希望的観測で詳しくないことに首突っ込んだり
自分の間違いや認識の誤りは絶対に認めないクソコテなのに
まぁそれも俺の主観だから他の人がどう思うかは知らんけど。
自分の間違いや認識の誤りは絶対に認めないクソコテなのに
まぁそれも俺の主観だから他の人がどう思うかは知らんけど。
149デフォルトの名無しさん
2019/01/16(水) 18:41:54.90ID:YdXHJCw6 >>145
風味って鼻から空気が出る時に感じる食べ物の香りかと思ってたわ
風味って鼻から空気が出る時に感じる食べ物の香りかと思ってたわ
150デフォルトの名無しさん
2019/01/16(水) 20:40:09.12ID:iaQOejPk c++が対象にしてる現実問題って何だ?
c++使う大規模プロジェクトってゲームがまずあると思うけど
例外禁止未だに普通だし標準ライブラリも限定的にしか使わないよ
c++使う大規模プロジェクトってゲームがまずあると思うけど
例外禁止未だに普通だし標準ライブラリも限定的にしか使わないよ
151デフォルトの名無しさん
2019/01/16(水) 20:47:01.61ID:Tucl/crz c++で書かれたc++のコンパイラのことだろ
ここが0.001%早くなるだけで世界から年間100000時間くらいが節約できるんじゃねえの
ここが0.001%早くなるだけで世界から年間100000時間くらいが節約できるんじゃねえの
152デフォルトの名無しさん
2019/01/16(水) 21:54:11.46ID:gQtWsPR9 じゃあLLVMのコーディングスタンダードこれな
https://llvm.org/docs/CodingStandards.html
例外、RTTI、iostream使わない
現実に使えるソフトってのはこういう制約で作るわけだ
C++の標準化やってる連中はメタプログラミングで遊んでるだけ
現実問題なんて何もわかってない
https://llvm.org/docs/CodingStandards.html
例外、RTTI、iostream使わない
現実に使えるソフトってのはこういう制約で作るわけだ
C++の標準化やってる連中はメタプログラミングで遊んでるだけ
現実問題なんて何もわかってない
153デフォルトの名無しさん
2019/01/16(水) 23:10:45.86ID:4t4UncJr 例外使わないとかないわー
初心者かよ
初心者かよ
154デフォルトの名無しさん
2019/01/16(水) 23:12:36.63ID:Xh3PQjx5 だから、ブラウザ、ロケット射的距離のシミュレーション、機械学習
155デフォルトの名無しさん
2019/01/16(水) 23:36:41.52ID:gQtWsPR9 >>153
初心者ってのはC++の例外のバイナリモデル説明できねーやつのことな
初心者ってのはC++の例外のバイナリモデル説明できねーやつのことな
156デフォルトの名無しさん
2019/01/16(水) 23:44:05.56ID:gQtWsPR9 >>154
でC++がそれらに対してどんな問題解決してくれたんだ?
でC++がそれらに対してどんな問題解決してくれたんだ?
157はちみつ餃子 ◆8X2XSCHEME
2019/01/17(木) 01:07:41.88ID:/VOhvfFp >>152
そこらへんはしゃーない。 便利な機能も害悪な場面は有るし、
ある時点では有用だったものが後には足を引っ張ることもある。
あるプロジェクトで縛りを設けるからといって
それが現実の全てというわけではない。
ただ、例外を使わない方向というのは大きなプロジェクトでは
そこそこあるかも?
>>153
例外が忌避されるのは他の言語と接続したときに、
呼出した側が例外を捕捉できないというのが致命的で、
つまりはそういった場面が想定されるようなライブラリでの一般的な規則。
外へ出る前に例外を全部キャッチしてしまうってのでも、
まあなんとかならんことはないが、
近頃では std::optional を活用した方がいいという雰囲気はある気がするね。
Go や Rust は最初からそういう方向だし。
そこらへんはしゃーない。 便利な機能も害悪な場面は有るし、
ある時点では有用だったものが後には足を引っ張ることもある。
あるプロジェクトで縛りを設けるからといって
それが現実の全てというわけではない。
ただ、例外を使わない方向というのは大きなプロジェクトでは
そこそこあるかも?
>>153
例外が忌避されるのは他の言語と接続したときに、
呼出した側が例外を捕捉できないというのが致命的で、
つまりはそういった場面が想定されるようなライブラリでの一般的な規則。
外へ出る前に例外を全部キャッチしてしまうってのでも、
まあなんとかならんことはないが、
近頃では std::optional を活用した方がいいという雰囲気はある気がするね。
Go や Rust は最初からそういう方向だし。
158デフォルトの名無しさん
2019/01/17(木) 02:01:31.97ID:l+wuAult このスレ、初心者を見下す者ばかりだし、
何が 【初心者歓迎】だよ。
【初心者歓迎】はずせ。
そう言うと、「何にもそんなことしてないよ」
とか、レスが来る。
子供スレ。
何が 【初心者歓迎】だよ。
【初心者歓迎】はずせ。
そう言うと、「何にもそんなことしてないよ」
とか、レスが来る。
子供スレ。
159デフォルトの名無しさん
2019/01/17(木) 08:10:37.95ID:qOfK2eXQ optionalはヒープ使わないだけでnullと大差ない
せっかく静的にnot nulが保証されてるとこを壊してしまう
ほとんどアンチパターン
せっかく静的にnot nulが保証されてるとこを壊してしまう
ほとんどアンチパターン
160デフォルトの名無しさん
2019/01/17(木) 08:21:29.72ID:4hvMH0x4 業務でC++使ってない雑魚の意見なんて無視しろ
161デフォルトの名無しさん
2019/01/17(木) 08:22:23.19ID:4hvMH0x4 趣味でC++齧ってるやつと本気で仕事としてやってるやつじゃ格が違うんだよ
162デフォルトの名無しさん
2019/01/17(木) 08:22:55.36 C++では好きなだけ効率を犠牲にして安全を手にすることができる
効率を犠牲にして安全を手にすることを余儀なくされている言語とは区別すべきだ
効率を犠牲にして安全を手にすることを余儀なくされている言語とは区別すべきだ
163デフォルトの名無しさん
2019/01/17(木) 08:47:23.41ID:qOfK2eXQ 業務で使ってない素人は平気で例外禁則とか言って返り値チェックで死ぬほど汚いコード書くんだよな
164デフォルトの名無しさん
2019/01/17(木) 09:07:15.76ID:CHgbqTPA まぁ業務と違って趣味は時間を無駄につぎ込めるから
人によっては素人の方がレベル高かったりするけどな
そういうのと比較するのはホントやめて欲しい
人によっては素人の方がレベル高かったりするけどな
そういうのと比較するのはホントやめて欲しい
165デフォルトの名無しさん
2019/01/17(木) 09:09:21.72ID:4hvMH0x4 >>164
は?業務と趣味でやってる奴が一番最強
は?業務と趣味でやってる奴が一番最強
166デフォルトの名無しさん
2019/01/17(木) 10:35:25.89ID:iQ0t94Qh >>159
optionalの理解間違ってるよ
optionalの理解間違ってるよ
167デフォルトの名無しさん
2019/01/17(木) 10:39:29.94ID:iQ0t94Qh168デフォルトの名無しさん
2019/01/17(木) 12:13:15.88ID:oU9OMPiG 実際には例外を禁止するとバグが増えてメンテしにくくなるんだけどな
169デフォルトの名無しさん
2019/01/17(木) 13:51:39.37ID:l+wuAult そのソフトが気に入らないなら、
そのソフトを使わなきゃ良いだけだし。
そんなことも、いい年になって、わからないのか。
そのソフトを使わなきゃ良いだけだし。
そんなことも、いい年になって、わからないのか。
170デフォルトの名無しさん
2019/01/17(木) 14:34:02.57ID:DbtLCT5r このスレ卒業死体
171デフォルトの名無しさん
2019/01/17(木) 14:43:25.66ID:n6FY+cyG スレばいいじゃない
172デフォルトの名無しさん
2019/01/17(木) 15:55:58.66ID:K5aWd8xj setjmp 使えばよろし
173デフォルトの名無しさん
2019/01/17(木) 17:20:21.35 遂に中級者になるのか……
175デフォルトの名無しさん
2019/01/17(木) 20:47:04.58ID:iJuNblTy 浪人で消してるんでっしゃろ
176デフォルトの名無しさん
2019/01/17(木) 21:54:16.18ID:yb/OKoP7 単なるエラーを返すのに例外機構みたいな大域脱出って牛刀感あるよな。
177デフォルトの名無しさん
2019/01/17(木) 22:25:28.97ID:zQ8cL02f エラーコードの取り間違いやチェック漏れがないように書くにはすごい集中力が必要で神経をすり減らす作業
スローすれば僅かな労力で安全に済むところをわざわざ戻り値にするのは事を大げさにするだけ
スローすれば僅かな労力で安全に済むところをわざわざ戻り値にするのは事を大げさにするだけ
178デフォルトの名無しさん
2019/01/17(木) 23:05:50.61ID:K5aWd8xj つ errno
179デフォルトの名無しさん
2019/01/17(木) 23:24:18.46ID:yb/OKoP7 なあに、例外のcatch漏れや例外安全を欠いていないか注意するのと比べたら
たいてい局所的に判断できるから大したことない。
>エラーコードの取り間違いやチェック漏れがないように書くにはすごい集中力が必要で神経をすり減らす作業
検査例外じゃない例外機構でそれを保証するのも簡単じゃないと思うがな。
まぁ、一人開発で投げるのもcatchするのも全部把握しているという前提ならわからんでもないが。
たいてい局所的に判断できるから大したことない。
>エラーコードの取り間違いやチェック漏れがないように書くにはすごい集中力が必要で神経をすり減らす作業
検査例外じゃない例外機構でそれを保証するのも簡単じゃないと思うがな。
まぁ、一人開発で投げるのもcatchするのも全部把握しているという前提ならわからんでもないが。
181デフォルトの名無しさん
2019/01/18(金) 00:49:25.33ID:HmTdANXo 実はキャッチ漏れは戻り値処理漏れよりはるかに少ない
戻り値処理はその場でエラー処理したくない場合にも一度変数に受け取って分岐を入れて呼び元に返すということを繰り返さなければならない
なので処理漏れを起こしうる確率が呼び出し箇所の数に比例して増えていくことになる
そして本当のエラー処理をしたい場所が隠れてしまいコードの可読性が低下する
可読性が低下すればミスがさらに増える
例外なら処理したくない場合は何も書かなくていいので間違えようがないので安心
またエラー処理をしたいまさにその箇所だけに処理を書けばいいのでコードの見通しが非常に良くなりミスも激減する
エラーコード戻し安全なコードを書くことは実は非常に難しい
エラーコードチェックのせいで無駄な変数と分岐が大増殖するので正確にシステムの状態を追うことが困難になりミスが増える
例外を使えばフローが非常に単調で綺麗になるので安全なコードを書くのも簡単になる
戻り値処理はその場でエラー処理したくない場合にも一度変数に受け取って分岐を入れて呼び元に返すということを繰り返さなければならない
なので処理漏れを起こしうる確率が呼び出し箇所の数に比例して増えていくことになる
そして本当のエラー処理をしたい場所が隠れてしまいコードの可読性が低下する
可読性が低下すればミスがさらに増える
例外なら処理したくない場合は何も書かなくていいので間違えようがないので安心
またエラー処理をしたいまさにその箇所だけに処理を書けばいいのでコードの見通しが非常に良くなりミスも激減する
エラーコード戻し安全なコードを書くことは実は非常に難しい
エラーコードチェックのせいで無駄な変数と分岐が大増殖するので正確にシステムの状態を追うことが困難になりミスが増える
例外を使えばフローが非常に単調で綺麗になるので安全なコードを書くのも簡単になる
182デフォルトの名無しさん
2019/01/18(金) 01:03:26.14ID:0w3MYNkW 同じ理由で、忌み嫌われてるgoto文も、実はけっこう便利だと思う
183はちみつ餃子 ◆8X2XSCHEME
2019/01/18(金) 01:11:53.91ID:ZqjXe4yq 正しく使えば何だって便利だし、
駄目な使い方をすれば何だって駄目だっていう
すごく当たり前すぎる話
駄目な使い方をすれば何だって駄目だっていう
すごく当たり前すぎる話
184デフォルトの名無しさん
2019/01/18(金) 08:10:56.74ID:VfzPRVfV185デフォルトの名無しさん
2019/01/18(金) 08:14:02.62ID:BmxrQ6cX >>180
それが検査例外じゃないかな。
いろいろ批判もあるけど、例外の内容に応じてそれぞれ異なるリカバリを確実に行うことを
保証する手段としては今のところそれ以外無いかなと思う。
まぁ、erlang/swiftあるいはgoのpanicのように、エラーの種類なんて気にせず「この下の
処理が失敗した」とだけ捉えるのが例外の扱いとして妥当なところかも。
それが検査例外じゃないかな。
いろいろ批判もあるけど、例外の内容に応じてそれぞれ異なるリカバリを確実に行うことを
保証する手段としては今のところそれ以外無いかなと思う。
まぁ、erlang/swiftあるいはgoのpanicのように、エラーの種類なんて気にせず「この下の
処理が失敗した」とだけ捉えるのが例外の扱いとして妥当なところかも。
186デフォルトの名無しさん
2019/01/18(金) 09:51:47.22ID:LyFbxqMk >>181
使い捨てでないまともなプログラムはいたるところにエラーリカバリー処理が入る
つまり例外だといたるところにtry catchかつ外に投げる例外は誰がcatchするのか仕様が複雑
仕事で大規模なプロジェクトに関わったことない人はこういうのが理解できていない
使い捨てでないまともなプログラムはいたるところにエラーリカバリー処理が入る
つまり例外だといたるところにtry catchかつ外に投げる例外は誰がcatchするのか仕様が複雑
仕事で大規模なプロジェクトに関わったことない人はこういうのが理解できていない
187デフォルトの名無しさん
2019/01/18(金) 10:01:53.52ID:LyFbxqMk 例外押しのやつはどうせほとんどcatchせずにそのままexitさせてるだろ
exitするぐらいなら異常が発生した場所でabortする方がはるかにいい
確実にスタックダンプが残せる
exitするぐらいなら異常が発生した場所でabortする方がはるかにいい
確実にスタックダンプが残せる
188デフォルトの名無しさん
2019/01/18(金) 10:41:00.50ID:cHsPUmRi 例外が有用なのってネットワークとストレージのioぐらいという認識
それ以外で必要性を感じない
配列外アクセスとかで例外とばすなと思う
それ以外で必要性を感じない
配列外アクセスとかで例外とばすなと思う
189デフォルトの名無しさん
2019/01/18(金) 11:40:22.57ID:6lA8mErY >>188
そういうバグが原因の例外はcatchしなければいいんでは?
そういうバグが原因の例外はcatchしなければいいんでは?
190デフォルトの名無しさん
2019/01/18(金) 13:31:14.01ID:cHsPUmRi >>189
だから現実的にそういうのに例外をなげる仕様にありがたみがないでしょ
だから現実的にそういうのに例外をなげる仕様にありがたみがないでしょ
191デフォルトの名無しさん
2019/01/18(金) 13:49:33.80ID:6lA8mErY >>190
なんで?SEGVも起こさずに潜在的なバグとして残り続けるよりよくない?
なんで?SEGVも起こさずに潜在的なバグとして残り続けるよりよくない?
192デフォルトの名無しさん
2019/01/18(金) 13:57:52.52ID:cHsPUmRi >>191
自分でcatchするならtry catchがうざい
バグ扱いでcatchしないならそもそも例外投げずにpanicされた方が調査が楽
また下手にどこかでcatchされたらバグに気づかない危険性がある
以上の理由により
自分でcatchするならtry catchがうざい
バグ扱いでcatchしないならそもそも例外投げずにpanicされた方が調査が楽
また下手にどこかでcatchされたらバグに気づかない危険性がある
以上の理由により
193デフォルトの名無しさん
2019/01/18(金) 16:42:12.57ID:MrHOaa15 gotoなんか品質チェックに問答無用で引っ掛かる
194デフォルトの名無しさん
2019/01/18(金) 16:50:08.01ID:e8mi14LA お間抜けな品質チェックだこと
195デフォルトの名無しさん
2019/01/18(金) 17:34:28.42ID:dGgLcYHd ID:cHsPUmRi ってcatchで全ての例外がキャッチされると思ってるのか?
196デフォルトの名無しさん
2019/01/18(金) 17:42:49.84ID:e8mi14LA 例外が発生しました
「このPCの電源が入っていません」
「このPCの電源が入っていません」
197デフォルトの名無しさん
2019/01/18(金) 17:59:44.06 例外機構は誰がキャッチするのか別の問題を作った
問題先送りで日本人らしい
結局本質的には何の解決ももたらさなかった
例外機構はオカルトだったんだ。占いの類
問題先送りで日本人らしい
結局本質的には何の解決ももたらさなかった
例外機構はオカルトだったんだ。占いの類
198さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/01/18(金) 18:01:08.56ID:eisM0hGT 例外なくしてOS作れるか?
199はちみつ餃子 ◆8X2XSCHEME
2019/01/18(金) 18:48:44.03ID:ZqjXe4yq200デフォルトの名無しさん
2019/01/18(金) 18:57:17.35ID:X3ceYQ3H ダウソファイルのファイル名置換する簡単なプログラムをC++とC#で書いてみた(C++で作って、それ見ながらC#に変換した)
もともとシェルスクリプトでもいいようなプログラムなんで実行速度とかどーでもいい
コンパイル時間長が
C# <<< 超えられない壁 <<< C++
C++のコンパイル時間と比べるとC#は一瞬で完了する。これは、快適性がだんちだな。
もともとシェルスクリプトでもいいようなプログラムなんで実行速度とかどーでもいい
コンパイル時間長が
C# <<< 超えられない壁 <<< C++
C++のコンパイル時間と比べるとC#は一瞬で完了する。これは、快適性がだんちだな。
201デフォルトの名無しさん
2019/01/18(金) 19:12:22.57ID:seZYByET if文使うな。
ということか?
ということか?
202デフォルトの名無しさん
2019/01/18(金) 20:07:49.64ID:BPWAMvDw リターンコードスタイルにすると
無駄な変数が増える
無駄な分岐が増える
エラーコード追加時に全ての呼び出し元を精査しなければならない
エラーに付随する情報を伝達する標準的な規則が存在しない
全ての正常系の処理にコードチェックのオーバーヘッドが追加される
ライブラリ内部で発生する例外への対処が困難(例外を基本としていれば容易に対処可能)
参照透過性が壊滅する
デメリットだらけ
無駄な変数が増える
無駄な分岐が増える
エラーコード追加時に全ての呼び出し元を精査しなければならない
エラーに付随する情報を伝達する標準的な規則が存在しない
全ての正常系の処理にコードチェックのオーバーヘッドが追加される
ライブラリ内部で発生する例外への対処が困難(例外を基本としていれば容易に対処可能)
参照透過性が壊滅する
デメリットだらけ
203デフォルトの名無しさん
2019/01/18(金) 20:59:01.43ID:BmxrQ6cX >エラーコード追加時に全ての呼び出し元を精査しなければならない
>参照透過性が壊滅する
例外ならそれが解決すると考えているならちょっとやばい。
>参照透過性が壊滅する
例外ならそれが解決すると考えているならちょっとやばい。
204デフォルトの名無しさん
2019/01/18(金) 23:06:15.78ID:BPWAMvDw >>203
返り値でエラー通知するようなセピア色の世界にいるとわからんかもしれんが普通に解決するぞ
返り値でエラー通知するようなセピア色の世界にいるとわからんかもしれんが普通に解決するぞ
205デフォルトの名無しさん
2019/01/19(土) 01:49:00.66ID:gJ7zJmkH 参照透過性ってそういう意味だっけ?w
最近例外ない言語増えてる事実はどう考える?
最近例外ない言語増えてる事実はどう考える?
206デフォルトの名無しさん
2019/01/19(土) 07:07:12.07ID:+IqL7b8U207デフォルトの名無しさん
2019/01/19(土) 07:37:40.03ID:FscMnE/k まぁ、実際関係ないね。
同じ入力に対して常に同じエラーコードを返すなら参照透過性があると言えるし、
入力によらず場合によって例外を返すことがあるなら参照透過じゃない。
同じ入力に対して常に同じエラーコードを返すなら参照透過性があると言えるし、
入力によらず場合によって例外を返すことがあるなら参照透過じゃない。
208デフォルトの名無しさん
2019/01/19(土) 07:43:37.22ID:WVD5Mi4y 「呼び出し元を精査」とかプログラム内のデバッグに例外使ってるような書き方やね
例外処理は外部的要因(ハード、通信等)のエラーのように自分の責任外のエラーを積極的に通知するために使うべきだと思うけどな
例外処理は外部的要因(ハード、通信等)のエラーのように自分の責任外のエラーを積極的に通知するために使うべきだと思うけどな
209デフォルトの名無しさん
2019/01/19(土) 08:51:08.36ID:fPDnzLoP 戻り値形式ではそもそも式として書けないから参照透過性もクソもないということをまずは理解しろ
int h(P const & p, Q const & q, Z & out_z) {
X x;
Int ret_f = f(p, x); // out ref x
if (is_error(ret_f)) return ret_f;
Y y;
int ret_g = g(q, y); // out ref y
if (is_error(ret_g)) return ret_g;
z = x * y;
return RET_OK;
}
↑例外を使わない下品すぎるコード
↓例外を使ったスーパーエレガントなコード
Z h(P const & p, Q const & q) { return f(p) * g(q); }
int h(P const & p, Q const & q, Z & out_z) {
X x;
Int ret_f = f(p, x); // out ref x
if (is_error(ret_f)) return ret_f;
Y y;
int ret_g = g(q, y); // out ref y
if (is_error(ret_g)) return ret_g;
z = x * y;
return RET_OK;
}
↑例外を使わない下品すぎるコード
↓例外を使ったスーパーエレガントなコード
Z h(P const & p, Q const & q) { return f(p) * g(q); }
210デフォルトの名無しさん
2019/01/19(土) 09:21:20.09ID:XwZdf3Vk Real Programmers Don't Use Exception.
211デフォルトの名無しさん
2019/01/19(土) 12:10:48.67ID:gJ7zJmkH212デフォルトの名無しさん
2019/01/19(土) 12:13:26.40ID:gJ7zJmkH >>209
そこに丹念なエラー処理を追加していくと、あら不思議どっちもあまりかわらない
そこに丹念なエラー処理を追加していくと、あら不思議どっちもあまりかわらない
213デフォルトの名無しさん
2019/01/19(土) 13:16:34.67ID:+IqL7b8U214デフォルトの名無しさん
2019/01/19(土) 14:04:33.44ID:gJ7zJmkH■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 立民・岡田氏の質疑「不適切」 維新・藤田氏、台湾有事答弁巡り [蚤の市★]
- ナマポだけど野良猫拾っちゃったけど飯どうしよ
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 高市早苗って「わざと」日本畳んでるよな? [419865925]
- そもそも日本て中国に日沈む国だとか無礼な事言ってたよね
- 【愛国者悲報】上海で日本料理店を営む経営者、咽び泣く「どうか...どうか中国と仲良くして欲しいです...お願いします...」 [856698234]
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
