2010年11月16日火曜日

HowとWhatの手続き指向/オブジェクト指向

プログラミングにおいては、コーディングテクニックよりもアルゴリズムのほうがよほど好きで、アルゴリズムを楽しんでいますが、なんだかんだでコーディングも教えることが多く、その説明を考えていたときに思いついた話です。

手続き指向とオブジェクト指向の説明は現代のプログラミングにおいて、特にCとJavaを扱う人間としては避けて通れないものでしょう。私もCを教えつつ、適宜オブジェクト指向の話をするのですが、いつも考えるのは「どう教えるか」です。例えで説明するときが多いのですが、例えはあくまでも例えであって、本来的な説明の噛み砕き方も考えねばなりません。

色々と考えていて思いついたのが、データ構造+アルゴリズム=プログラムということです。少し意味は異なりますが、プログラムは データ(オブジェクト) を 処理 するものということです。英語で言えば
Programs treat objects.
ということですね。この時、プログラムとは何かという問に対して、二つの質問が考えられます。
What objects does the program treat?
How does the program treat the objects?
この、前者を定まったものとし、後者を主として記すのが「手続き指向」、前者後者をまとめて、何をどう扱うかまとめて記すのが「オブジェクト指向」であるという説明です。

それがなぜ有効か、どのように有効かという話は後に回すとしても、オブジェクト指向と手続き指向が相反するものではないということを説明するには、まずこの程度の(厳密性は欠きますが)噛み砕いた説明から入っていくのが妥当ではないかと思います。

0 件のコメント: