Agora is a reflective, prototype_based, object_oriented programming language that is based exclusively on message passing and not delegation. Agora was intended to show that even subject to that limitation, it is possible to build a full-fledged object-oriented language that features inheritance, cloning and reflective operators.
Overview
The idea is that an object is fully encapsulated and can only be subject to message passing. But seen from the inside of the object, the object knows all about its own structures. It is therefore perfectly capable of cloning and extending itself. This is accomplished by special methods called cloning methods and mixin methods.
Agora98, the latest implementation of Agora, is done in Java and allows full access to all Java APIs, including the ability to create applets from within Agora98. From the language point of view, Agora98 is a considerable simplification of previous versions of Agora.
References
Agora98: Reflective Programming in a Web Browser, Submitted to ECOOP98.
A Marriage of Class_ and Object_Based Inheritance Without Unwanted Children, Proceedings of ECOOP'95, Springer_Verlag 1995.
Agora: Message Passing as a Foundation for Exploring OO Language Concepts, SIGPLAN Notices, 29(12):48_57, December 1994.
Modular Inheritance of Objects Through Mixin_Methods, JMLC'94 Proceedings.
Nested Mixin_methods in Agora, Proceedings of ECOOP93, Springer_Verlag, 1993.
External links
Agora home page (http://prog.vub.ac.be/research/agora/)
Agora is a reflective, prototype-based, object-oriented programminglanguage that is based exclusively on message passing and not delegation.
Agora was intended to show that even subject to that limitation, it is possible to build a full-fledged object-oriented language that features inheritance, cloning and reflective operators.
Nested Mixin-methods in Agora, Proceedings of ECOOP93, Springer-Verlag, 1993.
The work of the project includes theoretical studies of programminglanguages and their properties, development of new compiler and run-time technology, and empirical studies of the application of advanced language techniques to real-world programming problems, especially in the areas of high-performance networks and operating systems.
Agora is a reflective prototype-based object-oriented programminglanguage that is entirely (and solely!) based on message passing.
The YAFL ProgrammingLanguage is a middle term research project which covers the design and the implementation of a new object-oriented language, as well as several attached programming tools.