トップページ⇒tech
33コメント10KB

コンピュータをどこまで信用すればいいのか

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/10/30(日) 19:06:29
コンピュータと言えどたまには計算間違いもするわけで、
そこは実際のプログラムではどの辺まで考慮すべきなのか

特にファイルとか消すような処理を書く時に、この変数の初期化間違えたらどうなっちゃうだろうとか、
そんなことまでほとんど無駄とは知りつつ気になってしまう
こんな病気の人俺だけじゃないはず
0002デフォルトの名無しさん2005/10/30(日) 19:11:19
十分に確率は低いんだから、コード書くときは完全に無視してもいいんじゃないか?
0003デフォルトの名無しさん2005/10/30(日) 19:11:47
              
    ∬   ∧,,∧    
     ~━っミ ゚Д゚彡,,   
    ∀._(,,,~  ,,,~⊃_
━┳┷ |. ,(~ヽ,,,ミ.    
  ┃...| ̄ ̄し'J.  ̄ ̄ ̄
  ┻ ヽ ̄ ̄
0004デフォルトの名無しさん2005/10/30(日) 19:20:59
>>1
ひとつだけアドバイスをやろう。
ちゃんとテストしろ!!
0005デフォルトの名無しさん2005/10/30(日) 19:21:59
>>4
計算機を信用できないのにテストしても無駄だろ。
000642005/10/30(日) 19:23:07
>>5
>特にファイルとか消すような処理を書く時に、この変数の初期化間違えたらどうなっちゃうだろうとか
テストすればいいだけ
0007デフォルトの名無しさん2005/10/30(日) 19:27:23
スレッド作る時なんかは、コンピュータの事は一切信用しないな。
2つのスッドレ動かそうとすると、極端な話、片方のスレばかり動いてる〜みたいな
状況も考えてコーディングするしな。

もちろん、片方のスレでyieldすれば、ちゃんともう片方が動き出すってのは
コンピュータを信じるしかないけどね。。。
0008デフォルトの名無しさん2005/10/30(日) 19:31:14
自分のバグばかりでよく止まるプログラムをコンピュータのせいにする人が多すぎてこまるな。

>>7
馬鹿。それはコンピュータの問題ではなくOSの話だろ。
OSをNT以降に変えろ。それで問題は解決する。いつまでも95とか98使ってるな、馬鹿。
000952005/10/30(日) 19:33:29
>>6
「この変数の初期化」を計算機が間違えたかどうかをわざわざテストするのか?
テストってのはコードが正しいかどうかを検証するものだと思うが。

>>7
それはコンピュータというよりosの問題だと思う。
0010デフォルトの名無しさん2005/10/30(日) 19:36:42
>>9
むしろ教えてくれ。計算機が初期化を間違えるってどういうときに起こる?
0011伝説新人タクシ2005/10/30(日) 19:37:29
つパリティチェック
>そんなことまでほとんど無駄とは知りつつ
至極無駄
高々ビットの欠損やら異常を気にするよりも、
Windowsの中がどうなってるかとか調べるほうがいい。
>この変数の初期化間違えたらどうなっちゃうだろう
というのがミソだな。初期化間違いは>>1で「バグが出た」と。
0012デフォルトの名無しさん2005/10/30(日) 19:38:06
4様
0013デフォルトの名無しさん2005/10/30(日) 19:38:20
木星につくまで信じてろ
0014デフォルトの名無しさん2005/10/30(日) 19:40:08
計算機が計算を間違える確率より、自身のバグで落ちる可能性の方がはるかに高い。
だから心配する必要はないよ。
0015デフォルトの名無しさん2005/10/30(日) 19:42:52
疑い続けて結局騙されない人生より
信じ続けて何度も騙される人生の方がいい
0016デフォルトの名無しさん2005/10/30(日) 19:43:19
>>10
俺はハードウェアの事は詳しくは分からんが、物質で構成されてる限り間違いはあるだろ。
熱暴走なんてのは「計算機の誤り」なんじゃないのか?
0017デフォルトの名無しさん2005/10/30(日) 19:44:17
>>15
だから何度もだまされるほどおきないっちゅーの
自分のバグで計算間違いが起こる可能性のほうがはるかに高いのに
0018伝説新人タクシ2005/10/30(日) 19:50:52
>>16
あなたのパソコンは耐水性のパソコンですか?それとも
M7の地震の最中、駆動し続けるパソコンですか?
0019デフォルトの名無しさん2005/10/30(日) 19:53:32
うちの子はたまにお茶こぼしたり、
猫のしっぽ踏んづけたりしてますよ。
0020デフォルトの名無しさん2005/10/30(日) 19:54:57
>>19
だから何?
0021デフォルトの名無しさん2005/10/30(日) 19:55:39
>>18
温度は統計的な量だから、高い温度で起こることは全て低い温度でも起こると思うがどうか。

もっとも、現実に問題になる頻度で起こるかどうかは別の話だが。
0022デフォルトの名無しさん2005/10/30(日) 20:40:31
とりあえず、Pentium 66Mhzと Pentium 90MHzのFDIVは信用しません…ってあれからちょうど11年経ったか。
0023デフォルトの名無しさん2005/10/30(日) 20:55:13
assert書きまくれ。
0024伝説新人タクシ2005/10/30(日) 21:23:53
>>1 まず勉強しろ。
>>21
異常が表面にでないだけかもよ? だがそれでいい。
修復やチェックをしていくという発想もある。
ネットワークでは伝送遅延などの障害が起こるが、
さして問題のなく正常に動作している。
確かに、OSやそのバージョンにもよるが、長時間の駆動、高温状態では
システムが不安定になる確率が大きく上がる。なら確率をさげてやればいい。
0025デフォルトの名無しさん2005/10/30(日) 22:03:53
>>8
とあるアドレッシングでボローが立たないバグ持ちの6502に当たった事がある。
今だったら、テストなんて無意味かもと思って鬱になるかもしれない。

宇治の奴じゃないからね。
0026デフォルトの名無しさん2005/10/30(日) 22:33:48
熱暴走とかそのマシン固有の現象だったら
ほかに計算機2,3台用意して
答え合わせしながらプログラム実行していけばええんじゃないの?
アポロとか昔の宇宙船はそれで飛んでたと思ったけれど。
0027デフォルトの名無しさん2005/11/03(木) 14:15:00
int i = 10;

その後代入を1度も行うことなく、iの値を参照するときに
10がちゃんと返ってくるのかみたいなこと?
0028デフォルトの名無しさん2005/11/03(木) 17:10:07
>>27
返って来るに決まってる。
ってか、1度も代入することなくって、プロセス終了するまで?
0029デフォルトの名無しさん2005/11/04(金) 01:05:15
iの領域のメモリが壊れてないかって事だろ?
0030デフォルトの名無しさん2005/11/04(金) 03:12:20
なにかの計算をした時に結果を書いた紙が破けたらどうしよう?
とかそういう心配をする事に意味がある時と無い時がある。
0031デフォルトの名無しさん2005/11/04(金) 03:19:49
たまにWindowsXPで特定のアプリ(メディアプレイヤーとか)が何か失敗たのか
わかりませんがおそらくなんらかのタイムアウトだかのポーリング状態になって
CPU100%状態になるんですが、こういったことを未然に防ぐ方法はないですか?
例えば常に70%を上限にするとか。
あるいはタイムシェアを平等に取るモードに一発で移行するとか。
(エヴァンゲリオンのウイルスの話でありましたよね。何とかモードに切り替えて!みたいな)
このままではタスクマネージャから終了させるのも一苦労です。
0032デフォルトの名無しさん2005/11/04(金) 11:25:15
単体のコンピュータだと誤りとかは気にしなくてもいいと言う立場は
正当化してもいい気がするけど、ネットワーク上ではそうはいかないよね。
単体のコンピュータでの誤りを気にするなら、適当にコンピュータ内部を
ネットワークとして形式化して考えてプログラムを組めばいいんじゃないの?

# 真の Z80 のインデックスレジスタに裏はないけど、 PC-8001 の CPU のインデックス
# レジスタは裏があって EXX で値が消えてた。
0033デフォルトの名無しさん2005/11/04(金) 16:18:08
>>31
つ優先君
■ このスレッドは過去ログ倉庫に格納されています