ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

あらら、叩かれてる・・・。

Matzにっきで発見。

I am so tired of people defending PHP.
...
PHP is terrible

Need proof? Here it is, broken down by category:

http://mindblind.net/2008/01/24/attacking-php/

以下、私見

"Language Features":

  • "==="については正直しゃーない、としか言えない。ただし"==="と"!=="が何故有るのかを理解していて、なおかつ、"=="でも問題ないと理解している場合に於いては、"=="で済ませてしまっても問題ないと思う。そんなに型が気になるのであればキャストする、という手もある。(スカラー型のみだけど)
  • ハッシュやリストが混在しているのは正直、好きずきだと思う。
  • オブジェクト指向が壊れてる(静的遅延束縛?):静的遅延束縛はよく分からない。自分の意見としてはオブジェクト指向云々の前に、まず参照渡しかCopy on Write機構が腐りきってると思うのでまずそこを直して欲しい。っつーか、言語仕様の根幹であるシンボルの参照の扱いがメジャーバージョン毎に変わるのってどうなのよと思う。
  • lambdaが無いと言っているけど・・・id:rskyさんが現在真の意味でのclosureを実現できるようになるパッチを提出中です。とはいえ、現実問題としてPHPのWebプログラミングしててlambdaが無いとどうにもならない、という状況に追い込まれたことは無いからこれもまぁ、あったら嬉しいけど無くても困らないよ、程度。
  • short_open_tagsとかregister_globalsとかsafe_modeの設定の話。これは同感。うーん、これについては、あまりにも運が悪かったとしか。register_globalsがonの間にPHPがばーっと広がっちゃって、ホスティングサービスとかもそのバージョンで動くアプリがばーっと乗っかっちゃったので、offするタイミングがのびのびになっちゃった歴史もあるし、なんというか、こう、踏まなくても良かったはずの地雷を何故か不思議と良く踏むよね、という感じ。

"Built-in Functionalty":

  • 標準ライブラリとかの関数の命名ルールについて:慣れだと思います。好きずき。私はJavaPerlUNIX-Cも読めるけど、PHPの関数名が特別おかしいと感じたことは無いです。慣れましたし、それほど非道くは無いとおもいますがこれも好きずきの問題?
  • 引数の順序が紛らわしい:あー、これは、まぁ、確かに。まぁ、使ってれば慣れますよ。

"Common use":

  • PHPで書かれた有名なアプリ一杯あるけど、HTMLとロジックが分離してない?:コードを見てないから何とも言えない。只、充分Webアプリのアーキテクチャパターンが出揃った「今」の時点と比べてしまっては、そりゃ、文句は一杯つけられるよね。と思う。じゃぁPerl4の時代に作られたCGIプログラムはどうなのよ?とか。そもそもどう分離していればオッケーなんだ?という問題もある。

最後にMatzさんが

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

Matzにっき(2008-01-26)

と手厳しく仰ってるけど、これは完全に同意だし、自分も絶えず勉強中です。HTTPや周辺要素技術がわんさかあるので、大変なのです。

私自身はPHPの大量の関数に慣れてしまって、一番早くしゃべれる言語になってしまってますのでアレなんですが、只、ここまで来るのにはやっぱりPHP3の時代からちょっとずつ触ってたのがあったかな、と思います。
うーん・・・PHPの厭な面と絶えず付き合ってきたから、かもしれません。

まぁ初心者が勉強しやすい言語ですが、初心者に作らせて良い言語では無いと思います。

でも、最近は"PHPで作るとここが危ないよ"という情報も沢山出揃ってますので、そういったのをきちんとアンテナ張って目を通したりする人であれば、暫く勉強を続ければ大丈夫だと思います。逆にそういった情報に自分からアクセスしようとせず、分からないことがあってもPHPマニュアルを調べもせず、PHPPro!に初心者免罪符で質問投げて答えだけほしがる・・・という人は・・・これは、PHPに限らずどんな言語であっても、上手く行かないとは思います。

中途半端ですが、そんなオチ。