Agora Programming Language
   HOME

TheInfoList



OR:

Agora is a
reflective Reflection is the change in direction of a wavefront at an interface between two different media so that the wavefront returns into the medium from which it originated. Common examples include the reflection of light, sound and water waves. The ' ...
, prototype-based, object-oriented programming language that is based exclusively on message passing and not
delegation Delegation is the assignment of authority to another person (normally from a manager to a subordinate) to carry out specific activities. It is the process of distributing and entrusting work to another person,Schermerhorn, J., Davidson, P., Poole ...
. Agora was intended to show that even subject to that limit, it is possible to build a full 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 prior Agora versions.


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
Prototype-based programming languages