ソフトウェアとは

公開: 2021年7月14日

更新: 2021年8月20日

あらまし

私たちの祖先の日本人は、「計算とは何か」と言う問題には全く、興味を持ちませんでした。しかし、古代のヨーロッパ、アラビアの数学者・天文学者たちの中には、人間にしかできないと考えられていた「計算」を、機械に「やらせる」ことはできないか、と考える人々がいました。人類の歴史の中で、人類が歯車を使って計算をしようとした試みは、古代ギリシャの時代と考えられています。古代ギリシャの機械は、アンティキテラ島の海底で発見された難破船に積まれていた、時計のようなもので、「アンティキテラの機械」と呼ばれる物でした。それは、惑星の動きを、太陽との位置の関係で真似るための機械であったと考えられています。

その後、フランスの哲学者、パスカルは1640年代に作った「パスカリーヌ」と呼ばれる、足し算、引き算、掛け算、割り算をする、手動式の歯車計算機が知られています。その後、ドイツの哲学者、ライプニッツによる計算機械の作成を経て、18世紀の末から、19世紀の初めごろ、産業革命期のイギリス、ケンブリジ大学で数学を教えていたチャールズ・バッベージによる機械式計算機が有名です。

特に、バッベージが設計した「解析機関」は、現代のコンピュータと同じように、プログラムで計算の手順を指定するやり方を採用していました。この解析機関は、当時の機械加工技術の水準から、実際に動くことはありませんでした。重要なことは、計算の途中結果を一時的に蓄え、その途中結果に基づいて、それ以後の計算を続けることでした。それには、現代の言葉で言う、「増幅」と言う働きが必要でした。

その増幅を可能にしたのは、電子的な回路の利用でした。ある時点で得られている途中結果を基にして、次の計算を新しい計算の始まりとして行うことは、歯車の動きを使った機械では、摩擦による「力」の減衰で、途中に新しい動力源を持たない機械では不可能なのです。電子的な回路では、電源から供給される電力を得ることで、これを可能にします。そのため、現代のようなコンピュータを作れるようになったのは、第2次世界大戦の後になってからでした。

電子回路の実現には、最初、真空管が使われましたが、故障が多いことから、トランジスタ素子が開発されると、真空管に代わって、トランジスタが使われるようになりました。さらに、複数のトランジスタ回路を一つのケイ素製ガラス板上に作るやり方が開発され、「集積回路技術」として確立されました。それによって。コンピュータの小型化が可能になり、その生産コストも大幅に低下しました。大きさでは、体積で約1兆分の1、価格では、約100億分の1になっています。

コンピュータの歴史

18世紀末から19世紀初めにかけて、ケンブリッジ大学で数学を教えていたチャールズ・バッベージは、大英帝国のビクトリア女王からの財政的支援を受けて、世界最初の自動計算機械の設計と試作に取り組んでいました。この機械は、「歯車仕掛け」で動き、人間のように十進数で計算をする計算機械でした。既に、フランスの哲学者で、数学者でもあったパスカルや、ドイツの数学者・哲学者であったライプニッツなどが、足し算、引き算、掛け算、割り算を自動的に行う計算機械の試作に成功していました。

バッベージは、それらの計算機械を改良して、10進数で難しい計算を行う機械を設計しようとしていました。その機械は、計算手順を記録したパンチカードと呼ばれる厚い紙製のテープに穴をあけ、その穴の模様に従って計算のやり方を変え、その紙を1枚ずつ送ってゆき、長い手順の計算を行えるようにするものでした。この方法は、オルゴールに代表される他の複雑な自動機械でも使われていたやり方でした。バッベージは、歯車の位置で計算結果の数を記憶させ、その計算の途中結果に基づいて、さらにその後の計算の仕方を変えることを考えていたようでした。これは、現代のコンピュータが、プログラムで指定されている計算手順に従って計算を自動的に進める方法と同じです。バッベージの計算機を動かすために、世界最初のプログラムの作成を買って出たのが、詩人バイロンの娘で、ラブレス公の妻であったエイダ・アウグスタ・バイロンでした。世界最初のフログラマは、女性だったのです。

残念ながらこのバッベージの野心的な機械は、当時の機械加工技術の水準が低く過ぎたため、満足に動くことはありませんでした。歯車の動きを何十段と伝えるときに生じる摩擦によって、動きを最後の歯車まで伝えようとすると、巨大な力で最初の歯車を回さなければならないからでした。この力が強すぎると、精巧な歯車自体がすぐに壊れてしまいます。力が弱すぎれば、歯車の力は伝わってゆきません。このような複雑な計算を自動的に行うためには、電気を使って、計算途中で次の計算のために、次の計算にしっかりと途中結果をつなげる必要がありました。計算の途中でも、最初の計算と同じ力、エネルギで次の計算に結果を伝える必要があります。電気であれば、「増幅」と言う方法を使って、計算の途中でも力を増すことができます。機械の場合には、この「増幅」が難しいのです。途中に、数多くの原動機(エンジンなど)を入れなければならないからです。

バッベージの試作から100年以上の年月を経て、アメリカのハーバード大学で、エイケンと言う研究者が、IBMの協力を得て、世界最初の電気式自動計算機械の試作に成功しました。この自動計算機械は、電磁石の原理で動く、電磁リレーと言う部品を使って作られました。ドイツやイギリスでも、電気式の自動計算機械の開発が行われました。特に、暗号の解読を高速に行うためでした。ドイツでは、ツューゼと言う研究者が、電器で回転する羽を使った仕掛けを考え出し、その部品を使った計算機を試作していました。

第2次世界大戦が終わった後の1949年に、米国のペンシルベニア大学で、ラジオの部品であった真空管を使った電子回路で、足し算などの計算や、計算結果の一時的な期億を行う部品が作られ、その部品を使ったコンピュータが設計され、試作されました。この自動計算機械は、エイケンが開発した電気式コンピュータと比較すると、高速で計算を実行できる機械でした。ただ、数万本の真空管を使った電子計算機(コンピュータ)は、白熱電球と似たような構造のため、真空管の中にある電極版を温めて、電子を生み出すためのフィラメント素子がすぐに焼き切れてしまうため、まともに動くことはほとんどありませんでした。計算素子や記憶素子として、真空管以外の部品を利用できるようになることが、実用的な計算機械を作るためには、絶対的に必要でした。

米国の電話会社の研究所で、真空管とは異なる原理で電気の流れを変えられるトランジスタ素子が、ショックレーらによって開発されました。これは、電気を一方向にしか流さない、ゲルマニュウムなどの素材を使って、電気の流れを強くしたり、流れにくくすることを、別の電極に流す電流によって変えられるようにできる新しい素材で、半導体と呼ばれました。そのような半導体を使うことで、真空管と似たような動きを可能にし、それを使って高速に計算しようとするものでした。このトランジスタ素子が発明されると、すぐに、IBMなどの計算機メーカが、トランジスタを使ったコンビュータを開発しました。

日本では、トランジスタを使ったコンピュータが誕生してすぐに開発された、鉄の粉を固めて作る磁石の材料を使ったドーナッツ型の磁性体であるフェライト・コアに銅線を3本通して作る記憶素子を使って、たくさんの情報が記憶できるようになりました。日本では、そのフェライト・コアを利用した、新しいパラメトロン素子が、東京大学で考案され、それを使ってコンピュータを開発する研究が、東京大学を中心に進められました。パラメトロン計算機は、試作機の開発に成功し、一般の企業などでの利用ができる商用計算機も制作され、販売されました。しかし、トランジスタ素子で計算を行い、フェライト・コアに計算結果を記憶させるトランジスタ型コンピュータの計算速度が改善され、計算速度の問題に直面したバラメトロン計算機は、やがて使われなくなって行きました。

その後、トランジスタ素子を製造する方法が進歩し、複数のトランジスタ素子を1つのシリコン製のガラス板の上に作る方法である集積回路の技術が開発されました。この技術は、著しい速さで進歩を続け、1980年代に入ると、大規模集積回路の製造技術が開発され、特に同じ回路が並んでいる記憶素子に応用されるようになりました。特に、日本企業は巨大な工場で、大量の記憶素子を、少ない不良品だけで作り出すことができるようになのました。これによって、コンピュータの記憶素子は、1ミリ程度の小さな磁石を作るドーナッツ状のフェライト・コアに3本の銅線を通して作るコア・メモリから、大規模集積回路を使った高速メモリ素子に変わってゆきました。これによって、コンピュータの主記憶装置の大きさは、それまでの数百キロ・バイトの単位から、数千キロ・バイト単位、すなわちメガ・バイト単位の規模に拡大しました。

このことは、コンピュータを動かすために必要なプログラム自身と、プログラムが計算結果や途中結果を蓄えるための記憶域も、大きくすることができるようになったことを意味します。それまでは、大きなプログラムと言っても、数万行から数十万行程度でした。それ以上に大きなプログラムは、一度にコンピュータに読み込むための記憶域がないため、作ることができなかったのです。大規模集積回路のメモリが実用化された後、大きなプログラムの規模は、数百万行の規模になりました。さらに、この大規模集積回路のメモリが普及したことで、それまでは、コンピュータを直接制御することができる機械語を使ったプログラムの作成が必要だった分野でも、プログラムの規模が大きくなる傾向のある高級言語を使えるようになりました。このことによって高級言語と言われる、多くの人々がプログラムを書くことができるCOBOLやFORTRANなどに近いC言語などの高級言語で、様々な用途で使われる高度なプログラムを作成し、コンパイラと呼ばれる翻訳プログラムを使って機械語に変換するやり方がよく使われるようになりました。

(つづく)