もうちょっと考えた。
id:Yudoufuさんからのコメントを返信し終わって、食器洗いをしながらぐるぐる考えてたら、ExcelVBA, BASICとの対比で気づいた点がある。言語仕様とそれに対する周囲の反応、歴史、使われ方。ともに良くPHPと似ている。いずれも初心者に学習しやすく、初心者でもすぐ動くものが作れて、手早く、出現以降急速に拡散し、広まり、デメリットが認知されつつも長く使われる言語である。もちろん学習しやすいか否かを置いておけばPerlも例外ではない。いずれもある種のムーブメントを起こし、ITに大きな影響を与えている。
言葉は悪いが、いずれもゴキちゃんのようにしぶとく、進化し続け、生き延びている。
違うのは、PHPはWebアプリケーションを作る為に特化している事だ。PerlでもCGIは作れるが。
そこが分水嶺になっている。顧客に対する価値提供という観点ではExcelVBA/BASIC/PHPともに素晴らしい性能を有している。また動作環境も幅広い。デプロイが容易だ。Webアプリという視点ではASPもあるが、気軽に安いレンタルサーバーを借りられて動かせるのはPHPかPerlだろう。
しかしPHPはWebアプリケーションとして「身元不明の第三者」に公開される。ExceVBA/BASICアプリは企業内で完結する(外に流出したらそれこそ大事件)ため、初学者が作り込んでしまったあやうい所も影響範囲が限定される。一方PHPは外部公開という特性上、初学者があやうい所を作り込んでしまう場合の影響範囲が非常に大きくなる。
いわば、ExcelVBA/Basicアプリでは隠れていたデメリット特性が、PHPの性質から思いっきり表に出てしまった。
これが、PHPが広く使われているにもかかわらず相変わらずいぢめられている事の一因ではなかろうか?
うーん、もうちょい考察が必要。PerlCGIとの対比も必要だろう。
ああ、電車の時間が・・・ Σ(゚д゚lll)
問題は「初心者に作らせて良い言語ではない」にあるのではなく、・・・ああ、もう!電車の時間がマジデヤバイ!!
2008-01-30追記:何だか一日たつとやっぱりそれなりに釣られているようで、小飼氏のBlogも、まつもと氏のBlogにもたくさんのPHPerが釣られている。
うーん、そもそものきっかけとなった
http://mindblind.net/2008/01/24/attacking-php/
への言及が無くて、みんな小飼氏とかまつもと氏の言動にばっかり釣られるのは、やはり国内影響力が半端じゃ無いと言うことか。
私自身としては、↑に書いたことが本筋っぽく思えるので、むしろアンカテの人の方に全面賛同する。
でも、「DBをなめるな」と「Webアプリケーションをなめるな」には重要な違いがある。DBをなめて困るのはなめた本人だけど、WEBをなめて困るのは本人だけではない。
我々は公共性の進化に見あった速度で進化しているか - アンカテ
同意。ここが、違うのだ。やっぱり歴史を振り返ることが出来る人は違う。
実際ExcelVBAが蔓延したばっかりに、本来であればきちんとVBなりVCなりで設計・実装していないといけないような代物なのに、Access+ExcelVBAで恐るべき力業を発揮し、それが為に後々・・・これがくせ者で、モノによっては10年前の代物とかが平気で出てくるのだ。で、後になって別の会社か同じ会社でも事情と歴史を全く知らぬ人間がメンテで泣く、と。
いや、実際泣かされた。
まぁ10年前の代物が出てくることそれ自体は悪くないのだ。むしろ、10年にわたり使い続けられる事はそれだけユーザーが満足しているのだから、むしろ凄い事である。まぁこの辺りは語り尽くされているのでこの辺で。
翻って、これが「第三者に対して公開される」Webでやるとどうなるか。アンカテの指摘通り、企業内で完結していた問題が公にさらされてしまう。このリスクこそが最大の問題点であり、言語機能云々とは別問題としてそこにある。この点について言えばPerlだろうがPHPだろうがRubyだろうがPythonだろうが同列。
落ちがついていないけど、多分、こちらが問題だ。他はまぁ、個々人の好みになっていくと思う。自分自身はPHPの他にJava/Perl/Cとかやっているため、PHPマンセーではない。ケースバイケースで最適解は異なるのだから、只のツールである。PHPでやりたくてもJavaでやらざるを得ない場面もあったし、PHPで作りたかったけどシステム系の関数の実装が不十分で結果としてPerlを使ったこともある。
という感じ。
それにしても、こうして思い返すとつくづく・・・会社の人間向けに書いたPHP入門。
大人の事情により、本連載ではPHPの入り口をWebアプリではなく、コマンドラインから起動する普通のスクリプト言語にしました。
http://www.glamenv-septzen.net/pukiwiki/index.php?PHP%2F%CF%A2%BA%DC
HTTPやApacheなどの余計な些事に囚われず、単純なコードサンプルでPHPの基礎体力を付けましょう。