計算機の歴史

計算機の歴史（けいさんきのれきし）の記事では、計算機（計算機械）やコンピュータの歴史について述べる。また、コンピュータは計算機械であるばかりでなく、同時に情報処理機械でもあるので、本項でも計算機械に限らずデータ処理機械にも触れる。あまり一般的な語ではないが「コンピューティング」の歴史だと捉えるとよいであろう。 人間がおこなう暗算以外の計算は、小石などをカウントしたことにはじまり、数字を書き記す技法が発展し、やがて手動操作をおこなう器具が生まれた。ネイピアの骨や算木、計算尺など、数学を応用した器具も作られた。一方、機械により器具のけた上がりなどを自動化するアイディアも生まれ、これが計算機械の原点である。より大がかりな計算を機械により自動化することが試みられるようになり、またアナログコンピュータも発達した。やがて電気工学が、次いで電子工学が計算のために応用されるようになり、また数学においても計算というものを機械的に定義するといったことがおこなわれた（計算模型）。そして今日につながるプログラム内蔵方式のコンピュータとなった。 コンピュータの歴史において一体何が行われてきたのかについて、もしもほんの一行ほどで要約するならば、計算機の高機能化、高速化、低価格化、大容量化が行われてきたのだ、ということは言えるであろう。 計算機械の歴史とは、まず第一にコンピュータアーキテクチャ（入出力、データ格納、演算や制御を行うシステムの構成）の歴史である。また、それはシステムの各装置を構成する電子部品や機械の歴史でもある。また、ある機種から次の機種への更新の際に、それが高速化や記憶容量の増大である場合もあれば、同じ能力でコストや大きさが小さくなったという場合もある（両方、という場合もある）。 自動計算機が開発される以前、ほとんどの計算は人間が手で行っていた。人間の計算を補助する器具は「計算器」、機械は「計算機」と呼ばれる。計算器を使って計算することを生業とする人間を計算手（英語でコンピュータ）などと呼んだ。計算手（19世紀末に女性が採用されるようになり、第二次大戦前には女性が多数採用された）が大勢並んで大きな部屋で計算器または計算機を使って計算を行っている写真がいくつも残っている。例えば、航空機設計に必要な航空力学的計算などをそのようにして行った。 ENIACなど、1950年頃のコンピュータのいくつかに見られる「A」は「自動計算機」の「自動」の意味である。「自動でない計算機」の例としては、そろばんや電卓をイメージすればよい。後者では四則演算までは機械がやってくれるが、条件判断をともなう繰り返しが必要な複雑な計算は人間の操作として行う必要がある。ここで、それまでの計算機と「コンピュータ」の大きく異なる点は、条件判断を含むプログラムを実行できることと、そのプログラムを内蔵できる、ある程度大きな記憶容量を持つという点である。コンピュータは、数値計算の自動化を可能にし、また数値計算に限られない一般的な様々な記号操作の自動化を可能にした。 コンピュータは単に計算用プラットフォームというだけでなく、製造工程の自動化、電気通信、装置制御、娯楽、教育などに使われてきた。様々な分野からの要求で新たなハードウェアが発展してきた。例えば、より直感的で自然なユーザインタフェースのためにタッチパネルが考案された。 紙に数字を書いて計算するのは別として、最初の計算補助器具は四則演算の対象となる数値を人間の手で設定し、手で操作して演算を行う簡単な器具だった。比較的最近の洗練された例として計算尺がある。計算尺では対数尺上の目盛りで数値を表し、カーソル線を合わせて滑尺を滑らせ演算を行う。数値はこのように連続な「アナログ」値として表すことができ、数値に対応して電圧などの何らかの物理量を設定することで表すことがある。ヴァネヴァー・ブッシュが第二次世界大戦前に開発した微分解析機などは、そのようなアナログ計算機の一種である。また数値は数字の並び（ディジタル）という形でも表現でき、機械によって自動処理できる。前者は物理量に対応させているためにダイナミックレンジが物理に制限されるのに対し、後者は数で表現しているため必要なだけ桁数を増やすことで精度の要求に対応できる。 アナログとデジタルの機械式計算技法はどちらも発展していき、多くの実用的計算機が生まれた。電気的技法は当初機械式計算装置の動力源として使われ、後に数値を直接に電気で表現することで、計算機の速度と精度が急激に改善されていった。数値を離散的な二進または十進の数字の並びで電気的に表し、継電器による組み合わせ回路を使って演算することができる。電子工学により、数値を電圧や電流値で表し、それらを増幅回路で操作することもできるようになった。 電子工学の発展によって、機械式や電気機械式の従来の計算機よりも高速な電子式計算機が可能となった。真空管はその後半導体を使ったトランジスタに置き換えられ、さらにすぐさま集積回路へと高度化した。集積回路はいくつかの半導体技術の世代交代と、絶え間ない指数的な微細化の向上で、手指の爪ほどの大きさの半導体チップ上に数百万個の電子的な論理素子が作られるようになった。これにより、高速かつ低価格のディジタル・コンピュータが広く普及することになった。 計算を補助する器具の使用は数千年前から始まり、多くはふつうに指で数を数えるのと同様のやりかたである、1対1に対応させて使うものだった。最初期の計数器具としては tally stick と呼ばれる原始的な割符のようなものがあった。肥沃な三日月地帯で広く使われた記録保管法としては、小石（粘土球、粘土錐など）を家畜や穀物の数のぶんだけ容器に入れて封印しておく方法があった。同様の例として算木がある。 最初期の算術器具としてそろばん（アバカス）がある。「ローマそろばん」(en) は紀元前2400年ごろバビロニアで使われ始めた。その後、様々な計算用の盤や卓が発明されてきた。中世ヨーロッパではテーブルにチェック柄の布を広げ、その上でマーカーをある規則に従って動かし、金額を計算するということが行われていた。 機械式計算機は古代から中世にかけて、天文学に関する計算を行う目的で何度か考案されてきた。古代ギリシア（紀元前150年から100年ごろ）ではアンティキティラ島の機械やアストロラーベが作られており、既知の最古のアナログコンピュータとされている。似たような初期の器具として星座早見盤やアブー・ライハーン・アル・ビールーニー（紀元1000年ごろ）の発明した計算機械、アッ＝ザルカーリー（紀元1015年ごろ）の発明したどの緯度でも使えるアストロラーベなどがある。他にも中世イスラムでは天文学者や技術者が様々な天文用アナログコンピュータを作っており、中国では宋代の蘇頌（en、紀元1090年ごろ）が天文時計の塔を作った。 1206年、アル＝ジャザリが「城時計」という天文時計を発明。世界初のプログラム可能なアナログコンピュータとされている。黄道十二星座、太陽と月の軌道、月相を示すことができる。月相を表した針が門の上を移動し、門が1時間おきに自動的に開く。そして、5体のロボット楽団が音楽を演奏する。その動力源は水車で駆動されたカムシャフトでてこを操作することで得られていた。昼と夜の長さをプログラムの変更で変えられるようになっていた。 スコットランドの数学者で物理学者のジョン・ネイピア (1550-1617) は、乗算と除算がそれぞれ元の数の対数の加算または減算で実現できることに気づいた。世界初の対数表を作る過程で多数の乗算を行う必要があったため、ネイピアは乗算と除算ができるそろばんのような器具「ネイピアの骨」を考案した。実数は直線上の距離または間隔として表現できることから、1620年代に計算尺が発明され、乗算や除算がそれまでより格段に素早く行えるようになった。計算尺は技術者や仕事上で数学的な計算を必要とする人々が数世紀に渡って使い続け、最終的に電卓の登場で役目を終えた。 ドイツの博学者ヴィルヘルム・シッカートは1623年に calculating clock を設計したが、製作中の1624年に火事で破壊され、シッカートは完成をあきらめた。1957年に2枚のスケッチが発見されたが、既に計算機の歴史に影響を及ぼすには遅かった。 1642年、まだ十代だったブレーズ・パスカルが計算機の先駆的研究を始め、3年後に完成させて50台の試作機を作った。このため一般にパスカルが機械式計算機の発明者とされている。その後10年間に20台の（Pascaline と称した）計算機を作った。 ゴットフリート・ライプニッツは1672年、Pascaline を改良して乗除算を直接計算できるようにした Stepped Reckoner を発明。重要な点は段付歯車 (en) 機構である。ライプニッツは「立派な人間が労働者のように計算などという誰でもできることに時間をとられるのは無駄だ。機械が使えたら誰か他の者にやらせるのに」と言ったという。ライプニッツは二進法の提唱者でもあり、今日のコンピュータは全て二進法に基づいて動作している。しかし1940年代ごろまで、計算機は十進法を使っていることが多かった。ENIACのリングカウンタは機械式計算機の数字歯車の動きをエミュレートしたものだった。 1820年ごろ、チャールズ・ザビエ・トーマスが世界初の量産された機械式計算機アリスモメーターを作った。これは四則演算が可能だった。ライプニッツの計算機を元にしている。 バベッジの機関については別に述べる。 日本では矢頭良一が1903年に自働算盤という機械式計算機の特許を取得。歯車式で1個の円筒と22枚の歯車などで構成されている。乗算の桁送りと計算終了を自働判定する機能もある、とされている。200台以上が主に軍や政府に売れた。 手回し式の機械式計算機は1970年代ごろ、電卓にとってかわられる直前までさかんに使われ続けた。addiator、コンプトメーター (en)、モンロー計算機 (en)、クルタ計算機、Addo-X、などがある。日本では「タイガー計算器」が代名詞となった。 20世紀になると、機械式計算機、キャッシュレジスター、会計機などは電動機で駆動されるようになった。「コンピュータ（計算手）」という言葉は、そういった計算機械を使って計算を行う職業を意味していた。1920年代、ルイス・フライ・リチャードソンは天気予報に興味を持ち、多数の計算手を集めて気象モデルの数値解析を行うことを提案した。今日でもナビエ-ストークス方程式を使った気象データの数値解析には強力なコンピュータが必要である。 1930年代ごろからフリーデン計算機、マーチャント計算機、モンロー計算機といった企業が四則演算のできる機械式計算機を製造販売し始めた。マンハッタン計画において、後にノーベル賞を受賞したリチャード・P・ファインマンの指揮で多数の女性数学者を計算手として集め、微分方程式の数値解の計算を行った。真空管を使った初期のコンピュータは信頼性が低かったため、マーチャント計算機では八進法版の機械式計算機を発売。コンピュータの計算結果の検算に使った。 1948年、クルタ計算機が登場。小型で携帯可能な機械式計算機である。1950年代から1960年代にかけて、様々な機械式計算機が登場した。 こういった計算機は電卓によっておきかえられた。 世界初の完全電子式の卓上計算機はイギリスの ANITA Mk.VII (1961) で、表示にはニキシー管を使い、177本の小型サイラトロン管を使っていた。1963年6月にはフリーデンがEC-130を発売。こちらはトランジスタを使い、5インチのブラウン管に13桁の数値を表示し、逆ポーランド記法を採用していた（価格は2200ドル）。後継のEC-132では、平方根と逆数を計算する機能も追加されている。1965年にワング・ラボラトリーズが発売したLOCI-2は10桁のトランジスタ卓上計算機で、ニキシー管で表示し、対数も計算できた。 1801年、ジョゼフ・マリー・ジャカールが開発したジャカード織機は織りのパターンをパンチカードで制御するようになっていた。パンチカードを差し替えるだけで織機自体は変更せずに様々なデザインの布を織ることができる。これはプログラミングの観点で画期的な業績である。 チャールズ・バベッジは機械式の自動計算機としては非常に大規模なものを作り、また設計している。1833年、バベッジは数表作成用の階差機関の開発からより汎用的な解析機関へと興味を移した。これは、ジャカールのパンチカードをプログラムの表現に使った（ジャカード織機では、カードの穴は経糸の上げ下げを直接示すだけだが、これはコード化である）。1835年にその解析機関について記述を残している。汎用のプログラム可能なコンピュータであり、入力にはパンチカード、動力源には蒸気機関を採用し、歯車や軸の位置で数値を表すものである。元々は、ないし、階差機関は、数表を高精度で作成することを目的としていたが、より発展した構想である解析機関は、より汎用でプログラム可能な、ある種のコンピュータと言えるかもしれないものであった。設計は正しく、計画も間違っていなかった（あるいは修正可能だった）が、機械製作を担当した職人との不和など様々な要因が重なって製作が頓挫した。バベッジは気難しい男で、誰とでも論争を起こした。部品は全て手作業で作る必要があり、個々の部品の小さな誤差が積み重なって全体としてはうまく動かない可能性もあった（そもそも「必要な精度」というものは当時わかりえなかった）。したがって、部品の精度に口うるさくても仕方のない面もあった。結果として中断したプロジェクトへのイギリス政府の出資中止が決まった。ジョージ・ゴードン・バイロンの娘エイダ・ラブレスは Federico Luigi, Conte Menabrea の著した "Sketch of the Analytical Engine" を英訳し、大量の注釈を付記している。これが世界初のプログラミングについての出版物とされている。 階差機関の初期の限定的設計のものを再現する計画が1991年、サイエンス・ミュージアムで実施された。いくつかの瑣末な修正を施し、バベッジの設計通りに動くことが確認され、時代を遥かに先行していたバベッジの設計が正しかったことが証明された。部品製作にはコンピュータ制御の工作機械を使ったが、当時の職人のレベルに合わせて誤差を生じるようにしている。 ダブリン出身の会計士 Percy Ludgate はバベッジの業績を知らなかったが、独自にプログラム可能なコンピュータを設計し、1909年に出版した著作にそれを記している。 以下は計算に使うこともできる（実際、おこなわれている）が、主としてデータ処理をおこなう機械、タビュレーティングマシンの話である。 1880年代末、アメリカのハーマン・ホレリスは機械で読み取り可能な形で媒体にデータを記録する方法を発明した。それまで、機械が読み取り可能な形で媒体に記録されるのは制御情報であって（ピアノロールやジャカード織機）、データではなかった。当初紙テープを試したが、最終的にパンチカードに到達した。鉄道の車掌が切符に鋏を入れる様を見て、パンチカードを思いついたという。パンチカードに穴を開けるキーパンチ機とそれを処理するタビュレーティングマシンを発明。それらの発明が現代の情報処理発展の基盤となった。機械式カウンタとして、リレー（とソレノイド）を使っている。ホレリスの発明はアメリカでの1890年の国勢調査に使われ、予定の数カ月前に集計を終え、予算も抑えることに貢献した。前回の国勢調査よりも数年短い期間で集計を終えている。ホレリスの創業した会社は後にIBMの中核となった。IBMはパンチカード技術を発展させて一連の商用データ処理機器（パンチカードシステム）を開発した。1950年ごろまでにIBMのシステムが産業界や政府で広く使われるようになっている。文書として一般人が手にするようになったカード（小切手や公共料金の明細など）には "Do not fold, spindle or mutilate"（折ったり穴を開けたり破いたりしないでください）という警告が印刷され、第二次世界大戦後の時代を表すキャッチフレーズとなった。 Leslie Comrieのパンチカード技術に関する記事やウォーレス・ジョン・エッカートの著書 Punched Card Methods in Scientific Computation (1940) によれば、パンチカードシステムとパンチカードを使って微分方程式を解いたり、浮動小数点数の乗除算を行うこともできた。このような機械は第二次世界大戦中には暗号の統計処理にも使われた。左上のタビュレーティングマシンの写真には、機械の右端にパッチパネルが写っている。パッチパネルの上端には一連のトグルスイッチがある。コロンビア大学の Thomas J. Watson Astronomical Computing Bureau（後のトーマス・J・ワトソン研究所）では、最先端のコンピューティングとしてパンチカードシステムを使った天文学の計算が行われていた。 パンチカードは、初期のコンピュータでも入力メディアとして鑽孔テープとともに使われた。 IBMなどパンチカードマシンのメーカーがコンピュータに乗り出してきて、コンピュータが設置された「計算センター」というものが設置されると、そこでは以下のような光景が見られた。ユーザーはプログラムをパンチカードの束の形で計算センターに提出する（プログラムの1行がパンチカード1枚に対応）。カードが読み取られて処理のキューに入れられ、順番がくるとコンパイルされて実行される。結果は提出者の何らかの識別と共にプリンターで印字され、計算センターのロビーなどに置かれる。多くの場合、その結果はコンパイルエラーや実行エラーの羅列であり、さらなるデバッグと再試行を必要とする。パンチカードは今でも使われており、その寸法（および80桁の容量）が様々な面で影響を及ぼしている。その寸法はホレリスのころのアメリカ合衆国の紙幣と同じで、紙幣を数える機械が流用できるためその寸法を採用した。 ディジタルな機械式計算機も存在はしていたが、第二次世界大戦以前、アナログ計算機が「最先端」であった。未来の計算機の発展はこの方向であると考える者も多かった。アナログ計算機は、歯車の位置や動き、あるいは電子部品における電圧や電流といった小規模の物理現象の数学的特性が、例えば弾道運動、慣性運動、共鳴現象、エネルギー伝達といった物理現象の数学的特性と極めてよく似ていることを利用する。つまり、アナログ量として電圧や電流といった電気的な量を使い、物理現象をモデル化する。 アナログ系は他の系の電気的相似物として形成されるもので、その電気的相似物を観測することで対象の系の振る舞いを予測する。特に積分方程式や微分方程式を表すのが得意であり、そういった方程式を解くのに使える。例えば、1928年に作られた water integrator はアナログ量として水を使っている。電気を使った例としては、1941年の Mallock machine がある。プラニメータは地図上の距離をアナログ量として積分を行う（面積を求める）機器である。現代のコンピュータがアルゴリズムとして定式化可能であればどんな情報処理にも対応できるのとは異なり、アナログ計算機には柔軟性がなく、解こうとする問題ごとに配線やスイッチなどで設定を切り替える必要などもあった。一方で、アナログ計算機は複雑な問題について相似物を構成してそのまま解くことができ、当時のディジタルな計算機の能力では及ばない問題にも対応することができた。 最も多く量産され使われたアナログ計算機に類する機器としては、ノルデン爆撃照準器や軍艦に搭載された Arthur Pollen のアルゴシステムのような射撃管制装置といった軍事用途があった。第二次世界大戦後も使われ続けたものもある。Mark I Fire Control Computer はアメリカ海軍が駆逐艦や戦艦に配備し1969年まで使っていた。他にもヒースキットの EC-1、水を使って経済をモデル化した MONIAC Computer といったアナログ計算機があった。 機械式アナログ計算機の技術的頂点といえるのが微分解析機で、マサチューセッツ工科大学でヴァネヴァー・ブッシュらが1927年頃から研究開発を進めたのが始まりとされる。微分解析機の要素技術としては、ジェームズ・トムソンが1876年に発明した機械式積分器や、H・W・ニーマンが発明したトルク増幅器などがある。後にENIACの製作が行われたペンシルベニア大学の電気工学科で製作したものが最も高性能だったともされる。日本でも3例が知られており、1組が保存され動作可能に復元された。 電子式アナログ計算機をアナログコンピュータと呼ぶことがある（詳しくは → アナログコンピュータ）。 電子化されたディジタルな計算機であるが、ENIACの最初の設計は微分解析機に影響を受けており、後にディジタル微分解析機（en:Digital differential analyzer）と呼ばれる計算方式に近い所がある。しかしその後に引き続いて現れたコンピュータはプログラム内蔵方式でありアナログ計算機との関連は薄くなる。そしてあらゆる面で有利なことから、それまでアナログ計算機で解かれていたような問題の解決は、電子的でディジタルな計算機であるコンピュータによって置き換えられた。 しかし、アナログ計算機の遠い子孫は現在でも多用されている。電子式アナログ計算機では多数の真空管を使った電子回路によって実現されていた、入力の差分を極めて大きく増幅して出力するオペアンプは、こんにちではIC化され、簡単なオーディオアンプから精密電子機器に至るまで、便利に使われている。 ディジタル装置はアナログ装置に比べて精度 (算術)に限界があるが、逆にアナログ装置では正確度に限界がある。20世紀の間電子工学は進歩し、高いSN比を保持しつつ低電圧で操作するという問題にも着実に対処してきた。それにより、オペアンプをはじめとする過去であればアナログコンピュータに使われたであろうアナログ電子回路は、測定器などの精密電子機器の内部で、こんにち必要とされる性能まで高められている。 第二次世界大戦前およびその最中、機械装置が電子回路で代替され、アナログ式の計算がデジタル式の計算に取って代わられると現代的コンピューティングの時代が始まった。Zuse Z3、アタナソフ&ベリー・コンピュータ、Colossus、ENIACといったマシンは、リレーや真空管などを使った回路で構成され、パンチカードやさん孔テープを入力および不揮発性記憶媒体に利用した。これらの中の1つを世界初のコンピュータと定義することは、多くの微妙な点（後に掲載した表を参照）を見逃すことになる。 アラン・チューリングの1936年の論文は、コンピューティングと計算機科学に重大な影響を与えた。チューリングは機械的なプロセスで解くことが出来ない問題（停止性問題）があることを証明したわけなのだが、その過程でチューリングは、無制限のテープと有限状態オートマトンから成る計算モデル「チューリングマシン」を提示し、さらに、「任意のチューリングマシンを模擬できるチューリングマシン」である「万能チューリングマシン」を提示した。さらにチューリングはその応用としてチューリング＝チャーチのテーゼで、チューリングマシンや当時他にいくつも提案されていた計算モデルは全て同等のアルゴリズム実行能力があることから、それらのモデルで実行可能ということを「計算可能」の定義とすることを提案した。そして、それらのモデルのように形式的でないため厳密ではないのだが、実際のコンピュータも全て同様に、計算可能性の理論の観点からは、「計算可能」な計算ができるものである、という点では同等だということになっている。 理論から実際に話を移すと、プログラム内蔵方式と、いわゆるノイマン型アーキテクチャが、いくつかの観点から重要とされている。後者はそのように呼ばれてはいるが、発案はジョン・フォン・ノイマンによるものではないとされているが、ノイマンは前述したチューリングらの仕事を熟知していたため、「ノイマン型」と呼ばれる元となった草稿の執筆の際にはそのことは当然意識していたであろう、とする見方がある。 第二次世界大戦のころのコンピュータ開発の流れは3つあった。第一の流れはほとんど無視され、第二の流れは秘密にされた。第一の流れはコンラート・ツーゼによるドイツでの開発、第二の流れはイギリスでのColossusの開発である。これらはアメリカ合衆国での様々なコンピュータ開発プロジェクトにはほとんど影響を及ぼしていない。第三の流れはエッカートとモークリーによりENIACとEDVACの開発であり、こちらは広く公開されていた。 ジョージ・スティビッツは、一般にデジタルコンピュータの父とされている。ベル研究所で働いていた1937年11月、"Model K" と名付けたリレー式計算機を発明し製作。これが二進法を計算機に使った最初の例となった。 1936年、コンラート・ツーゼはドイツで単独でZシリーズという一連の計算機の製作を開始した。記憶装置と（当初は限定的な）プログラム能力を備えた計算機である。完全機械式で二進法を採用した Z1 は1938年に完成したが、部品の精度が悪く継続的に動作することはなかった。 1941年、Z3 が完成。電話機用のリレーを使い安定的に動作した。Z3 は世界初のプログラム制御式の汎用デジタルコンピュータである。多くの点で現代のコンピュータと似ており、様々な点で革新的だった。例えば、浮動小数点数を採用している。実装が複雑になる十進法（バベッジの解析機関は十進法だった）ではなく単純な二進法を採用したため、ツーゼの計算機は当時の技術レベルでの製作が容易になり信頼性も高かった。 Z3 ではさん孔フィルムの形でプログラムを供給した。条件分岐命令がなかったが、1990年代になってZ3がチューリングマシンと等価だったことが証明された（記憶容量が有限だという差異は除く）。ツーゼは1936年に申請した2つの特許で、機械への命令（プログラム）をデータと同じ記憶装置に格納する可能性も示唆している。いわゆるノイマン型アーキテクチャを予期していたことになるが、実際にそれが実装されたのは1948年にイギリスで開発されたSSEMが最初である。また、世界初の高級プログラミング言語プランカルキュールを1945年に設計した（発表は1948年）とされているが、この言語が実装されたのはツーゼの死後5年経った2000年になってからで、ベルリン自由大学のラウル・ロハスのチームが開発した。 第二次世界大戦中にツーゼの計算機は連合国の爆撃で破壊された。彼の業績がイギリスやアメリカの技術者に知られるようになるのはずっと後のことだが、IBMだけは1946年にツーゼの研究再開に資金援助して特許使用権を得ており、かなり早くからツーゼの業績を知っていたと見られる。 第二次世界大戦中、ロンドンから北に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万ドル以上だった（現在の価値に換算すると9650000ドル）。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 を発売し、人気を博した。650 は重量が900kg以上あり、付属の電源装置は約1350kgである。それぞれ別々の筐体となっていて、寸法はそれぞれおおよそ1.5m×0.9m×1.8mである。価格は50万ドル（現在の価値に換算すると4660000ドル）で、リースの場合は月額3500ドル（現在の価値に換算すると30000ドル）だった。磁気ドラムメモリに当初は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万ドル（現在の価値に換算すると90000ドル）だった。 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 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とメモリの接続にそれを使う研究がなされている。 コンピュータの急激な発展は、主要な論文の歴史からも推定できる。誰かが何かを書き終わったとき、既に時代遅れになっているという勢いである。フォン・ノイマンの First Draft of a Report on the EDVAC を多くの研究者が読んだ1945年、それぞれのシステム実装がすぐさま始まった。この開発のペースが今も世界的に続いている。