2009年3月6日金曜日

PHPについてふと思った事

PHPはASPの模倣品として始まった(?)。
ASPがIISのモジュールとして実装されたのと同様に、Apacheの
モジュールとして登場。

PHPはリクエストに対して(X)HTMLやXMLを描画して返す事に特化した、
つまりMVCのうちV(ビュー)に特化した言語でありながら、現状は
その延命措置としてMVCのしくみを無理矢理PHPの世界に持ち込み、
大型システムに適用しているようにみえる。

PHPはその言語の特性上、スレッドという概念がない(スレッドが
実行環境によって隠蔽されている、リクエスト・レスポンスの一連
の流れが一つのスレッド上で実行されているものの、スレッドを
ユーザーが認識することはない)ため、スレッドを跨がって存在する
オブジェクトを言語構文上、定義することはできない、そのため、
外部モジュールと組み合わせるor実行環境を拡張することにより
オブジェクトのキャッシュ等をすることになる、自ずとPHP単体で
できることの自由度に限度がでてくる。

並列処理に関してもそう、curl_multi関数群を導入して、並列処理を
PHPの言語仕様の外側にある実行環境で対応しようとしている。

スレッドを跨がったオブジェクトのキャッシュや並列処理等をPHPは
全て実行環境に依存しているため、ユーザサイドが実行環境をいじらずに
自由に拡張・改良することはできない。

PHPユーザの多くに共通するのは、「PHPではこのようにしたら楽に
できる」ということは簡単に言えるけれど、PHPの実行環境が内部で
行っている処理については全くと言っていい程知らないため、「PHP
ではこうしている処理を他の言語でもこのようにすればできるよ」
ということができない点。
PHPユーザの大半は、PHPの実行環境の挙動を全く理解していないので、
PHPという閉じた環境の中では生息できるが、他の環境で生息できる
だけの適応力を養ってはいない。

有り体に言えば、PHPユーザの大半は「結果があっていればそれでOK、
結果に至る過程は我関せず」なタイプ。

PHPはプログラミング言語でありながら、実行環境により隠蔽された
部分が非常に多く、その点でVB6以前のVBとよく似ている。

推敲中...

0 件のコメント: