このエントリでは、私がこのシリーズでプログラミング言語のことを環境と表現した理由について書くつもりだ。
私は、言語の違いはハードウェアの違いより差が小さいと考えている……とくにウェブアプリケーション開発はそうだ。我々がウェブアプリケーション開発のために使うことができる主要な言語は、 C# 、 Java 、 Perl 、 PHP 、 Python 、 Ruby 、及び、 VB がある。しかし、これらの言語は、大きな差異を持っていない。なぜなら、ウェブアプリケーションは、ウェブブラウザ上で動くからだ。どのような言語を選択しようとも、ウェブブラウザができないことは、我々にもできない。
たとえば、 PHP では AJAX が使えず、 Ruby では MySQL に接続できないといった実現機能上の明確な違いがあれば、私の考えはこれと異なるだろう。しかし、事実として、すべての言語はウェブアプケーションが提供する仕様にとって平等である。
Xbox 360 を見てみよう。そこには C++ と C# という二つの異なる言語がある。C++ は、 Xbox のハードウェア性能を 100% 引き出すためにベストの言語である。C# は、優れた言語ではあるが、パフォーマンスが悪く、 Xbox 360 のハードウェア特性を引き出すことができないため、マイクロソフトは C# では TCR ( Technical Certification Requirements: プラットフォームメーカーによる品質審査) を通過することは極めて困難と明言している。ここにはプログラミング言語を選択するための明確な違いがある。それが、私が考える現実的な言語間の差異である。
重要なのは実行環境としてのプラットフォームである。ウェブアプリケーション開発には、このようなプログラム言語上の違いがない。従って、パッケージソフトである XOOPS Cube がプログラミング言語を選択する理由は、ユーザーが我々のプログラムを実行するためのサーバ環境を使うことができるかどうかにある。スクウェアエニックスがドラゴンクエストのターゲットコンソールを選択する理由と同じ理由というわけだ。たとえ PlayStation 3 が DS より優れているとしても、スクウェアエニックスが PlayStation 3 でドラゴンクエストをリリースする動機にはならない。まして、ウェブアプリケーションの開発には PlayStation 3 と DS のような性能上の違いがないのである。
言語にこだわる必要がないから、今は PHP 環境に固執するのである。そして言語にこだわる必要がないから、将来 PHP 環境に固執しないのである。
繰り返すが、ブラウザができることが我々にできることである。もし Ruby でプログラムすればブラウザ上でプログラマブルシェーダが動くというのであれば、私はいますぐ Ruby に移るだろう。しかし、ブラウザにできないことは我々にできない。私達のプログラムはテキストをブラウザに送信しているだけに過ぎない。それだけである。だから、よりポピュラーな環境を選択するのである。
日本のウェブアプリケーション開発における言語論争からも、その証拠を見つけることができる。言語間に実現機能に関する違いがないため、言語論争は、「プログラミング言語論争の最終段階」からいきなり始まり、各言語を用いるプログラマの人格や人間性を主題とする。例えば、
- PHP プログラマは、向上心がない。従って、 PHP は、良い言語ではない。
- Ruby プログラマは、高慢である。従って、 Ruby は、良い言語ではない。
- Java プログラマは、真の技術を知らない企業の大量生産品である。
おお、まるでフレームのように見える。これは、本当にプログラミング言語論争だろうか? これは、先に書いたように主要な言語がウェブアプリケーション開発(ブラウザにテキストを送る)について違いを持っていないという証拠であるかもしれない。もちろん、こういったことも IT のプロフェッショナルなプログラマには重要な議論であると思われる。しかし、XOOPS Cube は市民プロジェクトとして、このような議論とは一線を引き、普及を終えた環境にどんどんアプローチすればよい。
私の考えをあなたに強制するつもりはない。しかし、どうぞ、私達が環境を変えたとしても、あなたの経験は決して失われないことを覚えておいてください。そして、我々は、環境を選択する側である。加えて、移植は、するにしても、はるかに将来の話である。
0 件のコメント:
コメントを投稿