深き海より蒼き樹々のつぶやき

Sochan Blog---深海蒼樹

『思考する機械 コンピュータ』(ダニエル・ヒリス著)を読みはじめたら、『痛快!コンピュータ学』(坂村 健)を読み返したくなった

 名著と呼ばれている、古典的な著書であるらしい。
 僕は、小飼弾氏のブログの石の模様 - 書評 - 思考する機械コンピュータというエントリーにて、この著書を知った。
 原題は、THE PATTERN ON THE STONE:the simple ideas that make computers work

 読みはじめるとすぐ、ヒリスのこんな言葉にぶちあたる。

 コンピュータは人類の創造物の中でもっとも複雑なものである。しかし、根本的な仕組みは驚くほどシンプルだ。

 そう言えば、帯にだった書いてあった。
 もっとも複雑な機械だが、その本質は驚くほど単純。だと。

 コンピュータの基本が2進法であることは、多くの人が知っている。僕だって、知っているのだから。
 そして、元々は、コンピュータが10進法で作られていたことも、知っている。ついでに言うと、だから、うまくいかなくなっていたことも。
 僕は、1999年に出版された『痛快!コンピュータ学』という、坂村健氏の本をひっぱりだしてきて、該当するページを繰りはじめた。

sakamura_ken

 帯に見てとれるように、
 特別出演/ゴルゴ13山科けいすけ氏書きおろしギャグ
まで入った豪華な内容だ。
 帯の裏には、
 さいとう・たかを氏(ゴルゴ13作者)も激賞!
と、謳われている。

 そして、その下には、著者の言葉としてこんな抜粋が書かれている。

「コンピュータがもっと身近なものになればなるほど、問われてくるのが、コンピュータの本質につながる理解であり、知識です。これからの高度情報化社会を生きていくには、こうした基礎知識がますます重要になってきます。私が世界ではじめての『コンピュータ学入門書』にチャレンジしてみようと決心したのは、こうした思いがあったからに他なりません」(まえがきより)

 坂村健氏とは、東京大学教授であり、TRONプロジェクトのリーダーとして世界的に名を馳せた、コンピュータ学者である。専攻としては、電脳建築学という分野になるらしいが、もはや僕にはチンプンカンプンで、お手上げだ。
 ざっくりとした、『コンピュータ学者』という言い回しが、素人の僕には最もとっつきやすく、イメージしやすい。
 にもかかわらず、僕は、昔から、この『コンピュータ学』とやらの話に、興味がある。

 自動車がどうしてあんなに高速に安全に走行できるのか、我々のお茶の間にあるテレビがどうやって番組を受信し、リモコンのボタンひとつでそれをいとも簡単に、怠惰に寝転びながらでも享受できるのか、はたまた、黒電話がなぜ音声を繋ぐことができるのか、といったことには、あまり関心がないというか、その構造なり原理を知ろうという気にはならない。
 なのに、なぜかコンピュータの仕組みには、興味がある。
 前述のいろんな科学技術に関しては、聞いたってわかりっこないとハナから匙を投げてるというのに、『チンプンカンプン』だと言いながらも、コンピュータについては、なぜか『知りたい』という気持ちがおさまらない。

 で、10進法の話だ。
 2進法の、「0」か「1」かという設定は、容易に「Yes」か「No」かの二者択一を僕に想像させる。
 選べるものが2つしかないよりも、10個あったほうが断然いいように、僕には思える。
 けれど、歴史は、逆だった。

 坂村氏の著書をかいつまんでみる。

 10進数で電子計算機を作ろうとした場合、  

  • 理屈としては、1というデータの時には1ボルトの電圧、2というデータの時には2ボルトの電圧と、データに比例した電気信号を流してやることで計算回路を作ることができる。
  • 電気回路には、誤差や雑音、歪みが生じやすく、1ボルトの電圧が1.2ボルトになるとそれだけで誤差が生まれて計算結果に影響が出てしまう。
  • 2進数だと、電子回路では、電気が流れる状態を1,流れていない状態を0とすることで、ONとOFFとの判断だけで、誤差の生じる可能性が激減する。

 これで、めでたし、めでたし、では、2進法で電子回路を作ろう。
 としたのだけれど、話はそううまくはいかなかったらしい。誰もが2進数に不慣れで、どう扱っていいのかがわからなかった。と、そこに現れた救世主が、ジョン・ブール。19世紀イギリスの数学者で、哲学であった論理学を数学に変えた男と呼ばれている。

 論理学者、アリストテレスの三段論法、

という論理(言葉)を、数学(数式)に置き換えられるようにしたのが、ブール代数なわけらしい。
 当時の技術者たちは、人間がやることを人間がやるよりも、もっと早くもっと正確にと思って、コンピュータを作ろうとしていたことだろう。
 しかし、開発は、頭の中で描いたほど、うまくはいかなかった。そして、その頭打ちを打開したのが、人間の思考(言葉)を数学(数式)に置き換えたブール代数という数学理論であったことは、偶然だったのか、ある種の必然であったのか。
 なにはともあれ、ブール代数のおかげでコンピュータはブレイクする

 とは言っても、2進数だけで、なぜ『思考』できるのかという疑問が浮かぶ。
 というか、2進数が『単純』で『シンプル』であることは、納得というか、実感できるとしても、そんな『単純』なものがなぜ『複雑』なものになり得るのかが想像できない。
 だって、「0」か「1」か、「YES」か「NO」か、または、「ON」か「OFF」しかないのだから。

 と、そこで、出てくるのが、『論理回路』である。
 ブール代数は、数種類の演算方法を組み合わせることで、複雑な計算が可能であることを証明している。
 具体的に言うと、
 ANDORNOTだ。
 この3つからコンピュータは成り立っている。
 「0」と「1」の2つじゃないのかって?
 そう、「0」と「1」の2つがあれば、「AND」と「OR」と「NOT」が作れる。

logic_circuit

 上の下手な図形の写真が何をあらわしているのかと言うと、
 【AND回路】
 「Aが正しく、かつ(AND)、Bも正しければ、Cも正しい」という論理学の言葉を、2進数に置き換えて、正しい=1 正しくない=0 とする。
 と、Aが1であり、Bも1のときだけ、Cも1ということになる。
 そして、これを、電気回路に置き換えて、1は、電気が流れている状態とし、0は、電気が流れていない状態とする。
 となると、Cから電気が流れ出る場合は、4パターンのうちの1パターンしかないことになる。Cが、1のときだけなのだから。

 【OR回路】
 OR回路の場合は、「A、または(OR)、Bが正しければ、Cも正しい」という論理式になるわけで、言い換えれば、「AとBのどちらかが正しければ、Cも正しい」ということになる。
 この場合は、4パターンのうち、3パターンが1になることになる。

 【NOT回路】
 NOT回路は、ANDやORとは違い、2つの数値から答えを導きだすというような構造にはなっていなくて、論理学で言うと、「真」を「偽」に、「偽」を「真」に変えるための回路になる。
 Aから信号が入れば、Cからは出さない。Aから信号が入らなければ、Cから信号が出すという具合のもの。

 要は、この3個の基本形、「AND」と「OR」と「NOT」の3つが作れたら、コンピュータが作れ、それらを、より『複雑』に組み合わせることで、もっと『複雑』な計算が可能になる。
 特定の形のブロックを組み合わせることで、より複雑な別の形をしたモノが生み出される、LEGOブロックのようなものだ。と、僕は想像する。

 と、なんだかわかっている風に書いてきたけれど、実は、さほどわかってはいない。あくまでも、わかった気になっているだけのことだから、質問されても答えられない。
 けれど、坂村教授は、それでいいと、言ってくれる人なのだ。

コンピュータ学をマスターするこつは、「とりあえず分かった気になれば、それでいい」と考えることです。一度に何もかも理解しようとするのは、コンピュータ学では失敗のもと。まじめな人にコンピュータの苦手な人が多いというのは、この「とりあえず」ができないからです。その意味ではコンピュータ学は英語の勉強に似ています。「なぜ同じBE同士が、Iが主語の時はamになり、Youのときはareになるか」なんて疑問は「とりあえず」横に置いといたほうが英語はマスターしやすい。それと同じです。

 こういった基本的なことを踏まえた上で、もしくは、分かった気になった上で、ヒリスの『思考する機械』を読むとより面白いに違いない。
 ヒリスの本の中でも、第1章と2章は、「これを知っていないと面白い話ができないという基本的な」基礎知識を取り上げて、紹介・説明している。が、イラスト付きで、日本人である坂村教授が説明したものの方が、少なくとも僕にとっては理解しやすい。
 そして、坂村教授が、電卓とコンピュータの大きな違いについて書かれているくだりは、技術的な違いを越えて、非常に哲学的でもあり、まさに、では「コンピュータとは、なんなのか?」といった、根源的な問いかけを内包しているように見える。
 そして、僕は、確かに、15年前に坂村教授のこの本を買って読んで、その時はその時で、「コンピュータとは、なんなのか?」を考えたんだよな、と、遠くを見る目になる。
 どんなことを考え、どんな結論を導き出したのかは、よく覚えてないけれど。

 果たして、コンピュータとは、『思考する機械』なのだろうか?
 『プログラミング』とは、『思考』なのだろうか?
 『人工知能』とは、なんなのか?
 人間の脳そのものは、機械(マシーン)であるのだろうか?
 人工知能や、ユビキタスが、当然のものとして語られだした今、もう一度、『コンピュータ』とは何なのか?を、僕なりに考えてみることにしよう。これらの書物のサポートを受けながら。