PHPをDisってるブログエントリを集めてみた

スクリプト言語の範疇に入らないかもしれない言語を使っているPHPerのみなさん、こんにちは。
PHPの歴史は、Disられ罵られバカにされ続けた歴史です。
本日は、その歴史を紐解いてみたいと思います(一部、PHP擁護派のエントリも含んでいます)。

なおここで紹介していない記事で、ほかに紹介してほしいものがあれば、教えてください。
あと引用は一部のみなので、元記事の全文を読むことを強くお勧めします。

2006年

では、PHPの世界に帰ります。Perlの人はRubyをうらやみHaskellにおどろきPHPを軽蔑すると言う文化になっているようです。

 

このころには、すでにPHPは軽蔑される存在だったようです。

PerlCPANとそこにいる開発者が優秀なのはすごく理解するけど、どの辺がPerlPHPに対する優位性があるんでしょうか。本気で知らないので教えて欲しい。(PHPではむりぽなマルチスレッドアプリが云々とか、そういうところでの技術論があればキボーン)

優秀な開発者層と言うPerlと、セキュリティホールを作ってしまうPHP層というステレオタイプとかなら、まぁ精神的には理解はするけど、それだけのことなら、あまりにも薄っぺらいというか、それって昔のJavaScriptはデザイナーが使うもの的な偏見と同じじゃんという気がするので、もっと生産的なところでのPerlの優位性を教えてもらえるとありがたいです。

F's Garage @fshin2000 :昔、2ちゃんとかでよくあった、Perl = C++ , PHP = VBってな感じ?

ワシも知りたい。ルールが独特すぎるPerlより、classやtry-catchやデフォルト引数が普通に使えるPHPのほうが、ワシにとっては書きやすい。

その中で、PHPPerlバインディングも用意したりとなかなか頑張っているのだけど、構文がperlに似ているということもあってか、Perl Hackerから見れば「じゃあ最初からPerlでいいじゃん」となることも多い。mod_perlを使えば、をにするのも難しくないし、なによりテンプレートが何種類も選べる。そんなこともあって、Perl Hackerが「あえて」莫迦にする時にPHPを選ぶというのもわからぬでもない。

404 Blog Not Found:PHPを他の言語が見下す理由

PHPをバカにしているという自覚は、Perl Hackerにはあるようです。

それはともかく、YAPC::Asia なんかを見たり聴いた感想としては、PHP がダメな理由は「PHP には Larry も Matz もいないから」とか言ってみたい。半分本気。

http://www.mono-space.net/blog/blosxom.cgi/programming/e060415_php.htm

ワシもそう思う。日本におけるPHP界隈のビッグネームがいれば、PHPがこんなに叩かれることはなかっただろう。

  • 変数のtypeミス(strict 'vars')
  • 変数のスコープ
  • 配列とハッシュの区別
  • 例外処理
  • 関数のリファレンス
  • 無名関数
  • クロージャ
  • CPANの存在
PHPがどうにも好きになれない理由 - Unknown::Programming

PHP4時代の批判だけど、かなり的確。

2007年

使うは天国、インストールは地獄
Webアプリ以外作る気にならない
反吐がでるほど多い呪文
バージョンが変われば別言語
言語で言語を拡張できない
MVCのVしか出来ない

404 Blog Not Found:そろそろPHPに関して一言いっとくか

正直、これほど的外れなPHP批判は見たことない。単に、PHP嫌いな人が理由をこじつけているだけじゃねーの?

っていうのはウラタロスだっけ.っていうかこれ本当にdankogaiのエントリなんだろうか.って位納得できない根拠のインパクトが強いです.
...(snip)...
とりあえず全体と結論で見るとまっとうな話だと思いますが,どうにも首を傾げざるを得ない部分が少なくありませんでした.

釣られてみる? - elf's blog

ですよねー。

2008年

コメント数38個。思ったよりも少ない。

PHPがいかに駄目な言語か、という話。

  • いろんなものがfalseだったりするせいで、新たな比較演算子「===」が必要
  • hashやlistがobjectが区別できない
  • オブジェクト指向機能が壊れている
  • lambda(無名関数)がない。create_functionはlambdaじゃない
  • short_open_tagsやらsafe_modeやらregister_globalsがonになってるかもしれない
  • 一貫性のない名前(str_replace,strlen,parse_strとか)
  • 引数の順番がわかりにくい(in_arrayとかstrposとか)
  • strpos('abcd','a')は0を返すが、0は偽である
  • PHPで書かれたたくさんのアプリがあるがどれもHTMLとロジックが分離されてない(本当?)
  • PHPは初心者に学びやすい」と言われる。確かにそうかもしれないが、 おかげでどれだけのSQLインジェクションやらXSS脆弱性やら、 ひどいコードが放置されていることか
  • グローバル。使うんじゃないってば。

もちろん、反論もあるだろう。たとえば「Defending PHP」とか。

でも、個人的にはやはり否定側の方が筋が通ってる印象かな。

特に「PHPは初心者に学びやすい(と言われていることが問題である)」という部分に共感する。 PHPは初心者に簡単かもしれないが、初心者による手を抜いたWebアプリケーションは PHPが作られた当初はともかく、現代では害悪ではないだろうか。

Webアプリケーションをなめるな

PHPならではの理由がないわけではないことはわかる。 どこでもインストールされているとか、 デプロイが簡単とか。

でも、「初心者に簡単」を一般公開されるWebアプリケーションを 開発するための言語としての利点にするのはもうやめようよ。

コメント欄が超ヒートアップしているので、興味のある人は見るべし。
ただRubyPHPを批判する前にcgi.rbをなんとかしてほしい (なんとかしたいよね)。いくら言語仕様がよくても付属ライブラリがあれでは泣ける。

たとえばPHPしか知らないとしたら、PHPの欠点を指摘されると自分のやり方全体が 否定されたと感じるのではないだろうか。

http://www.rubyist.net/~matz/20080129.html#p01

そうそう! PHPだけじゃないけど、ひとつのことしか知らない人って、感情的な反論が多いんだよね。s/PHP/Java/ とか s/PHP/Rails/ でも成り立つけど。
ちなみにこっちもコメントがヒートアップしてる。

Ruby開発者のまつもとゆきひろさんの日記に「PHPがいかに駄目な言語か、という話」があり、たくさんのコメントが付いている。このエントリはもともとAttacking PHPというページに関して書かれたもので、その反論としてDefending PHPというページもある。Perl Hackerのdankogaiさんも、「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違いというエントリで、PHPの問題点に関して別の視点から言及している。PHPは本当に駄目な言語なんだろうか?

PHPは駄目な言語なのか? | スラド デベロッパー

めでたくスラド入り。これもヒートアップしたコメントが。

...(snip)...しかし"PHP sucks"には他とかなり異なる点が一つあるように見受けられる。

それは、PHPユーザーは他の言語から学んでいるのか、という点。

PHPユーザーが他の言語ユーザーよりも弱いのは、そこなのではないか。

404 Blog Not Found:「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い

PHP嫌いがこじれると、こんなことまで理由にするらしい。

PHPをバカにしている場合ではなく、脆弱なアプリケーションが生まれないように、知識の共有をしていくことが大切なんじゃないかと思います。

PHPは定期的にネタにされる

同意。あと、関連した記事へのリンクが貼られている。

定期的に起こる、PHPに関する議論ですが、今回はRubyまつもとゆきひろさんが火種とあり結構な盛り上がりを見せています。

PHPの欠点 - to-R

ここでも関連した記事へのリンクがまとめられている。

で、ちゃんと言語として設計してないもんだから、こんな間違った実装が修正できないまま「仕様です」になってしまったり…。

$a = 1 && 0;    echo $a; //No output.
$a = (1 and 0); echo $a; //No output.
$a = 1 and 0;   echo $a; //"1" shown, why!?

これ、バージョン5.2.5でも発生。驚きですね。

前略、PHPとかプログラミングに対して思ってること - なんたらノート第三期ベータ

これはPerlでもRubyでも発生するから、PerlRubyも『間違った実装』なんだろうね。
こんなことを理由にdisれば、そりゃPHPerも怒るわな。
〔追記: 2009-11-28〕中の人が間違いを認めたみたい。でも元記事は現時点で修正なし。

2009年

答:やつらが学ぼうとしないから。

俺は別に初心者がチョイスする言語としてPHPはありなんじゃないかとおもうし、PHPやめてRubyにおいでというつもりはない。PHPやめてPerlにいってもいいし、PHPやめてJavaにいってもいいとおもう。しかしPHPをやめないやつらはダメだ。PHP使ってりゃ色々ダメだって分かるだろ。あるいは仮に自分で気づかなくても、Webで検索すりゃわらわら出てくるだろ。今、Webを検索できないような人間がプログラマとして勤まるはずはないんだよね。ひょっとして世のPHPプログラマは適正のない仕事を押し付けられてる人たちなのかもしれないし、その場合はご愁傷様とは思うけど、でもやっぱ向いてない仕事に拘泥することはないんじゃない?まわりも迷惑だし本人としても不幸でしょ。

卜部昌平のあまりreblogしないtumblr - なぜ俺はPHPプログラマを軽蔑するか

これ読んでカチンと来た人は、PHP批判とPHPer批判との区別をつけてから反論しようね。

一個だけ具体例を挙げといてやるよ。後は自分で調べれ。

PHPは何がダメって節操がないとか$が汚いとか色々あるが、そんなことより一番困るのはphp.iniなんだよ。php.iniがあるおかげで「正しく動くプログラム」を書くのが絶望的に難しいんだよ。悪名高いregister_globalsだけじゃなくてたとえばmbstring.http_inputとか、いろんな設定がスクリプトから関与できないところにある。PHPの「正しい」スクリプトはそういうところを毎回条件分岐していかなきゃなんねーの。アホでしょう?たとえばpukiwikiならlib/init.phpを見ればisset()が乱舞しているわけで、そういうところを見て「ああ筋が悪いな」とか思えなきゃダメだ。センスないよ。

ちなみにphp.iniを書き換えられる環境ばかりだと思ったら大間違いだ。ってかホスティングサービスとかで変えれる方が珍しいぐらいだ。ini_setがdisable_functionされてたりするともう打つ手もない(そしてini_set殺すのもやはりホスティングサービスにはありがちだ)。そういうところも含めてphp.iniはダメなんだよ。「正しい」「どこでも動く」スクリプトが(途方もない労力をかけないと)書けないじゃんか。

卜部昌平のあまりreblogしないtumblr - なぜ俺はPHPプログラマを軽蔑するか

これは正論。でも自前サーバでしかやってないからワシは問題になったことはないなあ。問題になるのはPukiwikiのように、大変有名になってしまったがためにいろんな環境で動くことが要請されてしまったアプリケーションだと思う。

文字列であっても整数と解釈できる文字列の場合は勝手に型変換しやがる今世紀最大の愚行を犯してしまうってのは有名な話だよね。
文字列であっても整数と解釈できる文字列の場合は自動的に整数に型変換してくれる超便利機能があるってのは有名な話だよね。

PHPの比較の素晴らしさ加減は正常

「===」の存在を知らない人が好き勝手書いてる。PHPを知らないのにPHPを批判する人が多すぎ。

PHPはプログラム言語として不完全である

 まず僕が一番言いたいこと。それはPHPはプログラム言語として不完全であるということ。

 この文章はこの記事の要約であるとともに、僕がただの宗教戦争家ではないという意味合いを含めてあります。

 僕は単に、構文や思想が好かないとか、バージョンアップごとに仕様がころころ変わることにうんざりしているとか、自分のお気に入りの言語(つまり Lisp!)を使っていることで優越感に浸りたいからとか、お気に入りにも関わらずその言語で仕事を見つけられないことへの嫉妬とか。

 そんなつまらない理由でPHPを貶めようとしているわけではないってことです(別に有益な議論をしたいわけでもないですけど)。

 僕の主張をより具体的に言い換えるならば、PHPはプログラム言語ではなく、HTMLテンプレート言語である。そしてそのテンプレート言語に思いつく限りの魅力的な機能を盛りに盛った言語であるということ。これはPHPの出自を思い返せば納得のいく話。

 にもかかわらず、PHPは5になってオブジェクト指向のための構文まで備えちゃったそうですね。そして、もはやPHPはプログラム言語らしさを持ってしまった。他の言語でできることの多くもPHPでできちゃうようになっちゃいました。

 結構なことです。僕もたまに電子レンジで洗濯もできればいいのになんて考えることがあります。ついでにこたつ代わりにもなってくれればそれに越したことはない。

 でもきっと電子レンジで洗濯ができないのには理由があると思います。僕は高校で物理学が得意じゃなかったのでよくわからないですが、きっと水道をつなぐ穴がないからとか、そういう理由だと思います。

 それでもいろんな機能を盛り込んだ電子レンジ、じゃなくてPHPは、ここにきて本来の目的を見失っている気がします。それもPHP自身さえも自分が何者であるかわからなくなるほどに。

http://e-arrows.sakura.ne.jp/2009/11/phper.html

テンプレート言語であることと、その言語が不完全であることとは、関係あるのかな。『言語が不完全』という意味がよくわからん。完全な言語なんてないと思うけど。あるなら紹介してほしい。

JavaBlack 2009/11/07 01:14
>PHPなどのスクリプト言語もいつでもかけるようにしとけよってね
それは全く逆でしょ.PHPプログラマの方が,JavaPerlなどの汎用言語を使えるようになっておかないとだめ.PHP「しか」書けない人は,本物のプログラマーじゃない.
そもそもPHPJavaScriptについては,スクリプト言語の範疇に含めるべきか否かという問題さえある.

http://d.hatena.ne.jp/sh2/20091106#c1257524055

PHPJavaScriptスクリプト言語じゃないかもなんて、ちょっと失礼だろ。
しかし他のJava屋さんはこういった発言を誰も咎めようとしないんだね。

unpounpo 2009/11/27 16:37
phpが馬鹿にされる理由はphpを擁護する人が馬鹿っぽいからじゃないかなと。
あとphp.iniとかきもちわるい。

http://d.hatena.ne.jp/kwatch/20091126/1259255541#c1259307465

phpを擁護する人が馬鹿っぽい』ことの根拠が何も示されてないので、この人の中では『phpを擁護する人が馬鹿っぽい』ことは根拠を示さなくても同意してもらえる事項なんでしょう。その点では、COBOLer叩きによく似ている。

bushimichibushimichi 2009/11/27 20:41
単純に、ちゃんとしたアプリを作るのが難しいのがPHPということでいいのでは。呪文が多いので。
文法的なことや概念、命名規則なんかは好みもあるだろうから感情論の域を出てない気がする。

http://d.hatena.ne.jp/kwatch/20091126/1259255541#c1259322086

PHPって『呪文が多い』のか?あと、呪文が多い言語だからちゃんとしたアプリを作るのが難しいという理屈もよくわからん。Javaで作られたちゃんとしたアプリはたくさんあるよ?


 * * * *


私見だけど、PHPはWeb界のVB。言語としてはウンコだけど、道具としては結構使える。ただし、適用範囲の見極めは必要 (これはどの道具でもそうだよね)。


〔追記 2009-11-28〕あわせて読みたい:
Modern PHP Programming 入門 @ PFI 社内セミナー

バイトとしてお世話になっている,PFIで,「モダンPHPプログラミング入門」について,社内セミナーでお話してきました.
約一時半,Ustもながしつつ,社員の皆さんから質問をうけつつ.長々と,しゃべってしまいました.
対象者は,PFIの社員さんのように

みたいな人.そんな内容です.
テンプレート言語と言われるPHPですが,プログラミング風の機能もたくさんついているんだぁ!ということを感じていただければ嬉しいです(w

Modern PHP Programming 入門 @ PFI 社内セミナー - 肉とビールとパンケーキ by @sotarok