世界初のコンピュータとはどのようなものだったのか?
世界初のコンピュータは、1940年代に「コンピュータの父」と呼ばれる、フォン・ノイマンがプログラム内蔵方式、いわゆるノイマン型コンピュータの仕組みを提唱し、真空管を使って制作されたものになります。
結論を言ってしまったので、他に話すことが無くなってしまいましたが、当時のコンピュータとはどのようなものだったのか、詳しく掘り下げてみたいと思います。
そもそもコンピュータとは?
コンピュータは、日本語に訳すと「電子計算機」となります。
コンピュータの定義として、「入出力」「記憶」「演算」「制御」という機能を有しているということになります。
入出力
簡単な足し算を考えると、例えば
1 + 2 = 3
という計算式があった場合、1 と 2 を入力し、加算した結果である 3 を出力するという仕組みになります。
記憶
狭義では、演算をする際に必要となる入出力データを格納することを指します。
広義では、記憶媒体(ハードディスクやUSBメモリなど)にデータファイルを保存することも含まれます。
演算
いわゆる加減乗除の算術演算と、AND、OR、NOR、NOTによる論理演算があります。
論理演算については、また別の機会でお話したいと思いますが、入力されたデータを演算処理し、その結果を出力処理に引き渡します。
制御
入出力、記憶、演算をコントロールする言わば、コンピュータの心臓部。制御装置と演算装置を合わせた役割をCPUと呼んでいます。
プログラム内蔵方式とは?
簡単に言ってしまうと、記憶装置にプログラムを予め格納しておき、それを実行する仕組みです。
この仕組みは、今現在もパソコンや大型コンピュータ(スパコンなど)にも使われてます。
パソコンを起動した際に一番最初に実行するBIOS、WindowsやMacOSなどのOS(Operating System)はまさにそれ。
システムプログラムが予め記憶装置に格納された状態で用意されており、それを実行することでパソコンが使えるようになります。
では実際に世界初のコンピュータはどのようなものだったのか?
ENIAC(エニアック)
一般的に世界初のコンピュータは、ENIAC(エニアック)と呼ばれています。
ENIACは、米陸軍の弾道計算のために開発されたと言われています。
記憶および演算について、現在は内部的に2進数を使っていますが、当時は10進数を使って、10桁の数字を記憶させていたそうです。
しかも足し算、引き算しかできず、1桁の数値を表すのに36本の真空管を必要としていたため、コンピュータ全体として、倉庫1つ分のスペース、街の明かりが若干暗くなる(という噂)くらいに巨大なものでした。
真空管は壊れやすく、システム全体で1万本以上使われているため、毎日数本ずつ壊れるという代物でした。
外部記憶装置は、パンチカードでした。
同時進行で進んでいたもう一つのコンピュータ
EDVAC(エドヴァック)
ENIACとほぼ同時期に(厳密には少し前)開発が進められていたのが、EDVAC(エドヴァック)でした。
ENIACの問題点を解消させながら開発された後発のコンピュータになり、こちらは内部的に2進数が使われていました。
EDVACの開発には、フォン・ノイマンも参加しており、論理設計について報告書をまとめています。
ENIACよりも使用した真空管の数も半分以下、消費電力も1/3ほどになっていました。
外部記憶装置として、磁気テープが使われており、処理能力も格段に進歩していました。
EDSAC(エドサック)
しかし、EDVACより先に発表されたのが、ノイマンがまとめたEDVACに関する報告書を元に、イギリスで開発された、EDSAC(エドサック)でした。
名前が似ているので非常にわかりづらいですが、アメリカで弾道計算用に開発されたENIACとEDVACですが、イギリスで開発されたEDSACは、大学の研究用として使われました。
真空管は、3,000本程度でEDVACの半分、消費電力はENIACの1/10ほどで、かなり小規模なものになっていました。
外部記憶装置は、入力に紙テープ、出力にテレプリンタ(電動式タイプライタ)が使われていました。
大昔のSF映画などで使われてた紙テープのコンピュータは、ここから来ていたかもしれませんね。
ここで2進数について簡単に説明しますね
コンピュータは、電子計算機と呼ばれるだけあって、電気で動いています。
つまり、電流のオンオフで演算をコントロールしていることになります。
このオンオフを人間に理解できるように数値化すると、
オン = 1
オフ = 0
ということになります。
この 0 と 1 を使って全ての数字を表現したものが、2進数になります。
普段我々が使っている数字は、10進数と呼ばれるものです。
0 〜 9 までの数字を使って全ての数字を表しているので、10進数と呼ばれています。
一方、2進数は、0 と 1 の2つの数字を使って全ての数字を表しているため、2進数と呼ばれています。
10進数は、1の位、10の位、100の位という風に桁が増えていきます。(小学校1年生レベルですね)
対して、2進数は、1の位、2の位、4の位、8の位という風に桁が増えていきます。
2進数の 1101 は、10進数で表すと、13 となります。