Oh 脳《135》OOPS! よくある誤解

記事一覧Oh 脳: after ZERO《其之佰参拾伍》

OOPS! よくある誤解

《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2009/10/22

セミナーの枕で紹介した小ネタ集です。息抜きや話題作りにどうぞ (^.^)


よくある誤解には、次のようなものがあります。
このプログラムは、BASIC で書いてあるからオブジェクト指向でない、
このプログラムは、Java で書いてあるからオブジェクト指向である。


オブジェクト指向プログラミング(OOP)」という言葉だけは浸透して、
今さら…感も手伝ってか、取り立てて話題にされることは少なくなりました。
しかし、その意味(意義)が理解されているかとなると、疑問が残ります。


OOP は「プログラミング言語」で規定されるものではありません。
BASIC でも、C言語でも、FORTRAN でも、OOP は可能です。


セミナー受講者のみなさんには、
C言語による OOP の事例や、クラスを用いない Python の事例を示しました。


それは、C++ に対するアンチテーゼを展開するのが目的でした。
C言語版では、抽象データ型/継承/ポリモフィズムの三本柱はもちろん、
C++ とは違って、クラスはただの型紙ではなく、
実体を伴う first-class object として実現してあるので、
Python と同様に、実行中にメソッドを再定義して、
インスタンスの挙動を動的に変化させることも可能です。


... zap ...
よくある誤解には、次のようなものもあります。
Java にはクラスがあるけど、○○にはクラスがないから、
○○では、オブジェクト指向プログラミングができない。


相手が OOP を正しく理解できているか確認したければ、
クラスを利用せずに OOP を実践する…課題を与えてみてください。


オブジェクト指向」であって「クラス指向」ではないので、
クラスがなくても、オブジェクトだけで OOP は実践できます。
クラスを導入したのは、解の公式と同様に便宜的な理由からです。
事実、クラスを持たない OOP 言語も少なからず存在します。


新人研修で披露した「解の公式」の寓話を思い出してください。


公式を使って二次方程式の解を求める方法を知っているだけで、
それは方程式の意味(意義)を正しく理解しているとは限りません。
クラスを使ってプログラムを作成する方法を知っているだけで、
それは OOP の意味(意義)を正しく理解しているとは限りません。


その意味を理解していれば、解の公式を自分で導けます。
その意味を理解していれば、クラスを使わずに OOP を実践できます。


シチューなど煮込み料理が恋しくなる季節が近づいてきました。
家庭のシュフ(主婦)なら、市販のルーで間に合わせるところを、
プロのシェフともなると、ホワイトソースの仕込みから始めます。
市販のルーがないと料理を作れないのでは「プロ」としては…
同様に、自他ともに「プロ」グラマーとして認められたいなら、
クラスを使わずに OOP を実践できる技量が問われます。
そこが、レトルト商品を重宝する、主婦や SE との立場の違いです。


毎回、公式を導いてから解を求めていたのでは、手間が掛かります。
同様に、クラスを導入したのは、便宜的な手段にすぎないのです。


公式に頼る問題解決に終始していると、独力では公式を導けないように、
クラスに頼らないと OOP を実践できない事態にも陥りかねません。
SE やアマグラマーなら、それも許されるかもしれませんが、
プログラマーとして、それは未熟な証と言えます。


... zap ...
プログラマー35歳定年説と言われていた時代は遠い昔のこと、
年々と、その「低年齢化」には拍車が掛かる一方です。
「あなたは明日から SE ね」と肩叩きに遭わないように、
受講者のみなさんは「プロ」グラマーとしての「鍛錬」を怠りませんように。(^^)

Last updated♪2009/10/24