プログラム可能に
改造されたENIAC
では、話をアメリカに戻してENIACを見ていきましょう。ちなみに、ENIACのプログラミングを担当していた女性たちの一部は、まだご存命です。ENIAC時代のプログラマーで、今もご存命の方は5人いらっしゃいます。彼女たちの歴史に関するインタビューやメッセージをまとめた素晴らしいドキュメンタリー映画『Top Secret Rosies: The Female ‘Computers’ of WW II』(図表42)もあります。
図表42 『Top Secret Rosies: The Female ‘Computers’ of WW II』 *YouTube
ピッカリングの時代と同じように、この弾道方程式を解け、と言われた女性たちは、隅のほうへ行って、プラグボードを使ってプログラムします(図表43)。彼女たちは何度も繰り返しプラギングをしていたので、そのうち、そのプラグを使って実際にプログラムする方法を発見しました。そしてENIACは後に、プログラムできるコンピュータとして改造されたのです。
サブルーチンを思いついた
モーリス・ウィルクス、スタンリー・ギル
同じころ、ソフトウェアとは何なのか、という学問が始まりつつありました。先ほど、ソフトウェアエンジニアリングは、1つには信頼だという話をしましたが、実はもう1つあって、それはソフトウェアエンジニアリングの歴史は、混乱の度合いが上がってきた歴史でもあるということです。
かつて私たちは、ソフトウェアは機械の一部だととらえていました。しかし、「いや待てよ、これは『サブルーチン』に切り分けられるのでは」と気づき始めました。
サブルーチンとは、モーリス・ウィルクス(Maurice Wilkes、図表44)、スタンリー・ギル(Stanley Gill、図表45)といった人たちが思いついたアイデアであり、これも1940年代の話です。彼らは、何度も同じ作業を繰り返しているのだから、自分たちでマシンを構築して、そのマシンを働かせて、ここにジャンプさせ、そのあと元に戻るようにさせてはどうか、と気がついたのです。そうすれば、この部分を書くのは1回で済みます。
これが、アルゴリズムのデコンポジション(分解)というアイデアの誕生でした。このアイデアは、次に変化が起こるまで、ソフトウェアエンジニアリングを、以後の約30年にわたって支配することになります。
当時、彼らがグレース・マレー・ホッパー(Grace Murray Hopper)を連れてきて、初めてコンパイラが作られました。
図表44 モーリス・ウィルクス(Maurice Wilkes) *Wikipedia
図表45 スタンリー・ギル(Stanley Gill) *Wikipedia
気象シミュレーションも開発した
ジョン・フォン=ノイマン
さて、ジョン・フォン=ノイマン(John von Neumann、図表46)です。このあたりから、いろいろと面白くなってきます。というのも、彼は戦後、JOHNNIAC(図表47)というマシンに関わっていました。
ここでトリビアを紹介しましょう。なぜ当時のマシンは、JOHNNIAC、MANIAC、ILLIACなとと、名前の多くがACで終わっていたのでしょうか。ACというのは「Automatic Calculator(自動計算機)」の頭文字を取ったものです。それは、そうしたマシンのほとんどが、単に計算をする機械だったからです。
フォン=ノイマンは、兵器研究に必要とされていたプログラムだけなく、天候シミュレーションに必要なプログラムの開発も始めました。初の気象シミュレーションや、初期の人工生命(ALife)などです。私たちが今目にしているこうしたものは、遡って1940年代~50年代から研究が始まっていたのです。
図表46 ジョン・フォン=ノイマン(John von Neumann) *Wikipedia
図表47 JOHNNIAC *Computer History Museum
FORTRANを発明した
ジョン・バッカス
このころ、先述したソフトウェア危機が起こっていました。この時代は、マシンが人間よりもはるかに高価であったという事実を心に留めておいてください。そしてここで、われらがIBMフェロー、ジョン・バッカス(John Backus、図表48)が登場してきます。
当時IBMは熱狂の真只中にありました。別々の言語を使うことが、どれだけ大変かに気づいたのです。ならば、自分たちで高水準言語を作ったらどうだろうか? こうして、「Formula Translation(数式変換)」から名前を取ったFORTRAN(図表49)が誕生しました。
FORTRANは、グレース・マレー・ホッパーたちの業績をベースに作られた言語です。ただしこの言語は、当時のコンピューティング作業のほとんどが純粋に数学的なものだったという事実を反映したものでした。
FORTRANの考え方というのは、機械よりも私たちの頭脳に近い数学的表現を実現できるだろうか、というものです。そして言うまでもなく、あらゆるレガシー言語がそこを出発点にしています。
図表48 ジョン・バッカス(John Backus) *Wikipedia
図表49 FORTRAN
フローチャートを考案した
ゴールドスタインとフォン=ノイマン
同じころ、ハーマン・ゴールドスタイン(Herman Goldstein、図表50)とフォン=ノイマンが、ギルブレス夫妻の作ったプロセスチャートを思い出し、フローチャートを作ろう、と言いだしました。彼らの意見に賛同し、IBMフローチャートが生まれました。私は今でも、とてもクールなIBMフローチャートのテンプレートをもっています。[第6回へ続く]
図表50 ハーマン・ゴールドスタイン(Herman Goldstein) *Wikipedia
・・・・・・・・
◎グラディ・ブーチ氏講演 「ソフトウェアエンジニアリングの歴史」
第1回 エンジニアリングは高級神官イムホテプから始まる
第2回 ソフトウェアエンジニアリングのさまざまな定義
第3回 Adaから始まりエンジニアリングの基礎が築かれる
第4回 ソフトウェアエンジニアリングへ
第5回 サブルーチン、コンパイラ、FORTRANの誕生
第6回 ソフトウェアが現実のものになる
第7回 アルゴリズムからオブジェクト指向へ
第8回 ソフトウェアエンジニアリングの第3の黄金時代
第9回 ソフトウェアは、ハードウェアの可能性の物語を囁く
・・・・・・・・
◎グラディ・ブーチ(Grady Booch)氏
グラディ・ブーチ(Grady Booch)氏は1955年、米国テキサス州生まれ。オブジェクト指向ソフトウェア開発方法論Booch法とソフトウェア開発モデリング言語UMLの開発者。現在、IBM フェロー。ACM フェローおよびIEEEのフェローでもある。*Wikipedia
[IS magazine/i Magazine]