アカウント名:
パスワード:
リアルタイム信号処理のプログラム書きますが、立ち上がってすぐは入力データが用意されていないでクリアしたバッファの初期値で演算(たとえばパイプラインADCとか使っていて入力に遅延がある)なんてことは普通にあり得るので、アルゴリズム中に割り算があるとき(正規化とかAGCとか)では 0割が発生しないように 除数がゼロかどうかあらかじめチェックします。そして、結果を後段アルゴリズムの制約上問題ない値とします。例外なんて起こさない方がいいし、誰か書いていましたがそんな機構は無い場合もあるしで予測される例外は基本的に排除(生起しないように手を打つ)すべきです。データが用意されるまで待てばいいんだけどね。演算側の水際でも処置しておかないと安心できないつーか、後段の用途によって0割の結果値を吟味するのって普通だと思いますが(0で駄目なら非0の微小値とかそもそものアルゴリズムをスキップするとか)そういうこと考えないでプログラム書いてるんですかね。
業務計算のプログラムとか除算の嵐です。しかも本来そこに、データエラーでない限り、0はありえないという場合も多い。ありえないので処理しない、テストもしないというわけ。
で、データエラーというのは頻繁に起こるわけです(爆笑)笑ってる場合ではないですが。
それ根本的に間違ってるよ。おもしろ狙いじゃなくて本気で言ってるの?あり得ないことが起きるのが現場なんだよ。あり得ないことがあり得てないことをチェックしろよなんでそういうあり得ないからあり得ないのでチェックしないみたいな思考するかな
いやさ、「あり得ないもの」を「正常に処理しなきゃいけない」っていう動機が無いわけよ。「あり得ないもの」が「ある」時点で、どう取り繕おうが「終わってる」のには変わりないわけよ。
それを顕在化させるか、既に意味のないものだから無視するかというケースはそれぞれにあるわけで普遍的な正解があるわけではない。
業務系で言うなら、「割り勘処理に人数0人の例外処理をホントに仕様化する必要あるの?」って話だから。
チェックするのが正しいけど、チェックする事に何の意味もないし、チェックしなくて困る奴もいない。
>チェックするのが正しいけど、チェックする事に何の意味もないし、チェックしなくて困る奴もいない。
ただ、実際問題として全部一人で見切れるボリュームならよいけど、かき集められた元うどん職人とかが書いたコードとかからいきなり0とか投げつけられることもあるわけで。
よたよた進んで密かに計算間違うぐらいなら、盛大に「エラーです」と止まってくれた方がよいし、自分の責任では無いと表明できるのです。
これは仕様の綺麗さとか、ポリシーとかではなくて、単に保身・保険の問題です。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
割り算させない (スコア:5, 参考になる)
リアルタイム信号処理のプログラム書きますが、
立ち上がってすぐは入力データが用意されていないでクリアしたバッファの初期値で演算
(たとえばパイプラインADCとか使っていて入力に遅延がある)
なんてことは普通にあり得るので、アルゴリズム中に割り算があるとき
(正規化とかAGCとか)では 0割が発生しないように 除数がゼロかどうか
あらかじめチェックします。そして、結果を後段アルゴリズムの制約上問題ない値とします。
例外なんて起こさない方がいいし、誰か書いていましたがそんな機構は無い場合もあるしで
予測される例外は基本的に排除(生起しないように手を打つ)すべきです。
データが用意されるまで待てばいいんだけどね。
演算側の水際でも処置しておかないと安心できない
つーか、後段の用途によって0割の結果値を吟味するのって普通だと思いますが
(0で駄目なら非0の微小値とかそもそものアルゴリズムをスキップするとか)
そういうこと考えないでプログラム書いてるんですかね。
Re: (スコア:1)
業務計算のプログラムとか除算の嵐です。
しかも本来そこに、データエラーでない限り、0はありえないという場合も多い。
ありえないので処理しない、テストもしないというわけ。
で、データエラーというのは頻繁に起こるわけです(爆笑)
笑ってる場合ではないですが。
Re: (スコア:1)
0がデータエラーでない限りありえないということであれば、データチェックのバグと考えるのが普通で、そのバグの回避を下流の処理で行わせなければならないようなシステムの方こそ品質に問題があります。
上流処理にデータチェック処理が存在しないということであれば、それはまた別の意味で問題ですが…。
Re: (スコア:0)
それ根本的に間違ってるよ。おもしろ狙いじゃなくて本気で言ってるの?
あり得ないことが起きるのが現場なんだよ。あり得ないことがあり得てないことをチェックしろよ
なんでそういうあり得ないからあり得ないのでチェックしないみたいな思考するかな
Re: (スコア:0)
いやさ、
「あり得ないもの」を「正常に処理しなきゃいけない」っていう動機が無いわけよ。
「あり得ないもの」が「ある」時点で、どう取り繕おうが「終わってる」のには変わりないわけよ。
それを顕在化させるか、既に意味のないものだから無視するかというケースはそれぞれにあるわけで
普遍的な正解があるわけではない。
業務系で言うなら、
「割り勘処理に人数0人の例外処理をホントに仕様化する必要あるの?」
って話だから。
チェックするのが正しいけど、チェックする事に何の意味もないし、チェックしなくて困る奴もいない。
Re:割り算させない (スコア:0)
>チェックするのが正しいけど、チェックする事に何の意味もないし、チェックしなくて困る奴もいない。
ただ、実際問題として全部一人で見切れるボリュームならよいけど、
かき集められた元うどん職人とかが書いたコードとかから
いきなり0とか投げつけられることもあるわけで。
よたよた進んで密かに計算間違うぐらいなら、盛大に「エラーです」と止まってくれた方がよいし、
自分の責任では無いと表明できるのです。
これは仕様の綺麗さとか、ポリシーとかではなくて、単に保身・保険の問題です。