コンピュータ科学の歴史は、現代のコンピュータ科学という学問分野が確立されるずっと前から始まっており、通常は数学や物理学のような形で現れていました。数世紀前の発展は、現在私たちがコンピュータ科学として知っている学問分野を示唆していました。[ 1 ]機械の発明や数学理論から現代のコンピュータの概念や機械へと至るこの進歩は、主要な学問分野の発展、西洋世界における大規模な技術進歩、そして世界規模の貿易と文化の基盤へとつながりました。[ 2 ]
計算に使用された最も古い既知の道具は、紀元前2700年から2300年の間にシュメールで開発されたそろばんです。[ 3 ]シュメール人のそろばんは、彼らの六十進法の数体系の連続する桁を区切る連続した列の表で構成されていました。[ 4 ] : 11元々の使用方法は、砂に小石で線を引くことでした。より現代的なデザインのそろばんは、中国のそろばんのように、今日でも計算ツールとして使用されています。[ 5 ]
紀元前5世紀の古代インドで、文法学者パーニニは、高度に体系化され技術的であるアシュタディヤーイーとして知られる3959の規則でサンスクリット語の文法を体系化した。パーニニはメタ規則、変換、再帰を使用した。[ 6 ]
アンティキティラ島の機械は、初期の機械式アナログコンピュータであると考えられています。[ 7 ] これは天体の位置を計算するために設計されました。1901年にギリシャのアンティキティラ島沖(キティラ島とクレタ島の間)のアンティキティラ難破船で発見され、紀元前100年頃のものとされています。[ 7 ]
機械式のアナログコンピュータ装置は、 1000年後の中世イスラム世界で再び登場した。それらは、アブー・ライハーン・アル=ビールーニーによる機械式歯車式アストロラーベ[ 8 ]やジャービル・イブン・アフラによるトルケトゥム[ 9 ]など、イスラム教徒の天文学者によって開発された。サイモン・シングによれば、イスラム教徒の数学者は暗号解読やアルキンドゥスによる周波数解析の開発など、暗号学においても重要な進歩を遂げた[ 10 ] [ 11 ]。プログラム可能な機械も、バヌー・ムーサー兄弟による自動フルート奏者など、イスラム教徒の技術者によって発明された[ 12 ] 。
同様の複雑さを持つ技術的遺物は、14世紀のヨーロッパにも機械式天文時計として現れた。[ 13 ]
17 世紀初頭にジョン・ネイピアが計算目的で対数を発見すると、 [ 14 ]発明家や科学者による計算ツールの製作において、かなりの進歩が見られました。1623 年、ヴィルヘルム・シッカードはヨハネス・ケプラーの依頼で計算機を設計し、それを計算時計と名付けましたが、1624 年に製作を開始した試作品が火災で焼失したため、プロジェクトを断念しました。[ 15 ] 1640 年頃、フランスの著名な数学者ブレーズ・パスカルは、ギリシャの数学者アレクサンドリアのヘロンが記述した設計に基づいて機械式加算装置を製作しました。[ 16 ]そして 1672 年にゴットフリート・ヴィルヘルム・ライプニッツは階段式計算機を発明し、1694 年に完成させました。[ 17 ]
1837年、チャールズ・バベッジは、現代のコンピュータの最初の設計として認められている解析機関を初めて記述しました。解析機関は、拡張可能なメモリ、演算ユニット、およびループと条件分岐を含むプログラミング言語を解釈できる論理処理機能を備えていました。実際に製造されることはありませんでしたが、この設計は広範囲に研究されており、チューリング等価であると理解されています。解析機関のメモリ容量は1キロバイト未満、クロック速度は10ヘルツ未満でした。[ 18 ]
最初の近代的なコンピュータを設計するには、数学と電子工学理論における著しい進歩が必要だった。

1702年、ゴットフリート・ヴィルヘルム・ライプニッツは、二進数体系に関する著作で、形式的、数学的な意味での論理学を発展させた。ライプニッツは二進体系を簡略化し、論理積、論理和、否定、同一性、包含、空集合などの論理的性質を明確にした。[ 20 ]彼はラグランジュ補間とアルゴリズム情報理論を予見した。彼の計算推論器は、万能チューリングマシンの側面を予見していた。1961年、ノーバート・ウィーナーは、ライプニッツはサイバネティクスの守護聖人とみなされるべきだと示唆した。[ 21 ]ウィーナーは「実際、計算機の一般的な考え方は、ライプニッツの計算推論器の機械化に他ならない」と引用されている。[ 22 ]しかし、ジョージ・ブールが計算プロセスを数学的にモデル化できる完全なシステムを備えたブール代数を1854年に発表するまでには、1世紀以上かかった。[ 23 ]
この頃には、バイナリパターンで駆動される最初の機械装置が発明されていた。産業革命は多くの作業の機械化を推進し、織物もその一つだった。 1801年、ジョゼフ・マリー・ジャカールの織機はパンチカードで制御され、カードに開けられた穴はバイナリの1、穴が開いていない部分はバイナリの0を示した。ジャカールの織機はコンピュータとは程遠いものだったが、機械がバイナリシステムで駆動され、バイナリ情報を格納できることを示した。[ 23 ]

チャールズ・バベッジは、しばしばコンピューティングの先駆者の一人とみなされています。1810年代から、バベッジは機械的に数値や表を計算するという構想を抱いていました。この構想を実現するため、バベッジは小数点以下8桁までの数値を計算できる計算機を設計しました。このアイデアの成功を受けて、バベッジは小数点以下20桁までの数値を計算できる機械の開発に取り組みました。1830年代までに、バベッジはパンチカードを使用して算術演算を実行できる機械を開発する計画を考案しました。この機械は数値をメモリユニットに格納し、逐次制御方式を採用していました。つまり、機械がエラーなく答えを出力できるように、ある演算が別の演算より先に実行される仕組みになっていました。この機械は「解析機関」として知られるようになり、現代のコンピュータの最初の真の姿となりました。[ 24 ]

エイダ・ラブレース(オーガスタ・エイダ・バイロン)は、コンピュータプログラミングの先駆者として知られ、数学の天才とみなされている。ラブレースは、チャールズ・バベッジが最初の機械式コンピュータである「解析機関」に取り組んでいたときに、助手として働き始めた。[ 25 ]バベッジとの仕事の中で、エイダ・ラブレースはベルヌーイ数を計算できる最初のコンピュータアルゴリズムの設計者となった。[ 26 ]ただし、チャールズが最初に差分機関を設計し、その結果として対応する差分ベースのアルゴリズムを設計したため、彼が最初のコンピュータアルゴリズム設計者であることには異論がある。さらに、ラブレースのバベッジとの仕事は、将来のコンピュータが数学的計算を実行するだけでなく、数学的か否かを問わず記号を操作するようになるという彼女の予測につながった。[ 27 ]「解析機関」は彼女の生前には作られなかったため、彼女は自分の仕事の成果を見ることはできなかったが、1840年代から始まった彼女の晩年の努力は注目されなかったわけではない。[ 28 ]

バベッジに続いて、当初は彼の以前の業績を知らなかったものの、アイルランドのダブリンの穀物商人の事務員であったパーシー・ラドゲートが、独自にプログラム可能な機械式コンピュータを設計し、1909年に出版された著作でそれを説明した。[ 29 ] [ 30 ]
レオナルド・トーレス・ケベドとヴァネヴァー・ブッシュという他の2人の発明家も、バベッジの研究に基づいて研究を続けました。トーレスは著書『自動機械に関するエッセイ』(1914年)[ 31 ]で、読み取り専用プログラムで制御される解析的な電気機械式マシンを設計し、浮動小数点演算の概念を導入しました。[ 32 ] [ 33 ]彼は1920年にパリで、演算ユニットが(おそらく遠隔の)タイプライターに接続され、コマンドを入力すると結果が自動的に印刷される電気機械式算術計を用いて、これらの概念の実用性を実証しました。 [ 34 ] [ 35 ]ブッシュの論文『計測分析』(1936年)では、既存のIBMパンチカードマシンを使用してバベッジの設計を実装することについて論じています。同年、彼は電子デジタルコンピュータの構築に関する問題を調査するために、高速算術マシンプロジェクトを開始しました。[ 36 ]

1886年の手紙の中で、チャールズ・サンダース・パースは、論理演算が電気スイッチング回路によってどのように実行できるかを説明した。[ 37 ] 1880年から1881年にかけて、 NORゲートのみ(またはNANDゲートのみ)で他のすべての論理ゲートの機能を再現できることを示したが、この研究は1933年まで未発表だった。[ 38 ]最初に発表された証明は1913年にヘンリー・M・シェファーによるものなので、NAND論理演算はシェファーストロークと呼ばれることがあり、論理NORはパースの矢印と呼ばれることがある。[ 39 ]そのため、これらのゲートはユニバーサル論理ゲートと呼ばれることがある。[ 40 ]
やがて、論理演算にはリレーの代わりに真空管が使われるようになった。1907年にリー・デ・フォレストがフレミング管を改良したものは、論理ゲートとして使用できる。ルートヴィヒ・ヴィトゲンシュタインは、 『論理哲学論考』 (1921年)の命題5.101で、16行真理値表のバージョンを紹介した。一致回路の発明者であるヴァルター・ボーテは、 1924年に最初の現代的な電子ANDゲートを発明した功績で、 1954年のノーベル物理学賞の一部を受賞した。コンラート・ツーゼは、自身のコンピュータZ1(1935年から1938年)のために電気機械式論理ゲートを設計・製作した。
1930年代まで、電気技師は数学的および論理的な問題を解決するために電子回路を構築することができましたが、そのほとんどは理論的な厳密さを欠いたアドホックな方法で行っていました。これは1930年代のスイッチング回路理論によって変わりました。1934年から1936年にかけて、中島明、クロード・シャノン、ヴィクトル・シェタコフは、 2値ブール代数がスイッチング回路の動作を記述できることを示す一連の論文を発表しました。 [ 41 ] [ 42 ] [ 43 ] [ 44 ]電気スイッチの特性を利用して論理を行うというこの概念は、すべての電子デジタルコンピュータの基礎となる概念です。スイッチング回路理論は、現代技術のほぼすべての分野におけるデジタルシステム設計のための数学的基盤とツールを提供しました。[ 44 ]
シャノンは学部時代の哲学の授業でブールの研究に触れ、それが電気機械式リレー(当時は電話回線交換機に使用されていた)を論理問題を解決するために利用できることに気づいた。彼の論文は第二次世界大戦中および戦後に電気工学界で広く知られるようになり、実用的なデジタル回路設計の基礎となった。[ 45 ]

1920年代以前は、コンピュータ(時にはコンピュータ)は、計算を行う人間の事務員でした。彼らは通常、物理学者の指導の下にありました。何千台ものコンピュータが、商業、政府、研究機関で使用されていました。人間のコンピュータとして働いていた事務員の多くは女性でした。[ 46 ] [ 47 ] [ 48 ] [ 49 ]カレンダーのために天文学的な計算を行う人もいれば、軍事用の弾道表を作成する人もいました。[ 50 ]
1920年代以降、 「計算機」という表現は、人間の計算機の作業を行うあらゆる機械、特にチャーチ=チューリングのテーゼの有効な方法に従う機械を指すようになった。このテーゼは、数学的手法が、人間の事務員が紙と鉛筆を使って、必要なだけ、創意工夫や洞察力を必要とせずに実行できる一連の手順として表せる場合に有効であると述べている。
連続値を用いて計算を行う機械は、アナログ式と呼ばれるようになった。これらの機械は、軸の回転角度や電位差といった連続的な数値量を表現する装置を使用していた。
アナログ機器とは対照的に、デジタル機器は数値の状態を表現し、各桁を個別に保存することができた。より高速な記憶装置が発明される以前は、デジタル機器は差分機関やリレーを使用していた。
1940年代後半以降、電子デジタル機器の普及に伴い、 「計算機」という言葉は徐々に「コンピュータ」という言葉に取って代わられた。これらのコンピュータは、それまで人間の事務員が行っていた計算を実行できるようになった。
デジタル機器に格納される値はアナログ機器のように物理的な特性に縛られないため、デジタル機器を基盤とする論理コンピュータは、「純粋に機械的」と表現できるあらゆることを行うことができた。アラン・チューリングによって考案された理論上のチューリングマシンは、そのようなハードウェアの特性を研究するために理論化された仮想的な装置である。
現代コンピュータ科学の数学的基礎は、クルト・ゲーデルが不完全性定理(1931年)を発表したことから始まった。この定理において、彼は形式体系内で証明および反証できる事柄には限界があることを示した。これにより、ゲーデルらは、 μ再帰関数やλ定義可能関数などの概念を含む、これらの形式体系を定義および記述する研究に着手した。[ 51 ]
1936年、アラン・チューリングとアロンゾ・チャーチはそれぞれ独立して、また共同で、計算可能な範囲に制限を設けたアルゴリズムの形式化と、計算のための「純粋に機械的な」モデルを導入した。 [ 52 ]これがチャーチ=チューリングのテーゼとなり、電子計算機などの機械式計算装置の性質に関する仮説となった。このテーゼは、十分な時間と記憶容量があれば、コンピュータ上で動作するアルゴリズムによって可能なあらゆる計算を実行できると述べている。[ 52 ]
1936年、アラン・チューリングはチューリングマシンに関する画期的な研究を発表しました。これは抽象的なデジタル計算機であり、現在では単にユニバーサルチューリングマシンと呼ばれています。このマシンは現代のコンピュータの原理を発明し、現代のほとんどすべてのコンピュータが使用するプログラム内蔵方式の概念の誕生地となりました。 [ 53 ]これらの仮想マシンは、計算能力の制限を考慮に入れながら、何が計算できるかを数学的に正式に決定するように設計されました。チューリングマシンがタスクを完了できる場合、それはチューリング計算可能であるとみなされます。[ 54 ]
ロスアラモスの物理学者スタンリー・フランケルは、手紙の中でチューリングの1936年の論文の根本的な重要性についてのジョン・フォン・ノイマンの見解を述べている。 [ 53 ]
1943年か44年頃、フォン・ノイマンはチューリングの1936年の論文の根本的な重要性を十分に認識していたと私は知っています。フォン・ノイマンは私にその論文を紹介してくれ、彼の勧めで私はそれを注意深く研究しました。多くの人がフォン・ノイマンを(現代的な意味での)「コンピュータの父」と称賛していますが、彼自身は決してそのような間違いを犯さなかったでしょう。彼は助産師と呼ぶべきかもしれませんが、根本的な概念はチューリングによるものであると、彼は私に、そしてきっと他の人たちにも強く強調していました。

キャスリーン・ブースは、ロンドン大学バークベック校で最初のアセンブリ言語を書き、自動リレー計算機(ARC)のアセンブラとオートコードを設計した。[ 55 ]彼女はARC、SEC(簡易電子計算機)、APE(X)Cを含む3つの異なるマシンの設計に貢献した。
世界初の電子式デジタルコンピュータであるアタナソフ=ベリーコンピュータは、物理学と数学の教授であったジョン・V・アタナソフと、工学系の大学院生であったクリフォード・ベリーによって、1939年から1942年にかけてアイオワ州立大学のキャンパスで製作された。

1941年、コンラート・ツーゼは世界初の機能的なプログラム制御コンピュータであるZ3を開発した。1998年には、原理的にチューリング完全であることが示された。 [ 58 ] [ 59 ]ツーゼはまた、最初のプロセス制御コンピュータと考えられているS2計算機も開発した。彼は1941年に初期のコンピュータ企業の1つを設立し、世界初の商用コンピュータとなったZ4を製造した。1946年には、最初の高水準プログラミング言語であるPlankalkülを設計した。[ 60 ]
1948年、マンチェスター・ベビーが完成しました。これは、現代のほとんどすべてのコンピュータと同様に、メモリに保存されたプログラムを実行する世界初の電子デジタルコンピュータでした。[ 53 ]マックス・ニューマンがチューリングの1936年の画期的なチューリングマシンに関する論文と、このプロジェクトへの論理数学的貢献から受けた影響は、どちらもベビーの開発成功に不可欠でした。[ 53 ]
1950年、英国国立物理研究所は、チューリングの哲学に基づいた小型プログラマブルコンピュータであるPilot ACEを完成させた。動作速度1MHzの Pilot Model ACEは、しばらくの間、世界最速のコンピュータであった。[ 53 ] [ 61 ] ACEのチューリングの設計は、今日のRISCアーキテクチャと多くの共通点があり、初期のMacintoshコンピュータとほぼ同じ容量の高速メモリを必要とした。これは当時の基準からすると膨大なものであった。[ 53 ]チューリングのACEが計画通りに完全に構築されていたら、他の初期のコンピュータとは全く異なるレベルにあっただろう。[ 53 ]
1950年代後半には、オペレーターの介入を少なくしてジョブを実行できるようにバッチ処理をサポートする最初のオペレーティングシステムであるGM-NAA I/Oが、ゼネラルモーターズとノースアメリカンアビエーションによってIBM 701向けに開発された。
1969年、UCLAとスタンフォード大学の2つの研究チームが、2台のコンピュータ間でネットワークを構築する実験を行った。最初の接続試行時にシステムはクラッシュしたが、インターネットへの大きな一歩となった。

最初の実際のコンピュータバグは蛾でした。ハーバード マーク II のリレーの間に挟まっていました。[ 62 ] 「バグ」という用語の発明は、1945 年 9 月 9 日に「バグ」を記録したとされる、後にアメリカ海軍少将となるグレース ホッパーにしばしば誤って帰せられますが、他のほとんどの記録は少なくともこれらの詳細と矛盾しています。これらの記録によると、実際の日付は 1947 年 9 月 9 日で、オペレーターがこの「事件」を昆虫と「バグが発見された最初の実際のケース」という注記とともに記録しました (詳細はソフトウェア バグを参照)。 [ 62 ]
クロード・シャノンは、1948年に発表した「通信の数学的理論」という論文で情報理論の分野を創設しました。この論文では、送信者が送信したい情報を最も効果的に符号化する方法という問題に確率論を応用しました。この研究は、データ圧縮や暗号化など、多くの研究分野の理論的基礎の一つとなっています。[ 63 ]

レーダー画像を解釈して敵機を探知する対空システムの実験から、ノーバート・ウィーナーはギリシャ語で「操舵手」を意味する言葉から「サイバネティクス」という用語を作り出した。彼は1948年に「サイバネティクス」を出版し、人工知能に影響を与えた。ウィーナーはまた、計算、計算機、記憶装置、その他の認知的な類似点を脳波の分析と比較した。[ 64 ]

1946年にコンピュータアーキテクチャのモデルが導入され、フォン・ノイマン・アーキテクチャとして知られるようになりました。1950年以降、フォン・ノイマン・モデルは、その後のコンピュータ設計に統一性をもたらしました。フォン・ノイマン・アーキテクチャは、機械命令とデータがメモリ空間を共有できるというアイデアを導入したため、革新的であると考えられていました。フォン・ノイマン・モデルは、算術論理演算装置(ALU)、メモリ、命令処理装置(IPU)の3つの主要部分で構成されています。フォン・ノイマン・マシン設計では、IPUがアドレスをメモリに渡し、メモリは、命令がフェッチされている場合はIPUに、データがフェッチされている場合はALUにルーティングされます。[ 65 ]
フォン・ノイマンのマシン設計はRISC(Reduced instruction set computing)アーキテクチャを採用しており、命令セットはすべてのタスクを実行するために合計21個の命令を使用します。(これは、CISC(Complex instruction set computing)とは対照的です。CISCは、選択できる命令が多数あります。)フォン・ノイマン・アーキテクチャでは、メインメモリとアキュムレータ(論理演算の結果を保持するレジスタ)[ 66 ]の2つのメモリがアドレス指定されます。演算は、単純な算術演算(これらはALUによって実行され、加算、減算、乗算、除算が含まれます)、条件分岐(これらは現在ではステートメントまたはループとしてよく見られます。分岐はステートメントとして機能します)、およびマシンの異なるコンポーネント間の論理移動、つまりアキュムレータからメモリへの移動、またはその逆の移動として実行できます。フォン・ノイマン・アーキテクチャは、データ型として分数と命令を受け入れます。最後に、フォン・ノイマン・アーキテクチャは単純なものであるため、レジスタ管理も単純です。このアーキテクチャは、フェッチされたデータと命令を操作および解釈するために、7 つのレジスタセットを使用します。これらのレジスタには、「IR」(命令レジスタ)、「IBR」(命令バッファレジスタ)、「MQ」(乗数商レジスタ)、「MAR」(メモリアドレスレジスタ)、および「MDR」(メモリデータレジスタ)が含まれます。[ 65 ] また、このアーキテクチャは、プログラムカウンタ(「PC」)を使用して、マシンがプログラムのどこにあるかを追跡します。[ 65 ]ifwhilego to

人工知能という用語は、ジョン・マッカーシーがダートマス夏季研究の提案のために行っていた研究を説明するために考案したものである。人工知能という命名は、コンピュータ科学における新しい分野の誕生にもつながった。[ 67 ] 1955年8月31日、ジョン・マッカーシー、マービン・L・ミンスキー、ナサニエル・ロチェスター、クロード・E・シャノンからなる研究プロジェクトが提案された。正式なプロジェクトは1956年に開始され、人工知能の構成要素をよりよく理解するのに役立つと彼らが考えたいくつかの重要な部分から構成されていた。
マッカーシーとその同僚たちが自動コンピュータの背後に抱いていた考えは、機械がタスクを完了できる能力を持っているならば、それをコンピュータがプログラムにコンパイルして望ましい結果を実行することで検証すべきだというものでした。彼らはまた、人間の脳は複雑すぎて、機械自体ではなくプログラムで再現することは不可能であることを発見しました。当時、そのような高度なプログラムを作成するための知識はまだ存在していなかったのです。
この背後にある概念は、人間が自分の言語をどのように理解し、文をどのように構成するかの構造を調べ、異なる意味や規則セットを与え、それを機械の処理と比較することだった。コンピュータが理解する方法はハードウェアレベルである。この言語はバイナリ(1と0)で記述される。これは、コンピュータが特定のハードウェア部品を実行するための規則セットを与える特定の形式で記述する必要がある。[ 68 ]
ミンスキーの手法は、これらの人工ニューラルネットワークを人間の脳と同様の特性を持つように配置する方法を解明した。しかし、彼は部分的な成果しか得られず、このアイデアに関する研究をさらに進める必要があった。
マッカーシーとシャノンのこの理論の背後にある考えは、複雑な問題を利用して、数学理論と計算によって機械の効率を決定し測定する方法を開発することだった。[ 69 ]しかし、彼らは部分的なテスト結果しか得られなかった。
自己改善の背後にある考え方は、機械が自己修正コードを使用してより賢くなる方法です。これにより、機械は知能を高め、計算速度を向上させることができます。[ 70 ]このグループは、機械が研究の抽象化部分でタスクを完了するプロセスを改善できれば、これを研究できると考えました。
このグループは、このカテゴリーの研究はより小さなグループに分割できると考えた。これには、人工知能に関する感覚情報やその他の形式の情報が含まれる。コンピュータサイエンスにおける抽象化は、数学やプログラミング言語を指すことがある。[ 71 ]
彼らの考える計算上の創造性とは、プログラムや機械が人間の思考と似たような方法を持っているように見えることである。[ 72 ]彼らは、機械が不完全な情報を受け取り、人間の心がそうするように、それを改善して欠落した詳細を補完できるかどうかを確認したかった。もしこの機械がそれができるなら、機械がどのようにして結果を決定したのかを考える必要があった。
{{cite book}}ISBN /日付の不一致(ヘルプ){{cite book}}: CS1メンテナンス: 場所が見つかりません パブリッシャー (リンク) (3+207+1ページ) 10:00分コンラート・ツーゼは「現代コンピュータの発明者」という準公式の称号を得た。
{{cite book}}ISBN /日付の不一致(ヘルプ)