Hello,
All things in Smalltalk are Objects include Classes, all Classes are instances of MetaClass. I consider this structure bring on an advantage that we get a clean idea, and we can make a simple VM which needn't distinguish:
- common objects and Classes;
- Classes and MetaClasses.
But, why metaclass structure like this: http://netjam.org/smalltalk/objectMetaphysics/
"why" may not be the right question to ask.
Many agree that the metaclass structure is overly complicated than necessary. The idea was to be able to define methods at individual classes, and the reasoning from it reaches the current status.
Smalltalk-76 didn't have metaclasses:
http://www.ifi.unizh.ch/richter/Classes/oose2/05_Metaclasses/02_smalltalk/02...
surely you can't define methods at an individual class, but if you define a factory type object that serves as a creator of other instances (and bind it to a global variable), it can have similar effects.
-- Yoshiki