OOPを否定とか批判とかする前に・・・

http://d.hatena.ne.jp/studiokingyo/20060612#p1
これ個人がどうこうというのではなく,こういう意見全体に対する反論として,

実際、なにがなんだか分からないままにgoogle:glibのコーディングスタイル、データ構造、状態遷移関係がオブジェクト指向だと思い込んでいままでプログラムを組んできたわけです。

私が学んできたOOPという考え方は必要な機能を実装したらリライトをしないような形で表現する所が素晴らしいと感じるのです。

おそらくは,いずれも恐ろしいまでに関係ない.

たぶんVB系の言語を触ってきて,MS地方の『オブジェクト指向』に触れているためではないだろうか.MS地方ではVBのプログラミングスタイルを『オブジェクト指向』と呼んでいるが,それが通用するのはMS地方の内部だけ.一般的にはVBオブジェクト指向に含まれない*1.MSの常識はIT業界の非常識.

  • UMLって昔、流行ったような気がしたのですが、役に立つような気がしません・・・。
  • XPというプログラミング手法の本も読んだのですが、役に立つような気もしません・・・。
  • JAXTAってのもあったような気もしますし・・・

UMLが役に立たないというのは同感.ただしこの三つを並べる時点で理解しているか怪しいものだ.見事なまでに全く関係ない.

XPはプログラミング手法というよりは開発スタイルかな.XP本の初版は訳が酷かったこともあり,非常に理解し難い.しかもあれを理解するためにはプログラミング全般(特にOOP)を理解している必要があるので,初心者が理解するのはまず不可能だろう.

C言語による最新アルゴリズム事典のようなアルゴリズム関係の本を読み倒して、どのアルゴリズムをどのようにして組み合わせると目的のソフトウェアが作れるかというような事の方が役立つ技術のような気がしてなりません。

アルゴリズムはプログラミングの基礎の基礎.プログラマーなら知っていて当たり前.*2

実際にはその程度の入門書に載っているアルゴリズムの丸暗記だけでは十分でなく,それに載っていないアルゴリズムを,臨機応変に自分で創り出せることがプロの開発者には求められる.それができない限りは半人前と言って良い*3

オブジェクト指向云々はその先にあるものです.

*1:VBも広義の「オブジェクト指向」に含まれるとする考えもあるし,特にMSは強引にそう主張してきた.だが,まあ一般の技術者としてはどうでもいい話で,あれのことをどう呼ぼうとVBの『オブジェクト指向』が似て非なる物だということに変わりはない.

*2:そうでない人もいるらしいから日本のIT業界は恐ろしい.

*3:IT技術者」の過半数が,ここでいう半人前なのかもしれないけど.