なぜOOPか

はてなBookMarkで注目のブックマークであがっていた「私がPHPプログラマの技量を知りたいときに書いてもらうスクリプト」
ちょっと気になって覗いてみた。

内容はなかなか面白いのだが、多々気になる点がある。

最近のPHPプログラマなぞ「<?phpの次にclassと書くかどうか」だけでだいぶ足切りできる気がする。

とか

一見シンプルな仕様ですが、OOPが身に付いていない人を弾く程度には機能します。

とかの部分である。


私はここで書かれている例題を1時間で書く自身はあります。
ただし、あえてOOPで書こうと思わないかもしれない。
誤解があると嫌なので一応書くけど、別に私はOOP否定派ではない。
私はC++JavaRubyPythonSmallTalkといろいろオブジェクト指向言語をやってきたし、UMLで設計もしてきた。ただしPerlPHPも大好きだし、それらをオブジェクト指向で記述することもある。


いろいろやってみてきた経験から言うと、言語にはそれぞれ良い面や至らない面がある。それぞれに特徴があります。(シェルスクリプトですむことをわざわざC++で書きませんよね。)
PHPにもそれは言えて、PHPは何も完全にすべてをOOPで書かなくとも、もっと簡単なことを簡単に記述することができます。
言語によってはOOPで記述しやすい言語もあります。(RubySmallTalkなど)
でもRubyが特にそうですが、Rubyは本格的オブジェクト指向言語ですが、簡単なことは簡単に書けるように設計されています。
私なら、ここで例題に挙げられたような簡単な例題なら、PHPではOOPで書かなくとも、もっと簡潔に簡単に書くことができるように感じます。また、本当にOOPにそんなにこだわるなら、JavaRubyPythonで作ることをお勧めします。その方がかんたんなので。


そういった意味で、これを見る人(特に初心者やPHPに入りたての人)がOOPに対して変な勘違いをして欲しくないと思いました。OOPはあくまで手法の一つであります。もちろん覚えておくべき手法ではあるのですが、プログラム言語はしょせん道具です。道具はそれぞれにあったものをあった使い方で使うべきと私は思います。