OOP

Matzにっきからの情報ですが、デブサミ2005 (2日目)に「オブジェクト脳をなぜ作るのか」という話があったようです。とっても疑問なのは、従来のプログラムって手続き型とか関数型とか論理型だったのですが、これらはあまり人間にとって理解しやすいものではなかったと思います。実際のところ数学にある程度強くないと理解するのに時間がかかって、人を選んでいたと思います。一方、オブジェクト指向は現実にある物からプログラミングへアプローチできるので、理解しやすいという気がしています。

なので、「オブジェクト脳」をわざわざ作るってどういうことなんだろうか?、と疑問に思うわけです。コンピュータよりの考え方しかできなくなってしまった人間に対して、人間らしさを取り戻せ、と言っているような感じもしてしまうのですが…

また、コンピュータプログラミングの教育においてオブジェクト指向の「たとえ話」で「つばめ」や「すずめ」は「鳥」で同じように「鳴く」というようなことをするのが良いのか、良くないのか、ということもたまに聞くのですが、これがプログラム初心者にとって問題になっていることなのか、というとなんとなくそうではないと思ったりします。まず最初に、学校で情報の勉強をしている人には、プログラムができる人(2割ぐらい)とできない人(8割ぐらい)がいて、次にプログラムができる人はオブジェクト指向で考えた方がわかりやすい人(1割ぐらい)と手続き型で考えた方がわかりやすい人(9割ぐらい)がいるような気がするわけです。ということで、「プログラムができる人を9割ぐらいにする方法」を開発することができたら、会社はじめられるんじゃないか、と思うわけです。まぁ、この話はとりあえずこれくらいにしておきます。

次に、プログラムができる人には、なぜ手続き型で考えた方がわかりやすい人が多いのかというと、学習の順番として先に手続き型を勉強してしまって、それにある意味毒されてしまったからではないかという推測をしています。それで、手続き型に慣れてしまった人には、コンピュータプログラムと関係ない抽象的な話をされても、興味が持てないから、コンピュータプログラムと関係ある具体的な話をした方が良いわけです。

しかし、本当のプログラミング初心者としては、そもそもプログラムはどうやって作るかもわからないので、あまり具体的な話をされても結局わからないはずなのです。それで仕方がないので基本的なプログラミングの話を最初にするのですが、このときにどうしても手続き型に近い話をすることになるので、初心者を「手続き型に慣れた人」に育ててしまうことになります。これが、いけないよなぁ、と漠然と思っています。なんというのか、「オブジェクト指向プログラミング」をプログラミング初心者へすんなりと教える方法論がまだまだ熟成されていないのだろうな、と個人的には思っています。いや、もちろんドリトルやNigariやRobocodeやCodeRaceやBlueJのように、色々あるんですけどね、決定打にはなっていない気がするんです。

ちょっと騒がしい環境で書いているので、話がまとまらないのですが、まぁ、こんなことを考えたのでメモとして残しておきます。

同じカテゴリの記事: Java