HMDT - Logic and Intuition -

HMDT Home

オブジェクト指向の言語比較論

My first browser

世の中に、オブジェクト指向言語は百花繚乱。さまざまな思想と、さまざまな目的のために、さまざまな言語がデザインされているんだ。それらは一応、オブジェクト指向っていう共通の理解の上にあるはずなんだけど、実際に使ってみるとけっこう勝手が違う。つまり、オブジェクト指向へのアプローチっては、1 つではないんだ。そこで、いろんな言語を比べてみて、それぞれの思想を理解しよう、ってのがこのページの目的だ。

言語は思考を規定する

オブジェクト指向ってのは、『対象のモデリング』っていう問題に対する解決法の 1 つ。別にオブジェクト指向プログラミング言語の定義じゃないし、C 言語みたいにオブジェクト指向をサポートする構文を用意していない言語でも、オブジェクトを指向するプログラミングはできる。

でもね。実際にプログラミングをしていると、使っている言語が前提にしているオブジェクト指向の考え方に染まりがちだ。「言語は思考を規定する」。しらずしらずのうちに、その言語的な考え方しかできなくなっているかもしれない。

でも逆に言えば、それぞれの言語を比較してみれば、思想や目的がはっきりしてくるんじゃない?いままで気付かなかった問題のモデリング方法に気付くかもしれない。それを浮かび上がらせてみたいんだ。このページは、言語の多様化を楽しむ方向へ走るぜ。

デザインパターンを叩き台にする

じゃあ、言語の違いを比較するには、文法的な違いさえ分かればいいのか?そうじゃないと思うんだよね。文法は、それぞれの思想の違いを端的に表すでしょいう。でも、それだけじゃあ、違う考え方を持ってる人を納得させるには不十分だ。その考え方の実践的な利点を示さなくてはいけないよね。

それには、実際のプログラムを叩き台にするのが一番!ということで、デザインパターンをお題にしていろいろな言語による実装を見てみることにした。なぜデザインパターンかというと、まず広く知られている。そして、デザインパターンで取り上げられているパターンは、実のところ Smalltalk や Objective-C などのフレームワークから抽出されたものが多いんだ。ということは、その源流となった実装を見るのは興味深いと思わないかい?だから、ある言語では非常に苦労して実装しているものが、他の言語だととってもスマートにできることがあるんだ。こういったことが明確に示されれば、とっても大成功だね。

オブジェクト指向言語の比較

謝辞

このページを書くにあたって、次の方々にソースコードと説明文を提供していただきました。sumim さん、2 さん、GNUE(鵺)さん、terra さん、かりやんさん。大変ありがとうございました。

もっといい実装方法があるとか、もっと言語を追加したいという方は、メールでお願いします。

back to top content

HMDT Products

HMDT Books

Programming Tips

Copyright © 2002-2007 HMDT. All rights reserved.