2008年01月29日 16:00 [Edit]
「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い
Matzさんの意見に、想定内の反応が返って来ている。
Matzにっき(2008-01-26) - [言語] Attacking PHPPHPがいかに駄目な言語か、という話。どの言語で書いてもおかしなコードを書く奴は書く。
perlでもjavaでもrubyでも、どの言語で書いてもSQLインジェクションやらXSS脆弱性やらを作りこむ奴は作りこむ。ただそれだけの話というか、別な話だろう。
両方とも事実だし、foo言語のuserがbar言語がいかに駄目かを語るというのは有史以前(コンピューター言語以前に自然言語でもある)からの話題なのだが、しかし"PHP sucks"には他とかなり異なる点が一つあるように見受けられる。
それは、PHPユーザーは他の言語から学んでいるのか、という点。
PHPユーザーが他の言語ユーザーよりも弱いのは、そこなのではないか。
(Perl|Python|Ruby)ユーザーには、自らの言語の欠点を知った上で、他の言語の利点を貪欲に取り入れようという人々が多く見られる。上級者であれば上級者であるほどそうで、一番そうなのは言語の父たち。Perlはオブジェクトの実装をPythonから持って来ているし、Perl 6はRubyを先生にしている。Perl 6を待てない人々も、autoboxやWeb::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
Perl で初心者止まりの人がどれだけ沢山いるとしても、Perl という言語のキャラクタは変わらない。PHP にしても事情は同じで、どれだけ沢山の下手がぶら下がっていても、そのことが PHP の性格を決定する訳ではない。
むしろ重要なのは、PHP の開発者がどれだけ他言語から学んでいるかということではないだろうか。
PHP5のOOなんかJavaのコピー言語とまで言われるくらい学んで(=盗んで)
います。
> ここで言う「再投資」は、ある言語に助けられた人が、その言語に対して
> 「利用」以上の貢献するということである。
PEARモジュール/テンプレートエンジンの数だって少なくないですよ。それに、
PerlのメジャーなフレームワークなんてCatalyst程度だし。
PHPに対する悪口の多くは、Perlにも当てはまると思いますよ。一昔前には
(今でも)「型宣言/ポインタ操作ができない言語は素人が使うもの」という
発言がまかり通っていた訳ですし。
C -> Perl -> PHP -> Java の順に学んだ者です。
職業柄、現在はPHPを主に使用していますが、
それぞれ特性があり、一長一短。
個人的には、優劣で言語を判断することはできません。
これまでも至る所でなされてきた、
それぞれの言語の特徴を挙げての言語間論争は、
「どっちの言い分も一理あるよなぁ」などと納得しつつ傍観しておりましたが、
言語そのものの特性ではなく、言語の使用者の人格を否定するような内容には憤りを覚えます。
bar言語はhogeである、だからfoo言語の方が優れている。ではなく、
bar言語のuserはhogeである、だからfoo言語の方が優れている。
ということでしょうか?
たしかに仰る意見には大筋で同意はできるのですが、
比較する対象があまりにも遺憾です。
所謂、英語崇拝のような盲目さを感じてしまいました。
普及初期段階でビジネス側に採用されたことが言語の力を奪ったのでしょう。
また、一般ユーザの日本語の情報では、ユーザ同士が試行錯誤して
教えあっているレベルという感じがして、役に立つ情報を探すのに苦労する。
疎結合しかできないPHPが Java のインターフェースを真似たら悲惨な事になると思われ
そんなフレームワークで作られたサイトの保守費用は再構築費用に負けると考える。
手早く書き散らかすのには向いていると思うし、何年も使えば
PHP 使いといえどもそこそこのレベルの開発力はつくだろうから、
クローズドな開発環境においては、今後も普及しつづけるだろう。
どこにも属人論法なんてないじゃない。
「php界隈の初心者ユーザをとりまく状況はいかがなものか。
いわんや言語仕様や言語hypeがそれを助長すらしているのではないか」
という論旨でしょ?
言ってもないことを持ち出す似非反論ばっかり飛び出して
ハナシが飛ぶ逸れる、でハナシになってない。
そんだけ。浅いわー
・・・言語オタクとしては凄く説得力あるんだけど、支持を得られはしないだろうねぇ。
どういったものか想像がつかない。
つーかいい加減オープンソースの人たちはPHP一本に絞りなさい。
toriさんの言う通り、どこにダメユーザが多いからその言語がダメなんて書いてあるんですか・・・
初心者に使いにくいということがどれだけ言語としてマズイか、という発想はないのでしょうか?
もっとも脆弱性を作りやすい言語はなんといっても素のC言語でしょう。これ以上に危険な言語はありませんが、それに比べれはPHPははるかにマシです。むしろプログラミングの敷居を下げたことで多くの新しいアプリケーションを生み出したことは評価に値するでしょう。
とにかく私はPerlマンセーRubyマンセーな奴等がえらそうで嫌いです。
仮に、ものの見方によってはそう取れるものがあったとしても、度を超えてイージーな言語は却って人を不幸にするという例に過ぎないのではないかな。度を超えて進学しやすい大学院がまさにそうであるように。
あと、いろいろな言語を利用していてPHPもその一つなのですが、
私にとって、ちょっとしたことでつまづく回数が多い言語です。
そういった言語の問題点を指摘することは悪いことなのでしょうか?
>とにかく私はPerlマンセーRubyマンセーな奴等がえらそうで嫌いです。
こういう人たちが自分の悪口言われたと思いこんで顔真っ赤にしているんでしょうね
それを言っちゃ……。まあ、本当のプログラマならFortranで誰よりもすごいWebアプリ作りますから、これからはFortranの時代ですかね?
まー実際COBOLでWEBアプリ書いちゃう人とか知り合いにいるわけだが・・・。
PHPはとりあえず動いたふりさせるまでは楽なんだけど、robustにしようとすると結構神経使うね。確かにWEB用のBASICというか。
ほとんど日替わりでPerl+テンプレートやらServlet+JSPやらPHPやら使う関係で、ある程度何使っても同じような構造になるけど。
ゴンドラに乗って「またPerlの書き方をしらない人が現れましたね」と
タコ殴りにしてこない、というところにあるのでしょう。
Perlだって元々は「自分の書きやすいスタイルで書ける言語」という話
だったのに、一旦コードを公開するやいなや元老院の方の御眼鏡に
かならわないと袋叩きにされることにいつのまにかなってしまったのやら。
まともな批判になっていない無知な早とちりであること気づいていない人間が多くて愕然とする
いいところを摘めばいいんだし。
小飼さんの子供っぽいとこは、嫌いじゃないですけど。(笑)
車はFF FR 4WDとかいろいろあるだろうけど、それはレーサーが自分に会った物を選べば良いだけ。
FFで強い奴もいれば、FRで強い奴もいる。なかには86最強とかな。
それと同じ。
プログラマーはプログラムの腕を語ればよい話。道具の是非を語っても仕方がない。
牛刀で鶏を割くということわざがあるけれど、牛刀で、ニワトリ用の包丁よりもうまく、裁けるならば牛刀を使えばよいだけの話し。
そじゃないっすかねぇ?
好き嫌いや自分の価値基準が物事の優劣に転化される事はどんな世界も一緒だ。
立場や用途や使う側や、ねぇ。
己の基準に凝り固まって「相対的な見方」が出来ない人達が作るプログラムってどうなんだろうか。
あーだこーだ理屈こねてても、結局何が言いたいかって好きか嫌いかって感情だけだ。
実際、Danさんは自分の価値基準を述べた上で、好みを言ってるにすぎない。
「学び続けやすい言語に魅力を感じる・・・故にPHPには魅力を感じない。」
尻馬に乗って理屈こねて優劣言う奴はアホだ。
---
phpってホント叩かれるなぁ。
他社開発メンテするとどれもこれも残念なもんは残念だよ。
むしろ php は叩かれすぎてるせいか、奇麗で良いコードが増えてきてる。

