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