オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識

著者
平澤章
出版社
日経BP社

第4章 p.110 ■プログラミング言語は「退化」した? に、こんな記述がある。

つまりプログラミング言語は進化するにつれて、 機能を増やすだけでなく、不要な機能を使えなくする 「退化」の方向にも進んできたというわけです。

プログラミング言語は、 機械語、アセンブリ言語、高級言語(COBOL、C言語など)、 構造化言語(C++、C#など)、オブジェクト指向言語(Smalltalk、Javaなど) というように「進化」してきた、という話の中の記述である。 しかしJavaは、GOTO文やメモリへの直接アクセスといった、 それまでのプログラム言語が持っていた機能を排除している。 これを『「退化」の方向にも進んできたというわけです』と記述しているわけだが、 ちょっと違う。

「プログラミング言語が進化してきた」という言い方は、 ミーム(meme:意伝子)の進化と考えれば、誤りではない。 変化し、環境に適したもの(+運が良かったもの)だけが生き残る、という点で 生物の進化と同様だからだ。

しかし、『「退化」の方向にも進んできたというわけです』という部分がちょっと違うのだ。 生物でもミームでも、進化の過程ではほぼ必然的に「退化」を伴う。 本書にも例として挙げられていたヒトの尻尾や盲腸はもちろん、ウマの指(中指以外の指)、洞穴の魚の目などなど……。 ここで注意したいのは、生物が「退化の方向に進んだ」のではなく、「一部の器官が退化した」に過ぎないことだ。

つまり、「退化」は「進化」の対義語ではないのだ (「退化」の対義語は「発達」……かな?)。 もちろん、「進化」の対義語……だと考えにくいので、「進化した」の対義語を考えると、「進化しなかった」または「変化しなかった」ということになる。 例えばヒトの指は手も足も5本だから、哺乳類としては「変化しなかった」部類である。

それはさておき、Javaはそれまでのプログラミング言語の持っていた、 プログラムを複雑で再利用しにくいものにしていた機能を捨て去る(退化させる)ことで、 より扱いやすいように「進化」したわけだ。

……その「進化したプログラミング言語」であるJavaを これから勉強しなくっちゃならない。 この歳になって、新しい言語を習得するのは辛いなぁ。

なお、1版1刷の p.134 に誤植があった。 スタックの説明に 「FIFO(First In First Out:先入れ先出し方式)」と書かれていたが、 正しくは「LIFO(Last-In First-Out:後入れ先出し方式)」である。 FIFOはスタック(入れ子になったサブルーチンなど)ではなく、 キュー(例えば印刷の順番待ち行列)が用いるデータの取り扱い方式である。


FrontPage   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-08-11 (金) 21:28:23 (4693d)