Attacking PHP

盛り上がってるみたいなので便乗。
もともとは、

こちらの記事で、それにいろんな人が意見を書いてるようです。

日本語で分かりやすくまとめてる、Rubyの中の人、Matzさんの記事から引用させてもらうと

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

PHPをメインに利用することが多いのですが、概ね反論できません。
下から3つ目の、デザインとビジネスロジックの分離は、フレームワークなどを利用して適切に書いてるソースも多いと思えるので、一応否定しておきます。
(ごちゃ混ぜのソースも多々ありますし、そもそもMatzさんも?つけてますね)


もっとも追記にあった

にも同意します。


言語なんてものは選択肢に過ぎないと思っていますので、どんな言語でも利用する限り、セキュアでかつスパゲッティじゃない(=メンテナンスしやすく、他人も読みやすい)コードを書けるようになりたいものです。
当然不必要に実行時間やメモリなどのリソースを食うアルゴリズムも論外です。