私もOOPなんて役に立たないと思います!!!

Powered by dKingyo ソフトウェア開発技術者 | C++ | Ruby | 256倍使うための本 | Windows Server


http://blogs.itmedia.co.jp/tamaki/2006/06/post_57ab.html
http://b.hatena.ne.jp/entry/http://blogs.itmedia.co.jp/tamaki/2006/06/post_57ab.html
の記事が私が訪れている様々なブログや日記でいろいろと議論が巻き起こっているのですが・・・いやいや、なんか、荒々しいコメントが目立ってきてなんかちょっとな・・・って感じがする今日この頃です。
いやいや、OOP・・・確かに目的のソフトウェアを作る上では全く役に立たないと思いますよ。あくまで私の主観で経験上の話ですよ。(ってか、実際業務を行っているプロフェッショナルではない私が言うのもなんなんですけど・・・)


私自身、頑張ってOOPを自分なりに理解して覚えてきた訳ですが、実際、なにがなんだか分からないままにgoogle:glibのコーディングスタイル、データ構造、状態遷移関係がオブジェクト指向だと思い込んでいままでプログラムを組んできたわけです。目的の機能(ライブラリ)を作ったり、ライブラリを読んで構造を理解するのに私が学んできたOOPは素晴らしい考え方だと感じます。
特に、私が学んできたOOPという考え方は必要な機能を実装したらリライトをしないような形で表現する所が素晴らしいと感じるのです。


ですが、この考え方に凝り固まってソフトウェアをコーディングしてもさっぱりソフトウェアが完成に近づかないのです。
むしろ、何回もリライトすることになりソフトウェアが動くまでになかなか漕ぎ着けません。そんな経験が私からpureでtrueでrealなOOPでソフトウェアを作ることから遠ざけているような感じを受けます。
ですが、私が学んだOOPという考え方、好きなんです。なんというか、プログラミングする上で私の中での美徳というかPolicyにまでなってしまった考え方なんです。
なので、私はライブラリ製作にのめりこんでいったのではないか?と考えたりすることもあります。


しかしながら、私が学んできたOOPは真のOOPではないのかもしれませんし、真のOOPを使うと生産性が上がるのかもしれませんし、そうではないのかもしれません。
ですが、今の時代、大量のライブラリやAPIを使わないとソフトウェアが作れない時代になってきました。ライブラリや最近のAPIにはこのOOPが使われる傾向が多分にあります。これを考えるとオブジェクト指向という考え方は少なからずソフトウェアを作るのに必要な概念ではないかとは私は感じています。


それからこの記事の著者は「とりあえず、スキルアップのためにはコードを書くのだ!」的な事をとりあえず、OOPを引き合いに出して主張しているのかな?と感じました。確かに、このコードを書く = スキルアップの為の近道*1私の経験的にはこれは当たっていると思います。
また、「流行ってる技術=役に立つ技術」ではない!!!というのもうなずけるような気がします。


UMLって昔、流行ったような気がしたのですが、役に立つような気がしません・・・。
XPというプログラミング手法の本も読んだのですが、役に立つような気もしません・・・。
JXTAってのもあったような気もしますし・・・。*2
(追記:「目的のソフトウェアを作る上では」と付け加えるべきでした。誤解を招いてしまいましたかもしれません。スミマセン。)


いやいや、ここにあげた概念を私はがんばって覚えて使って物言いしたわけではなりません。ただ、私がこの概念の概要を雑誌で読んだ第一印象を述べているだけです。

むしろ、私は経験的に古典的なFSM的考え方やポリシーが役に立つ技術のような気がしてなりません。*3
むしろ、
C言語による最新アルゴリズム事典のような
アルゴリズム関係の本

を読み倒して、どのアルゴリズムをどのようにして組み合わせると目的のソフトウェアが作れるか というような事の方が役立つ技術のような気がしてなりません。
むしろ、そのプログラムをどのように組み合わせると目的のソフトウェアを製作、完成させるのにメリットがあるかという事を経験していることの方が役立つ技術のような気がしてなりません。

ですが、私はプログラミングは独学ですので真の概念や真の考え方が分からないのにこういう文章を書いているので ちょっと(/ω\) ハジカシー 感はぬぐいきれません・・・。プログラムかじっている学生の戯言と思っていただけると救われます。

*1:確証があるわけでもないし、証明もできないけれども

*2:追記:http://web.sfc.keio.ac.jp/~yoshiro/weblog/archives/2003/04/jaxta.htmlより JAXTAってスペルミスらしい。JXTAが正式な名称のよう。

*3:昔の人はOOPにとらわれずにFSMやっていたんだよなー と考えるとなんだか頭が下がります。