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/
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] リターンコードスタイルにすると 無駄な変数が増える 無駄な分岐が増える エラーコード追加時に全ての呼び出し元を精査しなければならない エラーに付随する情報を伝達する標準的な規則が存在しない 全ての正常系の処理にコードチェックのオーバーヘッドが追加される ライブラリ内部で発生する例外への対処が困難(例外を基本としていれば容易に対処可能) 参照透過性が壊滅する デメリットだらけ
203 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 20:59:01.43 ID:BmxrQ6cX.net] >エラーコード追加時に全ての呼び出し元を精査しなければならない >参照透過性が壊滅する 例外ならそれが解決すると考えているならちょっとやばい。
204 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 23:06:15.78 ID:BPWAMvDw.net] >>203 返り値でエラー通知するようなセピア色の世界にいるとわからんかもしれんが普通に解決するぞ
205 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 01:49:00.66 ID:gJ7zJmkH.net] 参照透過性ってそういう意味だっけ?w 最近例外ない言語増えてる事実はどう考える?
206 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 07:07:12.07 ID:+IqL7b8U.net] >>203 リターンコード方式や例外と参照透過性になんの関係があるんだろう… >>205 > 最近例外ない言語増えてる事実はどう考える? Go以外にあったっけ?
207 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 07:37:40.03 ID:FscMnE/k.net] まぁ、実際関係ないね。 同じ入力に対して常に同じエラーコードを返すなら参照透過性があると言えるし、 入力によらず場合によって例外を返すことがあるなら参照透過じゃない。
208 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 07:43:37.22 ID:WVD5Mi4y.net] 「呼び出し元を精査」とかプログラム内のデバッグに例外使ってるような書き方やね 例外処理は外部的要因(ハード、通信等)のエラーのように自分の責任外のエラーを積極的に通知するために使うべきだと思うけどな
209 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 08:51:08.36 ID:fPDnzLoP.net] 戻り値形式ではそもそも式として書けないから参照透過性もクソもないということをまずは理解しろ 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 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 09:21:20.09 ID:XwZdf3Vk.net] Real Programmers Don't Use Exception.
211 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 12:10:48.67 ID:gJ7zJmkH.net] >>206 rust swiftは最初なくて後で追加 積極的に使うスタンスでない
212 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 12:13:26.40 ID:gJ7zJmkH.net] >>209 そこに丹念なエラー処理を追加していくと、あら不思議どっちもあまりかわらない
213 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 13:16:34.67 ID:+IqL7b8U.net] >>211 それってやっぱりいるじゃん ってことだよね w >>212 え? 何言ってるの? エラー処理ってなんのこと? 具体的に書いてみて
214 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 14:04:33.44 ID:gJ7zJmkH.net] >>213 エラー処理って言ったらまぎらわしかった 異常系の対応ってこと
215 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 14:08:49.01 ID:fPDnzLoP.net] 何にでも丹念なエラー処理が必要になることはないし 丹念なエラー処理も例外の方がやりやすい
216 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 14:30:15.46 ID:+IqL7b8U.net] >>214 エラー処理でも異常系の対応でもいいから具体的に書いてくれよ >>209 程度ならたいしたことないだろ
217 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 14:50:30.01 ID:FscMnE/k.net] 案の定、参照透過性は関係ない話だった。
218 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 16:58:07.69 ID:gJ7zJmkH.net] >>216 具体的にするには前提がいるでしょ f、gは外部から与えられてる関数で中身を書き換えることはできない かつ至る所で使われている p、qは誤りを含んでいる可能性があって、異常(エラー/例外)が起こりうる 異常の場合は何かおかしかったの後で調査できるようにログに残す、 または人間にフィードバックしてリトライさせる必要がある 製品レベルのソフトウェアならいたって普通の前提と要件 これを実現するとどうなるかは想像つくでしょ? おれは例外否定派ではないよ 役に立つところは限定的と言う主張 >>188 がおれだから まぁ確かにどちらかで言えばなくてもいいとは思ってる ただ現状C++の標準ライブラリは例外ありきの設計に突き進んでいるから エラーコードで突き進むのは筋が悪いのは確か
219 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 17:14:14.89 ID:+IqL7b8U.net] >>218 > p、qは誤りを含んでいる可能性があって、異常(エラー/例外)が起こりうる 意味わからん
220 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 17:16:52.76 ID:fPDnzLoP.net] コード書けないならそう言えば? 長文で言い訳してないでさ
221 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 17:33:46.39 ID:XYN5JTgF.net] 普通は馬鹿に割く時間がもったいないからコード書けません
222 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 17:53:36.92 ID:+IqL7b8U.net] そう言ういいわけ要らんし
223 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 18:31:39.45 ID:fPDnzLoP.net] 信者ですらわずかなサンプルコードを書くのをためらうほどには戻り値スタイルは厄介な代物ということがわかったね くだらない言い訳で長文を書く労力よりも高くつくということがはっきりした
224 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 20:10:32.29 ID:XwZdf3Vk.net] 普通signalで実装するよね〜
225 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 20:17:23.95 ID:gJ7zJmkH.net] 勝利宣言の後で申し訳ないけど h()でハンドルするとしたら単に Z h(P const & p, Q const & q) { try { return f(p) * g(q) } catch (exception_invalid_arg_f e) { throw exception_invalid_arg("arg p is invalid"); } catch (exception_invalid_arg_g e) { throw exception_invalid_arg("arg q is invalid"); } } みたいにリアス海岸になるわけでしょ でもこれはpとqの異常の区別が下からあがってくる例外で区別できてしまう特殊例 Z h2(P const & p, Q const & q0, Q const & q1) { return f(p) * g(q0) * g(q1); } だとより複雑になる じゃあこれ次の人やってみて
226 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 20:34:58.74 ID:DlKBTFO2.net] 天狗だ天狗が出たぞぉ
227 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 21:39:06.68 .net] やっぱり例外機構はオカルトだった。皆が長い間この迷信に惑わされ疲弊した
228 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 22:11:28.98 ID:+IqL7b8U.net] 疲弊してるのは君みたいだけど w