計算機の歴史
第二次世界大戦中、ロンドンから北に40マイルほどの位置にあるブレッチリー・パークで、ドイツ軍が通信に使っていた暗号の解読が行われていた。ドイツの暗号機エニグマの解読には、電気機械式の bombe という機械を補助的に使用した。bombeの設計は1938年にアラン・チューリングと Gordon Welchman が行ったが、それはポーランドのマリアン・レイェフスキの暗号解読法に基づくもので、1941年から実際に使用され始めた。エニグマのとりうる設定を除外していくために、一連の論理的推論を電気を使って行った。多くの設定は矛盾を生じるため除外でき、残った少数の設定について人手で調べることができた。
ドイツ軍はエニグマとは全く異なる一連のテレタイプ端末型の暗号機も開発した。Lorenz SZ 40/42 は特に重要な通信に使われ、イギリスではそれを "Tunny" と呼んでいた。Lorenz による暗号通信をイギリスが傍受し始めたのは1941年のことである。Tunny解読作業の一部として、マックス・ニューマンらがColossusを開発した。Colossus Mk I は1943年3月から12月に英国中央郵便本局研究所のトミー・フラワーズらがロンドンで製作し、1944年1月にブレッチリー・パークに移された。
Colossusは世界初の完全電子式のプログラム可能計算機である。多数の真空管を使い、紙テープでデータを入力し、データに対して様々なブール論理操作を行うよう設定変更可能である。ただしチューリング完全ではない。Colossus Mk II は9台(Mk I も Mk II に改修されたので全部で10台)製作された。それらの存在、設計、利用は1970年代まで機密とされていた。ウィンストン・チャーチルは戦後、直々にそれらを細かく分解して廃棄するよう命じていた。Lorenz の暗号がイギリスで解読されていたという事実も冷戦中は機密扱いだった。このように徹底的に秘匿されたため、Colossus は計算機の歴史に全く登場しなかった。今ではColossusを復元したものがブレッチリー・パークの国立コンピューティング博物館に展示されている。
1937年、クロード・シャノンはブール論理の概念と1対1に対応する電気回路が存在することを示した。そういった回路は後に論理回路と呼ばれるようになり、今ではデジタルコンピュータで必ず使用している。このMITでの修士論文で、リレーやスイッチを使ってブール論理の論理式を具現化できることを示した(同様の研究は日本においても1936年に中嶋章と榛沢正男により発表されている)。この論文が実用的なデジタル回路設計の基礎を築いた。ジョージ・スティビッツは1937年11月、ベル研究所で "Model K" と名付けたリレー式計算機を完成。ベル研究所は1938年後半にスティビッツによる計算機の研究開発プロジェクトを正式に始めさせた。1940年1月8日に完成した Complex Number Calculator は複素数の計算が可能だった。1940年9月11日、ダートマス大学で開催されたアメリカ数学会の学会で、テレタイプ端末をベル研究所にある計算機と電話回線でつなぎ、コマンドを送って計算結果を得るというデモンストレーションを行った。電話回線経由で遠隔から計算機を使った史上初の例である。ジョン・フォン・ノイマン、ジョン・モークリー、ノーバート・ウィーナーといった人々がこのデモンストレーションを目にしており、特にウィーナーはその思い出を後に文章にしている。
1939年、アイオワ州立大学のジョン・アタナソフとクリフォード・E・ベリーがアタナソフ&ベリー・コンピュータ (ABC) を開発した。ABCは世界初の電子式デジタルコンピュータとされている。300個以上の真空管を使い、記憶装置として機械的に回転させたキャパシタを使っている。プログラムは不可能(単一機能)だが、真空管で加算器を構成したのはABCが世界初である。ENIACの発明者の1人ジョン・モークリーは1941年6月にABCに触れている。そのことが後のENIACの設計に影響したかどうかについては歴史家の間でも様々な意見がある。ABCは長らく忘れ去られていたが、ENIACなどの特許の有効性を争ったハネウェルとスペリーランドの裁判で、先行例として注目されるようになった。
1939年、IBMでは Harvard Mark I の開発が始まった。正式名称は Automatic Sequence Controlled Calculator。Mark I は汎用電気機械式計算機で、IBMが資金提供し、ハーバード大学のハワード・エイケンの指揮の下でIBMの技術者らが設計や製作を助けた。バベッジの解析機関の影響を受けた設計で、十進法を採用し、リレーのほかに歯車やロータリースイッチを記憶装置や演算装置に使っている。さん孔テープでプログラム可能で、並列に動作する演算装置を複数備えていた。後のバージョンでは複数のテープ読取装置を備え、条件によってどのテープを読み取って実行するかを制御できた。チューリング完全ではない。Mark I は1944年5月にハーバード大学に移され、運用を開始した。
アメリカで製作されたENIAC (Electronic Numerical Integrator and Computer) は世界初の電子式汎用コンピュータとされている。エレクトロニクスの高速性と複雑な問題を解くためにプログラミング可能な能力を初めて併せ持った計算機である。1秒間に加算または減算を5000回実行可能な性能で、従来の計算機に比べて千倍ほども高速だった(Colossusは論理演算のみで加算はできない)。また、乗算、除算、平方根を計算する装置を備えていた。高速メモリはわずか20ワード分しか備えていない(バイト数にして約80バイト)。ジョン・モークリーとジョン・プレスパー・エッカートの指揮でペンシルベニア大学で行われたENIAC開発・製作は、1943年から1945年末までかかった。30トンの重量のある巨大なマシンであり、18,000個以上の真空管を使っている。そのため真空管の故障を最小化することが技術的な最重要課題となった。完成後は約10年間継続的に使われた。
当初のENIACはそれぞれの機能を備えた装置の間の配線をつなぎかえることでプログラミングされていた。これは現代の感覚で言うならCPUのLSIチップ中の配線を違うものに変えているようなものであり、現代のコンピュータとはまだ大きく違っている。ENIACは当初の完成の後も、記憶装置を拡張したり、その拡張された記憶装置を利用してプログラムできるようになったりと構成が変わっているため、その能力についてはその時代によって異なる。よって次の節にあるような一覧表を他の資料などでも見るかもしれないが、一般的に言って絶対にそのことを注意しなければならない。
よく使われる分類では、真空管を主として使ったコンピュータを第一世代とする。
ENIACの完成前からエッカートとモークリーはその限界を悟り、プログラム内蔵式のコンピュータEDVACの設計を開始した。ジョン・フォン・ノイマンがEDVACの設計について記した文書 (EDVACに関する報告書の第一草稿)が広く流布することになったため、そのアーキテクチャをノイマン型アーキテクチャと呼ぶようになり、ENIAC以後のコンピュータ開発は世界的にそれに基づいて行われるようになった。ノイマン型アーキテクチャはプログラムとデータを単一の記憶装置に格納することを特徴とする。当時、一次記憶装置として利用可能な装置としては音響遅延線(水銀遅延線)があった。液体の水銀(あるいは針金)中を音波が伝播する時間を利用してデータを格納する。一連の音波の形でデータが管の中を伝播し、管の端に音波が到達するとそれを1と0を表す電気のパルス波に戻し、再び水銀遅延線のもう一方の端から音波に変換して送り出す。もう1つはウィリアムス管である。こちらは小型のブラウン管で、画面部分の蛍光体に電子ビームが当たった部分だけ一時的に帯電する現象を利用する。1954年ごろには磁気コアメモリが急激に一次記憶装置として従来の装置に取って代わっていき、1970年代中ごろまでその地位を独占した。
プログラム内蔵式として設計された最初のコンピュータはEDVACだが、実際に最初に稼働したのはEDVACではない。エッカートとモークリーがプロジェクトを離れ、製作が停滞したためである。最初のノイマン型(プログラム内蔵式)コンピュータは1948年のマンチェスター大学の通称 "Baby"、正式名 Small-Scale Experimental Machine である。同大学のフレデリック・C・ウィリアムスとトム・キルバーンが開発を指揮した。これはウィリアムスが発明したウィリアムス管の実用性を評価するために開発された試験機だった。その成功を受けて1949年、実用的なコンピュータ Manchester Mark I を開発。ウィリアムス管と磁気ドラムメモリを使い、インデックスレジスタという概念を初めて導入している。「世界初のプログラム内蔵式デジタルコンピュータ」の他の候補としては、ケンブリッジ大学で設計・開発されたEDSACがある。マンチェスターの"Baby"の一年以内に稼働開始しているが、実際に問題を解くプログラムを実行可能なレベルだった。EDSACはEDVACの計画に触発されて始まったもので、EDVACもEDSACもENIACが稼働開始する以前から計画が始まっている。並列処理を行うENIACよりも単純な単一演算装置を採用している。それはコンピュータ小型化の最初の波でもあり、信頼性向上のための対策でもあった。Manchester Mark I、EDSAC、EDVAC は現代のコンピュータ・アーキテクチャの原点ともいえる。マンチェスター大学の Manchester Mark I は初の商用コンピュータ Ferranti Mark 1 のプロトタイプとなった。Ferranti Mark 1 の1号機はマンチェスター大学に1951年2月に納入された。他に少なくとも9台が1951年から1957年にかけて販売されている。
ソビエト連邦での最初のプログラム内蔵式汎用電子計算機は、キエフ電気技術研究所(en、現ウクライナ)のセルゲイ・アレクセイヴィチ・レベデフのチームが製作した MESM(МЭСМ, Small Electronic Calculating Machine)で、1950年に稼働した。6000本の真空管を使い、25kWの電力を消費する。1秒間に約3000命令を実行できた。オーストラリア初の電子計算機としては、1949年に稼働したCSIRACがある。CSIRACは当時のまま保存されている世界最古の電子計算機でもあり、デジタル音楽を奏でた世界初の電子計算機である。
世界初の商用コンピュータは、1951年2月にマンチェスター大学に納入された Ferranti Mark 1 である。Manchester Mark I を元に設計された。Manchester Mark I からの主な改良点は、記憶装置の容量増、乗算器の高速化、命令の追加である。基本サイクル時間は1.2ミリ秒で、乗算を約2.16ミリ秒で実行した。真空管を4050本使っており、その4分の1が乗算器に使われている。2号機がトロント大学に売れ、その後さらに改良を施した Mark 1 Star が完成した。Mark 1 Star は少なくとも7台が1953年から1957年までに売れており、シェルのアムステルダムにある研究所にその1つが納入された。
1947年10月、イギリスの外食・ホテル産業大手 J. Lyons & Company の経営陣は新たな経営技法に興味を持っており、商用コンピュータ開発を推進する役割を果たすことを決めた。それによって1951年4月、LEO I (Lyons Electronic Office) が稼働開始し、世界初の会社の通常業務を処理するジョブを実行した。1951年11月17日、J. Lyons では傘下のパン屋の毎週の売り上げ集計をLEO上で行い始めた。これが世界初のビジネスアプリケーションであり、ここからプログラム内蔵式コンピュータの商用利用が始まった。
1951年6月、UNIVAC I (Universal Automatic Computer) がアメリカ合衆国国勢調査局に納入された。レミントンランドは46台を売り上げ、1台の価格は100万ドル以上だった(現在の価値に換算するとUSドル)。UNIVACは世界で初めて量産されたコンピュータである。5200本の真空管を使い、125kWの電力を消費した。一次記憶装置は逐次アクセス型の水銀遅延線で、11桁の数字と符号(72ビット)を1ワードとして1000ワードを格納可能である。最大の特徴は新たに発明された金属磁気テープと高速磁気テープ装置を備えたことで、それを不揮発性の記憶装置として使っていた。磁気媒体は今も多くのコンピュータで使われている。
1952年、IBMは IBM 701 を発表。700/7000シリーズの最初の機種であり、IBMのメインフレームの始まりである。1954年の IBM 704 では磁気コアメモリを採用し、その後の大型コンピュータで標準的に使われるようになった。世界初の高級汎用プログラミング言語FORTRANも、IBMが704向けに1955年から開発したもので、1957年初めにリリースされた。高級言語としてはコンラート・ツーゼが1945年に設計したプランカルキュールが先だが、こちらは実装されなかった。IBM 701 に対しては、1955年に世界初のコンピュータのユーザーグループが誕生し、ソフトウェアや経験を共有するようになった。
1954年、IBMはより小型で低価格のコンピュータ IBM 650 を発売し、人気を博した例えば、Kara Platoni のドナルド・クヌースについての  (Stanford Magazine, May/June 2006) でも IBM 650 への言及がある。。650 は重量が900kg以上あり、付属の電源装置は約1350kgである。それぞれ別々の筐体となっていて、寸法はそれぞれおおよそ1.5m×0.9m×1.8mである。価格は50万ドル(現在の価値に換算するとUSドル)で、リースの場合は月額3500ドル(現在の価値に換算するとUSドル)だった。磁気ドラムメモリに当初は2000ワード(1ワードは10桁の数字)、その後拡張されて4000ワードを格納。このようにメモリ容量が小さく、その後数十年間のプログラミング技法に重大な影響を与えた。プログラムは回転する磁気ドラムに格納されており、実行時はそこから命令を読み取る。磁気ドラムメモリでの効率的なプログラム実行には、ハードウェアのアーキテクチャ、次に実行すべき命令のアドレスを含めた命令フォーマット、ソフトウェア、すなわちSOAPというアセンブリ言語が協調し、次の命令を磁気ドラムがその位置まで回転するのを待つことなく読み取れるよう、(ソースプログラムの静的解析でできる範囲で)うまく配置した。
1955年、モーリス・ウィルクスがマイクロプログラム方式を発明し、基本命令セットを組み込みのプログラム(ファームウェアあるいはマイクロコード)で定義し拡張できるようになった。この方式はメインフレームなどのコンピュータのCPUやFPUで広く採用された。例えばマンチェスター大学のAtlasやIBMのSystem/360シリーズがある。
1956年、IBMは初の磁気ディスク装置 RAMAC (Random Access Method of Accounting and Control) を発表。50枚の直径24インチ(610mm)の金属円盤を使い、片面に100トラックで5メガバイトのデータを格納できる。コストは1メガバイト当たり1万ドル(現在の価値に換算するとUSドル)だった。
1947年、バイポーラトランジスタが発明された。1955年ごろからコンピュータの素子は真空管からトランジスタに移っていった。個別部品のトランジスタで作られた世代を指してコンピュータの「第二世代」と呼ぶ。
最初のトランジスタはゲルマニウムの点接触型トランジスタしかなく、真空管よりも信頼性が低くて、利点は低消費電力だけだった。点接触型トランジスタで作られたコンピュータは、日本のETL Mark IIIなど、わずかしかない。すぐに信頼性の高い、合金型や成長型の接合型トランジスタにとって代わられたが、速度の点では当初は点接触型のほうが上であった。
世界初のトランジスタ式コンピュータはマンチェスター大学が開発したもので、1953年に稼働開始した。2号機も同大学で1955年4月に完成している。2号機は200個のトランジスタと1300個の半導体ダイオードを使い、消費電力は150Wだった。ただし、125kHzのクロック波形の発生や磁気ドラムメモリの読み書きに真空管を必要とした。1955年2月に稼働開始した Harwell CADET は動作周波数を58kHzと低く設定したため、真空管を使わずに構成されている。初期のトランジスタは故障しやすく、コンピュータの平均故障間隔は約90分だったが、トランジスタの信頼性はどんどん向上していった。初期の商用機としては、フィルコ Transac S-2000(1957)がある。
真空管と比較としたとき、トランジスタには様々な長所がある。まず小さく、消費電力が少なく、結果として発熱量も少ない。シリコンの接合型トランジスタが登場すると真空管よりも信頼性が高く、長寿命になった(ただしその最初期は点接触型より速度は遅かった)。トランジスタ式コンピュータでは、より小さな空間に数十倍、数千倍の論理回路を詰め込むことが可能になった。トランジスタによってコンピュータの小型化・低価格化が進んだ。第二世代のトランジスタ式コンピュータは一般に多数のプリント基板で構成されている。例えば、IBM Standard Modular System では1枚の基板に4つの論理ゲートやフリップフロップを実装している。
第二世代コンピュータの1つ IBM 1401 は全世界のコンピュータ市場の3分の1を占めたことがある。IBMは1960年から1964年までに10万台以上の1401(正確には IBM 1400シリーズ)を販売した。
トランジスタを使った電子工学はCPU(中央処理装置)を改善しただけでなく、周辺機器の改善にも寄与した。世界初の磁気ディスク記憶装置は、IBMが1956年に発表した IBM 350 だが、第二世代の磁気ディスク装置は数千万の文字や数字を記録できるようになった。CPUと高速データ転送可能な固定磁気ディスク記憶装置に加えて、着脱可能な磁気ディスクパックも登場。記憶容量は固定磁気ディスク装置より小さいが、磁気ディスクパックは短時間(数秒から数十秒)で交換可能で、データを大量に保管し必要に応じて即座に使えるようになった。さらにデータの長期保管用には、より安価な磁気テープが使われるようになった。
第二世代のCPUは、周辺機器との通信処理を補助プロセッサに任せるようになった。例えば、パンチカード読み取り装置やさん孔装置との通信を補助プロセッサに任せ、CPUはプログラムを実行した。また、第二世代のころバスがCPUと主記憶装置を結ぶ高速なバスと周辺機器を接続するバスに分離している。これによって演算性能が向上した。例えば PDP-1 では磁気コアメモリのサイクル時間は5マイクロ秒で、CPUは演算命令を2サイクル(命令読み取りに1サイクル、データ読み取りに1サイクル)で実行できるため、10マイクロ秒で1命令を実行できた(1秒間に10万命令)。
第二世代では、遠隔端末(テレタイプ端末が多かった)の利用が急激に増加した。当時の端末との通信は電話回線で十分であり、数百km離れた場所にある端末と計算センターを結ぶことができた。そういった個別のコンピュータネットワークを相互接続し始めたことをきっかけとしてインターネットの誕生に繋がった。
ジャック・キルビーとロバート・ノイスがそれぞれ独自に集積回路を発明し、さらに爆発的に多数のコンピュータが使われるようになっていった。1970年代には、MOS集積回路により、インテルのテッド・ホフやフェデリコ・ファジンらによってマイクロプロセッサが発明されることになるIntel 4004 (1971) は 12 mm^2 のチップに2300個のトランジスタを集積していた。ちなみに Pentium Pro のチップサイズは 306 mm^2 で、550万個のトランジスタを集積している。。右の集積回路の写真は Intel 8742 という8ビットマイクロコントローラで、12MHzで動作するCPU、128バイトのRAM、2048バイトのEPROM、入出力部などを1つのチップに集積している。
利用する素子のテクノロジによるコンピュータの世代分けでは、集積回路を主として使ったコンピュータを第三世代とする。しかしIBM System/360があれこれと画期的であったために、SLTという高度なモジュール技術ではあったがモノリシックな集積回路ではない点には目をつぶって初の第三世代機とされることもあり、はっきりと分類するのは難しい。主記憶がコアから半導体になったのはIBMではSystem/370であった。
1960年代は第二世代と第三世代の技術が混在していた軍事関係では、 のように方程式をコンピュータ上で解くための研究が盛んだった。。IBMは IBM Solid Logic Technology によるモジュールを1964年のSystem/360で開発、採用した。UNIVACでは、UNIVAC 494 のように1975年ごろまで第二世代の技術を採用した機種が製造され続けた。バロースの大型機(バロース B5000、1961年設計開始)ではスタックマシンアーキテクチャを採用し、プログラミングを単純化しようとした。スタックマシンはプッシュダウン・オートマトンを実装したもので、後にミニコンピュータやマイクロプロセッサでも採用されたことがある。B5000の設計はプログラミング言語に影響されているが、逆にスタックマシンの考え方はプログラミング言語の設計や処理系の実装に影響を及ぼしもしている。1960年代にはミニコンピュータも生まれ発展している。ミニコンピュータは安価な計算センター用コンピュータとして産業界や大学で使われた。
1971年、ミニコンピュータ上でアナログ回路をシミュレーションできるSPICE (simulation program with integrated circuit emphasis) が登場。電子回路設計の自動化(EDA)が始まった。マイクロプロセッサの登場によってマイクロコンピュータと呼ばれる小型で低価格なコンピュータが登場し、コンピュータを個人で所有できる時代が到来。1970年代に登場したマイクロコンピュータは、1980年代にはパーソナルコンピュータと呼ばれるようになり、広く普及することになる。
1975年4月に開催されたハノーバー・フェアで、オリベッティがパーソナルコンピュータP6060を出展。フロッピーディスク装置とサーマルプリンターと小さなプラズマディスプレイを内蔵したオールインワン型だが、CPUはマイクロプロセッサではなく2枚の基板で構成されていた。48kバイトのRAMを搭載し、BASIC言語が利用可能、重量は40kgだった。発売は1977年で、そのころには既にマイクロプロセッサを採用したパーソナルコンピュータ(ホームコンピュータ)がいくつも登場していた。
Apple Computerの創業者の1人スティーブ・ウォズニアックは世界初の大量生産されたホームコンピュータの開発者とされることがある。細かいところを言うと、Apple Iより前にモステクノロジーのKIM-1やAltair 8800があり、また、グラフィックスやサウンド機能という面でもApple IIより、PET 2001の方がわずかに先行している(がPETはモノクロ)。
一般的に、従来の大型なマシンの機能と性能が、より小型のマシンで実現される、ということが、コンピュータの歴史では繰り返された。それによって、メインフレームの大半はやがてミニコンピュータに置き換えられ、ミニコンピュータの大半はやがてワークステーションに置き換えられ、ワークステーションの大半はやがてパーソナルコンピュータに置き換えられた。そして、パーソナルコンピュータの役割も相当な部分がタブレットやスマートフォンに奪われつつある。ただし、この歴史は必ずしも一本道ではない。置き換えられなかったメインフレーム、あるいはワークステーション、に相当するコンピュータは残っているし、ワークステーションとパーソナルコンピュータの歴史が並列していた時期は20年程度には及ぶ。
コンピュータのような複雑なシステムには高い信頼性が求められる。ENIACは1947年から1955年まで連続稼働し、退役となるまで8年間動作し続けた。真空管は故障するものだが、システムダウンを引き起こす前に交換されていた。電源を切ったり入れたりするのはトラブルの元であるが、ENIACは電源を切らないという単純な戦略で、障害を劇的に低減していた(真空管のせいでよく壊れていたなどと言われるのは、実際にはこのことを理解しない運用機関が電源を入れっぱなしにするのを許さなかった時期の話である)。SAGEでは真空管そのものも選別によって高信頼なものだけを使ったが、2台のコンピュータをホットスタンバイ構成とし、診断機能によって故障しそうな真空管を識別することでさらに信頼性と可用性を高めていた。半導体メモリは一般にほとんど故障しないが、UNIXなどは電源投入時にメモリをテストしてハードウェア故障を検出するようになっていた。今日ではサーバファーム上で電子商取引が行われているため、信頼性を求める声は強くなっている。Googleはサーバファームの管理にフォールトトレラントソフトウェアを使ってハードウェア故障に対処しており、サーバファーム全体をサービスを停止せずに切り替えるという概念にも挑戦している。
21世紀に入ると、マルチコアCPUが一般に流通するようになった。連想メモリ (CAM) はネットワークにも使われるなど低価格化しているが、ハードウェアのCAMをプログラミング言語から使うという動きはまだない。半導体メモリは非常に規則的な構造であり、製造業者は最新プロセスを採用している。そのためメモリは急激に価格が低下していった。1980年代、CMOS論理回路が実用化され、他の回路と性能面でも遜色ないものになっていった。それによって電力消費が劇的に低減された。他の回路構成では電流が常に流れ続けるが、CMOSでは状態遷移のときだけ電流が流れる(リーク電流を除く)。
そういった技術革新によってコンピュータはどこにでもある商品となり、グリーティングカードから衛星電話まで様々な形で組み込まれている。コンピュータのハードウェアとソフトウェアは、宇宙の運行を表す隠喩にもなっている。DNAコンピュータや量子コンピュータが実現するのはまだ先だが、既にDNA折り紙のような基盤技術が登場している。ナノスケール超伝導体の発見によりジョセフソン素子や単一磁束量子といった技術を使った高速デジタル回路が先に実現すると予測されている。
光ファイバーや関連する素子は既に長距離のデータ伝送に使われているが、CPUとメモリの接続にそれを使う研究がなされている。