いつか作ります RSSフィード

2008-09-29

php考 00:09 php考 - いつか作ります を含むブックマーク はてなブックマーク - php考 - いつか作ります php考 - いつか作ります のブックマークコメント

盛り上がってるようなので。

そもそも、PHPは何がどう「駄目な言語」なのか

でも、簡単に利用できたり、軽かったり、WEBアプリケーションが作りやすかったりするメリットを上回って「駄目」な理由

ダメな言語だとは思っていない。ダメな点がいっぱいあるだけで、いい点だって多い。

そして、いい点がダメな点を打ち消すことはないし、ダメな点がいい点を打ち消すことも無い。どの言語にもいい所と悪いところがある。

phpが低く評価されがちなのは、初心者・小規模アプリケーション向きのメリットが多く、熟練者・大規模アプリケーションに対するデメリットが大きい、という点。

「ホームページにカウンター設置したいです><」とかいう要望に、最速で答えられるのは間違いなくphp。それはまあ極端な例だが、webプログラミングが解決できる問題の大半は、phpで実装するのが一番早い程度の大きさの問題。

問題がある関数とはどれのことを指すのか

使い方に問題があるだけ。

PHPの演算子が何種類もあるのだが

==と===の違い、非常にゆるい型キャストのルールだけがphp固有の点。

演算子の数は、さほど目立って多いというわけでもない。

なんでPHP以外の言語のアプリケーションは普及しないのか

phpが、手早くフロントエンドを作成することに特化した言語だから。だから、ブログやwikiなど、フロント寄りのスクリプトを見ているとphpのシェアが非常に大きい。

(歴史的に元々その地位を占めていたPerlからの乗換えが多かったことも一因にある)

あくまでフロント寄りの部分で多いだけで、バックエンドな部分やミッションクリティカルな部分をphpで書いてる所は少ないだろう。

それと、学習コストと、それに起因する人口の大きさ。要するに、phpしかできない奴にPerlを教えるより、Perlしかできない奴にphpを教える方が圧倒的に早い(OOPを知らないPerlerにphpを仕込むのは大変そうだが、それはまた別の話)。

コマンドラインを使うのはどうしてなんだろう

localhost経由でデバッグすると、問題がどこにあるのか切り分けにくい。リクエストがおかしいのかもしれないし、webサーバーが予想外の挙動をしているのかも知れない。コマンドラインなら、同じ環境で実行している限り、原因は常にスクリプトにあると断言できる。

それと、ファイル移動やらログ確認やら何やらでターミナルウィンドウを常時1枚くらいは開いてる奴が多い、というのもある。

var_dump($hoge)と書く方が、echo nl2br(print_r($hoge, true))と書くより圧倒的にラク、という身も蓋も無い理由もあるが。

変数名やオブジェクト名はどうやってつけたらいいんだろう

コーディング規約を適当にパクる。phpならZendかPEARのコーディング規約を真似ておけば問題ない。

一般論として、意味の分かる関数名/変数名/クラス名を使う事。

$limit_flagは意味が分からない。$is_over_limitと書いておけば、思考を止める事無く読んでいける。checkUpperBounds($int)より、isOverLimit($int)の方が意味する所と返り値の意味が明確。そういう話。

面白い方針としては、Manager、Dataは名前に使ってはいけないというルールなんかがある。曰く、「どんなクラスであっても何かを管理しているし、プログラム内の概念なら全てデータなので意味が無い」という事。

どの言語でも、デザイナーにフレンドリーなHTMLは出力できるのか

大差ない。

私感でphpのダメな所

PerlやRubyやPythonは、strictな書き方もユルい書き方も出来る。

phpでは、ユルい書き方しか出来ない。つまりstrictな書き方が出来ない。

だから、大規模なシステムをphpで作ろうとすると、粘土で高層ビルを作るがごとき難題に悩まされる事になる。

Javaなんかはstrictな書き方しかできない。だから「helloworld」に5行以上かかるわけだが、大規模なものを作ろうとすると、この融通の利かなさが幸いして、非常にものを作りやすい。

ビルを建てようとするとき、鉄骨が本当にまっすぐかいちいち確認しなければならないとしたら、途方も無い時間がかかる。鉄骨が真っ直ぐかのチェック機構を内包できる(まっすぐにしか作れない、曲がってたらコンパイル時にエラーで弾かれる)というのは、きわめて重要。

webbingstudiowebbingstudio2008/09/30 02:42>Manager、Dataは名前に使ってはいけない
あ、Data使ってました…(´Д`; 今のうちに直します。
HTMLやCSSももちろんですが、多人数で何かをしようとするときは、strictがかえって助けになることがあると思います。
普段の駄日記までマークアップしてしまって、無駄な時間を食うことがありますが…

皆さんのお話、とても参考になります。ありがとうございます!

fukkenfukken2008/09/30 17:57「data使うな」は相当に偏った方針だと思います。クラス名etc.にdataとかmanagerとかを使った時に、一瞬立ち止まって「もっと分かりやすい名前があるのではないか?」と考える習慣をつける、程度でよいのではないかと。

新着エントリは上に追加。コメントは「はてなユーザのみ」、公開設定はパブリック (だれでも閲覧ができます)。