コンピューターが非常に根本的な方法で壊れるという話を聞いたことがないのはなぜですか?
ハードウェアは非常に複雑であり、ハードウェアが意図したとおりに機能することを確認するのは膨大な数のエンジニアの仕事です。Intel、AMD などはチップをリリースするたびに、設計を広範囲にテストし、工場から出荷する前にあらゆる種類の診断を実行しました。彼らには、これを行う経済的インセンティブがあります。どこかに間違いがあると、非常に高くつく可能性があります。例としてIntel FDIV バグを見てください。
x を double として宣言すると、それは double のままになるのはなぜですか? 一部のバイトを奪って整数にする短絡回路が決してないのはなぜですか?
これの一部は、アセンブリがどのように機能するかに関係しています。通常、コンパイルされたアプリケーション バイナリには型情報が含まれていません。代わりに、「0x243598F0 の位置にある 4 バイトを取得してレジスタにロードする」などのコマンドを発行するだけです。変数の型を変更するには、膨大な量のアプリケーション コードを変更する必要があります。変数のスペースを過小に割り当てるエラーが発生した場合、スタック レイアウトが台無しになり、おそらく非常に迅速なプログラム クラッシュが発生する可能性があるため、結果は「型が変更された」ではなく「クラッシュした」となる可能性があります。バイナリ レベルでは、double 型と整数型の操作が大きく異なるためです。
x を 10 に初期化すると、x が 11 になるような電力サージが発生しないと信じているのはなぜですか?
あるかもしれません!ただし、ハードウェアの担当者がすべてをうまく設計しているため、非常にまれです。ソフトウェア エンジニアであることの素晴らしい点の 1 つは、食物連鎖の頂点に立つことです。
- ソフトウェア エンジニアは、オペレーティング システムで動作するソフトウェアを作成します。
- これはシステム プログラマによって作成され、ハードウェアと対話します。
- これは電気エンジニアによって設計され、ハードウェア ゲートから構築されています。
- 材料エンジニアによって製造および設計された、
- 採掘技術者の努力で素材を手に入れた人、
- 等
多くのエンジニアがチェーンの各リンクで良い生活を送っているため、すべてが十分にテストされています. エラーが発生し、実際のコンピューター システムがダウンすることはありますが、数千または数百万のコンピューターを実行していない限り、比較的まれです。
お役に立てれば!