From: Kyle Rawlins Date: 2002-06-14T02:49:26+09:00 Subject: Re: The need for metaclasses (was Re: Ruby for jMax) --JI+G0+mN8WmwPnOn Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Jun 14, 2002 at 01:19:47AM +0900, Ned Konz wrote: > After all, classes are not essential for object-oriented programming.=20 Well, I certainly agree with that. However, it seems to me that if you're using a language which does have classes, especially one where everything i= s an object, the most consistent way to abstract what a class is is have some ob= ject that represents a class. Consistency would then further cause you to have = some class that describes that object. There are other ways to do it in languag= es which have classes, but to me it's a matter of consistency. But perhaps I should stop here since I'm not really experienced enough to judge one way or the other about metaclasses in the long run, I just think they're neat. > Though they've been a comfortable concept in many languages, all you=20 > really need for OO is objects. Inheritance, classes as objects, etc.=20 > aren't required. I actually think quite a few people would disagree with this statement. The thing that has differentiated what has been called object oriented programm= ing from simple data abstraction/ADTs (which has been used in non-OO languages = for ages) is having some kind of relationship between the objects. If you simp= ly take the name 'object oriented programming' and analyse it, yes, it seems t= hat all you need are objects. But the things that have been called OO at least that I know of, have all gone beyond data abstraction to have relationships. This doesn't necessarily have to be expressed as classes and inheritance, b= ut the common thread does seem to be some approximation of the subtype relatio= n. Also, to me, the presence of these relationships is one of the things which makes the languages interesting. -kyle --=20 http://mas.cs.umass.edu/~rawlins -- Beware of free morphemes! --JI+G0+mN8WmwPnOn Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9CNskncsSsHSBypARArayAJ9pZoIXBWkj/CVdAn+Yck2qp1DmXACdFTE6 XWHAp6F9cIaZUuH02OaUjnQ= =kfD8 -----END PGP SIGNATURE----- --JI+G0+mN8WmwPnOn--