Zuse Z3
計算機の一つ ウィキペディアから
計算機の一つ ウィキペディアから
Zuse Z3は、1941年にドイツでコンラート・ツーゼによって開発された計算機である。世界初の自由にプログラム可能で完全に自動化された機械である。現代の視点からすると、コンピュータの定義に適合する属性をほぼ備えているが、条件分岐命令は備えていない。Z3は2,600個のリレーから構成され、動作周波数はおおよそ5から10Hz、ワード長は22ビットである[1]。プログラムとデータはセルロイド製のフィルムに穴を開けることで記憶される。
1941年にベルリンで完成し、ドイツ航空機研究所で翼のフラッター現象の統計解析に使われた[2]。
オリジナルのZ3は、1943年12月21日のベルリン空襲で破壊された。完全動作する複製品が1961年にツーゼの会社「Zuse KG」によって作成され、ドイツ博物館に永久展示されている。
ツーゼはドイツ政府にリレーを電子スイッチに置き換えるための資金提供を要請したが、第二次世界大戦中であり、戦争遂行の観点から重要でないと判断され、資金は得られなかった[3]。
ツーゼは1935年から1936年にかけてZ1を設計し、1936年から1938年に製作した。Z1は全くの機械式であり、一度に数分間しか動作できなかった。ヘルムート・シュレイヤーは別のテクノロジーを使うことを助言した。ベルリン工科大学の大学院生だった1937年、シュレイヤーは真空管を使った論理回路や今でいうフリップフロップの実装を行った経験があった。1938年、シュレイヤーはその技術を使った実験的な計算機を作り、少数の人々に実験を公開していたが、実用化するとなると膨大な電子部品が必要となるため、事実上不可能と思われていた[4]。
ツーゼは次の計算機もリレーを使って設計することを決意する。機械式計算機を製造していた Kurt Pannke が資金を出してZuse Z2が開発され、1939年に完成した。1940年にはドイツ航空機研究所の所員の前で披露された。Z2は不安定で動かないこともあったが、同研究所で披露したときは幸運にも動き、同研究所が次の計算機開発の資金を一部提供してくれることになった[4]。
1941年、ツーゼはZ2を基本としてそれを改良することでZ3を作った。このプロジェクトはドイツ政府によって極秘とされている[5]。ドイツ航空省のイェニッセン博士が政府を代表してツーゼの会社 ZUSE Apparatebau に送り込まれている[6]。他にドイツ航空省から空気力学の専門家ヘルベルト・A・ワーグナーも送り込まれた[7]。
Z3は1941年、Z1やZ2よりも高速で高信頼なものとして完成。Z1からの改良点として、浮動小数点数の扱いについて、対象を数以外の値に拡張している。すなわち、一般的な数値以外に、正の無限大・負の無限大・未定義という値があって、そのような値が結果として生成されることがあり、演算を通して伝播できる。(これは現在の浮動小数点数を扱うシステムに同様のものがあるということから見ても、先進的だったと言える。)Z3はプログラムを外部のテープに格納しているため、プログラムを変更するのに配線を変える必要がなくなった。
1941年5月12日、Alfred Teichmann や Curt Schmieden といった科学者を集めてZ3が披露された[8]。
その後ツーゼはZ4の設計に入り、戦後になって製作を行った。
Zuse Z3 の成功は単純な二進数システムを採用したことによると言われることが多い。これは約3世紀前にゴットフリート・ライプニッツが発明したもので、後にジョージ・ブールがブール代数を作り上げるのに採用した。1937年、MITのクロード・シャノンはブール代数をリレーをつかったデジタル回路に再現する研究をしている[9]。結局ツーゼはこれらをまとめて、プログラム制御された Z3 を作り上げた[10]。
ツーゼの協力者だったヘルムート・シュレイヤーは1942年に真空管100本を使った実験的なデジタル電子計算機を作っているが[11]、終戦ごろに失われた。
イギリスの暗号解読機 Colossus (1943) [12]は、世界初のデジタル電子計算機とされることが多いが、他にはアタナソフ&ベリー・コンピュータ (1942) もある。それらは真空管を使い、2進数で数を表現している。プログラミングはプラグ盤の配線変更やスイッチ群の設定で行われており、プログラム可能と断言するのは難しい。
ENIACは Z3 の4年後に完成した。ENIAC は真空管を使ってスイッチを実装したが、Z3 はリレーを使用した。ENIAC は十進数だったが、Z3 は先行して二進数を使っていた。1948年まで、ENIACでのプログラミングとは配線を変更することだったが、Z3 はテープ(セルロイド製)からプログラムを読み込んだ。
Z3 はプログラムを格納するテープを外部に必要とした。ジョン・フォン・ノイマンが 1945年の論文で示したプログラム内蔵方式のコンピュータとして世界初と言えるのは1948年の Manchester Baby か 1949年のEDSACである。なお、ノイマンの論文にはアラン・チューリングへの言及があり、プログラム内蔵方式のコンセプト自体は、ツーゼが1936年に申請した特許出願書(成立せず)で既に言及している。
Z3は、条件分岐命令を持っていない(代わりに条件によって一命令をスキップする命令を持っている)。しかし、Z3によって任意のチューリングマシンをシミュレート可能であると、Raúl Rojasによって1998年に示されており[13][14]、(Z3のアドレス空間を、チューリングマシンに必要な「無制限のテープ」のために「十分に広い」とみなせば[15])チューリング完全すなわち、計算可能なものは計算できる能力がある。手法としては、他の制限の強い計算機構のいくつかで見られる多くの同様の主張のものに似ている[16]。あらましを以下に簡単に述べる。Z3にプログラムの命令を供給するテープは、チューリングマシンの「テープ」ではなく、「テープ」を読み書きする「ヘッド」を制御する有限状態機械のために使う。状態が有限個なので、テープにその全ての状態に対応するコード片を表現し、最後を最初につなげてループ状のテープにすれば、機械はそのループを大きな1個の(無限)ループ[17]として実行できる。そのループ中の各コード片について、有限状態機械の「現在の状態」に対応するコード片のみが有効に働くようにできれば良いわけであるが、Z3の持ついくつかの命令の組合せにより可能である。以上のようにして、任意のチューリングマシンが実装可能であるとした。Rojas は「したがって我々は、抽象的理論的観点から、Z3の計算モデルが今日のコンピュータの計算モデルと等しいと言うことができる。実用的観点からすれば、そしてZ3用に実際に書かれたプログラムから見れば、現代のコンピュータとは等しくない」と結論付けている。
実利的な観点で見れば、Z3 は1940年代の科学技術計算に適した「実用的な」命令セットを備えていた。ツーゼは土木技師であって、コンピュータを製作し始めたのは本業で必要だったからである。