階差機関&解析機関
目次
解析機関(Analytical Engine)
しかし、このプロジェクトは、10年の歳月と1万7千ポンド(当時、中流階層の年収が250ポンド)の巨費を使った挙句に破綻します。
要因についてはいろいろと言われています。最も有名な説は「当時の工作技術では、歯車の精度が不足していた」と言うものですが、現在ではその様なことはなかったと考えられています(詳しくはこのページの最後に)。むしろ、階差機関の制作は、当時の加工技術を飛躍的に高め、工業部品の規格化という道を開きました。
本当の原因は、完璧主義者のバベジが完全な仕事を求めたために、いつまで経っても仕事が前に進まず、職人との間に亀裂が生じたためだったようです。また、政府の科学顧門がバベジのことを嫌っており、金を出し渋ったのも原因の一つです。
ともかく、階差機関は完成しませんでした。バベジは新しいアイデアを取り入れ、装置を簡略化しながら高機能にした第2階差機関の設計を始めますが、更にその途中で新しいアイデアを思い付き、階差機関の設計を中止します。
そのアイデアこそが、彼を「コンピューターの父」と呼ばしめる「解析機関」でした。
解析機関のアイデアは、もともと多項式しか演算できない階差機関の汎用性を上げるためのものでした。
階差機関では、三角関数のような「階差を求めると、元の式に戻ってしまう」関数や、円周率の計算のように「階差だけではもとまらない」数値を計算することが出来ませんでした。
これらを計算するのに必要なことは、計算部分と数値部分を切り離して考えることと、精度を上げながら繰り返し計算を行う事です。そこで、バベジはその様な装置を考え、計算と数値を外から指示してやることを思い至ったのです。
バベジが考案した独特の記方で書かれた、装置のブロック図である。 大きな円の周囲に、四則演算のための装置や計算を制御する装置がならぶ。図の右側に整然とならんでいる歯車群は記憶装置を意味している。 |
こうして考案された解析機関は、すでにただの計算機ではありませんでした。計算手順を自分で判断し、一連の複雑な演算を行う事の出来る「計算手」、つまりコンピューターとなったのです。
たとえば、単純な手回し計算機で割り算を行う場合、「被除数から、除数を何回引けるか」を計算します。値がマイナスになるまで計算するのですが、従来この判断を行うのは人間でした。しかし、解析機関では、これを機械自身に判断させる事が出来ます。
試作された解析機関 精度も低く、記憶容量も小さいものではあるが、理論を確認するために試作されたもの。 実機の制作には、政府の援助を受け国家プロジェクトとして行いたい、というのがバベジの悲願であったため、一度援助の話しが来たにもかかわらず彼は断わっている。 そのため、解析機関はついに制作されることはなかった。 |
このような計算の手順を記録するために、解析機関ではパンチカードを使用しました。パンチカードは、当時最大の発明品であった、自動織機で使われていた記録装置です。
パンチカードは順次解析機関に送り込まれ、計算がなされますが、必要に応じて巻きもどされ、繰り返し演算を行う事も有りました。
先の割り算の例でいくと、値が正の間は、計算後にパンチカードが巻き戻され同じ計算を繰り帰しますが、負になると次の手順に進みます。
実際はパンチカードは2組有り、1つはプログラムを、もう一つはデータを格納した変数を示します。これは、現在のコンピューターと違い、メモリに番地を割り振ると言うアイデアがなかったために、常に変数を指示する必要性があった事に由来します。
もっとも、配列こそがこの「プログラムと分離された変数」のことなのだが、この発明はもっとずっと後のことなのだ。
2018.7.17 追記
メモリに番地がない、ということについて「いつ頃からメモリに番地がついたのか」という質問をいただきました。
この記事自体が古く(20年も前に書いたものだ)、僕の書き方が至らないところもありますので、別ページで解説しました。
解析機関は大きく4つのブロックに分かれます。
パンチカードを読み込む入力部、パンチカードを出力する出力部、値を保存する記憶部(Store)、四則演算を行う演算部(Mill)です。
これ以前の計算機には、このような分離は考えられていませんでした。そして、現在のコンピューターでも、大きく分けるとこの4つの部分からなっています。
このようなわけ方をする事で、それぞれの部分は独立して動作する事が可能になりました。四則演算部では、いくつかの基本演算の組みあわせを同時に計算出来ました。
解析機関のプログラムでは、並列動作を念頭に入れてプログラムを行う事で、歯車の遅さをカバー出来るようにもなっていました。これは、現在で言うスーパースケーラや、パイプラインと同じ概念です。
バベジの計算機は、最初から高速な演算を行う工夫がこらされていたのです。
解析機関のプログラム
解析機関によってもたらされた最大の発見は、プログラミングの可能性でした。
結局解析機関は作成されませんでしたし、プログラムの概念も現在から見れば単純な物なのですが、バベジはプログラムによって、無限に複雑な計算が可能な事を発見したのです。
バベジの理解者に、詩人バイロンの娘、エイダがいました。彼女は「世界最初のプログラマー」と言われています。
Augusta Ada Byron の肖像画。後のLovelace婦人。 バベジとの出会いはエイダ17歳、バベジ40歳の頃である。 階差エンジンの試作を完成したバベジは、披露を兼ねたパーティーを催した。その時にエイダは計算を行う不思議な機械に魅せられ、バベジと親しく付き合うようになるのである。 なお、余談ではあるが米国国防総省が開発したプログラミング言語、Adaは彼女の名を取ったものである。 |
実際は、プログラム(アルゴリズムを考案する事)はほとんど行っておらず、バベジに教わったアルゴリズムを解析機関で実行出来るように翻訳(コーディング)する程度でした。
それでも、当時の知識レベルから見れば遥かに頭の良い女性でしたし、なによりもバベジの業績を正しく理解していました。
エイダ最大の業績は、バベジがイタリアで行った解析機関に関する講演を、イタリアの軍事技術者メナブレアがフランス語でまとめた「メナブレア記録」を、英語に翻訳し、その際に膨大な訳注をつけていることです。
ですから、エイダについては実際にはプログラマーと呼ぶよりは、解析機関の伝道者と言った方が正しいでしょう。
ともかく、バベジの研究は、エイダの助けを得て大きく進みます。そして「プログラムが複雑になるにつれ、その間違いを探し出す労力は途方も無いものになる」と考えるにいたります。
これは、現在のコンピューター社会でも最大の問題である、バグの問題に付きあたったということです。バベジは、この問題が将来重要になるであろうと感じていたようです。