私の両親が1年間の任期で東京での「ボランティア」の途中で 1週間だけ実家に帰ってくるということで、家族総出で米子へ。
昼食をいただいたり、おしゃべりをしたり 大変楽しい時間であった。 途中、私はうとうとしてしまったけど。
私の情報源のひとつ、Redditがsub reddit作成をユーザに開放した ということで、Ruby Redditができた。
他にもHaskellやScalaができてるみたい。
PHPがいかに駄目な言語か、という話。
もちろん、反論もあるだろう。たとえば「Defending PHP」とか。
でも、個人的にはやはり否定側の方が筋が通ってる印象かな。
特に「PHPは初心者に学びやすい(と言われていることが問題である)」という部分に共感する。 PHPは初心者に簡単かもしれないが、初心者による手を抜いたWebアプリケーションは PHPが作られた当初はともかく、現代では害悪ではないだろうか。
Webアプリケーションをなめるな
PHPならではの理由がないわけではないことはわかる。 どこでもインストールされているとか、 デプロイが簡単とか。
でも、「初心者に簡単」を一般公開されるWebアプリケーションを 開発するための言語としての利点にするのはもうやめようよ。
追記
「どの言語で書いてもおかしなコードを書く奴は書く」と いう指摘もあった。それは言うまでもない事実ではある。そこには反論しない。
が、本当に問題なのは、世の中には「おかしなコードを書くことを助長する言語」もある という点だ。 で、そういう言語にはおおむね「初心者にやさしい」というラベルがついている。 どういうわけだか。
たぶん、「初心者がおかしなコードを書くのをじゃましない」とか あるいは「初心者っぽいコードを積極的に支援する」から、「初心者に優しい」って呼ばれるんだろう。 もしくは「設計者がまだ初心者」とか。
そういう言語が存在しちゃいけないとは言わないけど(人に迷惑をかけない範囲で)、 ここ半世紀の言語の進化をないがしろにするのはもったいないと思うな。
言語をめぐる論争というのはある意味一流のエンターテイメントだと思う。いくらやっても飽きないし(私は飽きるけどな)、いくらやっても終わりにたどり着くことがない。そしてエンターテイナーのまつもと氏はサービス精神が旺盛なので、あえて餌をまいた。 「簡単な言語」
■PHPが悪いのか Matzさんの「PHPがいかに駄目な言語か、という話。」に端を発した、相変わらずの水掛け論。 まとめはこちら PHPの欠点 PHPの言語の特性としてMatzさんが挙げているような不満は、もちろん僕にもある。ただ、PHPの方が好きな人に言わせて見れば、配列を扱..
PHPの経験は、簡単なアプリをいくつか作って、簡単な自作MVCフレームワークを作った程度。すぐにRubyに移りました。 またまた「PHP vs 他の言語」論争。キッカケはRubyのまつもとゆきひろ氏の日記。 Matzにっき(2008-01-26) _ Attacking PHP Matzにっき(2008-01-29) _ PHP使
まつもとさんの発言 Webアプリケーションをなめるな から、またPHPへの批判と反論が盛り上がっているみたいですね。
PythonやRubyのことは殆ど知らないので見当外れかもしれませんが、
PHPを
しかし、脆弱性があるWEBアプリケーションを放置したとしても、実際にクラックされることは本当にまれだと思うんですよ。大きなサイトは別ですが。それよりもプログラミングに親しみやすいほうが教育効果も高いのではないかと思います。習うより慣れろですね。PHPが初心者に親しみやすいかどうかは疑問ですが・・・。個人的にはSchemeが初心者にとって一番親しみやすいのではないかと思っています(構文の簡単さと親しみやすさは別ですか?^^;)。大学のカリキュラムでは最初にCを教えることになっているところが多いのはなぜでしょうね。
愉快犯もそれなりに居ますから、「本当にまれ」と断言する勇気は私にはありません。教育はぜひ閉じた環境で行っていただきたいものです。
最近の大学ではCよりもJavaを教えているようです。それが良いかどうかはともかく、「今一番仕事が取れる言語」を教えるのが大学教育のトレンドのようです。
即戦力を求められてるんでしょうね。個人的には言語が違うとプログラムできないような人材は要らないと思ってるんですが。
>strpos('abcd','a')は0を返すが、0は偽である
Rubyの宣伝ですか?
PHPが駄目な言語だと言うことには同意しますよ。
FALSEを返すのに偽として使えないなんて理解できないです。
リストの部分は参照先の翻訳で私が書いたものではありませんから、Rubyの宣伝という意図はありえません。この部分は単なる意見の紹介です。
例えばリストにあるようなことを一つずつ直していったとして、PHPは駄目な言語から脱皮できるでしょうか。
>>strpos('abcd','a')は0を返すが、0は偽である
> Rubyの宣伝ですか?
どの辺が宣伝なんでしょうか? jp2.php.net/strpos を見ると、そのまんまの内容が書いてありますが。
bulbulさん、
リストにあるようなことを直していってPHPが良い言語になるかどうか、ですが、そのような可能性はあると思います。が、その「未来のPHP」は現在のPHPとは互換性がない上に、プログラムの見かけも今とは全然違ったものになるでしょう。それをPHPと呼ぶかどうか、という問題になりますね。まあ、1960年代のLispと現代のLispは全然違うわけですし、言語がまるっきり変わってしまうのは実はよくあることですが。
それよりも気になるのはPHPは
* 自分を駄目だと思ってない(or 駄目じゃないと思いこもうとしている)
* 他の言語から見て「駄目じゃない」方に進化する気がない
のではないかという点です。まあ、PHP6の話とかを聞くと進化するつもりはあるようですので、外野があまりうるさく言う必要はないのでしょうが。
2ちゃんねらにエサ与えないで下さい。
Webアプリケーションって大抵がそもそも舐められてしかるべき
アドホックな構造物だったりしないかなと思いますが・・・。
そしてどんなにイケてなかろうが、先割れスプーンで
用が足りるなら、それでやっつけるのもまた合理的な選択でしょう。
そして、先割れスプーンに先割れスプーンとしての改良進化がもしあるとすれば、それは普通のナイフとフォークとスプーンの進化とはまったく別の進化になるんじゃないかと思います。
数ある意見の中でそれを取り上げたのは他ならぬ君だろ。何を言っとるんだね君は。
Liamsさん、
Webアプリケーションが「舐められてしかるべきアドホックな構造物」という認識はありませんでした。というのも、Webアプリケーションは
* ユーザが事前に想定できない
* ユーザの善意を期待できない
からです。もちろん、ほとんどの「初心者が書いたWebアプリ」は見知らぬ人に使われる確率はさほど高くないとは思いますが、だからといってそれを当然だと期待しちゃうのは、SNSで犯罪行為を告白しちゃって「炎上」しちゃう人たちと同じ精神構造じゃないでしょうか。
いざ問題が起きてから「想像してなかった」とかいうくらいなら、最初から外につながったWebアプリなんて書かない方がよいと思います。そういう意味で「舐めるな」と書いたわけで。Webアプリを書く人はちゃんと「外」を自覚した方がよいと思いますが、初心者でそれができてたらかなり奇跡的。
さきわれスプーンの独自進化については興味深い気はします。が、PHPが独自進化を遂げる余地があるかどうかは未知数ですね。
そういえば、最近さきわれスプーンを見ませんねえ。うちの子供は給食でもフォークや箸を使うようです。やっぱり「時代の徒花(あだばな)」だったのかもしれません。PHPはどうかな。
> 脆弱性があるWEBアプリケーションを放置したとしても、実際にクラックされることは本当にまれ
まれだったら世の中にこんなにbotが流行ってbotnetで悩まされることもないよね
最初の論点は PHP の言語仕様に述べているのに、最終的には初めてのプログラミング言語を PHP に選んだ奴らバーカになっているのはなぜなのでしょうか?
本来ならば、PHP を選んだ初心者バーカではなくて、
○PHP 言語の開発者への提案
○セキュリティを考慮した初心者向けの書籍の提案
○PHP に限らず、セキュリティに対する教育の提案
が本来の議論なのではないでしょうか?
> ここ半世紀の言語の進化をないがしろにするのは
> もったいないと思うな。
少なくともこういう議論をするにあたって、感想を述べる立場にいる方ではないと思いますが、いかがでしょうか?
感想だけなら、ほかの方でもできる訳ですし、特に目新しい感想ではありませんし。
私は「初心者バーカ」とは発言していないんですが。
発言していないことについて尋ねられても。
あと、私が「感想を述べる立場にいる方ではない」というのは、はっきりわからないんですが「自分の言語を持ってるやつはよその言語に口出すな」という意味なんでしょうかね。
私は別に目新しい議論をするために日記を書いてるわけではないんですが。
> 個人的には言語が違うとプログラムできないような人材は要らないと思ってるんですが。
個人的な話になりますが、私はこの一ヶ月で、
C/C++のプログラムを書き、rubyで簡単なソースジェネレータを書きました。
また、PythonのスクリプトとLuaのスクリプトを直し、UNIX上ではコンフィギュアを、
Windowsではwsh上でjavascriptを、ちょっと変わったところでGPU用のシェーダーも書きました。
例えある特定の言語にこだわっていたとしても、
他の言語で書かれたものを修正するには結局その言語を覚えるしかありません。
また、システムの内容によっては言語で生産性を飛躍的に伸ばすことができるのも事実です。
たとえばRubyではタイポの危険(!)をなくす為にも、製品として出すにはかなりのテストを行わなければいけませんが、
個人の趣味スクリプトならこの手間は大幅な軽減が可能ですし、場合によってはゼロになることもあるでしょう。
ですから、まつもとさんの言うことはまさしくそのとおりだと思うのですよ。
一つの言語しかできないのはいかんと思います。
ただ、これにさらに付け加えるなら、言語というのは仕事の内容で選ぶべきだということです。
これは昔からずっと言われていることですが、改めて主張したいのです。
「なんでもRuby」というのは「なんでもPHP」と同じであまり賢い選択とはいえません。
初心者がPHPを選択するのは非常に理にかなった選択だと思いますし、
高速サーバーを書くのにJavaを選択するのも合理的な考え方だと思います。
私が一番憂慮していることは、松江のシステム開発にしてもRuby検定にしてもそうですが、
「まずRubyという言語があって、その前提で何かをする/システムを作る」
という話になってしまっている点です。
何度も言いますが、言語は仕事の内容によって選ばれるべきです。
個人的には、自治体の業務システム開発ははっきりいってRubyには向かない、
というかスクリプトでやるべきではない業務だと思います。
まあその辺は、Webアプリケーションをなめてはいないし、
おかしなコードを書くことの助長もしないRubyならどうにかなるのだと思いますが。
当然、Railsはそのうち落ちなくなりますよね?
大規模開発をするなら他の言語よりもより詳細なコーディング規約が必要になるとか、
その規約を守らなければカオスに陥るとかいうのは、Rubyにはありえない話ですよね?
プログラマではないから詳しくはよくわからないけど、
OSでいうと、Window = PHP、Unix=Ruby という感じかい?
>最近さきわれスプーンを見ませんねえ。
コンビニに行ってピラフとか買うとくれますよ(コンビニの系列によりますが)。
プラスチックのものですね。
えっと、まずひとつ。
一般に供されるアプリケーションにおいて安全性を確保すべきは当然のことですが、
それはことさらWebアプリだからではないでしょう。どんなアプリケーションでもそうだと思います・・・
(むしろコードの上での安全性の確保の技術的難易度はWEBアプリって低い部類に位置しませんか?
ま、「一般に供するならアプリケーションの安全性の確保ををちゃんとしろ」
とおっしゃりたかったというのは、了解しました。
つまり、「初心者がWEBアプリを作るのは危ないことだからよしなさい」
とおっしゃりたい、それは分かります。初心者が躓きながら作ったものが往々にして
危険なものであるのは否定しません。
でもそれそれがいきなりPHP(の言語仕様)のせいですかね?
そんなに「危険なコードを書くことを助長」してますかね?PHPの言語仕様が?
同じ学習者がrubyで、Perlで、同じように躓きながら、言語使用を一歩一歩理解しながらモノを作ったら、
同じSQLインジェクション脆弱性を作りこんでしまう可能性は似たようなものだと思うんですよね・・・
(んで、その可能性自体は否定されてないですよね?)
そのへんからなんだかよくわからないお話になってるような。
というわけで、結果としては、どうも僕には、まつもとさんが、
「PHPはイケてないよね」という理由として
「PHPは初心者向けといわれているからのがダメ だって初心者のコードは危険だもの」
っていう、なんか無茶な理由付けを(引用元的には半分ジョーク混じりみたいなニュアンスの項目だと思うんですが)
なぜか大真面目に主張されているように見えますけどどうなんでしょ。
きゃっとさん、
> 私が一番憂慮していることは、...
心配していただいてありがとうございます。仕事に応じて(言語を含めた)ツールを選択するのは、当然のことと思います。とはいうものの、Rubyをはじめとした動的言語の適用範囲は拡大しつつあり、たとえば「自治体の業務システム開発にRubyは向かない」かどうかは必ずしも自明ではないと思います。で、我々はそれに挑戦しているわけです。もちろん、我々の判断ミスの可能性もありますが、その場合は我々が責任を取ることとなるでしょう。この「我々」は発注者の松江市から実装するSI会社までを含みます。
さて、件の松江市の「高額合算システム」ですが、Ruby on Railsを使って絶賛開発中です。ある意味、実にRubyらしくない作りではありますが、2月末検収を目指して特に遅延もなく進んでいるようです。「Javaよりは生産性が高い」とのことでした。が、ほとんどのメンバがRuby初体験のため、比較するのは難しいとも言ってましたが。
> 大規模開発をするなら他の言語よりもより詳細なコーディング規約が必要になるとか、
> その規約を守らなければカオスに陥るとかいうのは、Rubyにはありえない話ですよね?
皮肉にも聞こえなくもないのですが、その辺の「気持ち」はスルーするとして、大規模開発で各人が好き勝手すればカオスに陥るのはRubyだろうがなんだろうが、当然のことと思います。実際、上記の業務システムの開発では、それなりの規約を導入して守っていただいてます。
自分の中で脳内偏向が入っていました。すみません。
ただ、最初は言語仕様の話が、最終的には属人的な結論に至っているのが論理的に理解できませんでした。
> PHPは初心者に簡単かもしれないが、初心者による手を
> 抜いたWebアプリケーションは PHPが作られた当初はと
> もかく、現代では害悪ではないだろうか。
他の方が指摘していますが、他言語の初心者でもセキュリティを考慮した設計にならない可能性があります。PHP 言語の使用上、セキュリティを考慮したプログラムを書けないならば納得できますが、PHP でもセキュリティを考慮したプログラムを書くことはできます。
ならば、今回の投稿は PHP を利用する初心者を的にしているように見えます。しかも、PHP プログラミング初心者を対象にして「害悪」とまで言うのですから、悪意があると受け取ったまでです。
> はっきりわからないんですが「自分の言語を持ってるやつは
> よその言語に口出すな」という意味なんでしょうかね。
そういう意図はありません。
それよりも、セキュリティを考慮したプログラムはどういうものかを書いた方が、まつもとさんが考える「害悪のあるプログラム」は減るのではないでしょうか?
でも、投稿の結論は、「初心者による手を抜いたWebアプリケーション」で終わっていますから、どういう考え方が「害悪が減るか」ではないですよね?
Liamsさん、
私は確かに「初心者が安全なコードを書くのは難しい」という意味のことを書きました。が、その点は言語によらず成り立つことです。「Rubyなら初心者でも安全なコードが書ける」なんて思ってもいませんし、そう読めるようなことは書いたことはないはずです。
私が自分の主張として書いたことは
* 初心者が安全なWebアプリを書くのは難しい
* PHPはWebアプリ用の言語
* 初心者が(外向きのアプリのために)PHPを使うのは望ましくない
* 「PHPは初心者に優しい」は不適切な宣伝文句
これだけです。Webアプリ用言語と見なされているPHPが「初心者に優しい」と宣伝することにより、「Webアプリは初心者にも書ける」という誤解が蔓延することは危険だと思います。
個人的に「PHPはイケてない」とは思っていますが、それはただ単に「イケてない」だけで、わかってる人がちゃんと使うならば別に使い物にならないわけではないし、憂慮すべきこともないと思います。
>Rubyの宣伝という意図はありえません。
>どの辺が宣伝なんでしょうか?
原文にある
>You’ve got to use if (strpos(’abcd’, ‘a’) !== false).
の部分を書かずに、PHPだけではなくC、Python、Perl
なども駄目で、Rubyは0が真だから駄目ではないと、
宣伝しているようにしか思えませんが。
いや、だから
「PHPは初心者に優しい」は不適切な宣伝文句
をすんごく心情的に主張されたいのはわかるんですけど、
その理由としてアプリの安全性を持ってくるのは
こりゃまたえらく無理を押そうとしてませんか?
そもそもプログラミング初学者に
「ライトウェイト言語は簡単だから、これでWEBアプリを作ってみましょう」という形で
学習を勧めるのは、どの言語でも同じ風潮なわけで、
PHPの宣伝文句を批判するよりもそういう風潮そのものを批判されるべきなのでは?
それをせずに『「PHPは初心者に優しい」は嘘だ』という主張だけを展開されてるように見えます。
>「Webアプリは初心者にも書ける」という誤解が蔓延することは危険だと思います。
誤解かしら?
実際問題としてバイナリアプリケーションに比べ書きやすいのは事実だと思いますよ。
重ねて言いますが安全性の問題はもちろん否定しません。
そういえば先割れスプーンですが、
> いったんは学校給食の現場等から駆逐されたにもかかわらず、
> 割り箸への批判の高まりや高齢化の進展などから、今世紀に入って
> 見直されている道具 (関心空間のキーワードエントリより引用)
だそうです。
通りすがりです,さん。
ではどのような仕組みがあれば安全性が高まるかについては別項で。
Liamsさん、
仕組みとしてWebアプリケーションがいわゆるデスクトップアプリケーションよりも簡単なのは同意しますが、外に出てしまえば予想外の危険にさらされるわけで、初心者向けの課題としては要注意だと思います。特にPHPは安全という観点からは逆にバイアスがかかってる印象があります。詳しくは別項。
> さて、件の松江市の「高額合算システム」ですが、Ruby on Railsを使って絶賛開発中です。
> ある意味、実にRubyらしくない作りではありますが、2月末検収を目指して特に遅延もなく進んでいるようです。
たとえば、この調子でrubyの適用範囲を広げていったとしましょう。
松江のシステムがrubyづくしになった頃、rubyに致命的な問題が発見されたとしたら、
いったいどうするつもりなのですか?
まあ、未来の危険について考えてもあまり意味は無いのかもしれません。
ただ私が言いたいのは、具体的なプロダクトの話ではなくて、考え方の問題です。
ruby以外の言語を「ダメな言語」と認定しネガティブキャンペーンを張ることで、
言語をruby一色にしたい気持ちは分からなくも無いです。
ただ、そのやり方と考え方はとても間違ってますよ、ということです。
rubyがどんなに拡張されたとしても、いろいろな言語を使うメリットはありますし、
原則として言語は選ばれる側にあるべきです。
「言語の初心者」と、「開発という作業の初心者」とを、分けて考えるべき。どんなに言語が便利になって、開発者の様々な書くための苦労を軽減してくれても、ロジックを考えるという部分についてはまったく簡単にはなっていない。強いていうなら、ロジックに集中できるようになった程度。これを「開発という作業全般」と誤解しているのが、そもそもの間違いではないでしょうか。
きゃっとさん、
心配しておられることがよくわかりません。
15年間さまざまな領域で使われてきたRubyに今まで見つかっていない致命的欠陥(直すことができないという意味だと解釈します)が見つかるということを心配するのは杞憂に過ぎないと思います。
バグなら直せばいいことだし。
さらに、私はPHPをイケてない言語だとは思いますが、別にRuby一色にしたいと思っているわけでもありませんし、そのためにネガティブキャンペーンを展開するつもりもありません。ですから、「そのやり方は間違っている」と言われても、そもそもそんなやり方してませんから。
ある言語(PHP)を「イケてない」と断言するだけで、思ってもいない「言語をRuby一色にするためのネガティブキャンペーン」を展開していると思われてしまうとは、言語設計者とは不自由なものです。
私がRubyを使わない理由…まつもとさんの性格が嫌
PHPよりVBScriptがそもそも元凶ではないですか?
「Attacking PHP」にある批判はすべて訳つきで紹介しているのに対して
「Defending PHP」の方はリンクの紹介のみ。
しかも具体的な言及なしに、
> でも、個人的にはやはり否定側の方が筋が通ってる印象かな。
ですから、少なくとも公平性には欠けると思います。
また、最初の記事中では
> PHPがいかに駄目な言語か、という話。
と、あくまで他人の書いた記事を紹介するというスタンスですが、その後のコメント中では
> * 自分を駄目だと思ってない(or 駄目じゃないと思いこもうとしている)
というように、「ダメ」だとはっきり断定しておられますよね。
私はこれを「ネガティブキャンペーン」と取りましたが、
そう思われても仕方の無い書き方だと思います。
プログラム言語ではないのでコードというと抵抗がありますが、記述してる人のおそらく半数以上が「おかしなコード」を書いているHTMLという言語がありまして・・・。
おかしなコードを書くのを邪魔しないのを売りにするとおかしなコードを書いてるのを裏技とか自慢しだしたり、あまつさえそれで解説サイト作ったりする馬鹿が増えるのである程度間違えにくくする配慮は今後必要になるのかもと思ったりします。
そうすると今度はXHTMLみたいにあまり普及しないという罠があったりしてバランスが難しいところですけれども。
僕はずっとPHPを使っているのですが、日頃から感じてました。
0とfalseとか一貫性のない関数名や引数の順番。
このへんはどうみても道具として「イケてない」ですよね。
なにかきっかけがあれば他に乗り換えたかったのですが、
そのRail(s)に乗り損ねました。
きゃっとさん、
確かにPHPに対して否定的なことを書きましたが、否定的な発言がすべてネガティブキャンペーンではないですよね。
ネガティブキャンペーンとは「広く大衆に対して相手を陥れる言動を流布することで相対的に自分に利しようとする行為」だと思います。私の日記はたまたま読者がたくさんいるので「広く大衆」という部分はかろうじて合致するとは思いますが、別に自分に利しようなんて気持ちはありません、断じて。
それを「ネガティブキャンペーンと思われてもしかたがない」とおっしゃるということは、私が(言語設計者であるがゆえに)「ある言語はあまり良くない」と発言することは、自動的に「相手を陥れて自分の言語を宣伝しようという行為」であると認定されると、そのように、きゃっとさんは思っておられるわけですね。私自身がどのように感じているかとは無関係に。そういうことですよね。
痛くもない腹を探られて、やってもないことを「そのやり方は間違ってる」と言われるのは、多少気分は良くないですが、まあ、そのように感じられるのを止めることはできませんから、「どうぞご自由」にって感じです。
だいたい、私はRubyをこれ以上宣伝してもいいことなんて全然ないんですけどね。
>たぶん、「初心者がおかしなコードを書くのをじゃましな
>い」とかあるいは「初心者っぽいコードを積極的に支援す
>る」から、「初心者に優しい」って呼ばれるんだろう。も
>しくは「設計者がまだ初心者」とか。
>
>そういう言語が存在しちゃいけないとは言わないけど(人に
>迷惑をかけない範囲で)、ここ半世紀の言語の進化をないが
>しろにするのはもったいないと思うな。
Rubyがそうじゃないという根拠はどこにあるんでしょうか?
すくなくともRubyは「初心者に優しい」と宣伝してません。
「Rubyが初心者のおかしなコードの作成を邪魔しない言語ではない」根拠
「Rubyが初心者っぽいコードを積極的に支援しない言語」である根拠
「設計者がまだ初心者」じゃない根拠
「Rubyが人に迷惑をかけない言語」である根拠
「Rubyがここ半世紀の言語の進化をないがしろにしていない」根拠
まず第一に私はRubyについてはそのような特質を備えているともいないとも主張してないので根拠を出さねばらないいわれはないと思います。
ついでにいえば、PHPがそのような特質を備えているともいないとも断言はしてないですね。「たぶん」そのような特質を備えている「だろう」し、それが「初心者に優しい」という主張の根拠になっている「かもしれない」とは書きましたし、事実そういう印象を持っていますが。
それに私が仮に根拠を出したとしても主観的なものにならざるをえませんし、不毛だと思いますよ。
つまり追記部分は印象でしかないんですね?
それにしては後半部分はPHPが「そう」であると読めてしまいますが。
さらに、後半部分はあなたがRubyという言語の設計者であるという事実を踏まえると、PHPを貶め、Rubyを持ち上げているようにも読めますが。
まあ、「10分で作れる××」とか、初心者にやさしいフリをした技術が胡散臭いという点には激しく同意ですが。
いろいろな言語を積極的に勉強すれば、どの言語がイケてて、どの言語がイケテナイというは当然でてくるでしょう。
そしてそれはその人の立ち位置によって違うでしょう。
例えば仕事としてやる人と趣味としてやるひとは当然違う訳です。
立場を無視したとしても、言語に求める「イケテル」という感覚も人よっても違うでしょう。
まつもとさんが言いたい事は、どんな立場な人でも、どんな感覚を持った人にとっても、
WEBに公開する危険性というのは平等だという事です。
それを、PHPなら「Webアプリは初心者にも書ける」というのはミスリードだという事ではないでしょうか。
上の方にも書いたように、私自身にはPHPを批判するつもりがないとはいいませんが、Rubyを持ち上げる意図はありません。すくなくともこのエントリでは。
> 私が(言語設計者であるがゆえに)「ある言語はあまり良くない」と発言することは、
> 自動的に「相手を陥れて自分の言語を宣伝しようという行為」であると認定されると
レスをもう一度よく読んでほしいのですが、私は「言語設計者だからうんたらかんたら」
なんてことは一言も言っていません。
また「自動的に」なんてこともどこにも書いていません。
紹介の仕方が公平性に欠けるし、客観と主観の使い方が恣意的なことをもって、
これはおかしいのではないか? と指摘しているのです。
気分を害されたのなら謝ります。
痛くもない腹なのですから、「なんかおかしなこと言ってるやつがいるよ(笑)」
くらいの気持ちで受け流してもらえると幸いです。
日本にまれな実用レベルの言語処理系作者と
濃ゆい言語処理系討論を
*直接に*にやれる千載一隅の状況なのに、
「php 批判、その批判、批判の批判…」なんてメタ構図に落ちるばかりなのが、
もったいないというか、毎度おなじみネットの華というか。。
どんな言語でも普及すれば、初心者が入ってきて
○○言語プログラマの平均的な質は下がる。
生産性が高い言語ほど、その○○言語プログラマの質は下がる。
それだけのこと。
きゃっとさん、
では、私が言語設計者であることと、私が他の言語に対してネガティブキャンペーンを展開したと読み取られたのは無関係だとおっしゃるんですね。
ということは、PHPに対して否定的なことを述べる人はすべてネガティブキャンペーンを展開しているとおっしゃるおつもりなのでしょうか。それはいくらなんでも考えにいことですし、それに、私がこのエントリでRubyとPHPを比較していないにもかかわらず『ruby以外の言語を「ダメな言語」と認定しネガティブキャンペーンを張る』とか『言語をruby一色にしたい気持ちは分からなくも無い』とおっしゃったので、これは、言語設計者である私が特別扱いされているのだと推測したのですが。
公平性に欠けるとおっしゃいますが、私が自分の個人的なブログでにPHPに対して否定的な意見のほうをより大きく取り上げて共感してはいけない理由はないように思うのですが。
政治家が個人的なブログで個人的な意見を書いても
やはり誤解されることは避けられないのと同じことではないでしょうか
本筋は、PHPに対するネガティブキャンペーンというより、変なプログラム、HTMLでいうならValidですらないXHTMLを書くような製作者の氾濫が好ましくないってことを言ってるような気がします。
んで、PHPは「HTML?知ってるよタグだろタグ!」ってレベルの製作者が何も考えずに使える言語故に、そういう連中が俺スゲーな解説サイトとかつくって毒をばらまくと更に汚染が広がるのでHTMLみたいになる前に。
いや、PHPの解説サイトとかの現状はよく知らないんですけどね。すんません。ただ、もしそういうサイトが増えてくるならHTMLにおけるStrict厨みたいな存在がPHPユーザの中にこそ必要だと自分は思います。
> ということは、PHPに対して否定的なことを述べる人はすべてネガティブキャンペーンを展開しているとおっしゃるおつもりなのでしょうか。
なんども申し上げますが、私はそんなことは一言もいっていません。
ただ、その結論にたどり着くまでの過程があまりにも主観的だし、結論自体もあまりに偏っているといっているのです。
だって、
> が、本当に問題なのは、世の中には「おかしなコードを書くことを助長する言語」もあるという点だ。
> で、そういう言語にはおおむね「初心者にやさしい」というラベルがついている。どういうわけだか。
> たぶん、「初心者がおかしなコードを書くのをじゃましない」とかあるいは「初心者っぽいコードを積極的に支援する」から、
> 「初心者に優しい」って呼ばれるんだろう。もしくは「設計者がまだ初心者」とか。
> それよりも気になるのはPHPは
> * 自分を駄目だと思ってない(or 駄目じゃないと思いこもうとしている)
> * 他の言語から見て「駄目じゃない」方に進化する気がない
> のではないかという点です。まあ、PHP6の話とかを聞くと進化するつもりはあるようですので、
> 外野があまりうるさく言う必要はないのでしょうが。
ですよ?
さらに後のコメントでは
> ついでにいえば、PHPがそのような特質を備えているともいないとも断言はしてないですね。
> 「たぶん」そのような特質を備えている「だろう」し、それが「初心者に優しい」という主張の根拠になっている
> 「かもしれない」とは書きましたし、事実そういう印象を持っていますが。
と続けています。もう一度繰り返しますが、私は
「PHPに対して否定的なことを述べる人はすべてネガティブキャンペーンを展開している」
なんてことは一度も言っておりません。
> では、私が言語設計者であることと、私が他の言語に対してネガティブキャンペーンを展開したと
> 読み取られたのは無関係だとおっしゃるんですね。
「言語をruby一色にしたい気持ちは分からなくも無い」というのは気持ちは分かる、
といっているだけでそれ以上でも以下でもありません。
まあ確かに、言語設計者であるというバイアスがまったくかかっていないとは言いません。
ただそれは、「言語設計者が言ったから」ではなくて「言語設計者にしてはあまりにもひどい内容だから」
というものです。
プログラミング言語を創る者として、他の言語を見下すようなことを何度も書くのって、どうなんでしょう?
害悪とか、足元にも及ばないとか、問題発言があまりにも多すぎますよね。
まじめなPHP開発者さん達が読んだら、どう思うでしょうかね。
がんばるぜと思うんじゃね?
PHPの設計者Rasmus Lerdorfは「PHPは言語じゃない、ツールだ」って言ってましたね
http://www.rubyist.net/~matz/20050804.html#p05
言語設計者同士は意外と仲良しですよ。
どっちでもいいから、ちゃんと動くものつくってくれーー
って、社長が言ってるぞ。
PHP開発者は一人じゃないわけで
本当にくだらないことをわざわざ記事にしてまで相当暇人なんですかね?
言語は正直何だっていい。
クライアントからすれば動くものを作ってくれれば言語なんて2の次すぎる…。
てか、昨日の日記でPHPの批判をしてみたけど、コメントの突っ込みで失速しちゃったから、他に悪い点を探してみました、みたいな感じかしら。
「おかしなコードを書くことを助長する言語」
Rubyでおかしなコード書いてみればOKですか?
所詮、ある言語の開発者が他の言語(ツールだということですが)を客観的に見ようとしても無理。PHPがいかに駄目な言語かだとか攻撃的に書いてる時点で、「その点自分が作ったRubyは〜」みたいなことを示唆していると勘ぐられてもしょうがない。
本当に客観的に見ているのであれば、ご自身の作成されたRubyのダメな点も日記で取り上げられてみては?
こんちわ。
PHPってmagic_quotes_gpcがデフォルトでOnだったりするんで、Offとしない限りSQLインジェクションが起こることはまず無いです。
「クロスサイトスクリプティングは不完全」と言う人もいますし、そこら辺の真偽は不明ですが^^;
↑ごめんなさい追記です。
つまりどの言語にしても、同じようなSQLインジェクション対策は必要ですよ、ってことです。
>PHPってmagic_quotes_gpcがデフォルトでOnだったりするんで、Offとしない限りSQLインジェクションが起こることはまず無いです。
いや、起こりますよ。文字コードの罠がありますから。
基本、SQLはプレースホルダー使ってエスケープしないと。
> でも、「初心者に簡単」を一般公開されるWebアプリケーションを開発するための言語としての利点にするのはもうやめようよ。
http://www.seshop.com/detail.asp?pid=7135
「初心者もびっくりのカンタンなステップでブログや地図検索機能などを作ることができます」なんて甘言でRoRを紹介しています。これでセキュリティホールが生まれたら、Rubyを「害悪」と呼びますか?
まつもとさんはネガティブキャンペーンをされているつもりは毛頭なく
現にphpを使ったアプリケーション多くはおっしゃっていることは
間違いないでしょう。(それで被害を被ったのかもしれないですね。。)
phpしか使えないので他言語のことはまったくわからないため
反論すらできない自分はありますが、1つ言わせてください。
まつもとさんという立場の方がこういう記事を書かれること事態に問題があるということを、、
> だいたい、私はRubyをこれ以上宣伝してもいいことなんて全然ないんですけどね。
本心はそうでしょう。まつもとさんの貢献されたことは偉大です。
でも世間では「Rubyのまつもと」以外何者でもないのです。
そういう方が「Webアプリケーションをなめるな」という言葉と「PHP云々」
が同列に並んでいれば、大多数の人がどう捕らえるか、、
それをわからずにこの記事を書かれた、、わけではないと信じたいのですが、
(弾さんは
> Matzさんの意見に、想定内の反応が返って来ている。
http://blog.livedoor.jp/dankogai/archives/50993137.html
とおっしゃってますが、、)
世間では「まつもとと弾がPHPネガティブキャンペーンをしている」に発展しています。。
悪いところは悪いということは重要です。
ですから、Rubyを作られてコミュニティに貢献してきたことを
PHPや他言語にもしてあげればよいのではないでしょうか。。
あなたはそれだけ影響力がある方なのですから・・・
言葉の使い方、、ぜひ神経をつかってください。。
>hashやlistがobjectが区別できない
正しくは「hashとlistが区別できない」ではないかと(anythingはあんまり意味がないような)。
PHPプログラマさん、
> 「初心者もびっくりのカンタンなステップでブログや地図検索機能などを作ることができます」なんて甘言でRoRを紹介しています。
困ったものです。そのような宣伝文句は害悪だと思います。
なぜRubyの場合は宣伝文句が害悪で済ませるのですか?
なぜPHPの場合は言語が害悪とまで言うのですか?
> なぜRubyの場合は宣伝文句が害悪で済ませるのですか?
> なぜPHPの場合は言語が害悪とまで言うのですか?
PHPの場合は「PHPが初心者に優しい」でPHP=初心者に優しい。
Rubyの場合は「RoRで初心者にびっくりカンタン」でRoR=初心者に優しい。
Matz氏自身がRuby=初心者に優しいと前面に押し出したものでない以上、
派生物について氏に責を問うのは筋違いでしょ。
確かに^^;
すみません、つい熱くなってしまいました・・・
Rubyがどうの、PHPがどうのとか言う技術者って
Emacsがどうの、viがどうのとか言う技術者と同じで
それまでどんな凄い実績があっても
どーにもしょぼい人に成り下がっちゃうんで
日本技術者の雄であるまつもとさんにはやめて欲しいなぁ…。
それもPHPを良い方へどうこうしようと言う事でもなく
おまけに他人の言葉を借りて蔑むなんて
なんかたち悪くないですか?
なかなか上質な釣りをありがとうございますた
言語の好き嫌いはともかくとして。
「PHPは初心者に学びやすい」と言ってるのはPerlでCGIを書くのが一般的だった時代にPHP4が登場し、PHPを紹介するセミナーや出版物などにデカデカとうたい文句で載っていたからじゃないかと推測します。
その当時の(間違った?)イメージが定着してしまったことでこんなことが言われているのではないかと思いますが。
通りすがりで差し出がましいことを言うようですが、批判する時は対象と論点をはっきりさせたほうがいいと思います。
「Webアプリケーションをなめるな」は多分に扇情的に見えます(太字フォント大なんて「EULAには合意しない」以来ですし)が、これは誰を対象に言っているのでしょうか。
・PHP(もしくはRasmus)なのか
・PHPで簡単にセキュアなWebアプリが書けると煽るメディア?なのか
・セキュアでないWebアプリを作ってしまう初心者なのか
そのどれでもあるように読めますし、それぞれになめるな、というだけの妥当な理由はある気がしますが、理由はそれぞれ異なりますよね。それを一緒くたにして批判すると、それぞれから感情的な反論が返ってくるのは仕方がない気がします。
個々のご意見はもっともと思うだけに本筋以外で余計な反論が起きるのは残念に思います。
>これは誰を対象に言っているのでしょうか。
その前の段落に書いてありますよ。
“「PHPは初心者に学びやすい」と言っている人”ですよね。
少なくとも論旨から他の二点は出てきようがない。
客観視できるはずの人たちがそうでないコメントをしている。
その段階で「釣り」っすよねw
>ooさん
>“「PHPは初心者に学びやすい」と言っている人”ですよね。
>少なくとも論旨から他の二点は出てきようがない。
そう読むのがまつもとさんの主張どおりであるかと思いますが、果たして出てきようがない、と言い切れるでしょうか。
私にはそうでないように読む人がいるように思えます。
理由は、
・前半部の大半はPHPの言語仕様に対する批判であり、Webアプリケーションの話は唐突に出てきており、さらに批判対象が明示されていない(推測すればわかりますが)。
・「PHPは初心者に簡単かもしれないが、初心者による手を抜いたWebアプリケーションは PHPが作られた当初はともかく、現代では害悪ではないだろうか。」
この文章は決して初心者自体を攻撃しているものとは思いませんが、初心者が読んで「そんなの俺のせいじゃなくて煽ってるメディアや会社のせいだろ」と割り切れるとお思いでしょうか。この後に「Webアプリケーションをなめるな」なんて強い調子で言われたら、誤解だとしても少なからず感じるところはあるように思います。
つまりは論の真偽は別として誤読を生みやすい文章構成ではないかと思います。
そだね「(PHPはperlと比較して)初心者に優しい」
Rubyも枕詞つけて初心者に優しいとググレばあちこちで引っかかる。
Rubyも初心者にやさしいとあちこちで喧伝されてますよ既に。
javaと比較してセキュリティが危険なので
RubyでのWebアプリ開発は、
Webアプリを舐めてることになりますね。
それこそ初心者に毛が生えた程度の私が言うのもなんですが、PHPは習得するのが確かに容易に感じました。
事実全くプログラム触ったことの無い私が今では普通(基本になるプログラムがある上でですが)に組替えたりできるようになりました。
勿論セキュリティ云々言われていますが、それも含めて日々勉強です。
初心者にはとっつきやすい言語が良いというのは、以前にコメントしている方が居る通りだと思います。
PHPの初心者としてですが、他の言語を知りませんしPHPも全てを把握しているわけではないので本当の恐ろしさや、優位性を理解しているわけではありません。
そんな中でこう言うPHPを否定するような記事を見ると、それを仕事にして行こうとしている私のような人に不安を与えるだけなきがします。
セキュリティが低いので、こうやったらPHPはもっと良くなる等前向きに考えられるような記事を書いて欲しかったですね。
Rubyは聞いたことがありますが、その開発者である方がこう言う記事を書いていることが非常に残念に思います。
>PHPを否定するような記事を見ると、それを仕事にして行こうとしている私のような人に不安を与えるだけ
不安になった人は、まともな頭を持っていれば、それを解消するために、ちゃんとセキュリティを勉強するはず。仕事にするなら、尚の事。
あと、PHPのどこが悪いのかMatzは明確に書いているよ。そこを直せば良いってことでしょう。
理解できないと言うのなら、それは悲しい話だけれど、あなたの勉強不足。
php6ヶ月目さん
それこそ初心者に毛が生えた程度の私が言うのもなんですが、職業プログラマとして生計を立ててゆくつもりならば、悪い事は言わないですから、いろいろな言語から、貪欲に、且つ、謙虚に学んだほうがいいと思いますよ。
それと、Linuxで仕事をされているのであれば、先ずbashのマニュアルを一通り読んで理解したほうが良いと思いますよ。
>php6ヶ月
正直、PHPerにはこういうヤシが多い。
PHPをphpとか書いちゃうし。
matz氏は他の言語をrespectすることを忘れてはいない。
http://www.itmedia.co.jp/enterprise/articles/0701/15/news024.html
みんなここらへんよめ。
ryoさん
正直、PHPerにはこういうヤシが多い。
DOSカルチャーは、UNIXカルチャーと違って、大文字と小文字を区別しないカルチャーですから、そんな事で目くじらを立ててもしかたがないですよ。
そういえば、matzではなくMatzが正しくないですか?
ところで、PHPerの発音は、ピーエッチパーですか?
それとも、ピーハー? はたまた、ピッパーでしょうか?
やっぱり、ピーエイチピーアーが正解でしょうか?
PHP愛好家のみなさん、大変申し訳ありませんでした。
"正直、PHPerにはこういうヤシが多い。"の/^/に、">"を入れ忘れました。大変申し訳ありませんでした。