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

Actors and concurrent constraint logic programming

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

Assorted links

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