綺麗に死ぬITエンジニア

PHPがダメな言語であると揶揄される理由

2016-01-19

よく、PHPがパフォーマンスが悪いダメな言語だとか、ヘンテコ仕様の多いクソ言語だとか言われているところを見たり聞いたりします。確かに私自身も、PHPで書かれた拡張性ゼロ保守性ゼロのシステムを見たことがあります。

が、本当にPHPはそんなに悪い言語なのでしょうか。今回はそのあたり、考えてみようと思います。

PHPの歴史

PHPの基本的な歴史は、PHP公式サイトの「PHPの歴史」のページに記載があります。

Wikipediaの記載にあるとおり、PHPは初め、プログラミング言語として作られ始めたわけではなく、単なるPerlで書かれたWebページ作成のためのツール集のスクリプトでした。作者自身ですら当初はスクリプト言語になるなどとは予想していなかったそうです。

ところが、段々と機能を追加していくうちに、次第にスクリプト言語として考えられるほどに多機能になっていきました。PHP 1.0のリリース時にはPerlからC言語で書き直され、段々とスクリプト言語へと成長していきました。今でこそオブジェクト指向や例外処理などの機能が追加され、広く利用できる言語へと成長しましたが、もともとを辿ると単なるツール群でしかなかったようです。

そうした経緯もあってか、例外の枠内に収まらないエラーに対処できない場合があったり、標準関数の命名ルールに統一感がなかったりするなど、他の言語にはないある種のだらしなさがあります。

未だに一部、変な仕様があることは確か

かつては大きな脆弱性が発見されたりすることも多かったですが、最近はそういったセキュリティーに関する部分も落ち着き、また、度重なるバージョンアップにより処理速度・パフォーマンスの部分もだいぶ改善されてきました。言語仕様に関する不自然な部分も少しずつ改善の方向に向かいつつあります。

しかしながら、まだ現在でも、おかしな仕様が残っていることは確かです。

標準関数群に、スネークケースとキャメルケースが混同していたり、引数の順番が統一されていなかったり、配列の仕様にクセがあったり、参照の仕様に落とし穴があったり、switch文の仕様に落とし穴があったり……。詳しくは、こちらこちらこちらに記載があります。

熟練プログラマーの中には、こういった部分に拒絶反応を起こす方も多いようで、それがPHPがクソ言語と言われる所以となっているようです。しかしながら、そういった言語ごとのクセというものは、往々にしてどの言語にも多少はあるものです。その仕様のせいで致命的に実装できないという場面はほぼほぼないので、笑って見過ごすくらいの寛容さが必要です。

簡単な言語であるが故の罠

他にも、PHPは敷居が低い分、スキルの低い方から高い方まで万人に利用されている言語であるが故に、いかにも初学者が書いためちゃくちゃな記述が世の中に横行している現状があり、その部分もPHPがディスられる要因の一つになっているようです。

PHPはHTMLを学習した人が、次の段階として比較的簡単に学習を始めやすい言語になっています。そのため、本格的にプログラミングに対しての学習を経験していない人が、PHPをたとえ実務でもすぐに利用しやすい傾向にあります。

そしてPHPそのものが動的型付け言語でかつルーズな書き方が許される言語であるために、記述する人によって成果物の品質の差が大きくなりやすいのです。つまり、プログラマー個人のスキルによって差が出やすいのです。

その上、そのあたりの問題をあまり考えずに、Web業界の流行だけで経営者が簡単にPHPでシステム開発をする決定を下してしまい、なおかつ成果物の正当な品質チェックが行われてこなかったために、拡張性が低くセキュアではないシステムが世の中に量産されてきました。これについてはPHPが問題視されがちですが、そうさせてしまう業界そのものの問題もあるかと思います。

比較的導入しやすい簡単な言語であるが故の問題です。

嫌いな女優ランキングと好きな女優ランキングは被る理論と同じ

大体以上のような理由から、PHPはダメな言語であると言われがちです。しかしながら、私はPHPはそこまでダメな言語だとは思いません。これは、PHPが有名になってしまったが故の副産物であると思います。有名になってしまったが故に、多くの人により言語仕様のツッコミどころをつっこまれ、必要以上に悪評が流行しているような気がします。Javaだって、Rubyだって、Node.jsだって、いろいろな理由をつけてクソ言語だと主張する人は一定数います。

要は有名になってしまったがために、多くの人によって、良くないと思われる部分が、他の言語に比べて多く主張されているというだけで、それだけPHPにはそれなりの需要があることを意味していると思います。

興味のないものは、そもそも話題にすらならない。嫌いな女優ランキングと好きな女優ランキングに同じ女優の名前が挙がるのと同じ理屈で、有名になったがために一定数の人に嫌われているという側面があるかと思います。

まとめ

もちろん言語ごとに向き不向きはありますが、単に「PHPはダメ!」というのは少し短絡的すぎる気がします。多くの場合において、きちんと正しく設計さえできれば、PHPは有効な手段であると言えます。それだけ便利な言語であることは間違いないのです。

ただ、上記で挙げたような落とし穴も多い言語であることは事実なので、きちんとPHPで無理なく実装できるだけのスキルは、PHPを使うプログラマー全員に身につけて欲しいものです。