[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2ch.scのread.cgiへ]
Update time : 04/20 12:41 / Filesize : 255 KB / Number-of Response : 872
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.104【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2018/12/28(金) 06:04:52.38 ID:ufThBpcD.net]
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/

102 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 17:05:25.96 ID:bhcZ5Z4Z.net]
仕様を確定させないと各コンパイラでの実装と互換性チェックとか出来ないし、
既存のコードが動かなくなるわけでもなし、
10年くらい経って十分枯れた機能を使ってれば良いだけでは?

103 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 17:06:11.78 ID:goGtxYMD.net]
>>99
その程度の最適化はコンパイラが勝手にやればよくね?
もっと大規模なことしたいからわざわざconstexprなんてキーワード追加して
かつ人間様がわざわざそれを指定するんだろ?
で大規模なことをできる仕様か?あれが?
どうせみんなデバッグするときにconstexprをはずしてんだろ?
アホと思わないか?

104 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 17:10:55.99 ID:bhcZ5Z4Z.net]
>>103
Visual Studioでしか試してないけど、わざわざ外さなくてもデバッグビルドでは定数化されないのが普通じゃないの?

105 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 17:11:37.75 ID:zLcYabhS.net]
constexpr相当を勝手にやられたら、参照してるほうがリコンパイルが必要か判断できなくなるんじゃないの?

106 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 17:27:56.15 ID:bhcZ5Z4Z.net]
constexpr指定を使わずに同じような定数化を自動でやるとなると、
一度全ての関数を定数化可能か調べるためのプレビルドみたいなことをしないと無理だよね。

107 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 17:43:24.56 ID:goGtxYMD.net]
定数畳み込みなんて古典的な最適化手法だし、
gccはstrlenの最適化やるだろ
だからもっと大規模なことをやるためのconstexprだろと言ってる

108 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 17:50:38.42 ID:bhcZ5Z4Z.net]
その最適化をコンパイラ依存でなく標準規格化したことに意味があると思うんだけど。
gccで出来ればあとは何でも良いの?

109 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 18:13:13.67 ID:goGtxYMD.net]
珍説どうも
その程度の最適化技術を持たないコンパイラベンダなんてどうでもいいな
clangのバックエンド自分で作った方が早い

110 名前:はちみつ餃子 mailto:sage [2019/01/14(月) 02:10:17.55 ID:ybeYuaGe.net]
constexpr 相当のことはコンパイラが最適化で頑張るのが筋だというのは
まったく正当な意見だと思うんだが、本当に速度が必要な個所のチューニング
をしたいとき、つまりコンパイラの最適化以上のことがしたいときに
打てる手段が無かったりだとか処理系の拡張構文を使わなければならないというよりは、
不格好でも constexpr の方がマシ。

C++ は現実的に使えることを指向した言語で、現実はクソなんで、
クソを少しマシに書けるようにするってのは妥当な選択肢。
コンパイラが十分に賢いだとかいうような
理想的な世界で生きてる人は別に constexpr を使わなくてもいいよ。



111 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 06:19:38.07 ID:S0iGLcvV.net]
pythonやmatlabみたいに配列やvectorを:とかでスライス抽出できないんですか?

112 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 07:17:53.28 ID:4qrkuOlT.net]
技術スキンだけ高い奴が、できる奴と思い込んでるチキン。

113 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 09:22:28.84 ID:UgNfZwvf.net]
>>111
それをアセンブラで書いてみてくれ

114 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 10:26:42.41 ID:3TGcl/LH.net]
++20のfilterでスライスみたいな事ができるようになる
しばし待たれよ

115 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 13:02:31.28 ID:BcFaCsuL.net]
>>110
constexpr指定はコンパイラにはわからない関数呼び出し先で
定数化できる計算であるとコンパイラに教えられるので
指定できるならした方がいいだろうけど

>本当に速度が必要な個所のチューニング
そういう個所がコンパイル時にわかってる定数だけで構成されてる例なんて
まず滅多にないんだけどね

116 名前:はちみつ餃子 mailto:sage [2019/01/14(月) 13:29:30.02 ID:ybeYuaGe.net]
>>115
>> 本当に速度が必要な個所のチューニング
> そういう個所がコンパイル時にわかってる定数だけで構成されてる例なんて
> まず滅多にないんだけどね

constexpr はコンパイラに対するヒントであるだけでなく、プログラマにとっての制約でもある。
「そういう (速度が必要な) 箇所」であるにもかかわらず実行時の値に依存しているということを
プログラマが気づくことが出来る (ので分離するなどの工夫をする機会があるかもしれない)
というのは十分に便利だよ。

117 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 13:39:03.52 ID:BcFaCsuL.net]
わかってないな
本当に解決しなきゃいけないボトルネックが、たかだか定数の畳み込みだけで
解決出来ることなどまず無いと言ってんの

ただの数回、数十回の普通の演算はそのままやっても十分速いんだよ
むしろ定数化できるとこを全部定数化したせいで、(即値にならないような構造体の場合)定数を読みに行くコストの方が大幅に高くなる可能性もある
constexprというか言語の機能を盲信しすぎ

118 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 13:47:53.15 ID:BcFaCsuL.net]
あと、
>「そういう (速度が必要な) 箇所」であるにもかかわらず実行時の値に依存しているということを
ファイルから読んだ内容、mainに渡された引数、ネットワークから受け取ったデータ
そういうの(および一度でもそれらと関わった変数)全て実行時の値だってわかってる?

119 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 22:35:17.67 ID:SOyXSPCI.net]
オフラインで複雑な計算して、結果をバイナリで埋め込んでおくことはよくやる
ゲームなら当たり前にやるワークフローだよな
しかしそういう典型的な用途にconstexprは向いてないという間抜け具合
C++でなんでもやるというのが目的になってんだよね
こういうのをオナニーって言う

120 名前:はちみつ餃子 mailto:sage [2019/01/15(火) 09:17:36.65 ID:f9+1p0X/.net]
>>117-118
やりたいときに出来る方法があるというのは無いより「マシ」と私は >>110 で述べたが、
それが君にとっての妄信なのかい?
要するに、 constexpr の成果は限定的すぎると言いたいんだろ?
ほとんどの機能は個別に見ればどうでもいいような些細なものなのは普通のことだ。



121 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 09:57:48.09 ID:fPstZ0f7.net]
何度も言ってきたが、負けを認めたら死ぬ病気なのか?君は

122 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 10:02:02.52 ID:fPstZ0f7.net]
ついでに言えば、俺は「指定できるならした方がいい」と書いた
俺が成果を限定的だと貶してるんじゃなくて、
君が過信してるの

123 名前:はちみつ餃子 mailto:sage [2019/01/15(火) 10:05:46.91 ID:f9+1p0X/.net]
>>122
じゃあ何が問題なんだい?
指定できるならした方がよくて、指定できるようになってるのは指定できないより良いというのなら意見は一致してるじゃないか。

124 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 10:23:37.90 ID:p3r+u4ET.net]
>本当に速度が必要な個所のチューニング
>をしたいとき、つまりコンパイラの最適化以上のことがしたいときに
>打てる手段が無かったりだとか処理系の拡張構文を使わなければならないというよりは、
>不格好でも constexpr の方がマシ。

125 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 10:26:22.74 ID:fPstZ0f7.net]
(途中送信してしまった)
本当に"速度"が必要なときに速度より移植性やC++標準への準拠を優先してconstexprマンセーする
これを過信と言わずして何と言う

126 名前:はちみつ餃子 mailto:sage [2019/01/15(火) 10:40:35.59 ID:f9+1p0X/.net]
>>125
速度が必要な個所が「なるべく」移植性が高い形で表現できればそれに越したことは無いし、
更にそれ以上が欲しいなら移植性を犠牲にすることも出来るんだから、
constexpr の導入に何の問題もないだろ?

127 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 19:01:25.37 ID:CKmovdLr.net]
何でC++スレはプログラム板で勢いあるんですか?

128 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 19:02:26.94 ID:CKmovdLr.net]
C++で有名人になりたいです
どうすればいいでしょうか?

129 名前: mailto:sage [2019/01/15(火) 21:38:31.55 ID:niK8DUcQ.net]
>>128
c++ のコンパイラを c で記述すれば、それだけで有名になれると思います
gcc が c から c++ になったときは心底残念に思っていました

130 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 22:36:39.63 ID:CKmovdLr.net]
>>129
それって無理では‥



131 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 01:23:29.16 ID:CLrL7dI7.net]
>>130
つ ttps://www.amazon.co.jp/dp/4797344369

132 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 04:10:04.96 ID:GtMBox+p.net]
>>94
はちみつなんとかもそーだけど、
おまえもほんま馬鹿やね。表面しか読めないんだな。
10年間、言語オタを隔離してしまえといってるのだよ間抜けちゃん。
世の中から隔離された世界でせんずりこいてろといってる。ザーメン臭でくさいやつは地上に出るな。

大体、大規模プログラミングはすでにC++には向かないことが露呈して久しく、
せいぜいbetter Cとして生き残るぐらいしか道はないのにどういう意図を持っての3年ごとの改訂なんだ。
ポリシーなき改訂ははた迷惑なだけ
これだけ頻繁に改訂されると、スペック以外の解説本では、すでにストラウストラップ本自体改訂をキャッチアップできてない。
その邦訳ともなればますます現行仕様から浦島太郎になるのは必至。せっかく覚えた頃に新スペックの登場か?
C++初心者はいったいどの本買ってるのさ?キチガイ言語オタ江添本でも買うのか?
結局、ユーザー減少させてるだけだろうが

133 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 04:55:20.85 ID:M8dG57eU.net]
他人をけなす人には、なりたくないな
https://lavender.5ch.net/test/read.cgi/pav/1534982458/

134 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 05:13:03.61 ID:CLrL7dI7.net]
なるな人間になるな

135 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 09:06:01.53 ID:Cj0f6L/5.net]
もしかして、最初の「なる」はNULLと掛かってる?
中身のない人間、アクセスしちゃダメな奴、みたいな意味で。

ちなみに自分は「ヌル」派。
だってNULLを「ナル」と読んだら「ぬるぽ」と言えなくなるもの。

136 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 09:58:04.96 ID:qfBMRYbT.net]
>>131
一応買ってみました
でもどうせコンパイラ作るならC++でClangとかの実装を勉強したい

137 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 12:17:10.07 ID:qfBMRYbT.net]
C++好きな人って、C‡‡、Java嫌いな人が多いのって偏見ですか?
関数型言語かRustの話しかしてない気がします

138 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 13:56:12.46 ID:CLrL7dI7.net]
>>135
回文

139 名前:はちみつ餃子 mailto:sage [2019/01/16(水) 15:05:52.98 ID:kJO3cJ8H.net]
>>132
C++ の言語としてのポリシーはこのように提示されている。
Stroustrup 自身がその著書に書いたもの。
委員会の公式な文書にするとかどうとかいう議論はあったけど、
結局どうなったのかは知らない。

・C++ の進化は現実の問題をその動因とする
・完全主義にはこだわらない
・C++ は今現在役に立つ言語でなければならない
・人に何かを強制しない
・静的タイプシステムに対する暗黙の違反が無い
・同じ機能なら人に教えやすい方を選ぶ
・C のプリプロセッサは使わないように
・C との正当でない非互換性が無い
・C++ 以外に他の低レベル言語を必要としない (アセンブラは除く)
・使わない機能はコストを発生させない

これらの考え方に基づいて今要求されているものが (不完全でも) より素早く反映しやすくする
リリース体制として ship train model が導入された。
多くの人が関わるので妥協はあるだろうが、一環したポリシーの下で改定されている。

そのポリシーを気に入らないでいる自由はあるし、それはどんどん主張して良いが、
ポリシーが無いというのは事実誤認だし、自分にとって妥当ではないからといって
必要としている人を侮辱するべきではないよ。

140 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 15:25:10.37 ID:mUX6kDFm.net]
俺が以前「D&E読んでないのか」、って言ったせいではちみつはD&Eの受け売りするようになったな・・・

ttp://i-saint.hatenablog.com/entry/20101012/1286822888
「あるプログラム言語を使うためにその言語の弁護人になるべきではない。」
そういうただの弁護人になってるバカは大抵C++を実用レベルで使ってない人間ばっかりだ



141 名前:デフォルトの名無しさん [2019/01/16(水) 15:27:49.73 ID:vTKVQdGX.net]
そやな

142 名前:はちみつ餃子 mailto:sage [2019/01/16(水) 15:39:55.50 ID:kJO3cJ8H.net]
>>140

このスレで言われたから読んだということは無いはずだが、どの発言のこと?
正確に覚えてないけど
私が持ってるやつは (日本語版の) 初版だからたぶん 2006〜2007 年頃には読んでるはず。

143 名前:はちみつ餃子 mailto:sage [2019/01/16(水) 15:56:46.23 ID:kJO3cJ8H.net]
現実的な問題があるならそれは解決されなければならない問題であって、
改定を先延ばしにすることを要求するのはおかしな話じゃない?

ドキュメントが追い付いていないのは、これは確かにあるけど、
翻訳とかに時間がかかるのが分かっているから
早め早めに改定がリリースされるのはむしろありがたいことでしょ。
デカい改定が一気にくるよりは。

constexpr が限定的に過ぎるとかいうのはわかってる話で、
だから制限を緩くしたり consteval を検証したりしてるんだろ。
それでも必要だと判断したから入れたんだから、
そこに文句付けたって今更な話で擁護もクソもない。
駄目な部分があるのは知ってるっつーの。 それでも要るんだよ!

144 名前:135 mailto:sage [2019/01/16(水) 17:16:27.25 ID:Cj0f6L/5.net]
>>138 回文には気づかなかった。
「なるな」「人間に」がそれぞれ反転同一で、
それらフレーズを反転同一になるように並べて作成した回文か。
「人間になるな人間に」でも構造的には同じね。

いくらかPPAPな感じがしないでもない。
あと、正規表現のパズルっぽくもある。

145 名前:はちみつ餃子 mailto:sage [2019/01/16(水) 17:26:40.42 ID:kJO3cJ8H.net]
酢にピリッとした風味を足すのに使えます

_人人人人人人_
> スピリタス <
 ̄Y^Y^Y^Y^Y^Y ̄

146 名前:はちみつ餃子 mailto:sage [2019/01/16(水) 17:28:13.10 ID:kJO3cJ8H.net]
>>145
すまん。 誤爆した。

147 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 17:58:49.69 ID:Cj0f6L/5.net]
はちみつと関係ないと思ったけど、餃子の方には関係ありそう。

しかし、C++スレッドでの真摯な態度と裏腹に、
他所ではどういうキャラクタなんだろ、と思わせる投稿ね。

148 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 18:12:30.55 ID:mUX6kDFm.net]
真摯かねぇ・・・・希望的観測で詳しくないことに首突っ込んだり
自分の間違いや認識の誤りは絶対に認めないクソコテなのに

まぁそれも俺の主観だから他の人がどう思うかは知らんけど。

149 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 18:41:54.90 ID:YdXHJCw6.net]
>>145
風味って鼻から空気が出る時に感じる食べ物の香りかと思ってたわ

150 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 20:40:09.12 ID:iaQOejPk.net]
c++が対象にしてる現実問題って何だ?
c++使う大規模プロジェクトってゲームがまずあると思うけど
例外禁止未だに普通だし標準ライブラリも限定的にしか使わないよ



151 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 20:47:01.61 ID:Tucl/crz.net]
c++で書かれたc++のコンパイラのことだろ
ここが0.001%早くなるだけで世界から年間100000時間くらいが節約できるんじゃねえの

152 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 21:54:11.46 ID:gQtWsPR9.net]
じゃあLLVMのコーディングスタンダードこれな
https://llvm.org/docs/CodingStandards.html

例外、RTTI、iostream使わない
現実に使えるソフトってのはこういう制約で作るわけだ
C++の標準化やってる連中はメタプログラミングで遊んでるだけ
現実問題なんて何もわかってない

153 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 23:10:45.86 ID:4t4UncJr.net]
例外使わないとかないわー
初心者かよ

154 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 23:12:36.63 ID:Xh3PQjx5.net]
だから、ブラウザ、ロケット射的距離のシミュレーション、機械学習

155 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 23:36:41.52 ID:gQtWsPR9.net]
>>153
初心者ってのはC++の例外のバイナリモデル説明できねーやつのことな

156 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 23:44:05.56 ID:gQtWsPR9.net]
>>154
でC++がそれらに対してどんな問題解決してくれたんだ?

157 名前:はちみつ餃子 mailto:sage [2019/01/17(木) 01:07:41.88 ID:/VOhvfFp.net]
>>152
そこらへんはしゃーない。 便利な機能も害悪な場面は有るし、
ある時点では有用だったものが後には足を引っ張ることもある。
あるプロジェクトで縛りを設けるからといって
それが現実の全てというわけではない。

ただ、例外を使わない方向というのは大きなプロジェクトでは
そこそこあるかも?

>>153
例外が忌避されるのは他の言語と接続したときに、
呼出した側が例外を捕捉できないというのが致命的で、
つまりはそういった場面が想定されるようなライブラリでの一般的な規則。

外へ出る前に例外を全部キャッチしてしまうってのでも、
まあなんとかならんことはないが、
近頃では std::optional を活用した方がいいという雰囲気はある気がするね。

Go や Rust は最初からそういう方向だし。

158 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 02:01:31.97 ID:l+wuAult.net]
このスレ、初心者を見下す者ばかりだし、

何が 【初心者歓迎】だよ。
【初心者歓迎】はずせ。

そう言うと、「何にもそんなことしてないよ」
とか、レスが来る。
子供スレ。

159 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 08:10:37.95 ID:qOfK2eXQ.net]
optionalはヒープ使わないだけでnullと大差ない
せっかく静的にnot nulが保証されてるとこを壊してしまう
ほとんどアンチパターン

160 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 08:21:29.72 ID:4hvMH0x4.net]
業務でC++使ってない雑魚の意見なんて無視しろ



161 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 08:22:23.19 ID:4hvMH0x4.net]
趣味でC++齧ってるやつと本気で仕事としてやってるやつじゃ格が違うんだよ

162 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 08:22:55.36 .net]
C++では好きなだけ効率を犠牲にして安全を手にすることができる
効率を犠牲にして安全を手にすることを余儀なくされている言語とは区別すべきだ

163 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 08:47:23.41 ID:qOfK2eXQ.net]
業務で使ってない素人は平気で例外禁則とか言って返り値チェックで死ぬほど汚いコード書くんだよな

164 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 09:07:15.76 ID:CHgbqTPA.net]
まぁ業務と違って趣味は時間を無駄につぎ込めるから
人によっては素人の方がレベル高かったりするけどな

そういうのと比較するのはホントやめて欲しい

165 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 09:09:21.72 ID:4hvMH0x4.net]
>>164
は?業務と趣味でやってる奴が一番最強

166 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 10:35:25.89 ID:iQ0t94Qh.net]
>>159
optionalの理解間違ってるよ

167 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 10:39:29.94 ID:iQ0t94Qh.net]
>>163
例外禁止されるのは業務の方だろ
一見汚くなるがそちらの方がバグが少なくメンテしやすいという判断で
トップダウンで強制される
趣味なら最新の機能ばんばん使って自由にやりゃいい

168 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 12:13:15.88 ID:oU9OMPiG.net]
実際には例外を禁止するとバグが増えてメンテしにくくなるんだけどな

169 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 13:51:39.37 ID:l+wuAult.net]
そのソフトが気に入らないなら、
そのソフトを使わなきゃ良いだけだし。
そんなことも、いい年になって、わからないのか。

170 名前:デフォルトの名無しさん [2019/01/17(木) 14:34:02.57 ID:DbtLCT5r.net]
このスレ卒業死体



171 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 14:43:25.66 ID:n6FY+cyG.net]
スレばいいじゃない

172 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 15:55:58.66 ID:K5aWd8xj.net]
setjmp 使えばよろし

173 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 17:20:21.35 .net]
遂に中級者になるのか……

174 名前:さまよえる蟻人間 mailto:sage [2019/01/17(木) 20:25:15.31 ID:e9w/TFC0.net]
>>173
なんでID消えてるの?

175 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 20:47:04.58 ID:iJuNblTy.net]
浪人で消してるんでっしゃろ

176 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 21:54:16.18 ID:yb/OKoP7.net]
単なるエラーを返すのに例外機構みたいな大域脱出って牛刀感あるよな。

177 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 22:25:28.97 ID:zQ8cL02f.net]
エラーコードの取り間違いやチェック漏れがないように書くにはすごい集中力が必要で神経をすり減らす作業
スローすれば僅かな労力で安全に済むところをわざわざ戻り値にするのは事を大げさにするだけ

178 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 23:05:50.61 ID:K5aWd8xj.net]
つ errno

179 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 23:24:18.46 ID:yb/OKoP7.net]
なあに、例外のcatch漏れや例外安全を欠いていないか注意するのと比べたら
たいてい局所的に判断できるから大したことない。

>エラーコードの取り間違いやチェック漏れがないように書くにはすごい集中力が必要で神経をすり減らす作業

検査例外じゃない例外機構でそれを保証するのも簡単じゃないと思うがな。
まぁ、一人開発で投げるのもcatchするのも全部把握しているという前提ならわからんでもないが。

180 名前:はちみつ餃子 mailto:sage [2019/01/18(金) 00:32:34.20 ID:ZqjXe4yq.net]
>>179
そのへんはチェックするツールとかあったりしない?
知らんけど。



181 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 00:49:25.33 ID:HmTdANXo.net]
実はキャッチ漏れは戻り値処理漏れよりはるかに少ない
戻り値処理はその場でエラー処理したくない場合にも一度変数に受け取って分岐を入れて呼び元に返すということを繰り返さなければならない
なので処理漏れを起こしうる確率が呼び出し箇所の数に比例して増えていくことになる
そして本当のエラー処理をしたい場所が隠れてしまいコードの可読性が低下する
可読性が低下すればミスがさらに増える
例外なら処理したくない場合は何も書かなくていいので間違えようがないので安心
またエラー処理をしたいまさにその箇所だけに処理を書けばいいのでコードの見通しが非常に良くなりミスも激減する

エラーコード戻し安全なコードを書くことは実は非常に難しい
エラーコードチェックのせいで無駄な変数と分岐が大増殖するので正確にシステムの状態を追うことが困難になりミスが増える
例外を使えばフローが非常に単調で綺麗になるので安全なコードを書くのも簡単になる

182 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 01:03:26.14 ID:0w3MYNkW.net]
同じ理由で、忌み嫌われてるgoto文も、実はけっこう便利だと思う

183 名前:はちみつ餃子 mailto:sage [2019/01/18(金) 01:11:53.91 ID:ZqjXe4yq.net]
正しく使えば何だって便利だし、
駄目な使い方をすれば何だって駄目だっていう
すごく当たり前すぎる話

184 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 08:10:56.74 ID:VfzPRVfV.net]
>>183
>>180
プログラミング辞めてツールでチェックしてもらえば?

185 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 08:14:02.62 ID:BmxrQ6cX.net]
>>180
それが検査例外じゃないかな。
いろいろ批判もあるけど、例外の内容に応じてそれぞれ異なるリカバリを確実に行うことを
保証する手段としては今のところそれ以外無いかなと思う。
まぁ、erlang/swiftあるいはgoのpanicのように、エラーの種類なんて気にせず「この下の
処理が失敗した」とだけ捉えるのが例外の扱いとして妥当なところかも。

186 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 09:51:47.22 ID:LyFbxqMk.net]
>>181
使い捨てでないまともなプログラムはいたるところにエラーリカバリー処理が入る
つまり例外だといたるところにtry catchかつ外に投げる例外は誰がcatchするのか仕様が複雑
仕事で大規模なプロジェクトに関わったことない人はこういうのが理解できていない

187 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 10:01:53.52 ID:LyFbxqMk.net]
例外押しのやつはどうせほとんどcatchせずにそのままexitさせてるだろ
exitするぐらいなら異常が発生した場所でabortする方がはるかにいい
確実にスタックダンプが残せる

188 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 10:41:00.50 ID:cHsPUmRi.net]
例外が有用なのってネットワークとストレージのioぐらいという認識
それ以外で必要性を感じない
配列外アクセスとかで例外とばすなと思う

189 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 11:40:22.57 ID:6lA8mErY.net]
>>188
そういうバグが原因の例外はcatchしなければいいんでは?

190 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 13:31:14.01 ID:cHsPUmRi.net]
>>189
だから現実的にそういうのに例外をなげる仕様にありがたみがないでしょ



191 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 13:49:33.80 ID:6lA8mErY.net]
>>190
なんで?SEGVも起こさずに潜在的なバグとして残り続けるよりよくない?

192 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 13:57:52.52 ID:cHsPUmRi.net]
>>191
自分でcatchするならtry catchがうざい
バグ扱いでcatchしないならそもそも例外投げずにpanicされた方が調査が楽
また下手にどこかでcatchされたらバグに気づかない危険性がある

以上の理由により

193 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 16:42:12.57 ID:MrHOaa15.net]
gotoなんか品質チェックに問答無用で引っ掛かる

194 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 16:50:08.01 ID:e8mi14LA.net]
お間抜けな品質チェックだこと

195 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 17:34:28.42 ID:dGgLcYHd.net]
ID:cHsPUmRi ってcatchで全ての例外がキャッチされると思ってるのか?

196 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 17:42:49.84 ID:e8mi14LA.net]
例外が発生しました

「このPCの電源が入っていません」

197 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 17:59:44.06 .net]
例外機構は誰がキャッチするのか別の問題を作った
問題先送りで日本人らしい
結局本質的には何の解決ももたらさなかった
例外機構はオカルトだったんだ。占いの類

198 名前:さまよえる蟻人間 mailto:sage [2019/01/18(金) 18:01:08.56 ID:eisM0hGT.net]
例外なくしてOS作れるか?

199 名前:はちみつ餃子 mailto:sage [2019/01/18(金) 18:48:44.03 ID:ZqjXe4yq.net]
>>197
エラーを返却値で返すことにしたところでそれは同じでしょ。
どこまで上に (返却値によって) 伝播すべきかってのは
どこでキャッチすべきかと問題は同じだよ。

200 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 18:57:17.35 ID:X3ceYQ3H.net]
ダウソファイルのファイル名置換する簡単なプログラムをC++とC#で書いてみた(C++で作って、それ見ながらC#に変換した)
もともとシェルスクリプトでもいいようなプログラムなんで実行速度とかどーでもいい
コンパイル時間長が
C# <<< 超えられない壁 <<< C++
C++のコンパイル時間と比べるとC#は一瞬で完了する。これは、快適性がだんちだな。



201 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 19:12:22.57 ID:seZYByET.net]
if文使うな。
ということか?

202 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 20:07:49.64 ID:BPWAMvDw.net]
リターンコードスタイルにすると


無駄な変数が増える
無駄な分岐が増える
エラーコード追加時に全ての呼び出し元を精査しなければならない
エラーに付随する情報を伝達する標準的な規則が存在しない
全ての正常系の処理にコードチェックのオーバーヘッドが追加される
ライブラリ内部で発生する例外への対処が困難(例外を基本としていれば容易に対処可能)
参照透過性が壊滅する

デメリットだらけ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<255KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef