今日は ABCマシンの設計者として知られる、ジョン・アタナソフの誕生日(1903)。
ABC は、Atanasoff-Berry Computerの略。アタナソフが計画しましたが、実際の作成にはクリフォード・ベリーが協力しているため、二人の名前がついています。
このABCマシン、ENIAC 以前に作られた、世界最初のコンピューターと呼ばれるものの一つですね。
コンピューターの定義が難しいところですが、私見ではこれはコンピューターではなくて計算機です。
かなり昔に僕が書いたABCマシンの記事があるので、詳細はそちらに譲ります。
ただ、この記事かなり古く、その後知った情報が盛り込まれていません。
記事では「完成しなかった」と書いたのですが、出力ができない以外は動いたのだそうです。
計算結果を出力できないというのは、結局未完成だと言うことですけどね (^^;;
ちょうど良い機会なので、コンピューターと計算機の違いについて、僕の思うところを書いてみます。
最初に言っておきますが、私見ですし、多くの人にとってはどうでも良いことです。
計算をするための機械は計算機です。これは誰もが納得するところでしょう。
ただし、計算に使う道具は計算機ではありません。
古い計算機の話になると算盤を挙げる人がいるのですが、あれは計算を補助する道具であって、計算を行うのは人間です。
同じ理由でネイピアの骨(計算棒)も計算機ではありません。
パスカルの計算機が現存するものとしては一番古いと思いますが、それ以前にもシッカルトが作成したという記録がありますし、アンティキティラ機械も計算機だった可能性があります。
アンティキティラ機械は、紀元前に作られたと推測される歯車機械です。1901年に発見されました。
ここまでは事実。
発見時からぼろぼろの状態で、どうやら失われた部分も多いようです。
研究を行った学者により、おそらくこれは太陽や月、惑星の運行を計算する機械だったろう、となっています。ここは推測であり、事実かはわかりません。
ところで、アンティキティラが出たついでに、「計算」の定義も書いておきましょう。
計算と言うと、数値を入力すると、なんらかの処理をして数値を出力する、というものを想像しがちです。
でも、計算するものは数値とは限りません。
アンティキティラ機械では、おそらく日付を何らかの形で入力すると、その時点での天体の位置を出力します。
現代にも残る類似のもので言えば、星座早見版だって日付を示すと星座の配置を出力します。これだって計算です。
同様に、年月日を示すとその日の月の満ち欠けがわかる、という仕組みもあります。
(星座早見盤の裏についていたりします)
第2次大戦中に日本軍が作った「計算機付」の高射砲は、敵機の位置をスコープが捕捉するように機械を動かし、別に測定した予測高度、航行速度を入力すると、高射砲が「適切な射的位置」に向くようになっていたそうです。
あとは、任意のタイミングで打つだけ。命中率がものすごく高かったとか。
この場合、スコープで捕捉することが「入力」で高射砲の向きが「出力」ですが、計算機です。
さて、計算機の話だけで長くなりすぎました。
ともかく、計算が行えれば計算機。
この計算の内容がある程度複雑な場合、コンピューターと呼ばれます。
「複雑」というのがまたあいまいですが、大体の基準はあって、
1) 繰り返し演算が必要で、ある条件が満たされたときに、自ら計算を終了できること
2) 1 の計算内容や条件を変更できること
3) 2 で複数の計算内容を設定しておき、1つの計算が終わったら次の計算に移行できること
4) 3 のプログラム自体を計算処理対象にできること
1 を満たしただけでも、コンピューターと呼ばれる場合はあります。
現代的には 4 を満たさないとコンピューターとは呼びません。
タイガー計算機は足し算・引き算を繰り返すことで掛け算・割り算を行います。しかし、繰り返し操作は人間が行うため、「自ら計算を終了」できません。
そのため、コンピューターではありません。
後に、タイガーは電気式で自動で掛け算・割り算を行う機械も作っています。
これは、 1 の定義は満たしますので、コンピューターと呼ぶことも可能です。
電動タイガー計算機は、「掛け算」と「割り算」を選べました。計算内容と終了条件は、この設定により変わります。なので、2を満たす、と言えなくもありません。
ちなみに、ABC はガウス消去法を行うマシンだったので、2も満たしません。完全に 1 のみです。
3 をみたせば、ありとあらゆる計算ができることになります。
ENIAC はこの段階です。
4 は、プログラムを内蔵すること。計算するためのデータと、プログラムの間にたいした違いはありません。
プログラム内蔵型になると、プログラムを自己生成して動作することが可能になります。
自己生成と言うとなんだかすごそうですが、コンパイラとかもそうです。
コンピューターと言う言葉はあいまいで、この 1~4 のどの段階でも「コンピューター」と呼ばれてしまいますが、機能は雲泥の差です。
僕は ABC マシンも ENIAC も世界最初のコンピューターだと認めない立場をとっています。
その理由は、一般的に「コンピューター」と呼んだ時、多くの人が 4 を満たしたものを想像するためです。
もっとも、上の理由に「多くの人が想像する」とあるように、重要なのは多数の人の認識だと思っています。
そのため、世界最初のコンピューターを尋ねられた時は ENIAC を挙げたうえで、実際には少し違うことを説明します。
ENIAC は現代的な意味ではコンピューターではないのですが、重要な一歩であり、最初と呼んでも差し支えない、という程度には認めているのです。
もう一つ、ABC が世界最初だと主張する人の根拠の一つが「裁判所が認めた」なのですが、そんなもの、どうでもいいです(笑)
裁判所はなんらかの紛争を裁定する場所であって、技術的な事実を確認する場所ではないですから。
その裁判所すら、ENIAC の特許無効を裁定した時に、先行技術としての ABC を認めただけであって、ABC が最初のコンピューターだなんて言っていないのです。
とはいえ、この裁判で ABC が有名になったのは事実。僕もこの裁判の話として、ABC を知りました。
2進法のデジタル計算機としては最初期のものだったのも事実です。
ENIAC では2進法は採用されなかったとはいえ、ENIAC 完成前に ENIAC の設計者たちに ABC の技術は説明されており、EDVAC 以降現代まで続く2進法コンピューターに影響を与えているのも事実でしょう。
ABC がなければ現代コンピューターはなかった、と言っても間違いはありません。
(2進法の採用はツーゼの Z3 の方が先でしたが、戦時中のドイツで作成されたため、現代のコンピューターに影響を与えてはいません。)
では、最後にもう一度。
今日は、この ABC の設計者、アタナソフの誕生日です。
同じテーマの日記(最近の一覧)
関連ページ
クリフォード・ベリー 命日(1963)【日記 15/10/30】
ジョン・アタナソフ命日(1955)【日記 14/06/15】
申し訳ありませんが、現在意見投稿をできない状態にしています。 |