PHPの思想と言語表現

先日の 第3回PHP懇親会に行ってきた で「PHPで書くとシンタックスが長ったらしくて嫌だ」ということを書いたら、いくつかフィードバックがあったので乗ってみる。

Perlの「$hoge =~ s/^Hoge/Fuga/」という書き方に対して、PHPの「$hoge = preg_replace('/^Hoge/', 'Fuga', $hoge)」だと検索できるから初心者が迷わないメリットがあるよ、というお話。

あと、id:clonedからも同様のブクマコメをもらってた。

前のエントリでは書いてなかったけど、そういう初心者へのサポートを心掛けるのがPHPの思想という話はその場でid:koyhogeさんともしてました。それに対して「それぐらいは読めるべきだし、そのレベルに引きずられてコードが冗長になるのは嫌だ」というのが僕のスタンス。

実際、正規表現での置換ぐらいはどんなに薄い入門書でも(よっぽどひどい本でない限り)載ってるはずなので、それをググらなきゃいけない人はPCに向かう前にやることがあると思う。


とは言え、上記のid:tohokuaikiさんのエントリにある、

Perlって知らないと全然読めないってところが多くって「そりゃ、知ってりゃ読めるけど知らんかったら大変」っていう感じがします。

という側面は確かにあって、それに対するPHPの思想というのも理解はできるわけです。好きかどうかは別として。

Perlはショートカット的なシンタックスをいろいろと持っていて、それを駆使して短かったり速かったりするけど読む敷居の高いコードも書けます。薄い前提知識でも読めるコードも書けるし、黒魔術のようないわゆる「変態的なコード」を書くこともできる。そこまで行かずとも、短縮された口語的な表現ができることで気持ちよくコードを書ける。そのコードを読むに当たって、どの程度の前提知識を要求するかはコードを書く人に委ねられます。

一方PHPでは言語仕様として初心者にも読みやすい、検索性の高いコードを強制します。そのため記述が冗長になりがちな面もありますが、一方で「チームでその人しか読めない難解な文法」が発生するリスクを抑止できます。枠にハメることで管理コストの抑制を狙ってるわけです。これは業務用途を考えると理にかなってる。


どちらが優れているということではなく、ましてや「PHPは初心者向けの言語」という話でもありません。純粋に思想の違いです。

PHPの思想だと「普段はPHPを使わない他言語使いが、臨時でプロジェクトにアサインされた時に極力コストをかけずに仕事を片付ける」なんてシチュエーションにも対応しやすいです。それがいいか悪いかは別として、実際の仕事の現場ではそういう場面も珍しいことではないでしょう。

そこまでいかずとも、文脈の共有がしやすいのは業務で使う言語としてメリットは大きい。それがPHPの普及を助けた部分も少なからずあるのではないかという気がします。


てな具合の話は好きなんだけど、「PHPの思想」みたいな話はここ数年あんまりWebで見ないような気がするので、ぐだぐだと書いてみるのでした。オチなし。