見出し画像

半世紀前の本で魔法を解く「電子計算機の誕生(高橋秀俊)」を読んで

最近の私は、オセロAIの制作を通して計算機そのものへの興味を抱いています。(*1)

出会い

私は筑波大学に所属しているのですが、こないだ体芸図書館(*2)でふらふらと散歩していたところ、面白そうな本を見つけたので借りて読んでみました。

高橋秀俊「電子計算機の誕生」中公新書


奥付を見ると、かなり古い本であることがわかりました。発行は昭和47年ですので、ちょうど50年ほど前の1972年です。そして著者は1915年生まれです。


ざっくりした内容

全体的な内容は主に、著者が大きく関わったパラメトロン計算機のPC-1(1958年完成)に関する話ですが、それ以外にも、計算機開発を主軸にした日本の状況が詳しく書かれており、とても興味深い内容でした。

ただ、パラメトロンの話になると(著者の本業が物理学者なだけあって)パラメトロンの動作原理から詳しく書かれていたりと、いきなりギヤが上がって驚きました。おそらくパラメトロン計算機は出版時点ですでに廃れており(今日まで主流のトランジスタ式が残りました)、そのためにこの本はパラメトロン計算機についての紹介も兼ねていたのだと推測します。


印象に残ったこと

この記事を書く前に本を図書館に返却してしまったため、私の記憶とメモを元に書きます。軽微な間違いがある可能性があります。

また、専門用語の解説はさすがにこの記事では行いません。細かい専門用語は知らなくても読めるように書いたつもりです。また、読みながら用語を調べやすいようにキーワードを散りばめたつもりですので、気になる方は調べつつお読みください。

物量の話

戦後すぐの日本はやはり物量がなかったようで、アメリカで世界初の真空管式計算機ENIACが開発されたと聞くと、著者はもはや別世界の出来事のように感じたとのことです。この本が出版された1970年序盤は高度経済成長期の最終盤で、日本の経済規模がとても大きかったでしょうから、そのような前提もあっての記述でしょう。

しかし、ENIACは信じられないほど大量の真空管を使っていたので、著者はこれについて知ると、その真空管の多さに驚きつつ、

もっとほかに何とかやりようがありそうだ

電子計算機の誕生

と思ったそうです。

記憶装置の話

一般的な話として、計算機は演算部分の他に(一時)記憶装置がとても大切です。

当時は演算装置自体もたくさんの方式が提案され、それぞれ研究されていました。それと同様に、記憶装置も様々な方式があり、それぞれの特性と、さらに演算装置の特性とも合わせて組み合わせていたそうです。私は記憶装置について特に無知でしたので、これは興味深く読みました。

記憶装置について本に掲載されている印象的なもので、水銀槽記憶装置がありました。そして、後にPC-1開発において記憶装置として水銀槽記憶装置を考慮したらしいのですが、本文を引用すれば著者は

水銀などという、どぶどぶして、しかも重い、扱いにくいものを使う必要はなかろう

電子計算機の誕生

と思ったそうです。私は個人的にこの一文がとても好きです。この一文は、まさに水銀を普通に使っていた人だから書けるものだと思ったのです。今となってはトリチェリの実験に使うことはおろか、水銀体温計すら見なくなりました。私自身、物理実験で水銀温度計を使ったり、気圧を調べるときに気圧計に水銀が使われているのを見た程度です。「どぶどぶして、しかも重い」と言えるほどの経験はありません。

ちなみに、私の中高生時代に地学の授業でトリチェリの実験をしたときには、水銀の代わりに水を使いました。水だと10m程度の高さが必要なので、地学室のある4階からチューブを垂らしていました。水銀なら76cmで済むのになあと思った記憶があります。

ところで、PC-1の開発にあたって、この本にはさらに面白いことが書かれていました。

いつの時代にも、演算素子の進歩のほうが先に進んで、いつも記憶素子が足かせになっている

電子計算機の誕生

ここではまず、記憶装置と演算装置を明確に分離する話がありました。一般に、記憶装置は演算装置と同じ素子を用いてフリップフロップ回路などを作れば構成できます。しかし、記憶装置の容量を増やせばその分素子を多く必要とするので、高価で煩雑になります。そのような経緯もあって、計算機を作るにあたって適切な記憶装置を用意することが必要となったのです。

本文によれば、演算素子については何かのために開発したものがたまたま演算素子として有用であるということが多かったようです。現代の私たちが理解しやすい例を出せば、トランジスタがまさにそうです。

演算素子が既存技術の応用として使えるのに対して、記憶素子は多くの場合、元々あった技術ではなかったそうで、それもあってか、上に引用した通り、記憶素子の技術がボトルネックだったようです。

2023年の今はどうなのだろうと思ったのですが、私はまだ知識不足で明確には判断できませんでした。しかし、一つ体感として思うのは、演算装置と記憶装置の間の通信がボトルネックになりがちなことです。細かい話で言えばCPUからメモリにアクセスする話でもあり、もう少し大きな話で言えば分散コンピューティングでのメモリの扱い方、さらにはインターネットの話まで考えが膨らみました。

入力ルーチンの話

PC-1の設計について、一つ興味深い話がありました。初期のイギリスの真空管式計算機にEDSACがありますが、これはコンピュータにプログラムを入力した直後に必ず行う「入力ルーチン」があり、PC-1でもこれを真似たそうです。

EDSACの入力ルーチンでは「イニシャルオーダー」を行いました。入力を受け取ると、それを計算機が解釈しやすいように少し手直しを加えるそうです。この話を読んで私が連想したのは今日のコンパイラです。もちろんコンパイラほど大掛かりなものではありませんし、さらに言えばこれはアセンブラの原点です。

PC-1では入力ルーチンとして「イニシャルロード」をつけたようで、これもEDSACのイニシャルオーダーと同じような役割です(*3)。これは計算機が一般の人でも扱いやすいものとなるために重要だったそうです。これについてはこの後詳しく話します。

汎用電子計算機であること

著者がPC-1の設計にあたってよく注意したと読み取れるのが、「汎用性」です。

例えば上で紹介したイニシャルロードは、プログラミングの作業を簡便にします。(厳密には違いますが私の理解の範疇でわかりやすい例を出せば、)例えばあるプログラムを書いていて、「もしこの条件に引っかかったら5行後に飛んでほしい」と思ったとします。イニシャルロードがなければ、この「5行後」というのは、絶対的な「215行目」などと書かなくてはなりませんが、イニシャルロードがあれば、人間は「5行後」と書けば良くて、あとは入力時に計算機が勝手に「215行目」と置き換えてくれます。

さらに、「ハードウェアはなるべく汎用的に使えるように構成して、あとはソフトウェアで補う」という一貫した思想を感じました。加減乗除などの計算はよく使うので良いですが、例えば突飛な例として、もし「オセロで着手したときに返る石を求める命令」があったらどうでしょう?私はオセロAI を作っているのでとても嬉しいですが、そんなものがあったところで喜ぶ人はほとんどいません。しかも、ハードウェアレベルでこれを実装するとなればそれだけハードウェアが煩雑になります。必要最低限の良い塩梅の機能をハードウェアで実装するために、計算機の設計段階で相当吟味したようです。これは、汎用計算機が「汎用」であることについてとても大事です。

楽しんで作ったものが便利なものであった話

著者(たち)は、特にイニシャルロードや様々なサブルーチン(今で言えばライブラリに似た意味を持つ関数だと解釈しました)を作るにあたって、

それが重要だからということでやったというより、とにかく面白くて仕方がないので熱中したというのが本当のところだろう。

電子計算機の誕生

と書いています。

今の時代も特にITエンジニアについて、「好きでやるのが結局一番強い」などとよく言われますが、この時代も同じだったのかと感嘆しました。私は、好きなことをしてたまにそれが役に立つくらいで生きていきたいです。

開発に時間がかかって時代遅れになる話

PC-1はかなり出来が良かったようで、著者もとても自慢げに書いていました。しかし、その後継のPC-2については、比較的それを感じませんでした。さらに、大学で計算機を作る時代が終わりつつあったというような記述さえありました。

PC-2はPC-1に比べて規模が大きくなりました。それに伴ってそもそも製作に時間がかかったようですし、設計においても様々な理想を追い求めて時間がかかったそうです。その結果、PC-2はPC-1ほど人気のものにはならなかったと言います。企業であれば、(本文に明記されていませんが私が解釈して書けば)ある程度は妥協して、とにかく前もって決めた期限までに計算機を売り出すことを最低限達成したことでしょう。そういうわけか、著者はこのとき、もはや大学よりも企業で計算機を作る時代になったと感じたようです。

日本がソフトウェア技術において遅れていた話

2023年の現在に日本がソフトウェア技術においてどのくらいの地位なのかは置いておいて、それ以上に大事なことを感じました。

本の発行当時、日本は計算機のハードウェアにおいてはアメリカに近い存在であったそうですが、ソフトウェアにおいては全然であったようです。これは1980年頃に発行された別の本(別の著者)でも同じような記述を見たことがあるので、実際そうだったのでしょう。

著者はこの原因として、ソフトウェア技術者の育成に力を入れなかったことを挙げています。さらに、こんな記述もありました。

ソフトウェアというものの性質が非専門家にとっていかに理解しがたいものであるか

電子計算機の誕生

ソフトウェア技術者の育成が大事であることを「偉い人」に伝えようにも、そもそもソフトウェア自体の性質がなかなか伝わらないというのです。本文を私が解釈すると、ハードウェアはないと話にならないということが明白ですが、ソフトウェアについては見た目ではよくわからない(当時でさえ紙テープや磁気テープ、今ではもうほとんど完全に物理的な見た目は存在しません)点もあり、実際に開発してみないことにはその重要さがわからないのです。

さらに本文で若干の文句とも感じ取れるように書いてあるのは、もしソフトウェア技術者を育成すると言っても「計算機ユーザーのため」が主体であって、計算機を実際に製作する「メーカーのため」ではなかったとのことです。著者はまさに計算機の開発をしていたわけですから、特にメーカーとしてのソフトウェア技術者が大事であると強く思っていたのでしょう。

これらは、実は2023年の現在でも変わっていないように感じました。私自身が数年前までそうだった(*4)ように、ハードウェアは目に見えるから、例えば「これがパソコンだ」とわかっても、ソフトウェアについては「なにやらよくわからないもの」という認識からなかなか抜け出せません。

現在私はどちらかと言えば専門家の領域にいますが、それであれば専門家の端くれとして、正確かつ理解しやすく、ソフトウェアの性質を説明しなければならないと感じました。

計算機による創造的知能活動の話

本の終盤にこんな記述がありました。

将来、(中略)メモリーが何十億ビット、演算速度も1つの演算の時間がナノ秒程度になった暁には、計算機がどれだけ人間に近いことができるだろうかという興味をかき立てることになった。

電子計算機の誕生

この時代がまさに、今でした。私が今この記事を書いているパソコンは1兆ビットのメモリ(*5)で、演算速度は、一般的に遅い除算命令でさえも最大24ナノ秒程度(*6)です。

現在、計算機がどれだけ人間に近いことをやっているかと言えば、ご存知の通り、絵を描いたり文章を書いたり、さらには(私がやっているので)オセロで強い手を打ったり、もう様々です。もはやAIとは言われませんが、この記事を書くのに使っている漢字変換やら、まさに先程例に出したコンパイラやら、身の回りの計算機はこぞって知的な活動をしています。これらの活動は人間の知能に近づきつつあったり、オセロなどではもはや人間を遠く追い抜いていたりします。

この本が出版された1970年代は、ちょうど第一次AIブームが終わり、人工知能の冬の時代でした。ですので本文にも、知能を作ることは思ったよりも大変であったという、悲観的な内容があります。ですが、その時代はすぐに終わりました。引用した文章はこの後の、第二次、そして現在の第三次AIブームを夢見た文章のように思えました。


全体を通しての感想

教科書ではないので分野全体の出来事が網羅的に書かれているわけではありませんが、電子計算機黎明期を牽引した著者による、熱意を感じる文章でとても面白かったです。

最近の計算機はハードウェアでさえ、もはや目に見えない大きさの物体によって構成されていて、私自身もなんだか魔法のように思います。しかし、この本には計算機を自らの手で設計し、製作するという体験が多く書いてあり、そのおかげか、私が計算機に対して感じる感情的な不思議さは、いくぶん和らぎました。

入手性は悪くなっていますが面白い本でしたので、機会があればぜひ手にとってみてください。


脚注

(*1)若干紛らわしくて申し訳ありませんが、アイキャッチ画像は本書で主役の計算機PC-1と同年代の計算機、FUJICです。最近国立科学博物館に行ったときに撮りました。本当はPC-1を見たかったです…

(*2)筑波大学には4つの図書館があり、体芸図書館はその名の通り体育と芸術に関する本が多いです。この本は元々は東京教育大学体育学部の蔵書だったようで、その名残か現在は体芸図書館にあります。しかし、このようなマニアックな本を体育学部が持っていたとは驚きました。ちなみに、情報分野の本も多くある中央図書館にはないようです。

(*3)実のところ、イニシャルオーダーとイニシャルロードの違いを私はよく理解していません。

(*4)私は小6から中1あたりでロボットを動かすためにプログラミングを始め、本格的にパソコンで動くプログラムを書いたのは高3が初めてです。なんと、まだそれから4年ほどしか経っていません。

(*5)これは、私のパソコンが現時点でも大きなメモリを積んでいるだけです。普通はおそらく数百億ビットだと思います。

(*6)私のパソコンでつく割れているSkylake世代では除算に最大で97クロックかかるらしいので、クロックが4GHzだとすると24ナノ秒です。これは逐次的に行ったときの話で、並列処理すれば見かけ上もっと速くなります。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?