プログラミング講座トップ ひつじTOWN デジタルシープラーニング

ひつじのC言語入門への道 第2回 コンピュータの歴史

■悲運のENIAC

世界最初の電子計算機は1947年に天才フォン・ノイマンが開発したEDVAC(エドバック)ですが、コンピュータ誕生の歴史をみるとその前年に完成したENIAC(エニアック)が何かとドラマが多く印象が強いです。
ENIACは真空管式のコンピュータで、毎回プログラムを設定して動かすものだったのに比べ、EDVACはプログラム内蔵型という点で現在の電子計算機に近いので、世界初の電子計算機という栄誉を得たものと思われます。
しかしそれ以外は、筆者個人的にはエニアックが最初にコンピュータと言ってもいいように思います。「エニアック 世界最初のコンピュータ開発秘話」という本を読んだ所為かもしれません。フォン・ノイマンもそのENIACの開発を支援する一人であったことを思うと、EDVACが世界最初というのが納得のいかない点があります。
コンピュータシステムに関する特許についてはエニアックが取得し有利でしたが、他の企業から訴えられ、長く法廷で争われました。皮肉にもその裁判での事実確認、証拠の検証の過程で、1973年に裁判の当事者ではなかったアタナソフトべリーのABCコンピュータ(Atanasoff-Berry Computer)が最初の発明として認定され、長い裁判が終わりました。
これらは「ENIAC神話の崩れた日」というノンフィクションに詳しく書かれています。
モークリーとエッカートは、世界初のコンピュータの開発者という栄誉を逃した上に、発明者と言う点でも栄誉を得ることができなかったのでつくづく気の毒です。

■人月の神話

1964年に完成されたIBM360という大型コンピュータはOS(Operation System)という概念を確立した等多くの点で、その後のコンピュータのモデルとなった画期的なコンピュータです。
その時のプロジェクトマネージャの一人だったP. ブルックスがそのプロジェクトでの経験から1973年に書いたソフトウエア開発論「人月の神話」は今も読まれる古典的名著です。
全体的なトーンとしては、プロジェクトを通して、何故うまくいかないのかという反省や後悔があちこちにあって、ややセンチな書です^^;
システム作りという仕事は、人類の歴史始まって以来初めて経験する仕事かもしれない、これまで人間がやってきた仕事とはどうやら何かが本質的に違う、というような観点で書かれており、システム開発の経験のある人には、思わず膝を打つ、と言う場面が多々あります。
この本は30年以上前に書かれているのも関わらず、内容が未だに新鮮です。1990年代に、20周年記念として補筆、加筆し改訂版が出版されました。コンピュータ技術は大きく発展してますが、ソフトウエア開発という人間くさい仕事については、未だに大きな進歩がないことに驚きます。

■銀の弾はない

There is no silver bullet.
同じくP.ブルックスが「人月の神話」を書いた直後に補足して書いた論文です。 銀の弾はそもそも狼男をやっつけるための必要な武器です。ドラキュラににんにくだったか十字架だったか、それと同じですね。P.ブルックスはシステム開発という仕事のなかにも、なんだか狼男のような魔物が住んでいる、でも、そいつをやっつける銀の弾はない、と指摘しました。
例えが絶妙なのと、システム開発をうまくやる方法は無いだろうと予言し、また、その後の歴史をみても、それがことごとく当たっているのもあり、非常に有名になりました。
ソフトウェア工学は、この言葉を過去のものにしようとした研究分野であるともいえます。多くの開発方法論や便利なプログラミング言語が世に出てきましたが、まだ、魔物は健在のようです。
要するにうまくいかない原因は、コンピュータの性能や開発手法では無く、開発者の心や気持ちの問題であり、それを管理することは出来ない、ということではないかと感じています。
よく気をつけていると、この銀の弾は無いという言葉はあちこちでよく引用されています。そういうのを見つけると思わず、にやっとします。
図:コンピュータの歴史


[←] 第1回へ | [↑] プログラミング講座トップへ | [→] 第3回へ