開発日記

去年の
1月の 3月の

今月のオタク日記
今月の本音日記


開発日記

2002/02/17(Sun)

今月も半ば過ぎてから書いている。
実は仕事がなかなか進まず、長時間仕事をしているので日記を書く気力がないのである。
まあ、それはいいとして。

と言いながら、ネットサーフはそれなりにしている。
最近はまったのが、原生動物と生物の進化の系統樹
原生生物図鑑筑波大学の藻類画像データを見つけたのでこれをじっくりと読んでみたのです。
んでわかったことは、植物や動物という定義が今では非常に曖昧になってしまっていると言うこと。
古くは生物は動物と植物に分かれていて、植物には菌類なども含めていました。
しかし、今では「動物」「植物」「菌類」という分類をしようにもその中に様々な別系統の生物が含まれてしまうため
この分け方ではうまくいかないと言うのが生物学者の認識になっているらしいのです。
今、植物と呼べる生物は何か、と生物学者に聞くと、だいたい次のように答えます。
狭義

緑色植物のみ
緑色植物と紅藻
上の物と褐藻など多細胞で構造を持つもの
上の物と緑藻、褐藻の単細胞のもの、灰色植物、ハプト藻、クリプト藻などの諸藻類
上の物とミドリムシ類(ユーグレナ)
上の物と藍藻(これは原核生物)
広義
と言うことになるらしいです。僕は生物学を専門としていなかったのでこれで正しいかどうかは責任もてません。
ただ言えるのは、もう菌類は植物とは認められていないこと、植物という区切りがはっきりしていないことです。
実は、菌類のうちいくつかは植物よりも我々動物に近い生き物なのです。
他にも、褐藻類は多細胞の動物や緑色植物とは別の系統で、更にその仲間にも動物性の物や菌類が居ること(クロミスタとかストラメノパイルとかと呼ばれる分類になる)
紅藻は多細胞の動物や菌類、緑色植物とは別の系統だけれども、褐藻よりは近いこと
ゾウリムシなどの仲間はアルベオラータという分類にくくられ、その中にも動物性の物や菌類、藻類が居ること
ミドリムシの仲間はユーグレノゾアと呼ばれる分類にくくられ、ゾウリムシや褐藻、緑藻や動物などが含まれるクラウン生物とは
別の仲間になると言うこと。その仲間にも寄生性、植物、捕食生物が居ること。
などという状況になっています。
つまり、生物の系統は動物と植物に分かれる前に既に多くの種類が発生し、その中でさらに
動物(捕食)、植物(光合成)、菌(寄生)などの生活様式を持つ物が分かれたと言うことになります。

植物になった物は皆、葉緑素を持った生物を捕食したり寄生されたりしたことにより共生関係になり
光合成の能力を得て植物様の生物になったと言うことらしいです。
中には葉緑素を捨てた生物もありますが、どうも見たところそれらは全て寄生生物になったみたいです。
更に私は怖いと思ったのですが、一度複雑な構造を持った動物まで進化したにもかかわらず、
寄生生活に慣れてしまったあげく単細胞生物まで退化した物もいるらしいのです。
なんと三胚葉生物(外胚葉、中胚葉、内胚葉を持った生物。クラゲよりも高等とされる)が単細胞生物になったという。
これを見て思ったのは、動物として生きるのが一番難しく、寄生するのが一番楽なのではないかと言うことです。
捕食性(動物)は自分で力を作らないかわりに、自分で動き、食べ、排泄しなければなりません。
独立栄養(植物)は、自力で栄養を作りますが光さえ有れば何処でも生きられますから、動く必要が無くなります。
寄生(菌)は、相手にくっついていれば何もしなくても良いのです。
なんか、いろいろ考えさせられますね。

話変わってコンピューター関係
最近、とあるところで「JAVAとC++はどちらが良い?」という質問やら主張やらがあったので思ったことを。
この二つの言語は文法は良く似通っていますが、実は良い悪いを比べられる相手ではありません。
というのは、C++はコンパイラ言語でJAVAはインタプリタであること、
C++はOSやドライバの開発などにも使えるのに対し、JAVAは基本的にVM上でしか動かせないこと、
そしてJAVAはライブラリまでがほぼ強制的にセットになっているのに対し、
C++は全てのライブラリをフルスクラッチで書けることなど、全く土俵が違っているのです。
強いて言えば、C++はコンパイラさえ有ればJAVAのかわりにもなれますが、JAVAはC++の代わりになれない場面はあります。
JAVAはサポートされている環境が有れば何処でも動かせる(と言われていますが)のは、インタプリタであるからで、
インタプリタがサポートされていない環境では全く動かせません。
逆にC++はコンパイラさえ有ればどのようなCPUでも開発できますが、コンパイラであるために環境ごとにコンパイルしなければ
動かすことができません。

どうもプログラムを生業とする人にも、この辺りの認識が変な人が居るようです。
たぶん、自分の専門の付近しか見ていないために、自分が使っている言語の射程距離がわからないのだと思います。
良くも悪くも、プログラマも分業化が進んでいると言うことでしょう。
私は比較的低レベルプログラミングをやっていますし、簡単なことならスクリプトで済ませたりもしますので、
アプリしか作っていなかったり、Webスクリプトしかしていない人、科学計算だけやってる学者さん達よりは
その辺の射程が広いと思っています。
もちろん、専業でその辺りのノウハウを溜めスキルを上げている人は立派ですが、
言語の比較をするのならば、ちゃんと範囲を決めてやるべきです。
アセンブラとPerlを比較するのはナンセンスです。
Windowsアプリ開発ならばVBとDelphiやVC++を比べることはできますが、ドライバ開発ではVC++しか選べません。
マイクロチップのPICをJAVAでプログラムすることは無理です。Cでならコンパイラがあります。
組込用のZ80系列のCPUのプログラムをPerlでやる人が居たら僕は頭を抱えます。たぶん不可能ではないでしょうけれど。

もしかしたらアプリ屋やスクリプト屋の人たちの中には、CPUの値段が数百円でも高いという世界がよくわからない人が居るかもしれません。
今でも数百円のCPUは現役です。そしてそのCPUの中にはどうやってもJAVAを動かすことができないものもあります。
しかしCは動かせるのです。C++はコンパイラが少ないでしょうが有れば動かせることもありえます。
そこまで認識してから言語の優劣を語って欲しいですね。


1月の
3月の
ホームページに戻る