コンピュータを 0 から作る ――「 CODE コードから見たコンピュータのからくり」

僕にとって初めての Petzold 本。
簡単に言えば、コンピュータの仕組みを回路レベルから解説している本なんだけど、その辺にあるアーキテクチャ本とは趣が全く違う。
だって、いきなりモールス信号の話から始まるんだぜ?
モールス信号からバイナリコードの話になって、そこからバイナリコードを回路として――間にブール代数の解説を交えつつ――実装していく。
確かにトランジスタや全加算器の解説をしている本は今までにも沢山あった。腐るほどに。
でもその知識が直接活かせたことはあっただろうか。
この本を読むということは、それらの知識と半田鏝を片手に Petzold おじさん*1のヒントにリードされながら、自分でコンピュータを作り上げていくということと同義だ ( 仮想的に、だけども ) 。
自分の手で半加算器を作り上げ、それを工夫して全加算器へと改良したり、さらにそれを改良して引き算も出来るようにしたり。
こういったことは、コンピュータの仕組みに興味があるなら、本当に素晴らしい体験になるはずだ。


まぁ大げさに書いたけど、ぶっちゃけ解りにくい所もあるよ。フィードバックとフリップフロップスの章の辺りからオートメイションの章の辺りまでとか特に難しい。
それから、ブール代数論理回路、デジタル回路といった類の知識が全く無いと読むのは大変かも知れない。
そういう場合は「柏木先生の基本情報技術者教室」辺りのコンピュータの基本的な仕組みを解説している本をさらっと読んでおくと読みやすいかもしれない。
そしてこの本はプログラマに必須って物でもない。
普通の奴らの斜め上を行きたいなら読んでおくべきだけど*2
終盤は現代 ( 近代? ) のコンピュータの歴史にちょっと触れて、今に至る流れを知ることが出来るような内容になっているけど、正直この辺りは不要だと思う。
そんなのは他の本に任せておくべきだった。


まぁそういうわけで、非常にお薦めです。
計算機工学や情報工学について知りたいならば、入門書としても良いかもしれません。
でも、気楽に読めるけど難しい本なので、読みたいときにパラパラ読む、というスタイルで良いと思います。
完全に理解してなくても大抵の場合は先に進めます。さすがにメモリの仕組みは理解出来ないと進めませんが。
本気で理解したくなったら再読してみるとか、他の解説書も眺めてみるとかそういう読み方もアリだと思います。
学校で下手な教科書を読んでアーキテクチャのことが嫌いになりそうな人は読んでみると好きになるかもしれません。


それから、僕はこの本を Joel Spolsky のお薦めリストで見つけて読み始めたんだけど、彼のレビューほど軽い内容の本じゃない。
プログラマの場合、それなりに工学の知識を持っている人間じゃないと面白いとは思えないだろう。

*1:おじさんって言っちゃ悪いですよね

*2:本当に上を行きたいなら Lisp を勉強するべきらしいですね。僕はリスト遊びは全く出来ませんが。