2013-12-20

PHP生産性の高さはやばい

自分JavaからPHPに入ったので、最初はとにかくクソな言語だと思っていた。

配列仕様がとにかくひどい。

Copy On Writeという謎仕様なのに加え、すべての配列が常に「順序付きマップ」という謎なものになっている。ただ単にマップ連想配列)を使いたいだけの場合でも、なぜが挿入順でキーが順序付けされているという仕様で、内部でどんだけオーバーヘッドがあるんだろうと考えると、それだけでストレスが溜まったものだ。

あと、何も宣言せず、$array['key1']['key2'] = 1としただけで、要素が1の配列が2つ作られる。これも気持ち悪い。この仕様のせいで、どれだけ見つけづらいバグが誘発されているかと思うと、それだけで痒くなった。

そんな風に思いながら、2年近く仕事をして、そこそこ大規模なシステムを一人で書けるようになった。それでも、PHPをやっている引け目のようなものはなくならなかった。

ただ、そんな思いのまま「意識が高い」系のプログラマが集まる会社に移り、RubyだとかPythonだとかScalaだとかが書けるようになった上で、あらためてPHPを見ると、その仕様が優れていることを痛感させられる。同じことを書こうとしたときの行数が圧倒的に少ないのだ。配列についてもたしかに、オーバーヘッドはあるが、実際にはパフォーマンスに影響することは少なく、それを通して得られる開発効率は半端じゃない。他の言語だといくつものライブラリを介して可能になることが、単にサーバファイルを置くだけで可能になるというのは、特に小規模なプロジェクトでは生産性の高さに直結する。

もちろん、プロセススレッドデータ共有の仕組みが前時代的で、パフォーマンス効率は高くない。言語仕様が、ノンブロッキングな処理に向いていないなど、用途によっては致命的な欠点もないわけではない。ただ、きちんと言語特性を理解するレベルで使ったことがないのに、仕様的に他の言語と変わっているところを挙げて、「PHPを使うのはレベルの低いエンジニア」というのは、そろそろ終わりにした方が良いと思う。

あと、話は変わるが「意識が高い系エンジニア」は、システムを開発する上で人件費採用コストの問題をあまり考えていないのではないかと思う。たとえば、ビジネスが急に大きくなって、取り急ぎ100人エンジニアを雇おうとなったときPHPならとりあえず書ける人間をかき集めやすい。RubyPythonで同じことをやると採用にかかる時間が大幅に伸びるか、人件費が大幅にアップするかになるだろう。これは、一緒に働くエンジニア所与の条件として見るか、お金を払って雇うべきダイナミックなものとして見るかの違うじゃないかと思う。

  • てめえのブログでやりやがれ

  • PHPならとりあえず書ける人間をかき集めやすい。 この一点に全て集約できる。 お前の言う「とりあえず書ける」程度の「かき集め」た連中が諸々を意識したコード書けないから、PHPは...

  • RubyだとかPythonだとかScalaだとかが書けるようになった上で、あらためてPHPを見ると、その仕様が優れていることを痛感させられる。同じことを書こうとしたときの行数が圧倒的に少ない...

  • とりあえず動くまで持って行くための生産性と、長期的な生産性は違うよ。 PHPはとりあえず動くまでならいいけど、長期的に使っていくのは辛い。 そこを理解して使うなら別にいいけど...

  • ずっとPHP、Javaをいじっていて、はじめてPythonをさわったとき、涙がでたね。コードが圧倒的にシンプルで。結局生産性のボルトネックになるのは、コードの可読性だと思う。 唯一PHPが優...

    • え、同じくPHPとJava使いで最近Pythonいじったけど、そんなこと感じなかったけど 本質と関係ないけど、使ってるエディタがPythonの色分けに対応してなくてえらい苦労したのが印象に残った...

      • 本質と関係ないけど、使ってるエディタがPythonの色分けに対応してなくてえらい苦労したのが印象に残ったぐらい どんなレベルの話してんだよ。。。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん