2008年01月29日 16:00 [Edit]

「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い

Matzさんの意見に、想定内の反応が返って来ている。

Matzにっき(2008-01-26) - [言語] Attacking PHP
PHPがいかに駄目な言語か、という話。
どの言語で書いてもおかしなコードを書く奴は書く。
perlでもjavaでもrubyでも、どの言語で書いてもSQLインジェクションやらXSS脆弱性やらを作りこむ奴は作りこむ。ただそれだけの話というか、別な話だろう。

両方とも事実だし、foo言語のuserがbar言語がいかに駄目かを語るというのは有史以前(コンピューター言語以前に自然言語でもある)からの話題なのだが、しかし"PHP sucks"には他とかなり異なる点が一つあるように見受けられる。


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

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

(Perl|Python|Ruby)ユーザーには、自らの言語の欠点を知った上で、他の言語の利点を貪欲に取り入れようという人々が多く見られる。上級者であれば上級者であるほどそうで、一番そうなのは言語の父たち。Perlはオブジェクトの実装をPythonから持って来ているし、Perl 6はRubyを先生にしている。Perl 6を待てない人々も、autoboxWeb::Scraperを見れば、今すぐに他の言語から盗めるものを積極的に盗んでいることが見てとれる。

PHPは、どうか。

404 Blog Not Found:惰訳 - プログラムは大変だ、スクリプトにしよう - 過去篇
PHPは初期のPerlが犯した過ちを、Perlよりゆるやかに進めているといえます。
perl.com: Programming is Hard, Let's Go Scripting... Page 2
By and large PHP seems to be making the same progression of mistakes as early Perl did, only slower.

Larryに同意せざるを得ない。

Matzにっき(2008-01-26)
特に「PHPは初心者に学びやすい」という部分に共感する。

しかし「初心者」というのは「弱者」と同じく、その場におけるある人の状態に過ぎず、そのままで居続けることはありえない。先に進むか、下りてしまうかのどちらかだ。

「PHPは初心者に学びやすい」というが、PHPはその後も学び続けやすいのだろうか。もしそうだとしたら、なぜPHP萌え萌えのDHHがRailsを作るにあたって選んだのがRubyだったのだろうか。

PHPの「サクセスストーリー」をよく見ると、初心者が腕を磨いてというのではなくて、むしろ他の言語でならした手練がPHPのいいところだけを使ったというものが目立つ。ニコニコ動画なんてその最たるものだろう。そしてこういうユーザーがPHPに「再投資」するというケースはあまり目立たない。ここで言う「再投資」は、ある言語に助けられた人が、その言語に対して「利用」以上の貢献するということである。PerlにはCPANが、RubyにはGemsが「再投資の受け皿」としてある。それでも満足できない人は、開発者MLが待っている。Pythonはこの点がPerlとRubyに比べて弱いように見受けられるが、それでもPHPほど「使いっぱなし」は目立たない。

その意味では、「初心者にやさしい」というのは、なかなかやっかいな「孔明の罠」なのではないだろうか。

自然言語は、初心者には全くやさしくない。しかしユーザーは一生かけてそれを学ぶし、別の言語から学んだこともその言語にフィードバックしていく。日本語も英語もそうやって進化してきた。

PHPは、どうなのだろうか。

一つ言えるのは、私は学びたい、のではなく、学び続けたい、ということだ。だから学び続けやすい言語に魅力を感じる。PerlもRubyも、最近ではJavaScriptもそうだ。C/C++とLisp/Schemeは一生ものの師という感じがする。Haskellはこの両方の師の薫陶を受けた「若い師」で、いろいろなことを学び直させてもらっている。しかし、PHPには「教官」までしか感じない。それが多分、私がPHPに共感できない一番の理由なのだろう。

Dan the Polyglot


この記事へのトラックバックURL

この記事へのトラックバック
404 Blog Not Found:「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い
404 Blog Not Found:「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い【】at 2012年01月19日 01:46
PHPは定期的に叩かれるそうですが、今回の騒ぎの発端はどうやら、Ruby開発者のまともと氏のブログみたいですね。 PHPがいかに駄目な言語か 彼はPHPを「おかしなコードを書くことを助長する言語」 と考えているようですが、具体的にどの辺がそうなのか、彼の記事からはわ...
PHPは何故こんなに叩かれながら、こんなに使われるのか?【タイチプレス】at 2008年03月05日 00:54
各所でPHPがネタになってるので、ここらで自分も一言いっとく事にする。というのも...
自分もそろそろPHPについて一言いっとくか【PhotoXP】at 2008年02月03日 15:37
初心者の背中が見えません!*1(挨拶 自分なりに、この数日目にした記事や、大事にしている記事をブックマークから引っぱってきました。 私が書いたのは「Webアプリケーションをちゃんと書くのは難しいから、 Webアプリ向け言語に初心者に優しいという宣伝文句を使うのは良
プログラミング言語とWEBアプリケーションの話について【どんなジレンマ】at 2008年02月02日 18:44
PHPについて言及しているいまどきのサイトを集めてみました.
いまどきのPHP【よくきたblog】at 2008年01月31日 17:14
やじうまWatch 【2008/01/30】 でも取り上げられた、 Ruby作者のまつもとひろゆき氏のブログMatzにっき(2008-01-26)から始まる件ですが LL言語圏内にいない人として各言語及びユーザーの立ち位置が分かってちょっと勉強になった。 興味深かったのはdankogai氏のこのエン...
PHPに関する一部での盛り上がりについて【Yukke Clips】at 2008年01月31日 14:46
MatzがまたPHPの良くないところを批判して炎上してるなぁ。 ■ ...
1つの言語に囲い込まれるリスク【ratio - rational - irrational】at 2008年01月31日 00:13
Matzにっき(2008-01-26) 特に「PHPは初心者に学びやすい(と言われていることが問題である)」という部分に共感する。 PHPは初心者に簡単かもしれないが、初心者による手を抜いたWebアプリケーションは PHPが作られた当初はともかく、現代では害悪ではないだろうか。 確かに初
[PHP][Ruby][Python]どの言語が駄目とか【偏った言語信者の垂れ流し】at 2008年01月30日 12:03
Attacking PHP - Matzにっき(2008-01-26) まつもとさんのこのエントリから凄い騒ぎになっているようだけど、ここで一番重要なことは、PHPやRubyがどうのこうのでなくて Webアプリケーションをなめるな Matzにっき(2008-01-26) こっちの方だと思う。 「初心者にやさしい言語(
我々は公共性の進化に見あった速度で進化しているか【アンカテ(Uncategorizable Blog)】at 2008年01月30日 11:34
PHPに欠けているもの。それは学び続ける意欲をもたらす魅力。レベルの低い技術者がのさぼっているのはそれが故。 ・・・言語オタクとしては凄く説得力あるんだけど、支持を得られはしないだろうねぇ。 404 Blog Not Found:「PHPなめんな」と「(Perl|Python|Ruby)をなめんな
[PHP][Neta] 多分違うと思うな【よくきたはてダ】at 2008年01月30日 09:46
PHPがいかに駄目な言語かについてを、「日本発オブジェクト指向スクリプト言語Rubyの作者」まつもとゆきひろさんが客観的にコメントしました。 そのコメントに対して、いろいろと論争が起こっているようです。 ...
PHPは定期的にネタにされる【[Z]ZAPAブロ〜グ2.0】at 2008年01月30日 06:28
404 Blog Not Found:「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違いとか、Matzにっき Attacking PHPとかを見て  「そういえば最近、"結局PHPばかり使っている"という理由でJavaを使うのをやめる方向にしたなあ」 ということを思ったのでメモ。 PHPに関す...
スクリプト言語の美学【港区赤坂四畳半社長】at 2008年01月30日 04:54
それは、PHPユーザーは他の言語から学んでいるのか、という点。 PHPユーザーが他の言語ユーザーよりも弱いのは、そこなのではないか。 http://blog.livedoor.jp/dankogai/archives/50993137.html 弾さんから説得力のあるPHPへの批判記事が初めて出てきたので、それに対して
[php]PHPと(Perl|Python|Ruby)の違い【Blog::koyhoge】at 2008年01月30日 04:35
Matzにっき: Attacking PHP 404 Blog Not Found:「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い こういう波って本当に定期的に来るよね。特に何も書かずにスルーしてたけど、うっかり書いてしまいました。 まず自分の過去を振り返ってみると、2001〜2003年頃は共
[php]またphpネタで盛り上がってる【Lism.in * blog】at 2008年01月30日 02:46
この記事へのコメント
「心は萌え」さんサイコーだね。
好き嫌いや自分の価値基準が物事の優劣に転化される事はどんな世界も一緒だ。
立場や用途や使う側や、ねぇ。
己の基準に凝り固まって「相対的な見方」が出来ない人達が作るプログラムってどうなんだろうか。

あーだこーだ理屈こねてても、結局何が言いたいかって好きか嫌いかって感情だけだ。
実際、Danさんは自分の価値基準を述べた上で、好みを言ってるにすぎない。
「学び続けやすい言語に魅力を感じる・・・故にPHPには魅力を感じない。」

尻馬に乗って理屈こねて優劣言う奴はアホだ。

---

phpってホント叩かれるなぁ。
他社開発メンテするとどれもこれも残念なもんは残念だよ。
むしろ php は叩かれすぎてるせいか、奇麗で良いコードが増えてきてる。
Posted by 雑感 at 2009年01月07日 02:36
レーサーが車の自慢をするようになったら、おしまい。レーサーが自慢するのはドライビングの腕。

車はFF FR 4WDとかいろいろあるだろうけど、それはレーサーが自分に会った物を選べば良いだけ。

FFで強い奴もいれば、FRで強い奴もいる。なかには86最強とかな。


それと同じ。


プログラマーはプログラムの腕を語ればよい話。道具の是非を語っても仕方がない。


牛刀で鶏を割くということわざがあるけれど、牛刀で、ニワトリ用の包丁よりもうまく、裁けるならば牛刀を使えばよいだけの話し。


そじゃないっすかねぇ?
Posted by 心は萌え at 2008年09月24日 07:25
べつに全部しってればいいというだけなんじゃないかなーと思いますけど。
いいところを摘めばいいんだし。
小飼さんの子供っぽいとこは、嫌いじゃないですけど。(笑)
Posted by 肉こっぷん at 2008年02月04日 19:01
http://neta.ywcafe.net/000827.htmlが、
まともな批判になっていない無知な早とちりであること気づいていない人間が多くて愕然とする
Posted by はいいろ at 2008年01月31日 08:01
PHPの良さは、Perlだと自称Perlに無償で多大なる貢献をしたという方が
ゴンドラに乗って「またPerlの書き方をしらない人が現れましたね」と
タコ殴りにしてこない、というところにあるのでしょう。

Perlだって元々は「自分の書きやすいスタイルで書ける言語」という話
だったのに、一旦コードを公開するやいなや元老院の方の御眼鏡に
かならわないと袋叩きにされることにいつのまにかなってしまったのやら。
Posted by rero at 2008年01月31日 03:06
弾さんがPEARやPECLをご存じないようなのには少し驚きました。
Posted by _ at 2008年01月30日 19:53
> 本当のプログラマなら
まー実際COBOLでWEBアプリ書いちゃう人とか知り合いにいるわけだが・・・。
PHPはとりあえず動いたふりさせるまでは楽なんだけど、robustにしようとすると結構神経使うね。確かにWEB用のBASICというか。
ほとんど日替わりでPerl+テンプレートやらServlet+JSPやらPHPやら使う関係で、ある程度何使っても同じような構造になるけど。
Posted by ataru at 2008年01月30日 18:12
>しかし「初心者」というのは「弱者」と同じく、その場におけるある人の状態に過ぎず、そのままで居続けることはありえない。先に進むか、下りてしまうかのどちらかだ。

それを言っちゃ……。まあ、本当のプログラマならFortranで誰よりもすごいWebアプリ作りますから、これからはFortranの時代ですかね? 
Posted by bdot at 2008年01月30日 13:41
要は、

>とにかく私はPerlマンセーRubyマンセーな奴等がえらそうで嫌いです。

こういう人たちが自分の悪口言われたと思いこんで顔真っ赤にしているんでしょうね
Posted by R at 2008年01月30日 12:15
PHPってとても愛されてますね。どうしてそんなに愛されているのかを分析するのもおもしろそう。

あと、いろいろな言語を利用していてPHPもその一つなのですが、
私にとって、ちょっとしたことでつまづく回数が多い言語です。
そういった言語の問題点を指摘することは悪いことなのでしょうか?
Posted by oki at 2008年01月30日 10:45
Perl や Ruby に「わざと初心者をはねつける」要素を感じたことは全くないな。
仮に、ものの見方によってはそう取れるものがあったとしても、度を超えてイージーな言語は却って人を不幸にするという例に過ぎないのではないかな。度を超えて進学しやすい大学院がまさにそうであるように。
Posted by Kei at 2008年01月30日 10:34
私はCから入ってC++,Perl,Python,Ruby,PHPと使ってきましたが、PerlやRubyは特に「わざと初心者をはねつける」的なえらそうな記号化を好む傾向があるので好きではないです。特にPerlやRubyはくだらん記号が多すぎる。初心者にわからんことがエライとでもいいたげです。

初心者に使いにくいということがどれだけ言語としてマズイか、という発想はないのでしょうか?
もっとも脆弱性を作りやすい言語はなんといっても素のC言語でしょう。これ以上に危険な言語はありませんが、それに比べれはPHPははるかにマシです。むしろプログラミングの敷居を下げたことで多くの新しいアプリケーションを生み出したことは評価に値するでしょう。

とにかく私はPerlマンセーRubyマンセーな奴等がえらそうで嫌いです。
Posted by lix at 2008年01月30日 10:25
Perl, Python, Ruby, PHP を含めた言語の pros/cons の話は、2005年の Bruce Tate の "Beyond Java" に一通り載っていて、今回はそこから余り発展していない。Visual Basic から .NET への移行が失敗気味で、愛想を尽かしたユーザの受け皿になったのが PHP だったけど、まずい言語には違いないよね。
Posted by Kei at 2008年01月30日 09:52
うーん、頭悪いので、今までここにコメントしたことなんてなったけど、このコメント欄には驚いた。
toriさんの言う通り、どこにダメユーザが多いからその言語がダメなんて書いてあるんですか・・・
Posted by tomi at 2008年01月30日 09:35
本当はRubyもPerlもスタンダードなPHPに嫉妬してるんじゃないの。
つーかいい加減オープンソースの人たちはPHP一本に絞りなさい。
Posted by cyberbob:-) at 2008年01月30日 09:14
>PPPで作れない物をPHPは作れる。
どういったものか想像がつかない。
Posted by 脊髄反射 at 2008年01月30日 08:58
学ぶのは「どう作るか」よりも、「何を作るか」から得られることの方が大きい。そういう意味でPHPは優れている。PPPで作れない物をPHPは作れる。LISPも同じ。C等と同列に置かないでもらいたい。
Posted by とおりすがり at 2008年01月30日 07:57
PHPに欠けているもの。それは学び続ける意欲をもたらす魅力。レベルの低い技術者がのさぼっているのはそれが故。


・・・言語オタクとしては凄く説得力あるんだけど、支持を得られはしないだろうねぇ。
Posted by スーパー浪人生 at 2008年01月30日 05:01
そもそも人格なんてどこにも持ち出されていないし
どこにも属人論法なんてないじゃない。
「php界隈の初心者ユーザをとりまく状況はいかがなものか。
いわんや言語仕様や言語hypeがそれを助長すらしているのではないか」
という論旨でしょ?
言ってもないことを持ち出す似非反論ばっかり飛び出して
ハナシが飛ぶ逸れる、でハナシになってない。
そんだけ。浅いわー
Posted by tori at 2008年01月30日 01:33
普段から、どこが核なのか分かり難いという気はする。
普及初期段階でビジネス側に採用されたことが言語の力を奪ったのでしょう。
また、一般ユーザの日本語の情報では、ユーザ同士が試行錯誤して
教えあっているレベルという感じがして、役に立つ情報を探すのに苦労する。

疎結合しかできないPHPが Java のインターフェースを真似たら悲惨な事になると思われ
そんなフレームワークで作られたサイトの保守費用は再構築費用に負けると考える。

手早く書き散らかすのには向いていると思うし、何年も使えば
PHP 使いといえどもそこそこのレベルの開発力はつくだろうから、
クローズドな開発環境においては、今後も普及しつづけるだろう。
Posted by 雑感 at 2008年01月30日 01:12
この手の論議に対して、初めてコメント致します。

C -> Perl -> PHP -> Java の順に学んだ者です。
職業柄、現在はPHPを主に使用していますが、
それぞれ特性があり、一長一短。
個人的には、優劣で言語を判断することはできません。

これまでも至る所でなされてきた、
それぞれの言語の特徴を挙げての言語間論争は、
「どっちの言い分も一理あるよなぁ」などと納得しつつ傍観しておりましたが、
言語そのものの特性ではなく、言語の使用者の人格を否定するような内容には憤りを覚えます。

bar言語はhogeである、だからfoo言語の方が優れている。ではなく、
bar言語のuserはhogeである、だからfoo言語の方が優れている。
ということでしょうか?

たしかに仰る意見には大筋で同意はできるのですが、
比較する対象があまりにも遺憾です。
所謂、英語崇拝のような盲目さを感じてしまいました。
Posted by ama at 2008年01月30日 01:08
> それは、PHPユーザーは他の言語から学んでいるのか、という点。

PHP5のOOなんかJavaのコピー言語とまで言われるくらい学んで(=盗んで)
います。

> ここで言う「再投資」は、ある言語に助けられた人が、その言語に対して
> 「利用」以上の貢献するということである。

PEARモジュール/テンプレートエンジンの数だって少なくないですよ。それに、
PerlのメジャーなフレームワークなんてCatalyst程度だし。

PHPに対する悪口の多くは、Perlにも当てはまると思いますよ。一昔前には
(今でも)「型宣言/ポインタ操作ができない言語は素人が使うもの」という
発言がまかり通っていた訳ですし。
Posted by 通りすがり at 2008年01月29日 23:37
Perl でも PHP でも、初心者であり続けることは容易だと思う。初心者レベルまで学習し、その後は学ぶのを止めてしまえば良いからだ。
Perl で初心者止まりの人がどれだけ沢山いるとしても、Perl という言語のキャラクタは変わらない。PHP にしても事情は同じで、どれだけ沢山の下手がぶら下がっていても、そのことが PHP の性格を決定する訳ではない。
むしろ重要なのは、PHP の開発者がどれだけ他言語から学んでいるかということではないだろうか。
Posted by Kei at 2008年01月29日 23:32
ここまで叩かれてると逆にPHPが不憫になってくる
Posted by ori at 2008年01月29日 23:21
なんで言語の話なのにユーザーの話になってるのかなぁ?
Posted by あれれ at 2008年01月29日 22:54
VisualBasicとPHP(全角)を比べるのはVBに失礼
Posted by e at 2008年01月29日 20:52
PHPをVisual Basicに置き換えても、そのまま意味が通じそう…
Posted by おやじです at 2008年01月29日 16:49
もうやめて!PHPerのライフは0よ!
Posted by medusajap at 2008年01月29日 16:41