Agora programming language
Encyclopedia
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 limit, it is possible to build a full object-oriented language that features inheritance
, cloning
and reflective operators
.
methods.
Agora98, the latest implementation of Agora, is done in Java
and allows full access to all Java API
s, including the ability to create applets
from within Agora98. From the language point of view, Agora98 is a considerable simplification of prior Agora versions.
Reflection (computer science)
In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior at runtime....
, prototype-based
Prototype-based programming
Prototype-based programming is a style of object-oriented programming in which classes are not present, and behavior reuse is performed via a process of cloning existing objects that serve as prototypes. This model can also be known as classless, prototype-oriented or instance-based programming...
, object-oriented
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
programming
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
that is based exclusively on message passing
Message passing
Message passing in computer science is a form of communication used in parallel computing, object-oriented programming, and interprocess communication. In this model, processes or objects can send and receive messages to other processes...
and not delegation
Delegation (programming)
In object-oriented programming, there are two related notions of delegation.* Most commonly, it refers to a programming language feature making use of the method lookup rules for dispatching so-called self-calls as defined by Lieberman in his 1986 paper "Using Prototypical Objects to Implement...
. 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 (computer science)
In object-oriented programming , inheritance is a way to reuse code of existing objects, establish a subtype from an existing object, or both, depending upon programming language support...
, cloning
Clone (Java method)
clone is a method in the Java programming language for object duplication. In Java, objects are manipulated through reference variables, and there is no operator for copying an object—the assignment operator duplicates the reference, not the object...
and reflective operators
Operator (programming)
Programming languages typically support a set of operators: operations which differ from the language's functions in calling syntax and/or argument passing mode. Common examples that differ by syntax are mathematical arithmetic operations, e.g...
.
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 mixinMixin
In object-oriented programming languages, a mixin is a class that provides a certain functionality to be inherited or just reused by a subclass, while not meant for instantiation , Mixins are synonymous functionally with abstract base classes...
methods.
Agora98, the latest implementation of Agora, is done in Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
and allows full access to all Java API
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...
s, including the ability to create applets
Java applet
A Java applet is an applet delivered to users in the form of Java bytecode. Java applets can run in a Web browser using a Java Virtual Machine , or in Sun's AppletViewer, a stand-alone tool for testing applets...
from within Agora98. From the language point of view, Agora98 is a considerable simplification of prior Agora versions.