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
Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
language
Language is a structured system of communication. The structure of a language is its grammar and the free components are its vocabulary. Languages are the primary means by which humans communicate, and may be conveyed through a variety of ...
that is based exclusively on
message passing
In computer science, message passing is a technique for invoking behavior (i.e., running a program) on a computer. The invoking program sends a message to a process (which may be an actor or object) and relies on that process and its supporti ...
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
Inheritance is the practice of receiving private property, titles, debts, entitlements, privileges, rights, and obligations upon the death of an individual. The rules of inheritance differ among societies and have changed over time. Offici ...
,
cloning
Cloning is the process of producing individual organisms with identical or virtually identical DNA, either by natural or artificial means. In nature, some organisms produce clones through asexual reproduction. In the field of biotechnology, c ...
and reflective
operators
Operator may refer to:
Mathematics
* A symbol indicating a mathematical operation
* Logical operator or logical connective in mathematical logic
* Operator (mathematics), mapping that acts on elements of a space to produce elements of another sp ...
.
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
In object-oriented programming languages, a mixin (or mix-in) is a class that contains methods for use by other classes without having to be the parent class of those other classes. How those other classes gain access to the mixin's methods depen ...
'' methods.
Agora98, the latest implementation of Agora, is done in
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
and allows full access to all Java
API
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
s, including the ability to create
applets
In computing, an applet is any small application that performs one specific task that runs within the scope of a dedicated widget engine or a larger program, often as a plug-in. The term is frequently used to refer to a Java applet, a program w ...
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