On 2/13/07, Michael Torrie <[EMAIL PROTECTED]> wrote:
From what I've read, they are bytecodes to allow the changing of a class
on the fly.  Adding methods, removing methods.  The problem is that this
seems to sort of shoe-horn small-talk style OOP into the rigid,
Java-style OOP, which is really borrowed from how C++ implemented it.
Smalltalk doesn't really have a concept of a class and a class instance.
Rather everything is an object that listens for and can send messages.
The messages themselves are analogous to Java methods.  Python, for
example, merely implements a __getattr__ method on every object that can
be user-defined to bring this smalltalk-like behavior to python.  So I
wonder how well it will solve this problem.  .NET's CLR seems to have
bested the JVM in the dynamic realm.  IronPython runs amazingly well on
it currently.

I'm not sure what you mean when you say that Smalltalk doesn't have a
concept of a class and a class instance.  Smalltalk actually has a
very well-developed concept of classes, though classes are indeed
objects as well.  Every object has a class, which is an object of its
own metaclass.  Metaclasses are also objects, and have a class as
well, etc.  Thus, while everything is still an object, there are also
classes and instances.  Here's a page that describes it, with some
diagrams that really help make it comprehensible:
http://www.ifi.unizh.ch/richter/Classes/oose2/05_Metaclasses/02_smalltalk/02_metaclasses_smalltalk.html

It's Self, which is a derivative of Smalltalk, that eschews the
class/instance distinction and instead uses a prototype-based form of
inheritance.  This is similar to how Javascript does things.

While Java has the concept of classes, if I recall correctly it does
not treat them as fully-fledged objects, and I certainly don't recall
a concept of metaclass in Java.

               --Levi

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to