Akira Onishi’s weblog : 低レベルAPIを叩いてプログラムすることの醍醐味
現状では、ミッションクリティカル、高いパフォーマンスが要求されるソフトウェアシステムを開発する技術者が、CLRやJava VMのような抽象度の高いAPIではなく、より低レベルなOSのAPIを使ったりその知識を元にアプリケーションを作っていかなければならないことはわかるし、ここの技術者の努力は絶対に必要だ。
しかしながら、.NETにせよJavaにせよ本当にこれらをエンタープライズレベルのアプリケーションプラットフォームとしたいのであれば、そのような必要性がないようにプラットフォームベンダーがしなければならないのではないだろうか。ここで低レベルといわれているOSのAPIにしても、プロセッサが提供するニーモニックより遙かに抽象度が高く、高レベルであり、かつて、OSの機能が低く、あらゆる意味で今のフレームワークや仮想マシン技術のように不十分であった時代には、アプリケーションのパフォーマンスと信頼性を上げるために、あらゆる方法でOSの機能を回避し、直接プロセッサを操作する方法をとっていた時代もある。つまり今までも通ってきた道なわけだから、現状のフレームワーク・仮想マシン技術もOSのあゆみと同じように進化を遂げなければいけないし、信頼性も向上させていかなければならないはずである。それをやるのは他ならないプラットフォームベンダーである。
コメント
貴重なトラックバック、ありがとうございました。
自由度を低くして実装する戦略をとるのか、あるいは自由度を高くして開発するのか、その選択の幅は構築するシステムの要求にも開発者のスキルにも依存します。
プラットフォームを進化させ、低レベルでないフレームワークを通じて高信頼性のあるエンタープライズアプリケーションを構築できるように改良していくことはプラットフォームベンダーのひとつの使命だと思います。一方で、プラットフォームベンダーは、アプリケーションを構築するための様々な技術をベンダーの押し付けだけでなく、お客様とともに考えていく必要があるとも思います。
機械語やアセンブラレベルの開発が強いられる状況になる開発者はとても限られてくると思います。カーネルプロセスで動作するようなプログラムを書かなければならない人も限られてくるかもしれません。
そんな中でプラットフォームベンダーはプラットフォームの改良と、適切にプラットフォームを利用するための情報開示、対象となる抽象度レベルに応じた開発ツールの提供、事例の共有、様々なことに取り組んでいく必要があるかと思います。
これからも忌憚の無いフィードバックをいただきたいと思います。
低レベルAPIと.NETと最適化
低レベルAPIを叩いてプログラムすることの醍醐味はわかるが、プラットフォームベン