「あなたはコンピュータを理解していますか?」を読んで
一見挑戦的なこのタイトルのサイエンス・アイの新書(ISBN978-4-7973-3949-9)を読もうと考えたのは、著者がどのようにしてコンピュータを説明するのか興味があったからだ。僕自身は商売柄コンピュータとは、といった話をすることが多いのだが、たまには他の人の考え方も参考にしたい。もしかしたら話のネタとして今後使えるものもいくつかあるに違いない。
そもそもコンピュータを理解するとはどういったことなのだろう。誰でも多かれ少なかれコンピュータを理解しているはずだ、いや理解していると思い込んでいるはずだ。インターネット・サーフィンやメールを使えていれば、いやいや開発者の立場でアプリケーション・プログラムを作っていれば、そうではなくてオペレーティング・システムやハードウェアの振る舞いを理解してシステム・プログラミングを行なっていれば理解したと言えるのか、人によってレベルは様々であろう。
僕の理解が正しければ、この本で展開されているのはどちらかと言うと、工学系ではなく理学系の話のようだ。個々の技術が話題の中心になっているのではなく、その情報理論的背景に踏み込んでいる。僕のような文系人間にとっては、どこかで聞いたことがあるけれどもきちんと学習したことがない、そして何となく頭の隅に中途半端に引っ掛かっていながら忘れ去っていたことに、きちんと向き合おうという姿勢が求められる。話題になっているのは、エントロピー理論や有限オートマトンや、何故かキャッシュメモリーの原理である。そしてこれらの高尚(?)な理論がいきなり日常世界にワープしてやってくる。例えばエントロピーはこの本ではインスタント味噌汁の塩分のありがたさであり、有限オートマトンは中に人がいるダンボールで作った自動販売機である。
例えばダンボールで作った自動販売機には電卓を持ち込むことはできないという制約があるので、投入されたコインを識別するだけで、清涼飲料水を排出してもよいのかどうかを判断しなければならない。そのためには予めチェックシートを用意して、現在どの状態にあるのかを認識し、必要に応じて状態が移り変わってゆく様子に追随しなければならない。そしてそのチェックシートは有限の大きさを持っている。だから有限オートマトンというわけなのだ。この状態遷移を図式化しておけば、いずれはきちんとしたプログラムに焼直すことができるようになる。いきなりif then elseなんて書き始めたらどこかで破綻してしまうので、一見回り道ではあるが状態遷移をきちんと把握することが、正確なプログラミングのための早道のようだ。確かに何かの制御系機器の振る舞いをプログラミングしようと思ったら、この考え方はそのままあてはまるだろう。
こんな具合に、無茶な例えの連続であるが、それなりに情報理論の1日入門は仕上がったような気になる。例そのものはわかりやすいのだけれど、現実のコンピュータと結び付けるには、まだまだ中間のギャップを埋めるための理屈付けが必要かもしれない。この距離感をよしとするならば、情報理論の香りをかぐのに適した本だと思う。