Smalltalk-80: bits of history, words of advice
Smalltalk-80: bits of history, words of advice
Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Deltatalk: an empirically and aesthetically motivated simplification of the Smalltalk-80 language
European conference on object-oriented programming on ECOOP '87
The Smalltalk-76 programming system design and implementation
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Metamodelling Language Calculus: Foundation Semantics for UML
FASE '01 Proceedings of the 4th International Conference on Fundamental Approaches to Software Engineering
Reflexive Architecture: From ObjVLisp to CLOS
ECOOP '88 Proceedings of the European Conference on Object-Oriented Programming
REFLECTION '01 Proceedings of the Third International Conference on Metalevel Architectures and Separation of Crosscutting Concerns
Language support for adaptive object-models using metaclasses
Computer Languages, Systems and Structures
Hi-index | 0.00 |
One of the main goals of object-oriented languages is to unify their universe: "every entity of the language is an object. The class concept, however, usually does not follow this wish: a class being not a real object, i.e., created from a class. The metaclass concept introduced in Smalltalk- 80, attempts to give classes a first class citizenship but complicates the instantiation scheme without solving its fundamental limitations: the only partial specification of the class at the metaclass level, and the fixed number of meta-levels. Some more recent approaches, as in Loops and then CommonLoops, tend towards a better unification, but reveal the same limitations. We propose to go one step further and present an ultimate new model for an optimal simplification of the class/object concept, while keeping the class abstraction. In this model, implemented by ObjVlisp, every object is an instance of a class, and a class is a true object fully specified at the meta-level. A metaclass is a true class inheriting from another one. Because ObjVlisp is built on a reflective architecture, the user has uniform access and control to all the levels of the language: class level, metaclass level... He can add new levels and the metaclass links can be created indefinitely. Finally, we suggest to clarify the Smalltalk terminology with a new definition for class variables: the instance variables of a class - treated as an object - become the class variables of this class, explicitly expressed at the metaclass level.