プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

コンピュータの進化


先日NHKスペシャル地球大進化」を見た。


http://www.nhk.or.jp/daishinka/
(いきなりテーマ曲が流れるので注意)


地球46億年の歴史・生物の進化。ぼくが大好きなテーマの一つだ。
NHKスペシャルは出来の良い番組が多いが、これは好きなテーマであることも相まって、最近特にお気に入りだった番組である。
番組のテーマ曲も大好き。雄大でかっこよくて、番組のテーマにもぴったりな感じだ。
サントラが発売されてるらしいんだけど、どうしようかな。
何年か前の「世紀を越えて」の音楽もよかったし、NHKスペシャルのテーマ曲は秀作が多いね。


深夜に偶然再放送で見てから見始めたものの、放映間隔が長くて、残念ながら三本ぐらいしか見てない。
次回の最終回まで、ちゃんとチェックすればよかったな。
と思っていたら、年末にまとめて再放送するらしいので、放送予定が決まったらビデオを予約しよう!
さっそく「はてなアンテナ」に追加だ。


地球が誕生してから人類が繁栄するまでの苦難の道のりを描いたドキュメンタリーである。
地球上に生物が誕生してから人類に至るまで、生物は何度も想像を絶する困難に遭遇し、絶滅の危機を迎える。
そのたびに生物は環境に適応し、時には進化することで生きながらえてきた。
生物は困難に立ち向かってきたからこそ進化することができる。
困難がなかったら進化できなかった、というのが番組のメインテーマである。


ふと、コンピュータとソフトウェアはどの程度進化してきたのだろうか、と考える。
ENIACが発明されてからすでに50年あまり。
ハードウェアは飛躍的な進化を遂げ、世界にはものすごい数のコンピュータが普及した。
それらは世界中のコンピュータに接続され、瞬時にデータの送受信ができる。
フォン・ノイマン博士が見たら、さぞかし驚くに違いない。


ところで、ソフトウェアはどのくらい進化しただろうか?
コンピュータプログラムは今もノイマン博士が考案した「ストアード方式」のままである。
プログラムカウンタが示す命令をデコードして実行し、プログラムカウンタを次の命令へ進める。
様々なプログラミング言語やプログラムを実行する環境(OSなど)は変わっても、根本的な理論は初期のものと何も変わっていない。
ノイマン博士が見たら、きっとこう言うに違いない。
「まだぼくの考えた方法を使っているのかい?」と。


アルゴリズムの定石・割り込み・マルチタスク・仮想記憶・オペレーティングシステム等々、新たに考案されたソフトウェアの技法も数多くあるけど、それらはほとんど何十年も前に考案されたものばかりだ。
最近流行のJavaだって、仮想計算機の考え方はPascalの時代から存在したもので、全く新しいものではない。
ハイパースレッディングはマルチプロセッサの応用の一つと言うことができる。
過去には非ノイマン型コンピュータを研究する部門も多くあったけど、現在はあまり聞かなくなった。
それだけ過去の考案者が偉大だったということなのかもしれないけど、ソフトウェアって、もう進化しないんだろうか!?


それって、ソフトウェア技術者が苦労していないからじゃないかな?
NHKスペシャルを見て、そんなことを考えた。


昔のコンピュータは速度も遅くて、メモリも外部記憶デバイスも少なかった。
もっと速くて容量が大きくて、できれば小さなコンピュータが欲しい。
使う人もソフトウェアを作る人も皆苦労してコンピュータを使っていた。
そんな中、より速くより大容量のハードウェアが作られたのは、それでみんな苦労していたからじゃないだろうか。


ソフトウェアはどうだろう。
ハードウェア的な制限が少なくなり、開発環境も整ってきたおかげで、ソフトウェア開発はずいぶん楽になった。
昔は何時間もかかったコンパイルが、今は瞬時に終わるから、あまり悩まなくてもカット&トライでなんとかなる。
豊富なフレームワークがコードを書く量を減らし、ガベージコレクションのおかげでメモリリークも気にしなくていい。
こういうのは進化と言えないこともないかな。


でもそういうのって、ほんとに進化してるのかな。
地球大進化」によれば、進化って困難に立ち向かった時に起こってるらしい。
最新の技術に楽をしているおかげで、アルゴリズムを工夫したり、新しいアイデアを考えたりする努力を怠ってないだろうか。
開発は楽になったけど、プログラムコードが雑になっているような気がするのは、歳を取ったせいなのかな。
なんか進化の速度が鈍くなっているような気がするんだけど。


番組を見た後そんなことを思ったおじさんでした。:)