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 件のコメント:
コメントを投稿