Attacking PHP
盛り上がってるみたいなので便乗。
もともとは、
- Mindblind - making web development suck less » Attacking PHP
こちらの記事で、それにいろんな人が意見を書いてるようです。
日本語で分かりやすくまとめてる、Rubyの中の人、Matzさんの記事から引用させてもらうと
- Matzにっき(2008-01-26) - [言語] Attacking PHP
- いろんなものが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さんも?つけてますね)
もっとも追記にあった
- どの言語で書いてもおかしなコードを書く奴は書く。
にも同意します。
言語なんてものは選択肢に過ぎないと思っていますので、どんな言語でも利用する限り、セキュアでかつスパゲッティじゃない(=メンテナンスしやすく、他人も読みやすい)コードを書けるようになりたいものです。
当然不必要に実行時間やメモリなどのリソースを食うアルゴリズムも論外です。