関連エントリはMatzさんのこちら。

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

Mindblind - making web development suck less » Attacking PHP

 

他の言語について知ってる?

(中略)

なんとなく、他の言語も知っているが諸般の事情でPHPを使う、という人は「批判はわかる」と言っているような気がする。たとえば「Rauru Blog >> 悪いのはPHP自体じゃないかもしれないけど」とか。例に出して悪いけど。

 

僕の今現在のメインの言語は圧倒的にPHPで、残りはPerlが少しとJavaScript。

まぁいずれにしても初心者向けテキストに載ってる程度の、
平易なプログラムしか書いてないんで弾さん言うところのプロ^2グラマ
(プロプログラマ、つまりプロのプログラマ)と言う勇気はちょっとない。
正直言って、やっぱり本職はWEBデザイナであってプログラムも読めるよってくらいだろうなと。


それでも、プログラマの端くれではあるかなと思えるのは、
Matzさんの二つめのエントリの部分かなぁ。
僕には多少なりとも他の言語にアプローチする気はあるっぽいし。
そもそも、元々はPerlしかできなかったし。
(その辺バックボーンが弱いけど。CとかVBとか使えないんだよね)


Matzさんがまとめられた元記事の内容を読むに、
どう考えたってそれPHPのことだろ常考、的な感じしか受けない。

つまりこれね。
(タグをolに変更)

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

特に、1,2,4,5,6,7,8辺りは、僕でさえ不便だなーと思う。
JavaScriptの無名関数とか羨ましすぎ。
1とか6とか8とか仕様が整理されてないとしか思えないし。
覚えておけば問題ないけど、美しくない。てか思い出せない。str_replaceとか。使わないけど。

そういうのは、他の言語を知らないと分からないし、
逆に言えば他の言語を知れば殆ど自明みたいなもの。

仕事の関係でPerlからPHPに移動した時に最初に思ったのは、
デフォルトで定義されてる関数が多いなーってこと。
何もせずに呼び出せて便利だとすら思ったけど、
それって実は、実装が謎だって言う問題と、メンテナンスが大変だって言う問題があるんだよね。

それなら、メンテナがいてフォローもされてるPerlのライブラリの方が、
PHPのデフォルト関数よりも信頼できてしまうのかもとか。
そういう土壌があるから、玉石混淆な色んなライブラリが生まれても来る。
(PEARに関してはまた別ね。)

もうなんか、文化の違いかなと。

僕はPHPが好きだけど、
それは単純にHTML出力を前提にした場合使いやすいって言う意味であって、
プログラム言語としての処理全般で使いやすいのとは少し違う。

PHPの演習としてサーバ処理なんかに使うことも多いけど、
やっぱりその辺は…他の言語の方が遙かに良いよねとも思う。
Perl始め他の言語で出来てることを、環境の要請に従ってPHPでやってみる…
そういうパターン、ものすごく多いしね。
最初っからそっちで処理してたらずっと楽なんだろうなとか。

その辺の感じとしては、それPlaに似た感じかもしれない。
それPlaわかってんだけどやってみたいのー的な。
でも満足したあとの実装はPlaggerでやるとか(笑)

まぁとにもかくにも、
プログラマならもっと便利に美しくやる方法を柔軟に探すのは当然だし、と言うか、
それ、プログラマという職業の存在意義みたいなもんだし、
実際に出来てるかはどうかとして、そういう意識が少しはある僕は、
プログラマではあるかなと思った次第。

もうちょっと、PHP以外にも深入りしていこうと思ってる今日この頃。
Perl、JavaScript、ActionScript、余裕があればRubyとからへん。
上手く使い分けていきたい。

んでもって、stfuawscということなのだよ。>俺。

あ、ActionScriptはソフト高いからアレだけど。