[過去ログ]
C++相談室 part165 (1002レス)
C++相談室 part165 http://mevius.5ch.net/test/read.cgi/tech/1698705458/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
220: デフォルトの名無しさん (ワッチョイ bf9a-Ehcu) [sage] 2024/02/07(水) 14:19:19.97 ID:7NJYw5ei0 >>218 ありがとうございます! http://mevius.5ch.net/test/read.cgi/tech/1698705458/220
221: デフォルトの名無しさん (オイコラミネオ MMeb-tjaG) [sage] 2024/02/07(水) 18:20:13.87 ID:aGYGzZDDM >>212 >長いからよく読んでないけどコンパイラは型 >を認識をしてんだから-1と0xFFFFFFFFは >区別してるだろ char a[100-101]; みたいに結果的に -1 になった場合は、 32BITコンパイラの場合、果たして内部で 0xffff_ffff と区別をつけているかどうか。 unsigned型と考えれば0xffff_ffffであり、 signed型と考えれば -1 です。 ターゲットが 32BIT Windows どちらもエラー になる可能性は高いですが、理由は結構異なる と言えば異なると思います。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/221
222: デフォルトの名無しさん (オイコラミネオ MMeb-tjaG) [sage] 2024/02/07(水) 18:25:16.10 ID:aGYGzZDDM もっと言えば、32BIT ターゲットで、 char a[0x80000000 | 1]; みたいな場合、中味は signed と 捉えれば「負数」ですが、unisgned と 捉えれば、0x80000001 という大きな値 に過ぎません。 どちらもエラーになる可能性が高いですが。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/222
223: デフォルトの名無しさん (ワッチョイ bfb0-tai3) [sage] 2024/02/07(水) 18:40:38.44 ID:0txhPX/d0 リテラルにも型がある 1はint 0x80000000はunsigned int 演算結果はunsigned int ルール決まってるから http://mevius.5ch.net/test/read.cgi/tech/1698705458/223
224: デフォルトの名無しさん (ワッチョイ d7f0-P/QA) [sage] 2024/02/07(水) 18:55:38.23 ID:V2I2BIn30 x86のアセンブラのディスプレースメントは符号付いてるけどな 他のマシン系はワカランけど http://mevius.5ch.net/test/read.cgi/tech/1698705458/224
225: デフォルトの名無しさん (ワッチョイ bfa4-syIJ) [sage] 2024/02/07(水) 20:52:20.31 ID:L6yrYnPT0 >>222 32bit環境には64bit整数はないと思ってるの?? http://mevius.5ch.net/test/read.cgi/tech/1698705458/225
226: デフォルトの名無しさん (オイコラミネオ MMeb-tjaG) [sage] 2024/02/08(木) 18:55:38.81 ID:DVUqgRU9M >>223 なるほど。そうなるわけですね。 本当に書いた人の意図がどうかに関わらず、 規則で決まっていると。 1UL のように書いてあれば unsigned。 そして、UL のようなものを書いてない場合、 1 のように小さな値は、signed ですが、signed の 範囲を越えるようなものは、unsigned になる、 などの規則があるわけですね。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/226
227: デフォルトの名無しさん (オイコラミネオ MMeb-tjaG) [sage] 2024/02/08(木) 18:56:00.93 ID:DVUqgRU9M >>225 そういう問題ではないようですが。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/227
228: デフォルトの名無しさん (ワッチョイ 5763-dZsi) [sage] 2024/02/10(土) 12:18:06.78 ID:KJGevrBa0 >>185 >>183の主張の >一方、例外を生じないライブラリの使い方(関数の呼び出し方)を心掛けるかどうか。これなら選択肢がある が完全に読み飛ばされている件について: 例外を生じないライブラリの使い方で設計したら、funcB()から例外が飛んでくるのはバグなので 調査と修正の対象になる。 (結果的にやっぱtry { funcB(); } catch (/*略*/) { ... } いるじゃーん?となる可能性はあるがたいていはそうはならない >>188のように自分が何をやっているのか認識しないまませき止めるのは論外すぐる…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/228
229: デフォルトの名無しさん (ワッチョイ 5763-dZsi) [sage] 2024/02/10(土) 12:26:53.58 ID:KJGevrBa0 >>186 >catchしたらテストケースが増えるかどうかという話とはなんも関係がない。 あっる catchする必要性箇所を設計で厳選すればcatchが減るのだからテストケースは減らし得る 例外を使う場合: スルーしたりcatchして再スローが生じるfoo()の呼び出し箇所(とするのが現実的でないなら呼び出しパティーン)がm個、 スルーしたりcatchして再スローする段数が(簡単のためここでは平均とする)a個、 foo()が例外を生じるパティーンがn個なら、m^a^n個のテストケースが必要なところであるが catchする必要性箇所を設計で厳選した場合: foo()の呼び出し箇所(とするのが現実的でないなら呼び出しパティーン)がm個だとしたら、 例外が飛んでこないことを確認するのテストケースがm個のオーダーで要るだけ…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/229
230: デフォルトの名無しさん (ワッチョイ 377c-Hbjn) [sage] 2024/02/10(土) 16:57:16.73 ID:Qku1mp0Z0 >>228 読み飛ばしてねえよ funcB()は処理を中断すべきエラーが発生する可能性があるんだろ?だったらそれを適切に処理して後続の処理をやったりやらなかったりする必要があるわけだろ? それはfuncB()がエラーを例外で返そうと戻り値で返そうとなんか他の方法で返そうと何も変わらないはずじゃないか http://mevius.5ch.net/test/read.cgi/tech/1698705458/230
231: デフォルトの名無しさん (ワッチョイ ffcf-HxQs) [sage] 2024/02/10(土) 18:55:23.41 ID:0f3gz8pL0 >>229 >例外が飛んでこないことを確認するのテストケースがm個のオーダーで要るだけ…… いったい何をテストしようとしているんだろうか。 仮に「例外が飛んでこないことを確認するテスト」なるものができたとして、catchしたらそれができなくなるのか? 前半のよくわからない計算はcatch句を書いたらそのC0網羅のためのテストケースが必要になるとかいうことなんだろうか。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/231
232: デフォルトの名無しさん (ワッチョイ ffcf-HxQs) [sage] 2024/02/10(土) 20:56:08.28 ID:0f3gz8pL0 >>228 >>>188のように自分が何をやっているのか認識しないまませき止めるのは論外すぐる…… どこが論外?>>169でぜんぜん問題ないが。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/232
233: デフォルトの名無しさん (ブーイモ MM8f-tai3) [sage] 2024/02/10(土) 21:22:31.20 ID:dL54PN9cM >>232 それは未知の例外投げてきたライブラリを信用し過ぎ 製品ならそういう「たぶん大丈夫っしょw」的なのは許されないね http://mevius.5ch.net/test/read.cgi/tech/1698705458/233
234: デフォルトの名無しさん (ワッチョイ ffcf-HxQs) [sage] 2024/02/10(土) 22:40:34.32 ID:0f3gz8pL0 >>233 逆だろ。catchしないのはライブらにが未知の例外を投げてこないだろうと信用してるってことだろ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/234
235: デフォルトの名無しさん (ワッチョイ bf27-tai3) [sage] 2024/02/10(土) 23:44:13.35 ID:iRyhZExm0 >>234 catchしないということは終了させるということ 見かけ上動き続けたらいいってもんじゃない http://mevius.5ch.net/test/read.cgi/tech/1698705458/235
236: デフォルトの名無しさん (ワッチョイ ef63-uLm/) [sage] 2024/02/11(日) 03:08:09.08 ID:4PD3HqyC0 >>232 それは未知の例外投げてきた原因を調査しなさすぎ 製品ならそういう「たぶん大丈夫っしょw」的なのは許されないね >>233 ドキュメント通りに例外発生条件にならないように呼んでやったのに 例外を飛ばしてくるライブラリって一体…… 製品やぞ…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/236
237: デフォルトの名無しさん (ワッチョイ ef63-uLm/) [sage] 2024/02/11(日) 03:16:41.24 ID:4PD3HqyC0 質問なのですが Q1. std::ldexp(0.0, 0.0) が0.0なのですがこれは 0^0 = 0という大胆な主張なのですが何で決まっているの? STLがIEEE735に従っているだけ? Q2. 最小の(絶対値が最小の正の)非正規化数は const auto min_expn = std::numeric_limits<double>::min_exponent; const auto digits = std::numeric_limits<double>::digits; として、std::ldexp(0.5, min_expn - digits + 1) で正しい? (実際 std::ldexp(0.5, min_expn - digits + 1) > 0.0 やが std::ldexp(0.5, min_expn - digits + 1) / 2.0 == 0.0 であっる Q3.にもかかわらず、 std::ldexp(0.5, min_expn - digits) > 0.0 になるのはなんで……orz http://mevius.5ch.net/test/read.cgi/tech/1698705458/237
238: デフォルトの名無しさん (ワッチョイ ef63-uLm/) [sage] 2024/02/11(日) 03:25:12.56 ID:4PD3HqyC0 訂正 |||。n_ 誤1: IEEE735 正1: IEEE754 誤2: 非正規化数 正2: 非正規数 http://mevius.5ch.net/test/read.cgi/tech/1698705458/238
239: デフォルトの名無しさん (ワッチョイ 1e27-2ki6) [sage] 2024/02/11(日) 06:22:40.58 ID:2tL2xZqD0 >>237 wandboxに書いてみ http://mevius.5ch.net/test/read.cgi/tech/1698705458/239
240: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f740-Kvqi) [sage] 2024/02/11(日) 07:55:26.62 ID:nHqSm2on0 >>237 決まっていない。言語仕様としては未規定。 std::numeric_limits::is_iec559 が真であるならその挙動をあてにしていいがそうでないときは各環境の事情による。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/240
241: デフォルトの名無しさん (ワッチョイ 16cf-BOeC) [sage] 2024/02/11(日) 09:19:29.20 ID:XOPhWcHA0 >>236 あんたの認識じゃ catchする=見かけ上動き続ける なんだ? なんか根本的に勘違いしてる気がする。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/241
242: デフォルトの名無しさん (ワッチョイ 637c-IqbK) [sage] 2024/02/11(日) 09:29:04.38 ID:9XvrSVak0 例外は「関数外にエラー発生を伝える」ための「方法の一つ」でしかない 関数の処理がどんなエラーを発生させうるか、受け取った外側の処理がその情報をどう取り扱うべきかという問題とは完全に直交してる (言語ごとにある程度の慣例はあるけどあくまで慣例) 例外に変なこだわりや的外れな批判をしてる奴は大体そこを勘違いしてる http://mevius.5ch.net/test/read.cgi/tech/1698705458/242
243: デフォルトの名無しさん (ワッチョイ 16cf-BOeC) [sage] 2024/02/11(日) 09:47:48.61 ID:XOPhWcHA0 アンカ間違えた、すまん >>241は>>235宛な。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/243
244: デフォルトの名無しさん (ワッチョイ 1e27-2ki6) [sage] 2024/02/11(日) 09:47:48.79 ID:2tL2xZqD0 >>242 お前はバグのないお花畑を考えてるからそういう理想的な抽象論を持ち出すんだよ c++の現実は道を踏み外したら即カオス stlのコンテナのpopに返り値がない理由は知ってるか? あのレベルの考察でソフトウェア設計している人間が世の中にどれだけいると思う? http://mevius.5ch.net/test/read.cgi/tech/1698705458/244
245: デフォルトの名無しさん (ワッチョイ 1e27-2ki6) [sage] 2024/02/11(日) 09:55:44.37 ID:2tL2xZqD0 >>241 >>169を否定している 知らない例外が飛んできた場合にcatchして握りつぶしてそのまま動作を継続するかどうかって話な http://mevius.5ch.net/test/read.cgi/tech/1698705458/245
246: デフォルトの名無しさん (ワッチョイ 637c-IqbK) [sage] 2024/02/11(日) 10:07:06.72 ID:9XvrSVak0 >>244 バグのあるなしなんか関係ない設計の話だし、「例外はエラー伝達の具体的方法の一つ」って話のどこが抽象的なのかも分からないし、 「C++の現実」とか「カオス」が具体的に何のことで何の関係があるかも分からないし STLにpopがないのはnoexcept moveがない時代に例外安全に出来なかったからだけど今の話に何の関係があるかわからないし そんなのまともなC++erなら誰だって考えて設計してると思うけど、そうでないタコの話が何の関係あるかわからないし何もかも分からなすぎてすごい 仕事でそんなドキュメントやレビューコメント出すなよ >>245 知らない例外を握り潰すのも、知らない戻り値をガン無視するのも一緒 errnoが変わってるのを無視するのもint*err引数に渡した変数の値を無視するのもexpected<T,E>で帰ってきたEを無視するのも「知らんエラーを無視した」という結果は一緒 知らんエラーを無視していいかどうかの意味論と、そのエラーがどう伝播して来るかかは関係ない 関係ない話を混ぜるからお前のC++はカオスなんだよ http://mevius.5ch.net/test/read.cgi/tech/1698705458/246
247: デフォルトの名無しさん (ワッチョイ 16cf-BOeC) [sage] 2024/02/11(日) 10:14:56.00 ID:XOPhWcHA0 >>245 ? そのtryブロックの処理が失敗したものとするって書いてあるじゃん。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/247
248: デフォルトの名無しさん (ワッチョイ ef63-uLm/) [sage] 2024/02/11(日) 11:18:37.96 ID:4PD3HqyC0 >>231 >前半のよくわからない計算はcatch句を書いたらそのC0網羅のためのテストケースが必要になるとかいうことなんだろうか 例外が関数の階層をぶち抜いてfall-throughしてくることを忘れている発言 1. catchが書かれた関数が正しくcatchし、適切に処理するか(処理してせき止め or/and 必要な場合再スロー)(←要テスト! 2. fall-throughする関数が例外による処理の中断でおかしいことにならないか(←要テスト! 2をテストもせずに放置するとおかしくなる例は>>183のとうーり これにより、例外を生じる関数foo()の呼び出しパティーンn個それぞれに対し、a個のテストが必要になっる 例外を発生させない使い方をするなら、n*a*mではなくmの定数倍(例外を飛ばさない使い方に依存擦る定数)。 例外が飛んで来たらバグ。わかりやすい 例外を多用しつつn*a*mをよくわからない計算とか言っている時点で以下略 http://mevius.5ch.net/test/read.cgi/tech/1698705458/248
249: デフォルトの名無しさん (ワッチョイ ef63-uLm/) [sage] 2024/02/11(日) 11:18:50.45 ID:4PD3HqyC0 >>244 以下の主張のどこが抽象論なのかkwsk、 1. ライブラリのドキュメントに従い、可能な限り例外を生じない使い方で設計する(>>236 2. 例外が生じない前提としたところは例外が生じないことをテストする(m個のオーダー)(>>229 3. 1と2の過程で意図に反して飛んでくる例外がある場合は原因を調査し、修正を試みる(>>228 例外が飛んで来たらバグ 4. 3を意図通りの形で解決できないことが判明した場合は (ライブラリの使用方法の当方の誤解、ライブラリのドキュメントの不備、ライブラリの作りの粗さによりこれはあり得る、 結果的にtry { } catch (/*省略*/) { ... }を付ける可能性もある(>>228 5. 例外を複数段fall-throughか再スローを許し、かつそれが起きた後もプログラムの 正常な動作の継続を意図する場合はテストケースが爆発する(>> 設計し、検証し、必要とあらばtry { } catch ( ) の追加も含めた修正を行うと言っているのやぞ;;; いっぽう藻前らの主張は 1. 例外をせき止めれば良い(←処理不能な未知の例外が飛んでくることが無いというライブラリに対する全幅の信頼 2. 例外を処理したりfall-throughしたり再スローしたりする関数はn*a*m個のテストしなくても動くっしょ (←自己のコードに対する無制限の気体 3. ドキュメントは100%信頼せず、読まない の3成分からなるわけやが…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/249
250: デフォルトの名無しさん (ワッチョイ 16cf-BOeC) [sage] 2024/02/11(日) 12:01:58.52 ID:XOPhWcHA0 >>248 >例外が関数の階層をぶち抜いてfall-throughしてくることを忘れている発言 やっぱり意味不明だな。catchすれば「階層をぶち抜いて」ってことはないわけだが。 >2. fall-throughする関数が例外による処理の中断でおかしいことにならないか(←要テスト! もしそのテストが必要なんだとすれば、catchしない場合はその例外が通過する 呼び出し階層全部でテストをしなきゃならないってことになるが。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/250
251: デフォルトの名無しさん (ワッチョイ 16cf-BOeC) [sage] 2024/02/11(日) 12:31:22.40 ID:XOPhWcHA0 >>249 >1. 例外をせき止めれば良い(←処理不能な未知の例外が飛んでくることが無いというライブラリに対する全幅の信頼 なるほどな。 catchする⇒無視する、握りつぶす って脳内変換されてんだな。 catch書いたからといって上に挙げられたようなテストができなくなるわけじゃないっしょ。必要と思うならやればいい。 3.の意図しない例外の原因調査なんて main() に例外が上がってきてプログラムが落ちてからより 発生個所に近い下層で catch できた方がはるかに調査しやすいと思うんだがな。感覚が違うなあ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/251
252: デフォルトの名無しさん (スプッッ Sd52-oDfP) [sage] 2024/02/11(日) 12:37:47.91 ID:AyRTgUB7d 仕様書や規格書はその意図を正確に読み取ろうとするのに 掲示板の他人の書き込みは積極的に曲解しようとするのは何故か? http://mevius.5ch.net/test/read.cgi/tech/1698705458/252
253: デフォルトの名無しさん (ワッチョイ ef8b-u/MX) [sage] 2024/02/11(日) 12:44:06.42 ID:E8bU9+6D0 見下しているからよ こいつらは俺より下なはずと http://mevius.5ch.net/test/read.cgi/tech/1698705458/253
254: デフォルトの名無しさん (ワッチョイ 5eda-5kwM) [sage] 2024/02/12(月) 07:49:39.70 ID:4SfsXRB60 本気で面白いと思ってやってんだろう http://mevius.5ch.net/test/read.cgi/tech/1698705458/254
255: デフォルトの名無しさん (ワッチョイ 637c-IqbK) [sage] 2024/02/12(月) 08:44:56.68 ID:WngRm50l0 例外は糞!危険!意味不明!テスト漏れる!って言ってる奴ほど if (err != 0) { return -1; }が大好きなんだよな 本質的にやってること変わらないのに http://mevius.5ch.net/test/read.cgi/tech/1698705458/255
256: デフォルトの名無しさん (ワッチョイ eba6-IqbK) [sage] 2024/02/12(月) 15:42:15.86 ID:NdUIQhSh0 ファイル名に年月が使えないの困ります。 2024/02/11_データ.txt とか http://mevius.5ch.net/test/read.cgi/tech/1698705458/256
257: デフォルトの名無しさん (ワッチョイ 4b5a-nvep) [sage] 2024/02/12(月) 15:46:00.47 ID:QicyHe7E0 >>256 それ検索性最悪だから良くないんだよなぁ。 データ/2024/02/11/データ.txt データ.txt/2024/02/11/データ.txt あたりならまだ許せる。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/257
258: デフォルトの名無しさん (ワッチョイ 6fac-ND3n) [] 2024/02/12(月) 16:40:43.94 ID:MdmHk5EH0 ふつう年月日はハイフンで区切るよね http://mevius.5ch.net/test/read.cgi/tech/1698705458/258
259: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-A7R9) [sage] 2024/02/12(月) 17:02:03.84 ID:4VueJhli0 スラッシュを使う習慣が悪いわけではないが プログラマの感覚だと ISO 8601 の方式に馴染みが有ることが多いってのはある。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/259
260: デフォルトの名無しさん (ワッチョイ 5edc-s3Gl) [sage] 2024/02/12(月) 17:31:20.60 ID:rGOG+Ewu0 年月日は「ふつう」がないのでみんなが苦労している 日本とアメリカとイギリスで順番が違うし 日本には「令和」とかあるし http://mevius.5ch.net/test/read.cgi/tech/1698705458/260
261: デフォルトの名無しさん (ワッチョイ f78f-nOVH) [] 2024/02/12(月) 18:43:50.33 ID:zGvIVge80 Windowsでも / をディレクトリ区切り文字として使えるけど(場面は限定的かもしれないけど)、その認識で使ってるのかな… http://mevius.5ch.net/test/read.cgi/tech/1698705458/261
262: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-Kvqi) [sage] 2024/02/12(月) 20:07:00.91 ID:4VueJhli0 Linux で * という名前のファイルを消そうとして うわあぁぁぁとなった話はたまに聞く。 使えたとしても使うべきでない文字もある。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/262
263: デフォルトの名無しさん (ワッチョイ f7cb-nOVH) [sage] 2024/02/12(月) 21:44:07.99 ID:zGvIVge80 262>> それ以外のファイルをすべて退避した上でディレクトリごと削除したことがあったな http://mevius.5ch.net/test/read.cgi/tech/1698705458/263
264: デフォルトの名無しさん (ワッチョイ f7cb-nOVH) [sage] 2024/02/12(月) 21:46:10.68 ID:zGvIVge80 すみません、261ですが、Windows限定の話ではなかったですね 失礼しました… http://mevius.5ch.net/test/read.cgi/tech/1698705458/264
265: デフォルトの名無しさん (ワッチョイ 5edc-s3Gl) [sage] 2024/02/13(火) 05:53:49.07 ID:QIUviIGO0 Linuxならi-nodeをしていすれば findと組み合わせてどんな名前のファイルも消去できるんだけどなあ windowsはなんか複雑だったような気がした http://mevius.5ch.net/test/read.cgi/tech/1698705458/265
266: デフォルトの名無しさん (ワッチョイ 1e27-2ki6) [sage] 2024/02/13(火) 09:36:03.89 ID:7CLA20rP0 iso8901にしない人はたぶんこの規格を知らないわけで意識低すぎだろと思ってしまう http://mevius.5ch.net/test/read.cgi/tech/1698705458/266
267: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-A7R9) [sage] 2024/02/13(火) 11:18:57.32 ID:T85IlqBy0 >>266 ISO 8901 は情報交換用 (要するに機械同士のやり取り) の時刻フォーマットを定める規格であって 言葉や文章で使うもの (人間が読み書きする目的) ではないと適用範囲の言及がある。 ファイル名はどちらの用途もありうるので >>256 がどのような状況を想定しているかによって ISO 8901 が適切かどうかは違う。 もし非技術者向けのシステムなら 文化固有の日付表現に対応できてないほうが意識低いという見方もある。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/267
268: デフォルトの名無しさん (ワッチョイ 5ed7-nvep) [sage] 2024/02/13(火) 12:55:27.90 ID:c63MYIIQ0 >>267 エンドユーザーの文化的背景に配慮したデータフォーマットの利点は、エンドユーザーの知識やメタファーを利用した学習曲線の低勾配化であって、技術的には負の遺産になりやすいことには注意が必要。 典型的には小組織から始まるURLの並びですな。木構造との相性がひどく悪い。 あるいは大きな桁から始まるバイト列とか。あんなの1桁目から始めればエンディアン問題とか無かった。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/268
269: デフォルトの名無しさん (ワッチョイ 12ad-v2JO) [sage] 2024/02/13(火) 13:07:38.28 ID:mTl8FNrx0 > 典型的には小組織から始まるURLの並びですな。木構造との相性がひどく悪い。 それは人間から見たときと機械から見たときの見やすさの違いでしかないような気がする でも日本の住所は大きい方から始まるんだよな アメリカは個人から始まる 文化の違いやけども、日本人は機械生命体だったのかもしれぬ http://mevius.5ch.net/test/read.cgi/tech/1698705458/269
270: デフォルトの名無しさん (ワッチョイ 6b74-e92p) [sage] 2024/02/15(木) 04:22:25.92 ID:MOgQCM5N0 >>58 亀だがクロスで使ってるよ http://mevius.5ch.net/test/read.cgi/tech/1698705458/270
271: デフォルトの名無しさん (ワッチョイ d62e-RfGy) [sage] 2024/02/16(金) 22:41:08.10 ID:/bcZ41DF0 enable_shared_from_thisなクラスで、shared_from_this()はコンストラクタの中では 呼べないようですね コンストラクタの中の処理でthisを渡したい処理があるのですが、どうしたら... そもそもそれ自体が間違っているのでしょうか コンストラクタが呼ばれる行の次でその処理を呼べばいいという説もありますが、 現在のコードがそれをやりにくい形になっていて http://mevius.5ch.net/test/read.cgi/tech/1698705458/271
272: デフォルトの名無しさん (ワッチョイ ef63-uLm/) [sage] 2024/02/17(土) 11:55:24.05 ID:hsYxYbKj0 >>250 >>2. fall-throughする関数が例外による処理の中断でおかしいことにならないか(←要テスト! >もしそのテストが必要なんだとすれば、catchしない場合はその例外が通過する >呼び出し階層全部でテストをしなきゃならないってことになるが。 その通り。テスト不要としたいなら、例外が出た原因を調べて出ないようにするのが筋 原因を調査して対策せずに予防的にテスト不十分のtry { } catch () をてんこ盛りにする方がソフトウェアー品質が上がるという考えのはおかしい >>251 >catchする⇒無視する、握りつぶす って脳内変換 脳内変換ではなくて、予防的に入れたtry { } catch ()部分のテストが不十分な限り事実じゃーん? >>252 >本質的にやってること変わらないのに 別に。 return -1; は呼び出し側のバグで見落とすかもしれないが throw std::logic_error("*** ERR ***"); なら悪評千里を走ってバグの兆候が嫌でもワカル むしろ予防的なtry { } catch () が例外のメリットをreturn -1; に縮小してゐる http://mevius.5ch.net/test/read.cgi/tech/1698705458/272
273: デフォルトの名無しさん (ワッチョイ ef63-uLm/) [sage] 2024/02/17(土) 12:01:54.73 ID:hsYxYbKj0 >>253 藻前が二の句をつげないのは藻前の見識と資質の問題であって 漏れの責任ではないのでお間違えなきよう、 なのですよ…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/273
274: デフォルトの名無しさん (ワッチョイ 12ad-hHXc) [sage] 2024/02/17(土) 12:35:51.03 ID:mUyTgSzm0 テストって想定した動作環境、データ入力に対して想定した動作をするか確認をするわけで 想定しえないエラーや割り込みに対してはテストのしようがないんだけどな そのための例外処理だろ http://mevius.5ch.net/test/read.cgi/tech/1698705458/274
275: デフォルトの名無しさん (ワッチョイ 6332-A7R9) [sage] 2024/02/17(土) 13:04:42.05 ID:4+T7+QKn0 例外が上がってくるってことはどこかで例外を投げてるってことだぞ。 問題が起きたところでその問題に対して例外を投げるという対処をしてる箇所がある。 想定してないなら例外送出すらできないよ。 その上で人間は大きいプログラムの全体を把握することは困難だし 機械的なチェックがしづらいという現実はあるって話だ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/275
276: デフォルトの名無しさん (ワッチョイ 12ad-hHXc) [sage] 2024/02/17(土) 13:33:26.89 ID:mUyTgSzm0 アプリケーションを作っているのとOSを作っている人は別 それと同様に利用するライブラリがどのような例外を投げてくるか、もしくはそのライブラリがさらに下位のライブラリから投げられた例外をどう処理しているか アプリケーション開発者はそれらすべて想定できているとでも? ハードウェアやシステム含めて全部ひとりで作り上げる(もしくは密に情報共有できている)ならお前の言う通りだけどな http://mevius.5ch.net/test/read.cgi/tech/1698705458/276
277: デフォルトの名無しさん (ワッチョイ 6332-A7R9) [sage] 2024/02/17(土) 13:41:06.46 ID:4+T7+QKn0 >>276 「把握することは困難」という現実の話もしてる。 想定してはいて、しかしそれが伝わってない。 コミュニケーションの問題、自動化の問題として捉えるべき。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/277
278: デフォルトの名無しさん (ワッチョイ 12ad-hHXc) [sage] 2024/02/17(土) 13:56:12.85 ID:mUyTgSzm0 俺も、(もしくは密に情報共有できている)なら、と言う話をしているがな ただ「現実の話」と言うならば、伝わっていないことをコミュニケーションの問題、自動化の問題と言うのはナンセンスだわな お前自身がこう言っている > その上で人間は大きいプログラムの全体を把握することは困難だし > 機械的なチェックがしづらいという現実はあるって話だ。 ではWindowsと言う巨大プログラムにおいてMSの中の人はどの程度全体を把握していて、発生しうる例外を公開しているのか アプリケーション開発者はその公開情報をもとに *想定し* プログラムを組まなくてはならない さてアプリケーション開発者はOSなど下位のモジュールから飛んでくる例外をすべて想定できるのか? そもそも致命的な例外でアプリケーション自身の継続が困難な場合を除いて どんな例外でもあっても継続的な処理を可能にするのが例外処理だろうに (ここで言う継続的な処理とは問題なしとして先に進むだけでなく、異常があったとして正常な(処理の)出発点に戻るという意味でもある) 起こりえる例外をすべて想定せずともプログラムを安全に継続するための仕組みが例外処理だろ http://mevius.5ch.net/test/read.cgi/tech/1698705458/278
279: デフォルトの名無しさん (ワッチョイ 6332-A7R9) [sage] 2024/02/17(土) 15:09:15.47 ID:4+T7+QKn0 C++ の設計理念としては「そうは言っても現実はこうなっとるやろが!」という 状況に対処する方法があることも大事にしてはいる。 たとえ綺麗な方法ではなくても。 どのような問題が起こりうるのか (それなりには) きちんと想定するのは当然の大前提で、 それでもこれからリリースするソフトウェアに何が起こるかわからんのは仕方がないという話であって、 想定が不十分でも構わないという話でもない。 よくは無いが悪いときでもなんとかなるという程度の仕組みだよ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/279
280: デフォルトの名無しさん (ワッチョイ e33b-hZ+C) [sage] 2024/02/17(土) 15:39:40.77 ID:snTd9S980 >>271 一番いいのはコンストラクタの中でthisを渡す部分を何とかすることだけど、それが必ずしも間違ってるかは分からないので コンストラクタの中だけでその処理が呼ばれるなら生のthisを渡すことを許容しつつ、その処理の呼び出し可能範囲を限定するか そのクラスの構築をファクトリ関数経由に限定して、ファクトリ関数の中に構築とその処理呼び出しをまとめてしまうとか http://mevius.5ch.net/test/read.cgi/tech/1698705458/280
281: デフォルトの名無しさん (ワッチョイ 12ad-hHXc) [sage] 2024/02/17(土) 15:49:12.98 ID:mUyTgSzm0 > 想定が不十分でも構わないという話でもない。 誰もそれで構わないとは言っていないので それでも起きてしまうエラーや割り込みに対応するための仕組みが例外処理だろ 身も蓋もない言い方をするなら そもそも想定できているなら事前に排除するだけで済むわけで例外処理の必要もない (もちろん分かっていても事前に排除せず意図的に例外処理に丸投げすることもあるのは知っている) アプリケーション開発者にとってもっとも想定できない問題ってのは実行環境に起因するもの http://mevius.5ch.net/test/read.cgi/tech/1698705458/281
282: デフォルトの名無しさん (ワッチョイ 16cf-BOeC) [sage] 2024/02/17(土) 20:37:07.00 ID:QSMcEn770 >>272 >原因を調査して対策せずに予防的にテスト不十分のtry { } catch () をてんこ盛りにする方がソフトウェアー品質が上がるという考えのはおかしい 相変わらずずれてるな。 catch する == 原因を調査しない じゃないわけ。 >return -1; は呼び出し側のバグで見落とすかもしれないが >throw std::logic_error("*** ERR ***"); なら悪評千里を走ってバグの兆候が嫌でもワカル 戻り値のチェック漏れは静的局所的にチェックできるが例外は出てみなけりゃ結局澪とされるわけだが。 リリース後にユーザーサイドでその見落とされていた例外が発生してプログラムが落ちたりしたらそれはただのバグ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/282
283: デフォルトの名無しさん (ワッチョイ 1e85-XyAm) [] 2024/02/17(土) 23:18:00.46 ID:v62CV0mD0 >>278 > そもそも致命的な例外でアプリケーション自身の継続が困難な場合を除いて > どんな例外でもあっても継続的な処理を可能にするのが例外処理だろうに それは幻想 c++の例外安全の達成がどれだけ難しいか理解していないね 簡単にリークするし、オブジェクトが想定外の状態を持ったりする 動作保証ができない だから仕様に明示されていない例外が来たら基本は終了だよ そのまま継続してそれが原因でその後別の場所で落ちられたら無駄な調査の手間が増えるだけ http://mevius.5ch.net/test/read.cgi/tech/1698705458/283
284: デフォルトの名無しさん (ワッチョイ 16cf-BOeC) [sage] 2024/02/17(土) 23:48:07.59 ID:QSMcEn770 例外安全と例外の種類には特に関係はないわけで、知らない例外だと例外安全の保証が困難になるなんてこともない。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/284
285: デフォルトの名無しさん (ワッチョイ 6fbc-ERL4) [sage] 2024/02/18(日) 00:24:49.13 ID:JX7gxI3D0 >>284 例外の種類しか頭にないのか 任意の場所での例外発生に対応するなん現実的にできないということ http://mevius.5ch.net/test/read.cgi/tech/1698705458/285
286: デフォルトの名無しさん (ワッチョイ ffe0-UH2C) [sage] 2024/02/18(日) 09:00:09.02 ID:c1Urupub0 >>269 そのあたりの難しさを考えると、例外廃止してoptionalに統一したほうがいいかもな。 少なくとも例外みたいに変なフローで飛んで来ないし。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/286
287: デフォルトの名無しさん (ワッチョイ e3f9-NGC7) [sage] 2024/02/18(日) 09:39:44.00 ID:9f8IS57r0 ぶっちゃけ>>283がなに言ってるのかわからない 継続してそれが原因で? いやいやw 突如落ちるより、保存できるデータは保存してもらう機会を与えることは出来るだろ なんでお前は何事もなかったかのように作業を続ける前提でしか話を聞かないんだ? オブジェクトの状態が変わっているかも? 変更前のデータと比較して変わっていたらユーザに確認すればいいだろ 例えば図形情報のうちTopの読み込みで例外が発生した場合に想定してないからとアプリ落として全情報ロストさせる気か? Topは0で初期化させ読み込めなかったことをユーザに伝えて修正、もしくは再読み込みの機会を与えるだけの話だろ http://mevius.5ch.net/test/read.cgi/tech/1698705458/287
288: デフォルトの名無しさん (ワッチョイ cfcf-sYtR) [sage] 2024/02/18(日) 09:41:50.12 ID:WHoJTRhT0 >>285 >例外の種類しか頭にないのか >>283が仕様に明示されていない例外を話題にしているからだが。 >任意の場所での例外発生に対応するなん現実的にできないということ これはどういう意味なんだろうな。 着目するのは自分が呼び出している処理から上がってくる例外に対して例外安全かどうかであって それは基本的に局所的に判断できるもの。 下層の、例外が通過してきた処理が例外安全な実装になっているかどうかってのはそっちの責務。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/288
289: デフォルトの名無しさん (ワッチョイ e3f9-NGC7) [sage] 2024/02/18(日) 12:27:32.99 ID:9f8IS57r0 > これはどういう意味なんだろうな。 そうそれ tryブロックで囲った部分(つまり任意)の例外発生に対応するのが例外処理なのになにが出来ないというのか 想定している例外が発生して継続できると判断したなら続ければいいし ダメならユーザに通知してもちょも安全な方法を選択させればいい でもってそれは想定していない例外の発生でも同じ ただ致命的でどうしようもないなら強制終了させるだけの話で、想定していない例外はなんでもかんでも強制終了じゃ例外処理使う意味が薄まってしまう http://mevius.5ch.net/test/read.cgi/tech/1698705458/289
290: デフォルトの名無しさん (ワッチョイ e3f9-NGC7) [sage] 2024/02/18(日) 12:28:39.34 ID:9f8IS57r0 もちょも は もっとも の まちがい http://mevius.5ch.net/test/read.cgi/tech/1698705458/290
291: デフォルトの名無しさん (ワッチョイ 6f5b-ERL4) [sage] 2024/02/18(日) 13:22:22.19 ID:JX7gxI3D0 >>287 ファイル保存するなとか言ってない それぐらい終了処理のひとつだろ ログファイルもシグナルトラップして必ずフラッシュさせるのが常套手段だろ 意味不明な例外が発生しました データが破損してないかあなたが確認してください 動作無保証ですが処理継続しますか?yes/no こんなUIだすやつセンスの欠片もない http://mevius.5ch.net/test/read.cgi/tech/1698705458/291
292: デフォルトの名無しさん (ワッチョイ e304-hmqi) [] 2024/02/18(日) 14:01:41.78 ID:6Yt/CDIt0 私が20代の頃に見かけた論争が今も繰り返されてるのかわいい🩷 http://mevius.5ch.net/test/read.cgi/tech/1698705458/292
293: デフォルトの名無しさん (ワッチョイ ffad-mJpf) [sage] 2024/02/18(日) 15:55:07.22 ID:1iQutSwY0 >>291 それを思いついたお前のセンスがないと言うことになるが… 俺は確認しろと言っただけだし確認には様々な方法がある http://mevius.5ch.net/test/read.cgi/tech/1698705458/293
294: デフォルトの名無しさん (ワッチョイ cfcf-sYtR) [sage] 2024/02/18(日) 16:26:47.97 ID:WHoJTRhT0 >>291 まさか、何も言わずにいきなり落とす方が良いとか言うわけじゃあるまい。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/294
295: デフォルトの名無しさん (スッップ Sd1f-p9fr) [sage] 2024/02/18(日) 17:54:38.27 ID:L2mk1x1ad >>289 もちょカワイイよね http://mevius.5ch.net/test/read.cgi/tech/1698705458/295
296: デフォルトの名無しさん (ワッチョイ bf9a-/DPD) [sage] 2024/02/18(日) 18:17:37.55 ID:LeQ06zof0 >>280 実生活のあれと似てますよね。「引っ越すことになりました。新住所はXXです」と早めに 連絡したら、気の早い知人がそこに押しかけてきて「なんやまだ引越しとらんやんけ」となる やはり引越し作業完了を待ってからの方がいいのか。ってちがうか http://mevius.5ch.net/test/read.cgi/tech/1698705458/296
297: デフォルトの名無しさん (ワッチョイ 1b63-9XlH) [sage] 2024/03/02(土) 23:41:07.84 ID:C77pR/Zl0 >>282 >相変わらずずれてるな。 catch する == 原因を調査しない じゃないわけ >249に賛同いただけていないということは、発生してもいない例外について予防的にtry { } catch () を入れようとしていることは 確定的に明らか で、例外というブツは「例外なく」悪い知らせなので(∵仮に良い知らせを例外で寄越すライブラリがあったらそれ自体悪い知らせである 普通の人は悪い知らせが来る前に処置しようとする。すわなち例外が来ないように(可能な限り)修正する。 try { } catch ( ) でひっかけて原因調査兼確実な修正でざい、それが一番効率が良い方法論である、などと主張するのはおかしい人だけ…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/297
298: デフォルトの名無しさん (ワッチョイ 1b63-9XlH) [sage] 2024/03/02(土) 23:49:37.41 ID:C77pR/Zl0 >>284 例外安全というもののスコープに対して考察が足りていない 1. 例外安全なオブジェクト foo のデストラクトが他の例外によって引き起こされるケースでは foo の安全な終了は(メモリかファイルステムか何かが物理的にぶち壊れてOSがパニックになったとかでない限り ほぼほぼ保たれるから>>284のような言い方はできるっていやーできるが、 システム全体については>>283の通りであって全然安全ではない 2. fooの中の例外処理が本当に完璧かはfooのコードに書かれている全てのtry { } catch () について 全ての例外発生条件についてテストか厳格めのコードレビューでも行わないことには安全性が担保されない。 (つまり例外安全にした実装したと主張するだけでは話がただちには簡単にはならない http://mevius.5ch.net/test/read.cgi/tech/1698705458/298
299: デフォルトの名無しさん (ワッチョイ 1b63-9XlH) [sage] 2024/03/02(土) 23:57:46.67 ID:C77pR/Zl0 それはそうとして、予防的なtry{ } catch () の何が一番駄目かというと、設計上のトレードオフをわけわかんなくすることが確実な点 例外発生後の状況というのはたいてい>>283の通りのわけなので、何かを捨てて何かを取る (例えばシステムは最悪落ちても構わないが、例外安全なオブジェクトfooでリソースAの整合性は死守する等) のトレードオフが発生するがそういうのこそ慎重な設計と考慮が必要な事項であることは確定的にあきらか プログラムの全階層にtry { } catch ()入れたら完璧などというアフォはやっぱtry { } catch () しないのが正しい http://mevius.5ch.net/test/read.cgi/tech/1698705458/299
300: デフォルトの名無しさん (ワッチョイ 0fcf-0WZ8) [sage] 2024/03/03(日) 21:57:15.41 ID:735dldsp0 >>298 自分が呼び出す関数が例外安全にできているかどうかと自分の処理が例外安全かどうかをごっちゃにしてるだろ。 しかも、呼び出す関数からドキュメント化されていない想定外の例外が発生するなら例外安全に作られていないだろうという 変な決めつけが混じってる。 例外安全なコードは例外の種類に依存しない。知ってる冷害に対しては安全だけど知らない例外が飛んできたら安全じゃない なんてのはそもそも例外安全とは言わない。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/300
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 702 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s