1945 年にペンシルベニア大学で完成した ENIAC は、当時世界最速の電子計算機だった。一万八千本近い真空管を使い、一秒間に五千回の足し算をした。だが計算を変えるには、パネルの上のケーブルとスイッチを配線し直さなければならず、それはプログラマーのチームが何日もかける仕事だった。 ENIAC の制御パネルを操作する二人のプログラマー。ペンシルベニア大学ムーア・スクール、1946 年ごろ。United States Army · Wikimedia Commons · パブリックドメイン ENIAC の技術者 J・プレスパー・エッカートとジョン・モークリーは、すでに次の機械 EDVAC を計画していた。そこではプログラムが記憶装置に保持される。フォン・ノイマンは彼らの会議に出席するようになり、1945 年 6 月、「器官」や「ニューロン」について語る抽象的な、ほとんど生物学的な言葉で、グループの考えを整理した文書を書いた。 『EDVAC に関する報告書の第一草稿』の表紙。日付は 1945 年 6 月 30 日。John von Neumann · Wikimedia Commons · パブリックドメイン 計算機の部分 『EDVAC に関する報告書の第一草稿』は、次のものからなる計算機を記述している。 計算を行う演算装置 命令を一つずつ読み、実行させる制御装置 数と命令を同時に保持する記憶装置。どちらも二進数字の列として書かれる 入力と出力の装置 決定的な新しさは 3 番目にある。プログラムがデータと同じ記憶装置に保持されるので、計算を変えるとは記憶装置の中の数を変えることであり、配線を変えることではない。しかもプログラムは自分自身の命令を計算し、書き換えることさえできる。これは 1936 年のチューリングの万能機械のアイデアを、真空管と水銀遅延線で実現したものである。 四行のプログラム 0 から 7 まで番号のついた八つの位置をもつ記憶装置と、アキュムレータと呼ばれるレジスタを考えよう。 位置 内容 意味 0 LOAD 5 位置 5 の数をアキュムレータに入れる 1 ADD 6 位置 6 の数をアキュムレータに足す 2 STORE 7 アキュムレータを位置 7 に格納する 3 HALT 終了 5 40 データ 6 2 データ 7 0 結果 制御装置は位置 0 から始め、実行しては次へ進む。三歩の後、位置 7 には $42$ が入っている。命令とデータは隣り合って住んでいる。STORE 1 という命令が二番目の命令を上書きするのを妨げるものは何もない。そして、それこそが、あるプログラムが別のプログラムを生成できる理由なのだ。