MicrosoftとIntelは地球温暖化に貢献し、Sunは原理主義者で市民を惑わす布教活動に余念がない
やけに低温な日々が去年の秋から続いている。すっかり筆者は体をいためて、曇りの日などは毎年そうなのだがすぐに腹をいためる。今年はちょっとでも冷たいものを飲めば胃腸の調子が数日悪くなり、冬の時に悩まされていた手足の痛み--多分風邪の症状の1つ--が出てくる。体を温めると相当具合がよくなるのは今回の苦しみの中で掴んだ知識だ。
MSDN(Microsoft Developer Network)に今月から加入した。しょうがなくだった。開発ツールが相当古くなってもしかしたらこれから出る最新OSでは動かないのではという恐れからだった。VisualStudio.NETのアップグレード版で2万キャッシュバックだったので実質6万なのだが、最新のツールやOSを動かすには、最近のPCが必要になる(今使用しているのでは結構辛い)。Webから最新OSをダウンロードできるが、なんとCDイメージ(ISO9660)なのでCD-Rドライブのない筆者には痛い。今年は特に収入が少ないのに出費がかさむよ。新しいPCはLonghornとか言われる最新OSが出た後に買えばいいかと思うが、最近のMicrosoft(MS)のOSやツールはアクティベーションという要するにMSにセットアップ終了したことを通知させる仕組みがあるので、自動的にMSDNの契約有効期間内にPCを買ってアクティベーションしなくてはならない。一番安上がりにするには来年6月までにPCを買うしかない。でもMSDNで配布されているWinXPなどは将来出るであろうLonghornのアップグレード版に対応しているのだろうか?していていない確率は高いね。MSDNに引き続き加入してもらいたいMSの意向はよくわかるが、6万も7万も毎年払う気はない。それを償却できるほど筆者は開発販売をしていない。
本当は最新OSなんてもういらない。今でも十分で不満もない。一応市場にに出ているソフトがあるので、しょうがなく最新版に付き合わねばならんのだ。
最新PCは電気をむさぼり、部屋を熱くさせる。最近じゃあリサイクル費用を徴収するので安くなったとは言え買うのは気が引ける。
MSに対抗しているSun陣営はJavaを普及させようと躍起だが、どうも昔から筆者は思うのだがJavaだけではメジャーなものにはならんと思う。別にどれが普及してもいいのだが、(Javaの言語仕様を見ていると)Sunの技術に陶酔したかのような考え方はかつてのボーランドを思い出させる。具体的に言えばオブジェクト指向にあまりにもとらわれていると、結局それで足元をすくわれると思うね。Sunの技術陣はどうやら原理主義者のようだ。
日経コンピュータで「大規模Javaは甘くない」という記事があったが、その中でUFO銀行は何が何でもJavaだけでWeb上のシステムを作るそうだが、やばいね、はっきり言って。国有化第2号になるかもしれない銀行なんだよ。そんな事に一生懸命になるよりもっと別のところに力を入れるべきだと思うが。
AutoCAD LT2002でユーザ登録をWeb上で行なう時、オートデスクがJavaを使っていたが、そうとうシステムに負荷がかかりすぎていたらしく、筆者は何週間もオートデスクから秘密の暗号をもらえずにソフトを使えない状態だった。「カッコつけてJavaなんて使うからだ」とその当時思ったが、LT2004ではLT2002で懲りたのかどうか不明だが、FAXか郵送のみのユーザ登録になってしまった。UFO銀行も脆弱なWeb上で挙動不審なJavaを使うのでなくFAXか郵送、宅急便経由にすれば苦労も少なくて済むと思うのだが。
JavaはCPUが直接理解できる機械語に変換しないし、基本データ型以外のオブジェクトの生成は全てnewを使ってヒープを作成させる。おまけに関数名の多態性がデフォルトでONになっていてさらにJavaバーチャルマシンの負荷がかかる。ユーザが作ったプログラムのメモリ関連のバグを事前回避するために(C++で言うdeleteをなくしたために)ガベージコレクション機能が内蔵されているが、これが曲者だろう。システムを遅くさせるし、いつこの処理が発生するか予測できないからシステムに必要なリソースを予測しづらくなり、しょうがないから大雑把に見積もってたくさんのメモリやHDD,高速なCPUを買わざるを得なくなる。
多分ユーザ一人あたりの処理もCGIを使っているのだがら、プロセスをそのたびに発生させ相当メモリを食う。
基本的にJavaはどんなOSでもOKというキャッチフレーズが仇になっている。今盛んに使われているのがサーバー側で実行するJavaの様だが、それならいっそのこと、C言語みたいにコンパイラ言語にしてしまえばいいのだ。そうすれば相当サーバーの負荷は下がる。もしかしたらSunはコンパイラ技術が未熟なためにJavaバーチャルマシン(JVM)でお茶を濁しているのかもしれない。でもJVMができるているのだから、コンパイラを作るのはたやすいと思うのだが。
じゃあ何がいいのだといえば、技術力がありMSが嫌いでないならMSのWebサーバ(Internet Information Server,IIS)とATL サーバーと言うC++クラスライブラリを利用したものなら、マシンの負荷がかからず、大量の処理をこなせるだろう。こちらは1セッションの処理をプロセス単位ではなく、スレッド単位で処理できるし、C++だから実行はすべて機械語で行なわれるから圧倒的に速い。
C#(シーシャープ)という言語がMSから出たが、Javaに似せたもしくは対抗した言語のようだが、言語仕様は結構違っている。MSらしく実際的だ。
筆者はC#も好かない。Javaと同じく政治的な戦略を感じさせる言語だからだ。
おまけにXMLと.NET Frameworkが必要もしくはそれらを使って欲しいようだからね。XMLは基本的にテキストで表現されていて、それをインターネット上でやりとりとすると言うのだから、信じられない。これも原理主義者の臭いがプンプンしている。もしくは個人や会社のプライバシーを全て暴くための陰謀かもしれない。 .NET FrameworkはMicrosoftがPC以外のプラットホームに自社OSを入植させるための変形体だ。Windows上で.NET Frameworkのライブラリが中間言語を通さず機械語に変換するのであれば使う気も起こるが、今のままではアプリが余計重くなるだけで意味がない。PDA(電子手帳)や携帯電話上で動くアプリを作るのであればWindowsがクロスプラットホームとして意味があるのだが、それが.NETの真の狙いなんだろう。
なんか最近ソフトウェアがつまらなくなってきたね。どれこれもよこしまな戦略ばかりを感じるからだ。