現在、PHPでオブジェクト指向プログラミングを取り入れようとしていますが、パターンの活用、再利用性といったメリットをあげてもクラスの記述されたファイルの読み込み(includeなどの処理)回数が多くなることや、インスタンス生成による負荷の増大で多くの処理に耐えられないのではという反論があがっています。
メソッド処理は通常の関数と比べて呼び出しが遅いとは聞いていますが、実用に耐えられないものが普及するとは考えられず、これについての反証を探しています。反証内容は、実用に耐えるということです。
webサイトでかまわないので、そういった問題について論理的に解説されているところを教えてください。
論理的に反証するのは不可能です。
議論している土台自体が違うので、無駄だと思います。
実績をベースに説得するしかないと思います。
--------
PHPのフレームワーク『Ethna』徹底解説
http://labs.gree.jp/Top/Document/20060707.html
Greeが使っていると思われるフレームワーク。
中あまり詳しくみてませんが、オブジェクト指向で設計・実装されているはずです。
コアなフレームワークで、そういう実装をしてるということは、大丈夫だと
考えるのが妥当です。
で、実際gree.jpは、現在も運営されてます。
そんなに小さい規模だとも思われませんし
アクセス数も小さいとは思われません。
---------
>負荷の増大で多くの処理に耐えられないのではという反論があがっています
実際、負荷テストとかしたデータを持っていないので不明ですが、
確かに、そういう一面はあるでしょう。
オブジェクト指向プログラミングを採用する陣営は
「メソッド処理は通常の関数と比べて呼び出しが遅い」から、通常の関数コールに
書き換えるという解決手段を採用しません。この時点で、議論が不可能なのです。
この問題を解決する手法は、ほか幾らでもあります。
負荷対策で「オブジェクト指向」が問題になるのが不思議です。
システム全体の設計とか仕様とか言うレベルの問題だと思います。
実際、PHPでインスタンスを生成しないことなんてないです。
include 回数が問題になるようなシステムなら、
そもそもPHPでいいのかどうかも検討する必要があります。
もし、プログラミングレベルでどうにかなるものであれば、
オブジェクト指向の良い悪いよりも、むしろ開発者がオブジェクト指向に対する
理解が有る無しが問題ではないでしょうか?
結局、効率の良いシステムを作るのに重要なのは『誰が作るか』で決まると思います。
重要なのは人であって手法じゃないです。
未経験者がオブジェクト指向を導入しても、すぐには効果は出ません。
オブジェクト指向を学んでより効率の良いシステムを作れる「人」を育てるという、
今後の発展のためという目的で説得してみるのはいかがでしょうか?
個人的には、PHPで作るシステムならオブジェクト指向にこだわる必要はないと思ってます。
小規模なシステムならそれほどこだわる必要ありません。
結局のところ人ということですね。
たしかに、時期尚早という中ですすめているので、それが核心のような気がします。
ただ、具体的にどう育てて、どれくらいで減価償却ができるかという目安がないと今回の場合の反証にはならないように思えます
論法としては採用させていただきます
がると申します。
おもったよりも活発な議論が発生しなかったので、後出し恐縮ではありますが少々書かせていただきたく。
実はすでに私の日記の方
http://d.hatena.ne.jp/gallu/20071025/p3
で書かせていただいているのですが。
組み込み系などの「よほど極端にタイトな現場」ならいざ知らず、そうでないところで「OOをやらない」メリットは、さほど多くないと考えております。
また「実用云々」に関しては。「実用に耐える」の定義次第なのでなんとも、なのですが。そこを真剣に議論するなら、まず「言語をPHPではなくJavaとかC++とかCとかにする」ところが論点になるのが妥当であるように思われます。
以上あまり参考にならない書き込みで恐縮ですが。
がるさん、回答ありがとうございます
日記も拝見させていただきました。反論が上がっているシステムはSmartyやPEARの利用も含めて提案しています。
実用の定義は、それなりのアクセスをさばけるということにしてください。アバウトですいません。
メリットデメリットを並べるとOOPのほうが優勢に見えますが、日記に書かれてるとおり「よく知らないから反対」なのかもしれません。そうなると、論理的な説明など無意味ということになりますが…
他の回答者の方もおっしゃられていますが、長期的な啓蒙ということでしょうか
回答ありがとうございます
なるほど。事実は事実として、説得していくということですね
オブジェクト指向プログラミングやフレームワークを活用した巨大サービスは多いので、それを背景として話を進めてみたいと思います