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

■ このスレッドは過去ログ倉庫に格納されています
2018/12/28(金) 06:04:52.38ID:ufThBpcD
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

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

前スレ
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
2019/01/11(金) 20:26:13.94ID:KLK+GnJ4
426名無しでいいとも!@放送中は実況板で2019/01/10(木) 18:17:49.03ID:b7PfIJnh0

新しい物好きな人は、よく、古いもの馬鹿にする。
古いものに、大切なものがあることが、
よくあることを、知らない人が多い。
2019/01/12(土) 08:06:07.36ID:TXMmMfvK
古いという感覚を持つと話をしただけで古いものが悪いとは一言も言っていないが……?
一方でもしその良さが「新しい仕様を頻繁に覚えなくて良い」なら、言語に対して掛けるコストが減る事と、自身が怠惰である事の2面性を常に持つかもね

プログラマなんて怠惰でナンボだけど覚える事に怠惰か書く事に怠惰か人それぞれよね

個人的には草案で嬉しそうな機能を追加します!って言いながら実際の仕様では無限に延期される方が嫌
92デフォルトの名無しさん
垢版 |
2019/01/12(土) 13:08:56.44ID:k/r1EiKa
これな
youtube
qqwgldvnNlk
#t=41m41s
93388
垢版 |
2019/01/12(土) 23:22:31.27ID:0iVYXuy3
>>82
配列の参照のsizeofは配列のサイズじゃないから害はあるな()
94388
垢版 |
2019/01/12(土) 23:28:35.62ID:0iVYXuy3
>>84 は面白いよな、散々使うことで問題が見付かるって自分で初っ端から言ってるのに「だからスパンを長くしろ」つまり散々使うことが出来ないようにしろって言ってる
そして最後には言語オタクのセンズリかって、言ってる事が弾けまくってるな。

言語オタクのセンズリになってるのが不味いから、積極的に一定毎に更新するようにしていってるんだがな
2019/01/13(日) 09:10:56.47ID:47MX21Fj
何が言いたいのか分らん
2019/01/13(日) 09:35:19.34ID:e8OabTpu
箇条書きでよろ
2019/01/13(日) 14:11:24.44ID:goGtxYMD
おれは >>84 に同意だな
数年で更新ってそれがどれだけワークしてるのさ
だいたいどれだけ認知されてるのかようわからん小さい機能追加が山盛りな一方で
大規模なconstexprとかひかえめにいって大クソじゃん?
理論もなければ、現実のワークフローなにも考慮にはいってない
結局オナニーでしょ、何オタクかはしらんが
2019/01/13(日) 15:03:59.93ID:lykUAvmZ
1.仕様が確定してからでなければ実務には使われない
2.実務で使われないと良し悪しは分からない

3-1.仕様確定のスパンが短いと、仕様に提案されてから試されるまでが短い(もし悪ければ次で撤回も可能)
3-2.仕様確定のスパンが長いと、提案されてから実務で試されるまでが長い(撤回されないと言えば聞こえは良いが、当然悪いものが残り続ける)

んで仕様策定を言語オタクのオナニーって言ってるのに、実務で試されない、策定の期間だけ伸ばして言語オタクなんとかしろって言ってるように聞こえるからよく分からんわけだ
だって君たち仕様確定してからじゃないとそうそう草案の機能なんて使わないでしょ?追わないでしょ?私だってそうだ

期間が長ければその間に普及する概念も多くなるし(少なくともc++はそれを取り込む方針の言語なので)あんまり長くすると大変だと思うよ
2019/01/13(日) 16:52:54.35ID:bhcZ5Z4Z
>>97
c++14のconstexprは条件分岐とかループにも対応してるから、そこそこ使えるよ。
文字列リテラルの長さを取得する関数とかも定数化できるし。
テンプレートの非型引数をあれこれする関数を定数化したりとか。
2019/01/13(日) 16:58:40.56ID:goGtxYMD
機能追加したい人が、ブランチして機能追加して実務で実証して、
それから正式に仕様を提案すりゃいいじゃん
なんで仕方なく業務でC++使ってるだけなのにベータテストみたいな
仕様更新に巻きこまれなきゃならないのさ
2019/01/13(日) 17:05:15.75ID:zLcYabhS
そんなことよりrvoを強制してほしい…
2019/01/13(日) 17:05:25.96ID:bhcZ5Z4Z
仕様を確定させないと各コンパイラでの実装と互換性チェックとか出来ないし、
既存のコードが動かなくなるわけでもなし、
10年くらい経って十分枯れた機能を使ってれば良いだけでは?
2019/01/13(日) 17:06:11.78ID:goGtxYMD
>>99
その程度の最適化はコンパイラが勝手にやればよくね?
もっと大規模なことしたいからわざわざconstexprなんてキーワード追加して
かつ人間様がわざわざそれを指定するんだろ?
で大規模なことをできる仕様か?あれが?
どうせみんなデバッグするときにconstexprをはずしてんだろ?
アホと思わないか?
2019/01/13(日) 17:10:55.99ID:bhcZ5Z4Z
>>103
Visual Studioでしか試してないけど、わざわざ外さなくてもデバッグビルドでは定数化されないのが普通じゃないの?
2019/01/13(日) 17:11:37.75ID:zLcYabhS
constexpr相当を勝手にやられたら、参照してるほうがリコンパイルが必要か判断できなくなるんじゃないの?
2019/01/13(日) 17:27:56.15ID:bhcZ5Z4Z
constexpr指定を使わずに同じような定数化を自動でやるとなると、
一度全ての関数を定数化可能か調べるためのプレビルドみたいなことをしないと無理だよね。
2019/01/13(日) 17:43:24.56ID:goGtxYMD
定数畳み込みなんて古典的な最適化手法だし、
gccはstrlenの最適化やるだろ
だからもっと大規模なことをやるためのconstexprだろと言ってる
2019/01/13(日) 17:50:38.42ID:bhcZ5Z4Z
その最適化をコンパイラ依存でなく標準規格化したことに意味があると思うんだけど。
gccで出来ればあとは何でも良いの?
2019/01/13(日) 18:13:13.67ID:goGtxYMD
珍説どうも
その程度の最適化技術を持たないコンパイラベンダなんてどうでもいいな
clangのバックエンド自分で作った方が早い
2019/01/14(月) 02:10:17.55ID:ybeYuaGe
constexpr 相当のことはコンパイラが最適化で頑張るのが筋だというのは
まったく正当な意見だと思うんだが、本当に速度が必要な個所のチューニング
をしたいとき、つまりコンパイラの最適化以上のことがしたいときに
打てる手段が無かったりだとか処理系の拡張構文を使わなければならないというよりは、
不格好でも constexpr の方がマシ。

C++ は現実的に使えることを指向した言語で、現実はクソなんで、
クソを少しマシに書けるようにするってのは妥当な選択肢。
コンパイラが十分に賢いだとかいうような
理想的な世界で生きてる人は別に constexpr を使わなくてもいいよ。
2019/01/14(月) 06:19:38.07ID:S0iGLcvV
pythonやmatlabみたいに配列やvectorを:とかでスライス抽出できないんですか?
2019/01/14(月) 07:17:53.28ID:4qrkuOlT
技術スキンだけ高い奴が、できる奴と思い込んでるチキン。
2019/01/14(月) 09:22:28.84ID:UgNfZwvf
>>111
それをアセンブラで書いてみてくれ
2019/01/14(月) 10:26:42.41ID:3TGcl/LH
++20のfilterでスライスみたいな事ができるようになる
しばし待たれよ
2019/01/14(月) 13:02:31.28ID:BcFaCsuL
>>110
constexpr指定はコンパイラにはわからない関数呼び出し先で
定数化できる計算であるとコンパイラに教えられるので
指定できるならした方がいいだろうけど

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

constexpr はコンパイラに対するヒントであるだけでなく、プログラマにとっての制約でもある。
「そういう (速度が必要な) 箇所」であるにもかかわらず実行時の値に依存しているということを
プログラマが気づくことが出来る (ので分離するなどの工夫をする機会があるかもしれない)
というのは十分に便利だよ。
2019/01/14(月) 13:39:03.52ID:BcFaCsuL
わかってないな
本当に解決しなきゃいけないボトルネックが、たかだか定数の畳み込みだけで
解決出来ることなどまず無いと言ってんの

ただの数回、数十回の普通の演算はそのままやっても十分速いんだよ
むしろ定数化できるとこを全部定数化したせいで、(即値にならないような構造体の場合)定数を読みに行くコストの方が大幅に高くなる可能性もある
constexprというか言語の機能を盲信しすぎ
2019/01/14(月) 13:47:53.15ID:BcFaCsuL
あと、
>「そういう (速度が必要な) 箇所」であるにもかかわらず実行時の値に依存しているということを
ファイルから読んだ内容、mainに渡された引数、ネットワークから受け取ったデータ
そういうの(および一度でもそれらと関わった変数)全て実行時の値だってわかってる?
2019/01/14(月) 22:35:17.67ID:SOyXSPCI
オフラインで複雑な計算して、結果をバイナリで埋め込んでおくことはよくやる
ゲームなら当たり前にやるワークフローだよな
しかしそういう典型的な用途にconstexprは向いてないという間抜け具合
C++でなんでもやるというのが目的になってんだよね
こういうのをオナニーって言う
2019/01/15(火) 09:17:36.65ID:f9+1p0X/
>>117-118
やりたいときに出来る方法があるというのは無いより「マシ」と私は >>110 で述べたが、
それが君にとっての妄信なのかい?
要するに、 constexpr の成果は限定的すぎると言いたいんだろ?
ほとんどの機能は個別に見ればどうでもいいような些細なものなのは普通のことだ。
2019/01/15(火) 09:57:48.09ID:fPstZ0f7
何度も言ってきたが、負けを認めたら死ぬ病気なのか?君は
2019/01/15(火) 10:02:02.52ID:fPstZ0f7
ついでに言えば、俺は「指定できるならした方がいい」と書いた
俺が成果を限定的だと貶してるんじゃなくて、
君が過信してるの
2019/01/15(火) 10:05:46.91ID:f9+1p0X/
>>122
じゃあ何が問題なんだい?
指定できるならした方がよくて、指定できるようになってるのは指定できないより良いというのなら意見は一致してるじゃないか。
2019/01/15(火) 10:23:37.90ID:p3r+u4ET
>本当に速度が必要な個所のチューニング
>をしたいとき、つまりコンパイラの最適化以上のことがしたいときに
>打てる手段が無かったりだとか処理系の拡張構文を使わなければならないというよりは、
>不格好でも constexpr の方がマシ。
2019/01/15(火) 10:26:22.74ID:fPstZ0f7
(途中送信してしまった)
本当に"速度"が必要なときに速度より移植性やC++標準への準拠を優先してconstexprマンセーする
これを過信と言わずして何と言う
2019/01/15(火) 10:40:35.59ID:f9+1p0X/
>>125
速度が必要な個所が「なるべく」移植性が高い形で表現できればそれに越したことは無いし、
更にそれ以上が欲しいなら移植性を犠牲にすることも出来るんだから、
constexpr の導入に何の問題もないだろ?
2019/01/15(火) 19:01:25.37ID:CKmovdLr
何でC++スレはプログラム板で勢いあるんですか?
2019/01/15(火) 19:02:26.94ID:CKmovdLr
C++で有名人になりたいです
どうすればいいでしょうか?
2019/01/15(火) 21:38:31.55ID:niK8DUcQ
>>128
c++ のコンパイラを c で記述すれば、それだけで有名になれると思います
gcc が c から c++ になったときは心底残念に思っていました
2019/01/15(火) 22:36:39.63ID:CKmovdLr
>>129
それって無理では‥
2019/01/16(水) 01:23:29.16ID:CLrL7dI7
>>130
つ ttps://www.amazon.co.jp/dp/4797344369
2019/01/16(水) 04:10:04.96ID:GtMBox+p
>>94
はちみつなんとかもそーだけど、
おまえもほんま馬鹿やね。表面しか読めないんだな。
10年間、言語オタを隔離してしまえといってるのだよ間抜けちゃん。
世の中から隔離された世界でせんずりこいてろといってる。ザーメン臭でくさいやつは地上に出るな。

大体、大規模プログラミングはすでにC++には向かないことが露呈して久しく、
せいぜいbetter Cとして生き残るぐらいしか道はないのにどういう意図を持っての3年ごとの改訂なんだ。
ポリシーなき改訂ははた迷惑なだけ
これだけ頻繁に改訂されると、スペック以外の解説本では、すでにストラウストラップ本自体改訂をキャッチアップできてない。
その邦訳ともなればますます現行仕様から浦島太郎になるのは必至。せっかく覚えた頃に新スペックの登場か?
C++初心者はいったいどの本買ってるのさ?キチガイ言語オタ江添本でも買うのか?
結局、ユーザー減少させてるだけだろうが
2019/01/16(水) 04:55:20.85ID:M8dG57eU
他人をけなす人には、なりたくないな
https://lavender.5ch.net/test/read.cgi/pav/1534982458/
2019/01/16(水) 05:13:03.61ID:CLrL7dI7
なるな人間になるな
2019/01/16(水) 09:06:01.53ID:Cj0f6L/5
もしかして、最初の「なる」はNULLと掛かってる?
中身のない人間、アクセスしちゃダメな奴、みたいな意味で。

ちなみに自分は「ヌル」派。
だってNULLを「ナル」と読んだら「ぬるぽ」と言えなくなるもの。
2019/01/16(水) 09:58:04.96ID:qfBMRYbT
>>131
一応買ってみました
でもどうせコンパイラ作るならC++でClangとかの実装を勉強したい
2019/01/16(水) 12:17:10.07ID:qfBMRYbT
C++好きな人って、C‡‡、Java嫌いな人が多いのって偏見ですか?
関数型言語かRustの話しかしてない気がします
2019/01/16(水) 13:56:12.46ID:CLrL7dI7
>>135
回文
2019/01/16(水) 15:05:52.98ID:kJO3cJ8H
>>132
C++ の言語としてのポリシーはこのように提示されている。
Stroustrup 自身がその著書に書いたもの。
委員会の公式な文書にするとかどうとかいう議論はあったけど、
結局どうなったのかは知らない。

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

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

そのポリシーを気に入らないでいる自由はあるし、それはどんどん主張して良いが、
ポリシーが無いというのは事実誤認だし、自分にとって妥当ではないからといって
必要としている人を侮辱するべきではないよ。
2019/01/16(水) 15:25:10.37ID:mUX6kDFm
俺が以前「D&E読んでないのか」、って言ったせいではちみつはD&Eの受け売りするようになったな・・・

ttp://i-saint.hatenablog.com/entry/20101012/1286822888
「あるプログラム言語を使うためにその言語の弁護人になるべきではない。」
そういうただの弁護人になってるバカは大抵C++を実用レベルで使ってない人間ばっかりだ
141デフォルトの名無しさん
垢版 |
2019/01/16(水) 15:27:49.73ID:vTKVQdGX
そやな
2019/01/16(水) 15:39:55.50ID:kJO3cJ8H
>>140

このスレで言われたから読んだということは無いはずだが、どの発言のこと?
正確に覚えてないけど
私が持ってるやつは (日本語版の) 初版だからたぶん 2006〜2007 年頃には読んでるはず。
2019/01/16(水) 15:56:46.23ID:kJO3cJ8H
現実的な問題があるならそれは解決されなければならない問題であって、
改定を先延ばしにすることを要求するのはおかしな話じゃない?

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

constexpr が限定的に過ぎるとかいうのはわかってる話で、
だから制限を緩くしたり consteval を検証したりしてるんだろ。
それでも必要だと判断したから入れたんだから、
そこに文句付けたって今更な話で擁護もクソもない。
駄目な部分があるのは知ってるっつーの。 それでも要るんだよ!
144135
垢版 |
2019/01/16(水) 17:16:27.25ID:Cj0f6L/5
>>138 回文には気づかなかった。
「なるな」「人間に」がそれぞれ反転同一で、
それらフレーズを反転同一になるように並べて作成した回文か。
「人間になるな人間に」でも構造的には同じね。

いくらかPPAPな感じがしないでもない。
あと、正規表現のパズルっぽくもある。
2019/01/16(水) 17:26:40.42ID:kJO3cJ8H
酢にピリッとした風味を足すのに使えます

_人人人人人人_
> スピリタス <
 ̄Y^Y^Y^Y^Y^Y ̄
2019/01/16(水) 17:28:13.10ID:kJO3cJ8H
>>145
すまん。 誤爆した。
2019/01/16(水) 17:58:49.69ID:Cj0f6L/5
はちみつと関係ないと思ったけど、餃子の方には関係ありそう。

しかし、C++スレッドでの真摯な態度と裏腹に、
他所ではどういうキャラクタなんだろ、と思わせる投稿ね。
2019/01/16(水) 18:12:30.55ID:mUX6kDFm
真摯かねぇ・・・・希望的観測で詳しくないことに首突っ込んだり
自分の間違いや認識の誤りは絶対に認めないクソコテなのに

まぁそれも俺の主観だから他の人がどう思うかは知らんけど。
2019/01/16(水) 18:41:54.90ID:YdXHJCw6
>>145
風味って鼻から空気が出る時に感じる食べ物の香りかと思ってたわ
2019/01/16(水) 20:40:09.12ID:iaQOejPk
c++が対象にしてる現実問題って何だ?
c++使う大規模プロジェクトってゲームがまずあると思うけど
例外禁止未だに普通だし標準ライブラリも限定的にしか使わないよ
2019/01/16(水) 20:47:01.61ID:Tucl/crz
c++で書かれたc++のコンパイラのことだろ
ここが0.001%早くなるだけで世界から年間100000時間くらいが節約できるんじゃねえの
2019/01/16(水) 21:54:11.46ID:gQtWsPR9
じゃあLLVMのコーディングスタンダードこれな
https://llvm.org/docs/CodingStandards.html

例外、RTTI、iostream使わない
現実に使えるソフトってのはこういう制約で作るわけだ
C++の標準化やってる連中はメタプログラミングで遊んでるだけ
現実問題なんて何もわかってない
2019/01/16(水) 23:10:45.86ID:4t4UncJr
例外使わないとかないわー
初心者かよ
2019/01/16(水) 23:12:36.63ID:Xh3PQjx5
だから、ブラウザ、ロケット射的距離のシミュレーション、機械学習
2019/01/16(水) 23:36:41.52ID:gQtWsPR9
>>153
初心者ってのはC++の例外のバイナリモデル説明できねーやつのことな
2019/01/16(水) 23:44:05.56ID:gQtWsPR9
>>154
でC++がそれらに対してどんな問題解決してくれたんだ?
2019/01/17(木) 01:07:41.88ID:/VOhvfFp
>>152
そこらへんはしゃーない。 便利な機能も害悪な場面は有るし、
ある時点では有用だったものが後には足を引っ張ることもある。
あるプロジェクトで縛りを設けるからといって
それが現実の全てというわけではない。

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

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

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

Go や Rust は最初からそういう方向だし。
2019/01/17(木) 02:01:31.97ID:l+wuAult
このスレ、初心者を見下す者ばかりだし、

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

そう言うと、「何にもそんなことしてないよ」
とか、レスが来る。
子供スレ。
2019/01/17(木) 08:10:37.95ID:qOfK2eXQ
optionalはヒープ使わないだけでnullと大差ない
せっかく静的にnot nulが保証されてるとこを壊してしまう
ほとんどアンチパターン
2019/01/17(木) 08:21:29.72ID:4hvMH0x4
業務でC++使ってない雑魚の意見なんて無視しろ
2019/01/17(木) 08:22:23.19ID:4hvMH0x4
趣味でC++齧ってるやつと本気で仕事としてやってるやつじゃ格が違うんだよ
2019/01/17(木) 08:22:55.36
C++では好きなだけ効率を犠牲にして安全を手にすることができる
効率を犠牲にして安全を手にすることを余儀なくされている言語とは区別すべきだ
2019/01/17(木) 08:47:23.41ID:qOfK2eXQ
業務で使ってない素人は平気で例外禁則とか言って返り値チェックで死ぬほど汚いコード書くんだよな
2019/01/17(木) 09:07:15.76ID:CHgbqTPA
まぁ業務と違って趣味は時間を無駄につぎ込めるから
人によっては素人の方がレベル高かったりするけどな

そういうのと比較するのはホントやめて欲しい
2019/01/17(木) 09:09:21.72ID:4hvMH0x4
>>164
は?業務と趣味でやってる奴が一番最強
2019/01/17(木) 10:35:25.89ID:iQ0t94Qh
>>159
optionalの理解間違ってるよ
2019/01/17(木) 10:39:29.94ID:iQ0t94Qh
>>163
例外禁止されるのは業務の方だろ
一見汚くなるがそちらの方がバグが少なくメンテしやすいという判断で
トップダウンで強制される
趣味なら最新の機能ばんばん使って自由にやりゃいい
2019/01/17(木) 12:13:15.88ID:oU9OMPiG
実際には例外を禁止するとバグが増えてメンテしにくくなるんだけどな
2019/01/17(木) 13:51:39.37ID:l+wuAult
そのソフトが気に入らないなら、
そのソフトを使わなきゃ良いだけだし。
そんなことも、いい年になって、わからないのか。
170デフォルトの名無しさん
垢版 |
2019/01/17(木) 14:34:02.57ID:DbtLCT5r
このスレ卒業死体
2019/01/17(木) 14:43:25.66ID:n6FY+cyG
スレばいいじゃない
2019/01/17(木) 15:55:58.66ID:K5aWd8xj
setjmp 使えばよろし
2019/01/17(木) 17:20:21.35
遂に中級者になるのか……
2019/01/17(木) 20:25:15.31ID:e9w/TFC0
>>173
なんでID消えてるの?
2019/01/17(木) 20:47:04.58ID:iJuNblTy
浪人で消してるんでっしゃろ
2019/01/17(木) 21:54:16.18ID:yb/OKoP7
単なるエラーを返すのに例外機構みたいな大域脱出って牛刀感あるよな。
2019/01/17(木) 22:25:28.97ID:zQ8cL02f
エラーコードの取り間違いやチェック漏れがないように書くにはすごい集中力が必要で神経をすり減らす作業
スローすれば僅かな労力で安全に済むところをわざわざ戻り値にするのは事を大げさにするだけ
2019/01/17(木) 23:05:50.61ID:K5aWd8xj
つ errno
2019/01/17(木) 23:24:18.46ID:yb/OKoP7
なあに、例外のcatch漏れや例外安全を欠いていないか注意するのと比べたら
たいてい局所的に判断できるから大したことない。

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

検査例外じゃない例外機構でそれを保証するのも簡単じゃないと思うがな。
まぁ、一人開発で投げるのもcatchするのも全部把握しているという前提ならわからんでもないが。
2019/01/18(金) 00:32:34.20ID:ZqjXe4yq
>>179
そのへんはチェックするツールとかあったりしない?
知らんけど。
2019/01/18(金) 00:49:25.33ID:HmTdANXo
実はキャッチ漏れは戻り値処理漏れよりはるかに少ない
戻り値処理はその場でエラー処理したくない場合にも一度変数に受け取って分岐を入れて呼び元に返すということを繰り返さなければならない
なので処理漏れを起こしうる確率が呼び出し箇所の数に比例して増えていくことになる
そして本当のエラー処理をしたい場所が隠れてしまいコードの可読性が低下する
可読性が低下すればミスがさらに増える
例外なら処理したくない場合は何も書かなくていいので間違えようがないので安心
またエラー処理をしたいまさにその箇所だけに処理を書けばいいのでコードの見通しが非常に良くなりミスも激減する

エラーコード戻し安全なコードを書くことは実は非常に難しい
エラーコードチェックのせいで無駄な変数と分岐が大増殖するので正確にシステムの状態を追うことが困難になりミスが増える
例外を使えばフローが非常に単調で綺麗になるので安全なコードを書くのも簡単になる
2019/01/18(金) 01:03:26.14ID:0w3MYNkW
同じ理由で、忌み嫌われてるgoto文も、実はけっこう便利だと思う
2019/01/18(金) 01:11:53.91ID:ZqjXe4yq
正しく使えば何だって便利だし、
駄目な使い方をすれば何だって駄目だっていう
すごく当たり前すぎる話
2019/01/18(金) 08:10:56.74ID:VfzPRVfV
>>183
>>180
プログラミング辞めてツールでチェックしてもらえば?
2019/01/18(金) 08:14:02.62ID:BmxrQ6cX
>>180
それが検査例外じゃないかな。
いろいろ批判もあるけど、例外の内容に応じてそれぞれ異なるリカバリを確実に行うことを
保証する手段としては今のところそれ以外無いかなと思う。
まぁ、erlang/swiftあるいはgoのpanicのように、エラーの種類なんて気にせず「この下の
処理が失敗した」とだけ捉えるのが例外の扱いとして妥当なところかも。
2019/01/18(金) 09:51:47.22ID:LyFbxqMk
>>181
使い捨てでないまともなプログラムはいたるところにエラーリカバリー処理が入る
つまり例外だといたるところにtry catchかつ外に投げる例外は誰がcatchするのか仕様が複雑
仕事で大規模なプロジェクトに関わったことない人はこういうのが理解できていない
2019/01/18(金) 10:01:53.52ID:LyFbxqMk
例外押しのやつはどうせほとんどcatchせずにそのままexitさせてるだろ
exitするぐらいなら異常が発生した場所でabortする方がはるかにいい
確実にスタックダンプが残せる
2019/01/18(金) 10:41:00.50ID:cHsPUmRi
例外が有用なのってネットワークとストレージのioぐらいという認識
それ以外で必要性を感じない
配列外アクセスとかで例外とばすなと思う
2019/01/18(金) 11:40:22.57ID:6lA8mErY
>>188
そういうバグが原因の例外はcatchしなければいいんでは?
2019/01/18(金) 13:31:14.01ID:cHsPUmRi
>>189
だから現実的にそういうのに例外をなげる仕様にありがたみがないでしょ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況