ショートカット
ファシリテーター × あり方
コーディングの向こう側
Hello, ANOTHER world!
オブジェクト指向のはなし
プログラミングのはなし
C言語実力診断クイズ
eSkillBooks
オブジェクト指向のはなし

捨てる覚悟を!

導入

オブジェクト指向への変化はパラダイム・シフトです。いままでの方法は捨てる覚悟が必要です。

解説

いままで慣れ親しんできたものを捨てるのは抵抗があるでしょう。それはソフトウェア開発の手法も同じこと。急にオブジェクト指向にしろと言われても、今までの自分のやり方を否定されるのはいささか不服でしょう。

それでも! やはり古いやり方は捨てるしかありません。これを納得してもらうために、ちょっと私自身の話をしましょう:

私が初めに覚えた言語は BASIC でした。最近の BASIC は良くできていますが、当時のものは IF と GOTO と GOSUB ぐらいしか制御構造がなく、どうやってもぐちゃぐちゃのスパゲティプログラムになるのでした。しかしそれでも満足していたのです。もっと速いプログラムを書く方法を知るまでは・・・。

マシン語の存在を知ってから、だいぶやり方が変わりました。スピードが要求される部分はノートにマシン語で書いて、ハンドアセンブルしてからそのダンプリストを BASIC で記述しました。このときは、もうプログラミングのすべてを手に入れたと思いました。だって、マシン語で書けないプログラムってあります?

マシン語で書けないプログラムがあること、つまり人間の限界によってある程度以上の規模のプログラムをマシン語で作るのは現実的ではないということを実感した頃、Pascal に出会いました。そして高級な記述をするということの必要性を理解しました。そのころ「なにやら C 言語なるものが流行っている」と聞いて、すぐにとびつきました。自分では気づいていませんでしたが、あいかわらずスパゲティプログラムでした・・・。

自分のプログラムがスパゲティだとわかったのは、構造化プログラミングを知ったときです。つまり、プログラムは「順次」「選択」「反復」の3つの制御構造によって記述できるのです。またそうすることによって可読性が増し、バグが減るのです。この頃の私は、自分なりのコーディングスタイルを見つけようと必死でした。どうやったら読みやすくてカッコいいソースリストになるかを研究し、ついに世界で一番クールなプログラムの書法を発見したのです。もちろん勘違いでしたけど・・・。

デバッグコードというものについて知ったときが、一番ショックでした。バグはでてくるのを待つのではなくて、罠を張って捕まえるものだったなんて!ここにいたって私は悟りました。「完璧な方法を見つけたように思えても、そのうちもっと良い方法が必要になる」ということを・・・。

オブジェクト指向に出会ったときは、今までのやり方とずいぶん違うなと感じました。しかし私はすでに悟りを開いているので、意識的に、かつ精神的な苦痛を伴わずに自分のやり方を変えることができました。

めでたし、めでたし。

つまりこういうこと

どうやらこんな法則がありそうです:

  • 昨日の先端技術は、今日の常識
  • 今日の常識は、明日の非常識

つまり、技術には寿命があるってことです。オブジェクト指向技術もまもなく常識(=基礎技術)になり、運が悪ければいつかは絶えるでしょう。

今までのやり方に固執するのは、恐らく今までそのやり方でうまくいっていたからです。その「今まで」の長さが長ければ長いほど、やり方を変えるときに苦痛が伴います。しかしだからといって、もっとうまくいくやり方から目を背ける理由はありません。

今日からは、新しいスローガンを掲げましょう:
「もっと良いやり方があると気づいたなら、迷わずそれを選ぶのがプロってもんだぜ!」

(「オブジェクト指向のはなし」は1999年2月から2000年4月にかけて作成されたコンテンツです。)