Actor
The term for a paradigm of programming which models computations with concurrent (possibly transparently-distributed) entities, the Actors, that communicate with asynchronous messages; Actors may update their behaviour depending on the messages they receive.Nota bene: sometimes Actors are inappropriately called Agents (see for example the abstract of Actors as a special case of concurrent constraint (logic) programming below), a term often used when Actors are instantiated remotely, or are "mobile agents"; an Agent could be implemented using or not the Actor paradigm, but in any case the two terms are distinct.
Actors and capabilities
- E's History, in particular Actors: Foundations for Open System.
[..] is as foundational a model of computation as the Turing or Von Neumann models. It is a pure theory of object/capability computation and of asynchronous distributed Open System computation. At the Vat granularity, E is an Actor system.
Actors and concurrent constraint logic programming
- Ken Kahn, Vijay Saraswat. Actors as a special case of concurrent constraint (logic) programming. In OOPSLA/ECOOP 1990. (citation at ACM providing access to full text for a charge or if you are a member of SIGPLAN).
Abstract
Saraswat recently introduced the framework of concurrent constraint programming [14]. The essence of the framework is that computations consist of concurrent agents interacting by communicating constraints. Several concurrent constraint programming languages have been defined. They differ in the kinds of constraints that can be used as well as the kinds of operations on constraints which are available. In this paper we introduce a very simple concurrent constraint language we call Lucy, designed to closely mimic the Actor model of computation. Agents can communicate only by the posting of constraints upon bags (un-ordered collections possibly with duplicate elements). This very impoverished concurrent constraint language is a syntactic subset of Janus, a concurrent constraint language which closely resembles concurrent logic programming languages such as Guarded Horn Clauses [21], Strand [5], Parlog [2] and Flat Concurrent Prolog [13]. By identifying the subset of Janus which is an Actor language, we elucidate the relationship between Actors and concurrent logic programming (and its generalization as concurrent constraint programming). Lucy is best not thought of as a unification of logic and constraint programming with Actor and object-oriented programming, but as the missing link between these programming language genera.
Systems implementing Actors
Development systems integrating the Actor paradigm: FramerD, Erlang, E, Io, Salsa.
Other experimental systems integrating the Actor paradigm: JoCaml, ABCL, Tube.
You can write software in actor-oriented style in about any language that allows to do or simulate concurrent programming, but the result will be somewhat painful, especially so when the underlying implementation restricts the number of Actors (e.g. practical limitation of some ten thousands of threads in Java systems and "native" system threads system), so you either live by such drastic limitations, end up reimplementing all the infrastructure, or only make a half-baked use of the model.
History of the Actor paradigm
See the works by Carl Hewitt, Henry Baker, Henry Lieberman, Will Clinger, Gul Agha and others while at MIT, or by other fine people like Akinori Yonezawa. Actors have been rediscovered twenty years later by formal-methods people, yielding the very cleanly formalized join calculus. They have also been rediscovered by the industry, and a nice language that robustly implements the actor model is Erlang.
Actors are the real thing of which object-oriented programming is the caricature. Actors are what Alan Kay? had in mind but couldn't initially achieve when inventing the object-oriented paradigm. When people say that OOP is based on an "intuitive" modelling of the world as objects in interaction, the intuition they invoke is the Actor model, but their actual OO model is a less-expressive version where only one object is active at a time, with a linear flow of control: objects are crippled Actors deprived of independent activity. Retrofitting concurrency in an existing object-oriented system can help express the Actor paradigm, but it requires more than the superficial addition of threads to unleash the real thing. -- Fare
Other names
Other names for models equivalent to the Actor paradigm: "Concurrency-Oriented Programming" (term used within the Erlang community), "Join calculus" (formal model implemented in JoCaml), etc.
People involved
- Carl Hewitt's Home Page courtesy of WayBack Machine (old link MIA).
- Henry Lieberman's Home Page.
- William D. Clinger's CCS Home Page.
- Gul Agha's Open System Laboratory.
- Vijay A. Saraswat's Home Page.
Assorted links
- Actor Model at Wikipedia
- Actor-based Languages chart by Steve Dekorte.
- The corresponding page on the is C2 Wiki.
- The Actors Programming Paradigm, a coursework website.
Pages in this topic: ABCL CAL E Erlang FramerD Join Calculus NetCLOS Real-Time Maude Salsa
Also linked from: Abstraction Inversion Agent Concurrency-Oriented highly concurrent Io Linda Linear Logic Comments Microkernel Microkernel Debate SR Unified Virtual Machine