パソコンをはじめとするコンピューターはデジタルであると習いました。昔はアナログコンピューターというものもありましたが、現在はほとんどがデジタルです。
そんなコンピューターですが、深いところではアナログです。電気の流れでオンとオフの1つの状態(これがデジタル)を表すわけですが、電気が流れるということはアナログな物理現象です。金属で作られた回路は、ノイズというオンともオフとも言えない様な中途半端な状態を避けることができません。
物理的にはアナログですが、プログラムという論理的な面は完全にデジタルです。1を表現するように書いたプログラムは必ず1であって、1.123や0.985などになったりはしません。プログラムはプログラマーの書いたとおりの内容になります。不自然な結果を出すようになっていたとしても、それはプログラマーの命令したとおりに動いたに過ぎません。
デジタルである論理的プログラムをアナログな物理的コンピューターで動かしたとき、物理現象が論理的プログラムの動きを邪魔してしまうことがあります。電気の流れる速度や目的地に到着するタイミングのズレなどによる現象です。基板上で回路が曲がりくねっているのは、タイミングを合わせて同時に目的地に到着するようにするためなのです。処理速度が上がればあがるほどタイミングのズレは無視できないほどシビアなものになります。
コンピューターはクロックというリズムに合わせて動作を繰り返します。クロックはダンスのときの手拍子のようなもので、次に手を打つまでに処理を済ませなければなりませんが、移動距離が長いと間に合わなかったりします。最近HDDの接続方式の標準がパラレル通信からシリアル通信になったのも同じ理由からです。80本もの導線でタイミングを合わせるためには限界になったのです。
最近では、宇宙線によってメモリモジュール上のデータが書き換わってしまうという現象が発生しています。半導体に含まれる物質に宇宙線が作用し、オンの状態がオフに、オフの状態がオンに変わってしまう現象です。データが書き換わるだけで物理的に回路が壊れるわけではありませんが、これもプログラムの動作エラーを引き起こしてしまいます。このような現象はソフトエラーと呼ばれています。
アナログとデジタルの狭間に存在するコンピューターは、もしかするとものすごく不安定な存在なのではないかと最近思います。物理現象で動いている限り、コンピューターはアナログからは逃げられないのかもしれません。複数の状態を同時に持つことができるという量子コンピューターはどうなるのでしょうか。