HOME

TheInfoList



OR:

The actor model in
computer science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
is a
mathematical model A mathematical model is a description of a system using mathematical concepts and language. The process of developing a mathematical model is termed mathematical modeling. Mathematical models are used in the natural sciences (such as physics, ...
of
concurrent computation Concurrent computing is a form of computing in which several computations are executed '' concurrently''—during overlapping time periods—instead of ''sequentially—''with one completing before the next starts. This is a property of a syst ...
that treats ''actor'' as the universal primitive of concurrent computation. In response to a
message A message is a discrete unit of communication intended by the source for consumption by some recipient or group of recipients. A message may be delivered by various means, including courier, telegraphy, carrier pigeon and electronic bus. A ...
it receives, an actor can: make local decisions, create more actors, send more messages, and determine how to respond to the next message received. Actors may modify their own private state, but can only affect each other indirectly through messaging (removing the need for lock-based synchronization). The actor model originated in 1973. It has been used both as a framework for a theoretical understanding of
computation Computation is any type of arithmetic or non-arithmetic calculation that follows a well-defined model (e.g., an algorithm). Mechanical or electronic devices (or, historically, people) that perform computations are known as ''computers''. An es ...
and as the theoretical basis for several practical implementations of
concurrent systems In computer science, concurrency is the ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order, without affecting the outcome. This allows for parallel execution of the concurr ...
. The relationship of the model to other work is discussed in actor model and process calculi.


History

According to
Carl Hewitt Carl Eddie Hewitt () is an American computer scientist who designed the Planner programming language for automated planningCarl Hewitt''PLANNER: A Language for Proving Theorems in Robots''IJCAI. 1969. and the actor model of concurrent computing, ...
, unlike previous models of computation, the actor model was inspired by
physics Physics is the natural science that studies matter, its fundamental constituents, its motion and behavior through space and time, and the related entities of energy and force. "Physical science is that department of knowledge which r ...
, including
general relativity General relativity, also known as the general theory of relativity and Einstein's theory of gravity, is the geometric theory of gravitation published by Albert Einstein in 1915 and is the current description of gravitation in modern physics ...
and
quantum mechanics Quantum mechanics is a fundamental theory in physics that provides a description of the physical properties of nature at the scale of atoms and subatomic particles. It is the foundation of all quantum physics including quantum chemistry, ...
. It was also influenced by the programming languages
Lisp A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech. Types * A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lisping ...
,
Simula Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard. Syntactically, it is an approximate superset of ALGOL 6 ...
, early versions of
Smalltalk Smalltalk is an object-oriented, dynamically typed reflective programming language. It was designed and created in part for educational use, specifically for constructionist learning, at the Learning Research Group (LRG) of Xerox PARC by Alan Ka ...
, capability-based systems, and
packet switching In telecommunications, packet switching is a method of grouping Data (computing), data into ''network packet, packets'' that are transmitted over a digital Telecommunications network, network. Packets are made of a header (computing), header and ...
. Its development was "motivated by the prospect of highly parallel computing machines consisting of dozens, hundreds, or even thousands of independent microprocessors, each with its own local memory and communications processor, communicating via a high-performance communications network." Since that time, the advent of massive concurrency through multi-core and
manycore Manycore processors are special kinds of multi-core processors designed for a high degree of parallel processing, containing numerous simpler, independent processor cores (from a few tens of cores to thousands or more). Manycore processors are use ...
computer architectures has revived interest in the actor model. Following Hewitt, Bishop, and Steiger's 1973 publication, Irene Greif developed an
operational semantics Operational semantics is a category of formal programming language semantics in which certain desired properties of a program, such as correctness, safety or security, are verified by constructing proofs from logical statements about its execu ...
for the actor model as part of her doctoral research. Two years later, Henry Baker and Hewitt published a set of axiomatic laws for actor systems. Other major milestones include William Clinger's 1981 dissertation introducing a
denotational semantics In computer science, denotational semantics (initially known as mathematical semantics or Scott–Strachey semantics) is an approach of formalizing the meanings of programming languages by constructing mathematical objects (called ''denotations'' ...
based on power domains and Gul Agha's 1985 dissertation which further developed a transition-based semantic model complementary to Clinger's. This resulted in the full development of actor model theory. Major software implementation work was done by Russ Atkinson, Giuseppe Attardi, Henry Baker, Gerry Barber, Peter Bishop, Peter de Jong, Ken Kahn, Henry Lieberman, Carl Manning, Tom Reinhardt, Richard Steiger and Dan Theriault in the Message Passing Semantics Group at
Massachusetts Institute of Technology The Massachusetts Institute of Technology (MIT) is a private land-grant research university in Cambridge, Massachusetts. Established in 1861, MIT has played a key role in the development of modern technology and science, and is one of the ...
(MIT). Research groups led by Chuck Seitz at
California Institute of Technology The California Institute of Technology (branded as Caltech or CIT)The university itself only spells its short form as "Caltech"; the institution considers other spellings such a"Cal Tech" and "CalTech" incorrect. The institute is also occasional ...
(Caltech) and
Bill Dally William James Dally (born August 17, 1960) is an American computer scientist and educator. Since 2021, he has been a member of the President’s Council of Advisors on Science and Technology (PCAST). Microelectronics He developed a number of t ...
at MIT constructed computer architectures that further developed the message passing in the model. See Actor model implementation. Research on the actor model has been carried out at
California Institute of Technology The California Institute of Technology (branded as Caltech or CIT)The university itself only spells its short form as "Caltech"; the institution considers other spellings such a"Cal Tech" and "CalTech" incorrect. The institute is also occasional ...
,
Kyoto University , mottoeng = Freedom of academic culture , established = , type = National university, Public (National) , endowment = ¥ 316 billion (2.4 1000000000 (number), billion USD) , faculty = 3,480 (Teaching Staff) , administrative_staff ...
Tokoro Laboratory,
Microelectronics and Computer Technology Corporation Microelectronics and Computer Technology Corporation, originally the Microelectronics and Computer Consortium and widely seen as the acronym MCC, was the first, and at one time one of the largest, computer industry research and development co ...
(MCC),
MIT Artificial Intelligence Laboratory Computer Science and Artificial Intelligence Laboratory (CSAIL) is a research institute at the Massachusetts Institute of Technology (MIT) formed by the 2003 merger of the Laboratory for Computer Science (LCS) and the Artificial Intelligence Lab ...
,
SRI Shri (; , ) is a Sanskrit term denoting resplendence, wealth and prosperity, primarily used as an honorific. The word is widely used in South and Southeast Asian languages such as Marathi, Malay (including Indonesian and Malaysian), Javanes ...
,
Stanford University Stanford University, officially Leland Stanford Junior University, is a private research university in Stanford, California. The campus occupies , among the largest in the United States, and enrolls over 17,000 students. Stanford is consider ...
,
University of Illinois at Urbana–Champaign The University of Illinois Urbana-Champaign (U of I, Illinois, University of Illinois, or UIUC) is a public land-grant research university in Illinois in the twin cities of Champaign and Urbana. It is the flagship institution of the Universit ...
,
Pierre and Marie Curie University Pierre and Marie Curie University (french: link=no, Université Pierre-et-Marie-Curie, UPMC), also known as Paris 6, was a public university, public research university in Paris, France, from 1971 to 2017. The university was located on the Jussi ...
(University of Paris 6),
University of Pisa The University of Pisa ( it, Università di Pisa, UniPi), officially founded in 1343, is one of the oldest universities in Europe. History The Origins The University of Pisa was officially founded in 1343, although various scholars place ...
,
University of Tokyo , abbreviated as or UTokyo, is a public research university located in Bunkyō, Tokyo, Japan. Established in 1877, the university was the first Imperial University and is currently a Top Type university of the Top Global University Project by ...
Yonezawa Laboratory,
Centrum Wiskunde & Informatica The (abbr. CWI; English: "National Research Institute for Mathematics and Computer Science") is a research centre in the field of mathematics and theoretical computer science. It is part of the institutes organization of the Dutch Research Co ...
(CWI) and elsewhere.


Fundamental concepts

The actor model adopts the philosophy that ''everything is an actor''. This is similar to the ''everything is an object'' philosophy used by some
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 pr ...
languages. An actor is a computational entity that, in response to a message it receives, can concurrently: * send a finite number of messages to other actors; * create a finite number of new actors; * designate the behavior to be used for the next message it receives. There is no assumed sequence to the above actions and they could be carried out in parallel. Decoupling the sender from communications sent was a fundamental advance of the actor model enabling
asynchronous communication In telecommunications, asynchronous communication is transmission of data, generally without the use of an external clock signal, where data can be transmitted intermittently rather than in a steady stream. Any timing required to recover data f ...
and control structures as patterns of passing messages. Recipients of messages are identified by address, sometimes called "mailing address". Thus an actor can only communicate with actors whose addresses it has. It can obtain those from a message it receives, or if the address is for an actor it has itself created. The actor model is characterized by inherent concurrency of computation within and among actors, dynamic creation of actors, inclusion of actor addresses in messages, and interaction only through direct asynchronous
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 supporting i ...
with no restriction on message arrival order.


Formal systems

Over the years, several different formal systems have been developed which permit reasoning about systems in the actor model. These include: *
Operational semantics Operational semantics is a category of formal programming language semantics in which certain desired properties of a program, such as correctness, safety or security, are verified by constructing proofs from logical statements about its execu ...
* Laws for actor systems *
Denotational semantics In computer science, denotational semantics (initially known as mathematical semantics or Scott–Strachey semantics) is an approach of formalizing the meanings of programming languages by constructing mathematical objects (called ''denotations'' ...
* Transition semantics There are also formalisms that are not fully faithful to the actor model in that they do not formalize the guaranteed delivery of messages including the following (See Attempts to relate actor semantics to algebra and linear logic): * Several different actor algebras *
Linear logic Linear logic is a substructural logic proposed by Jean-Yves Girard as a refinement of classical and intuitionistic logic, joining the dualities of the former with many of the constructive properties of the latter. Although the logic has also be ...


Applications

The actor model can be used as a framework for modeling, understanding, and reasoning about a wide range of
concurrent systems In computer science, concurrency is the ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order, without affecting the outcome. This allows for parallel execution of the concurr ...
. For example: * Electronic mail (
email Electronic mail (email or e-mail) is a method of exchanging messages ("mail") between people using electronic devices. Email was thus conceived as the electronic ( digital) version of, or counterpart to, mail, at a time when "mail" meant ...
) can be modeled as an actor system. Accounts are modeled as actors and
email address An email address identifies an email box to which messages are delivered. While early messaging systems used a variety of formats for addressing, today, email addresses follow a set of specific rules originally standardized by the Internet Engineer ...
es as actor addresses. * Web services can be modeled with Simple Object Access Protocol (
SOAP Soap is a salt of a fatty acid used in a variety of cleansing and lubricating products. In a domestic setting, soaps are surfactants usually used for washing, bathing, and other types of housekeeping. In industrial settings, soaps are use ...
) endpoints modeled as actor addresses. * Objects with
lock Lock(s) may refer to: Common meanings *Lock and key, a mechanical device used to secure items of importance *Lock (water navigation), a device for boats to transit between different levels of water, as in a canal Arts and entertainment * ''Lock ...
s (''e.g.'', as 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 List ...
and C#) can be modeled as a ''serializer'', provided that their implementations are such that messages can continually arrive (perhaps by being stored in an internal
queue __NOTOC__ Queue () may refer to: * Queue area, or queue, a line or area where people wait for goods or services Arts, entertainment, and media *''ACM Queue'', a computer magazine * ''The Queue'' (Sorokin novel), a 1983 novel by Russian author ...
). A serializer is an important kind of actor defined by the property that it is continually available to the arrival of new messages; every message sent to a serializer is guaranteed to arrive. * Testing and Test Control Notation (
TTCN TTCN is a programming language used for testing of communication protocols and web services. A TTCN test suite consists of many test cases written in the TTCN programming language. Until version 2 the language was written in tables and called ''Tre ...
), both TTCN-2 and
TTCN-3 TTCN-3 ''(Testing and Test Control Notation version 3)'' is a strongly typed testing language used in conformance testing of communicating systems. TTCN-3 is written by ETSI in the ES 201 873 series, and standardized by ITU-T in the Z.160 Series. T ...
, follows actor model rather closely. In TTCN actor is a test component: either parallel test component (PTC) or main test component (MTC). Test components can send and receive messages to and from remote partners (peer test components or test system interface), the latter being identified by its address. Each test component has a behaviour tree bound to it; test components run in parallel and can be dynamically created by parent test components. Built-in language constructs allow the definition of actions to be taken when an expected message is received from the internal message queue, like sending a message to another peer entity or creating new test components.


Message-passing semantics

The actor model is about the semantics of
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 supporting i ...
.


Unbounded nondeterminism controversy

Arguably, the first concurrent programs were
interrupt handler In computer systems programming, an interrupt handler, also known as an interrupt service routine or ISR, is a special block of code associated with a specific interrupt condition. Interrupt handlers are initiated by hardware interrupts, softwar ...
s. During the course of its normal operation a computer needed to be able to receive information from outside (characters from a keyboard, packets from a network, ''etc''). So when the information arrived the execution of the computer was ''interrupted'' and special code (called an interrupt handler) was called to put the information in a
data buffer In computer science, a data buffer (or just buffer) is a region of a memory used to temporarily store data while it is being moved from one place to another. Typically, the data is stored in a buffer as it is retrieved from an input device (such a ...
where it could be subsequently retrieved. In the early 1960s, interrupts began to be used to simulate the concurrent execution of several programs on one processor. Having concurrency with
shared memory In computer science, shared memory is memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies. Shared memory is an efficient means of passing data between progr ...
gave rise to the problem of
concurrency control In information technology and computer science, especially in the fields of computer programming, operating systems, multiprocessors, and databases, concurrency control ensures that correct results for Concurrent computing, concurrent operations a ...
. Originally, this problem was conceived as being one of
mutual exclusion In computer science, mutual exclusion is a property of concurrency control, which is instituted for the purpose of preventing race conditions. It is the requirement that one thread of execution never enters a critical section while a concurrent ...
on a single computer.
Edsger Dijkstra Edsger Wybe Dijkstra ( ; ; 11 May 1930 – 6 August 2002) was a Dutch computer scientist, programmer, software engineer, systems scientist, and science essayist. He received the 1972 Turing Award for fundamental contributions to developing progra ...
developed semaphores and later, between 1971 and 1973,
Tony Hoare Sir Charles Antony Richard Hoare (Tony Hoare or C. A. R. Hoare) (born 11 January 1934) is a British computer scientist who has made foundational contributions to programming languages, algorithms, operating systems, formal verification, and c ...
and
Per Brinch Hansen Per Brinch Hansen (13 November 1938 – 31 July 2007) was a Danish-American computer scientist known for his work in operating systems, concurrent programming and parallel and distributed computing. Biography Early life and education Per B ...
developed
monitors Monitor or monitor may refer to: Places * Monitor, Alberta * Monitor, Indiana, town in the United States * Monitor, Kentucky * Monitor, Oregon, unincorporated community in the United States * Monitor, Washington * Monitor, Logan County, West Vir ...
to solve the mutual exclusion problem. However, neither of these solutions provided a programming language construct that encapsulated access to shared resources. This encapsulation was later accomplished by the
serializer Serializer.net was a webcomic subscription service and artist collective published by Joey Manley and edited by Tom Hart and Eric Millikin that existed from 2002 to 2013. Designed to showcase artistic alternative webcomics using the unique nat ...
construct ( ewitt and Atkinson 1977, 1979and tkinson 1980. The first models of computation (''e.g.'',
Turing machines A Turing machine is a mathematical model of computation describing an abstract machine that manipulates symbols on a strip of tape according to a table of rules. Despite the model's simplicity, it is capable of implementing any computer algori ...
, Post productions, the
lambda calculus Lambda calculus (also written as ''λ''-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution. It is a universal model of computation ...
, ''etc.'') were based on mathematics and made use of a global state to represent a computational ''step'' (later generalized in cCarthy and Hayes 1969and ijkstra 1976see Event orderings versus global state). Each computational step was from one global state of the computation to the next global state. The global state approach was continued in
automata theory Automata theory is the study of abstract machines and automata, as well as the computational problems that can be solved using them. It is a theory in theoretical computer science. The word ''automata'' comes from the Greek word αὐτόματο ...
for
finite-state machine A finite-state machine (FSM) or finite-state automaton (FSA, plural: ''automata''), finite automaton, or simply a state machine, is a mathematical model of computation. It is an abstract machine that can be in exactly one of a finite number o ...
s and push down
stack machine In computer science, computer engineering and programming language implementations, a stack machine is a computer processor or a virtual machine in which the primary interaction is moving short-lived temporary values to and from a push down st ...
s, including their nondeterministic versions. Such nondeterministic automata have the property of bounded nondeterminism; that is, if a machine always halts when started in its initial state, then there is a bound on the number of states in which it halts.
Edsger Dijkstra Edsger Wybe Dijkstra ( ; ; 11 May 1930 – 6 August 2002) was a Dutch computer scientist, programmer, software engineer, systems scientist, and science essayist. He received the 1972 Turing Award for fundamental contributions to developing progra ...
further developed the nondeterministic global state approach. Dijkstra's model gave rise to a controversy concerning
unbounded nondeterminism In computer science, unbounded nondeterminism or unbounded indeterminacy is a property of concurrency by which the amount of delay in servicing a request can become unbounded as a result of arbitration of contention for shared resources ''while ...
(also called ''unbounded indeterminacy''), a property of concurrency by which the amount of delay in servicing a request can become unbounded as a result of arbitration of contention for shared resources ''while still guaranteeing that the request will eventually be serviced''. Hewitt argued that the actor model should provide the guarantee of service. In Dijkstra's model, although there could be an unbounded amount of time between the execution of sequential instructions on a computer, a (parallel) program that started out in a well defined state could terminate in only a bounded number of states ijkstra 1976 Consequently, his model could not provide the guarantee of service. Dijkstra argued that it was impossible to implement unbounded nondeterminism. Hewitt argued otherwise: there is no bound that can be placed on how long it takes a computational circuit called an '' arbiter'' to settle (see
metastability (electronics) In electronics, metastability is the ability of a digital electronic system to persist for an unbounded time in an unstable equilibrium or metastable state. In digital logic circuits, a digital signal is required to be within certain voltage or ...
). Arbiters are used in computers to deal with the circumstance that computer clocks operate asynchronously with respect to input from outside, ''e.g.'', keyboard input, disk access, network input, ''etc.'' So it could take an unbounded time for a message sent to a computer to be received and in the meantime the computer could traverse an unbounded number of states. The actor model features unbounded nondeterminism which was captured in a mathematical model by Will Clinger using
domain theory Domain theory is a branch of mathematics that studies special kinds of partially ordered sets (posets) commonly called domains. Consequently, domain theory can be considered as a branch of order theory. The field has major applications in computer ...
. In the actor model, there is no global state.


Direct communication and asynchrony

Messages in the actor model are not necessarily buffered. This was a sharp break with previous approaches to models of concurrent computation. The lack of buffering caused a great deal of misunderstanding at the time of the development of the actor model and is still a controversial issue. Some researchers argued that the messages are buffered in the "ether" or the "environment". Also, messages in the actor model are simply sent (like packets in IP); there is no requirement for a synchronous handshake with the recipient.


Actor creation plus addresses in messages means variable topology

A natural development of the actor model was to allow addresses in messages. Influenced by packet switched networks 961 and 1964 Hewitt proposed the development of a new model of concurrent computation in which communications would not have any required fields at all: they could be empty. Of course, if the sender of a communication desired a recipient to have access to addresses which the recipient did not already have, the address would have to be sent in the communication. For example, an actor might need to send a message to a recipient actor from which it later expects to receive a response, but the response will actually be handled by a third actor component that has been configured to receive and handle the response (for example, a different actor implementing the
observer pattern In software design and engineering, the observer pattern is a software design pattern in which an object, named the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by ca ...
). The original actor could accomplish this by sending a communication that includes the message it wishes to send, along with the address of the third actor that will handle the response. This third actor that will handle the response is called the ''resumption'' (sometimes also called a
continuation In computer science, a continuation is an abstract representation of the control state of a computer program. A continuation implements ( reifies) the program control state, i.e. the continuation is a data structure that represents the computati ...
or
stack frame In computer science, a call stack is a stack data structure that stores information about the active subroutines of a computer program. This kind of stack is also known as an execution stack, program stack, control stack, run-time stack, or mac ...
). When the recipient actor is ready to send a response, it sends the response message to the ''resumption'' actor address that was included in the original communication. So, the ability of actors to create new actors with which they can exchange communications, along with the ability to include the addresses of other actors in messages, gives actors the ability to create and participate in arbitrarily variable topological relationships with one another, much as the objects in Simula and other object-oriented languages may also be relationally composed into variable topologies of message-exchanging objects.


Inherently concurrent

As opposed to the previous approach based on composing sequential processes, the actor model was developed as an inherently concurrent model. In the actor model sequentiality was a special case that derived from concurrent computation as explained in actor model theory.


No requirement on order of message arrival

Hewitt argued against adding the requirement that messages must arrive in the order in which they are sent to the actor. If output message ordering is desired, then it can be modeled by a queue actor that provides this functionality. Such a queue actor would queue the messages that arrived so that they could be retrieved in FIFO order. So if an actor X sent a message M1 to an actor Y, and later X sent another message M2 to Y, there is no requirement that M1 arrives at Y before M2. In this respect the actor model mirrors
packet switching In telecommunications, packet switching is a method of grouping Data (computing), data into ''network packet, packets'' that are transmitted over a digital Telecommunications network, network. Packets are made of a header (computing), header and ...
systems which do not guarantee that packets must be received in the order sent. Not providing the order of delivery guarantee allows packet switching to buffer packets, use multiple paths to send packets, resend damaged packets, and to provide other optimizations. For example, actors are allowed to pipeline the processing of messages. What this means is that in the course of processing a message M1, an actor can designate the behavior to be used to process the next message, and then in fact begin processing another message M2 before it has finished processing M1. Just because an actor is allowed to pipeline the processing of messages does not mean that it ''must'' pipeline the processing. Whether a message is pipelined is an engineering tradeoff. How would an external observer know whether the processing of a message by an actor has been pipelined? There is no ambiguity in the definition of an actor created by the possibility of pipelining. Of course, it is possible to perform the pipeline optimization incorrectly in some implementations, in which case unexpected behavior may occur.


Locality

Another important characteristic of the actor model is locality. Locality means that in processing a message, an actor can send messages only to addresses that it receives in the message, addresses that it already had before it received the message, and addresses for actors that it creates while processing the message. (But see Synthesizing addresses of actors.) Also locality means that there is no simultaneous change in multiple locations. In this way it differs from some other models of concurrency, ''e.g.'', the
Petri net A Petri net, also known as a place/transition (PT) net, is one of several mathematical modeling languages for the description of distributed systems. It is a class of discrete event dynamic system. A Petri net is a directed bipartite graph that ...
model in which tokens are simultaneously removed from multiple locations and placed in other locations.


Composing actor systems

The idea of composing actor systems into larger ones is an important aspect of
modularity Broadly speaking, modularity is the degree to which a system's components may be separated and recombined, often with the benefit of flexibility and variety in use. The concept of modularity is used primarily to reduce complexity by breaking a sy ...
that was developed in Gul Agha's doctoral dissertation, developed later by Gul Agha, Ian Mason, Scott Smith, and
Carolyn Talcott Carolyn Talcott (born June 14, 1941) is an American computer scientist known for work in formal reasoning, especially as it relates to computers, cryptanalysis and systems biology. She is currently the program director of the Symbolic Systems Biol ...
.


Behaviors

A key innovation was the introduction of ''behavior'' specified as a mathematical function to express what an actor does when it processes a message, including specifying a new behavior to process the next message that arrives. Behaviors provided a mechanism to mathematically model the sharing in concurrency. Behaviors also freed the actor model from implementation details, ''e.g.'', the Smalltalk-72 token stream interpreter. However, it is critical to understand that the efficient implementation of systems described by the actor model require ''extensive'' optimization. See Actor model implementation for details.


Modeling other concurrency systems

Other concurrency systems (''e.g.'',
process calculi In computer science, the process calculi (or process algebras) are a diverse family of related approaches for formally modelling concurrent systems. Process calculi provide a tool for the high-level description of interactions, communications, and ...
) can be modeled in the actor model using a
two-phase commit protocol In transaction processing, databases, and computer networking, the two-phase commit protocol (2PC) is a type of atomic commitment protocol (ACP). It is a distributed algorithm that coordinates all the processes that participate in a distributed a ...
.


Computational Representation Theorem

There is a ''Computational Representation Theorem'' in the actor model for systems which are closed in the sense that they do not receive communications from outside. The mathematical denotation denoted by a closed system \mathtt is constructed from an initial behavior \bot_\mathtt and a behavior-approximating function \mathbf_\mathtt. These obtain increasingly better approximations and construct a denotation (meaning) for \mathtt as follows ewitt 2008; Clinger 1981 :\mathbf_ \equiv \lim_ \mathbf_(\bot_\mathtt) In this way, \mathtt can be mathematically characterized in terms of all its possible behaviors (including those involving unbounded nondeterminism). Although \mathbf_ is not an implementation of \mathtt, it can be used to prove a generalization of the Church-Turing-Rosser-Kleene thesis leene 1943 A consequence of the above theorem is that a finite actor can nondeterministically respond with an number of different outputs.


Relationship to logic programming

One of the key motivations for the development of the actor model was to understand and deal with the control structure issues that arose in development of the
Planner programming language Planner (often seen in publications as "PLANNER" although it is not an acronym) is a programming language designed by Carl Hewitt at MIT, and first published in 1969. First, subsets such as Micro-Planner and Pico-Planner were implemented, and t ...
. Once the actor model was initially defined, an important challenge was to understand the power of the model relative to
Robert Kowalski Robert Anthony Kowalski (born 15 May 1941) is an American-British logician and computer scientist, whose research is concerned with developing both human-oriented models of computing and computational models of human thinking. He has spent mo ...
's thesis that "computation can be subsumed by deduction". Hewitt argued that Kowalski's thesis turned out to be false for the concurrent computation in the actor model (see
Indeterminacy in concurrent computation Indeterminacy in concurrent computation is concerned with the effects of indeterminacy in concurrent computation. Computation is an area in which indeterminacy is becoming increasingly important because of the massive increase in concurrency due ...
). Nevertheless, attempts were made to extend
logic programming Logic programming is a programming paradigm which is largely based on formal logic. Any program written in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic prog ...
to concurrent computation. However, Hewitt and Agha 991claimed that the resulting systems were not deductive in the following sense: computational steps of the concurrent logic programming systems do not follow deductively from previous steps (see
Indeterminacy in concurrent computation Indeterminacy in concurrent computation is concerned with the effects of indeterminacy in concurrent computation. Computation is an area in which indeterminacy is becoming increasingly important because of the massive increase in concurrency due ...
). Recently, logic programming has been integrated into the actor model in a way that maintains logical semantics.


Migration

Migration in the actor model is the ability of actors to change locations. ''E.g.'', in his dissertation, Aki Yonezawa modeled a post office that customer actors could enter, change locations within while operating, and exit. An actor that can migrate can be modeled by having a location actor that changes when the actor migrates. However the faithfulness of this modeling is controversial and the subject of research.


Security

The security of actors can be protected in the following ways: * hardwiring in which actors are physically connected *
computer hardware Computer hardware includes the physical parts of a computer, such as the computer case, case, central processing unit (CPU), Random-access memory, random access memory (RAM), Computer monitor, monitor, Computer mouse, mouse, Computer keyboard, ...
as in
Burroughs B5000 The Burroughs Large Systems Group produced a family of large 48-bit mainframes using stack machine instruction sets with dense syllables.E.g., 12-bit syllables for B5000, 8-bit syllables for B6500 The first machine in the family was the B5000 in ...
,
Lisp machine Lisp machines are general-purpose computers designed to efficiently run Lisp as their main software and programming language, usually via hardware support. They are an example of a high-level language computer architecture, and in a sense, the ...
, ''etc.'' *
virtual machines In computing, a virtual machine (VM) is the virtualization/ emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized hard ...
as in
Java virtual machine A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes ...
,
Common Language Runtime The Common Language Runtime (CLR), the virtual machine component of Microsoft .NET Framework, manages the execution of .NET programs. Just-in-time compilation converts the managed code (compiled intermediate language code) into machine instructio ...
, ''etc.'' *
operating systems An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also inc ...
as in capability-based systems * signing and/or
encryption In cryptography, encryption is the process of encoding information. This process converts the original representation of the information, known as plaintext, into an alternative form known as ciphertext. Ideally, only authorized parties can decip ...
of actors and their addresses


Synthesizing addresses of actors

A delicate point in the actor model is the ability to synthesize the address of an actor. In some cases security can be used to prevent the synthesis of addresses (see
Security Security is protection from, or resilience against, potential harm (or other unwanted coercive change) caused by others, by restraining the freedom of others to act. Beneficiaries (technically referents) of security may be of persons and social ...
). However, if an actor address is simply a bit string then clearly it can be synthesized although it may be difficult or even infeasible to guess the address of an actor if the bit strings are long enough.
SOAP Soap is a salt of a fatty acid used in a variety of cleansing and lubricating products. In a domestic setting, soaps are surfactants usually used for washing, bathing, and other types of housekeeping. In industrial settings, soaps are use ...
uses a URL for the address of an endpoint where an actor can be reached. Since a URL is a character string, it can clearly be synthesized although encryption can make it virtually impossible to guess. Synthesizing the addresses of actors is usually modeled using mapping. The idea is to use an actor system to perform the mapping to the actual actor addresses. For example, on a computer the memory structure of the computer can be modeled as an actor system that does the mapping. In the case of
SOAP Soap is a salt of a fatty acid used in a variety of cleansing and lubricating products. In a domestic setting, soaps are surfactants usually used for washing, bathing, and other types of housekeeping. In industrial settings, soaps are use ...
addresses, it's modeling the
DNS The Domain Name System (DNS) is a hierarchical and distributed naming system for computers, services, and other resources in the Internet or other Internet Protocol (IP) networks. It associates various information with domain names assigned to ...
and the rest of the URL mapping.


Contrast with other models of message-passing concurrency

Robin Milner Arthur John Robin Gorell Milner (13 January 1934 – 20 March 2010), known as Robin Milner or A. J. R. G. Milner, was a British computer scientist, and a Turing Award winner.
's initial published work on concurrency was also notable in that it was not based on composing sequential processes. His work differed from the actor model because it was based on a fixed number of processes of fixed topology communicating numbers and strings using synchronous communication. The original
communicating sequential processes In computer science, communicating sequential processes (CSP) is a formal language for describing patterns of interaction in concurrent systems. It is a member of the family of mathematical theories of concurrency known as process algebras, or pro ...
(CSP) model published by
Tony Hoare Sir Charles Antony Richard Hoare (Tony Hoare or C. A. R. Hoare) (born 11 January 1934) is a British computer scientist who has made foundational contributions to programming languages, algorithms, operating systems, formal verification, and c ...
differed from the actor model because it was based on the parallel composition of a fixed number of sequential processes connected in a fixed topology, and communicating using synchronous message-passing based on process names (see
Actor model and process calculi history The actor model and process calculus, process calculi share an interesting history and co-evolution. Early work The Actor model, first published in 1973, is a mathematical model of concurrent computation. The Actor model treats "Actors" as the univ ...
). Later versions of CSP abandoned communication based on process names in favor of anonymous communication via channels, an approach also used in Milner's work on the calculus of communicating systems and the
π-calculus In theoretical computer science, the -calculus (or pi-calculus) is a process calculus. The -calculus allows channel names to be communicated along the channels themselves, and in this way it is able to describe concurrent computations whose networ ...
. These early models by Milner and Hoare both had the property of bounded nondeterminism. Modern, theoretical CSP ( oare 1985and oscoe 2005 explicitly provides unbounded nondeterminism.
Petri nets A Petri net, also known as a place/transition (PT) net, is one of several mathematical modeling languages for the description of distributed systems. It is a class of discrete event dynamic system. A Petri net is a directed bipartite graph that ...
and their extensions (e.g., coloured Petri nets) are like actors in that they are based on asynchronous message passing and unbounded nondeterminism, while they are like early CSP in that they define fixed topologies of elementary processing steps (transitions) and message repositories (places).


Influence

The actor model has been influential on both theory development and practical software development.


Theory

The actor model has influenced the development of the
π-calculus In theoretical computer science, the -calculus (or pi-calculus) is a process calculus. The -calculus allows channel names to be communicated along the channels themselves, and in this way it is able to describe concurrent computations whose networ ...
and subsequent
process calculi In computer science, the process calculi (or process algebras) are a diverse family of related approaches for formally modelling concurrent systems. Process calculi provide a tool for the high-level description of interactions, communications, and ...
. In his Turing lecture, Robin Milner wrote:
Now, the pure lambda-calculus is built with just two kinds of thing: terms and variables. Can we achieve the same economy for a process calculus? Carl Hewitt, with his actors model, responded to this challenge long ago; he declared that a value, an operator on values, and a process should all be the same kind of thing: an actor. This goal impressed me, because it implies the homogeneity and completeness of expression ... But it was long before I could see how to attain the goal in terms of an algebraic calculus... So, in the spirit of Hewitt, our first step is to demand that all things denoted by terms or accessed by names—values, registers, operators, processes, objects—are all of the same kind of thing; they should all be processes.


Practice

The actor model has had extensive influence on commercial practice. For example, Twitter has used actors for scalability. Also, Microsoft has used the actor model in the development of its Asynchronous Agents Library. There are many other actor libraries listed in the actor libraries and frameworks section below.


Addressed issues

According to Hewitt 006 the actor model addresses issues in computer and communications architecture,
concurrent programming language Concurrent computing is a form of computing in which several computations are executed '' concurrently''—during overlapping time periods—instead of ''sequentially—''with one completing before the next starts. This is a property of a sys ...
s, and Web services including the following: *
Scalability Scalability is the property of a system to handle a growing amount of work by adding resources to the system. In an economic context, a scalable business model implies that a company can increase sales given increased resources. For example, a ...
: the challenge of scaling up concurrency both locally and nonlocally. * Transparency: bridging the chasm between local and nonlocal concurrency. Transparency is currently a controversial issue. Some researchers have advocated a strict separation between local concurrency using concurrent programming languages (e.g.,
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 List ...
and C#) from nonlocal concurrency using
SOAP Soap is a salt of a fatty acid used in a variety of cleansing and lubricating products. In a domestic setting, soaps are surfactants usually used for washing, bathing, and other types of housekeeping. In industrial settings, soaps are use ...
for Web services. Strict separation produces a lack of transparency that causes problems when it is desirable/necessary to change between local and nonlocal access to Web services (see
Distributed computing A distributed system is a system whose components are located on different computer network, networked computers, which communicate and coordinate their actions by message passing, passing messages to one another from any system. Distributed com ...
). * Inconsistency: inconsistency is the norm because all very large knowledge systems about human information system interactions are inconsistent. This inconsistency extends to the documentation and specifications of very large systems (e.g., Microsoft Windows software, etc.), which are internally inconsistent. Many of the ideas introduced in the actor model are now also finding application in
multi-agent systems A multi-agent system (MAS or "self-organized system") is a computerized system composed of multiple interacting intelligent agents.Hu, J.; Bhowmick, P.; Jang, I.; Arvin, F.; Lanzon, A.,A Decentralized Cluster Formation Containment Framework fo ...
for these same reasons ewitt 2006b 2007b The key difference is that agent systems (in most definitions) impose extra constraints upon the actors, typically requiring that they make use of commitments and goals.


Programming with actors

A number of different programming languages employ the actor model or some variation of it. These languages include:


Early actor programming languages

* Act 1, 2 and 3 *Acttalk *Ani *Cantor *Rosette


Later actor programming languages

* ABCL *
AmbientTalk AmbientTalk is an experimental object-oriented distributed programming language developed at the Programming Technology Laboratory at the Vrije Universiteit Brussel, Belgium. The language is primarily targeted at writing programs deployed in mo ...
* Axum *
CAL Actor Language CAL (the Cal Actor Language) is a high-level programming languageCAL Language Report: Specification of the CAL actor language, Johan Eker and Jörn W. Janneck, Technical Memorandum No. UCB/ERL M03/48, University of California, Berkeley, CA, 9472 ...
* D *
Dart Dart or DART may refer to: * Dart, the equipment in the game of darts Arts, entertainment and media * Dart (comics), an Image Comics superhero * Dart, a character from ''G.I. Joe'' * Dart, a ''Thomas & Friends'' railway engine character * Dar ...
* E *
Elixir ELIXIR (the European life-sciences Infrastructure for biological Information) is an initiative that will allow life science laboratories across Europe to share and store their research data as part of an organised network. Its goal is to bring t ...
* Erlang *
Fantom FANTOM (Functional Annotation of the Mouse/Mammalian Genome) is an international research consortium first established in 2000 as part of the RIKEN research institute in Japan. The original meeting gathered international scientists from diverse bac ...
* Humus * Io * LFE * Encore *
Pony A pony is a type of small horse ('' Equus ferus caballus''). Depending on the context, a pony may be a horse that is under an approximate or exact height at the withers, or a small horse with a specific conformation and temperament. Compared ...
*
Ptolemy Project The Ptolemy Project is an ongoing project aimed at modeling, simulating, and designing concurrent, real-time, embedded systems. The focus of the Ptolemy Project is on assembling concurrent components. The principal product of the project is the Pto ...
* P * P# *
Rebeca Modeling Language Rebeca (acronym for Reactive Objects Language) is an Actor model, actor-based modeling language with a formal foundation, designed in an effort to bridge the gap between formal verification approaches and real applications. It can be considered as ...
* Reia *
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sa ...
* SALSA * Scala *
Swift (programming language) Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. and the open-source community. First released in 2014, Swift was developed as a replacement for Apple's earlier programming language Objective- ...
* TNSDL


Actor libraries and frameworks

Actor libraries or frameworks have also been implemented to permit actor-style programming in languages that don't have actors built-in. Some of these frameworks are:


See also

*
Autonomous agent An autonomous agent is an intelligent agent operating on a user's behalf but without any interference of that user. An intelligent agent, however appears according to an IBM white paper as: Intelligent agents are software entities that carry out ...
*
Data flow In computing, dataflow is a broad concept, which has various meanings depending on the application and context. In the context of software architecture, data flow relates to stream processing or reactive programming. Software architecture Dataf ...
*
Gordon Pask Andrew Gordon Speedie Pask (28 June 1928 – 29 March 1996) was an English author, inventor, educational theorist, cybernetician and psychologist who made contributions to cybernetics, instructional psychology, experimental epistemology and ed ...
*
Input/output automaton Input/output automata provide a formal model, applicable in describing most types of an asynchronous concurrent system. On its own, the I/O automaton model contains a very basic structure that enables it to model various types of distributed system ...
*
Scientific community metaphor In computer science, the scientific community metaphor is a metaphor used to aid understanding scientific communities. The first publications on the scientific community metaphor in 1981 and 1982 involved the development of a programming langu ...


References


Further reading

*Gul Agha. '
Actors: A Model of Concurrent Computation in Distributed Systems
. MIT Press 1985. *Paul Baran. On Distributed Communications Networks IEEE Transactions on Communications Systems. March 1964. *William A. Woods. '
Transition network grammars for natural language analysis
'' CACM. 1970. *Carl Hewitt. '
Procedural Embedding of Knowledge In Planner
'' IJCAI 1971. *G.M. Birtwistle,
Ole-Johan Dahl Ole-Johan Dahl (12 October 1931 – 29 June 2002) was a Norwegian computer scientist. Dahl was a professor of computer science at the University of Oslo and is considered to be one of the fathers of Simula and object-oriented programming along w ...
, B. Myhrhaug and
Kristen Nygaard Kristen Nygaard (27 August 1926 – 10 August 2002) was a Norwegian computer scientist, programming language pioneer, and politician. Internationally, Nygaard is acknowledged as the co-inventor of object-oriented programming and the programming ...
. SIMULA Begin Auerbach Publishers Inc, 1973. *Carl Hewitt, ''et al.'' '
Actor Induction and Meta-evaluation
'' Conference Record of ACM Symposium on Principles of Programming Languages, January 1974. *Carl Hewitt, ''et https://link.springer.com/chapter/10.1007/3-540-06859-7_147al. '
Behavioral Semantics of Nonrecursive Control Structure
'' Proceedings of Colloque sur la Programmation, April 1974. *Irene Greif and Carl Hewitt. '
Actor Semantics of PLANNER-73
'' Conference Record of ACM Symposium on Principles of Programming Languages. January 1975. *Carl Hewitt. '
How to Use What You Know
'' IJCAI. September, 1975. *Alan Kay and Adele Goldberg.
Smalltalk-72 Instruction Manual
Xerox PARC Memo SSL-76-6. May 1976. *
Edsger Dijkstra Edsger Wybe Dijkstra ( ; ; 11 May 1930 – 6 August 2002) was a Dutch computer scientist, programmer, software engineer, systems scientist, and science essayist. He received the 1972 Turing Award for fundamental contributions to developing progra ...
. A discipline of programming Prentice Hall. 1976. *Carl Hewitt and Henry Baker '
Actors and Continuous Functionals
'' Proceeding of IFIP Working Conference on Formal Description of Programming Concepts. August 1–5, 1977. *Carl Hewitt and Russ Atkinson. '
Synchronization in Actor Systems
'' Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages. 1977 *Carl Hewitt and Russ Atkinson. '
Specification and Proof Techniques for Serializers
'' IEEE Journal on Software Engineering. January 1979. *Ken Kahn. '
A Computational Theory of Animation
'' MIT EECS Doctoral Dissertation. August 1979. *Carl Hewitt, Beppe Attardi, and Henry Lieberman. Delegation in Message Passing Proceedings of First International Conference on Distributed Systems Huntsville, AL. October 1979. *
Nissim Francez Nissim Francez (Hebrew: נסים פרנסיז; born: 19 January 1944) is an Israeli professor, emeritus in the computer science faculty at the Technion, and former head of computational linguistics laboratory in the faculty. Early life an ...
, C.A.R. Hoare, Daniel Lehmann, and Willem-Paul de Roever. Semantics of nondeterminism, concurrency, and communication Journal of Computer and System Sciences. December 1979. *
George Milne Field Marshal George Francis Milne, 1st Baron Milne, (5 November 1866 – 23 March 1948) was a senior British Army officer who served as Chief of the Imperial General Staff (CIGS) from 1926 to 1933. He served in the Second Boer War and during ...
and
Robin Milner Arthur John Robin Gorell Milner (13 January 1934 – 20 March 2010), known as Robin Milner or A. J. R. G. Milner, was a British computer scientist, and a Turing Award winner.
. Concurrent processes and their syntax JACM. April 1979. *Daniel Theriault. A Primer for the Act-1 Language MIT AI memo 672. April 1982. *Daniel Theriault. '
Issues in the Design and Implementation of Act 2
MIT AI technical report 728. June 1983. *Henry Lieberman. An Object-Oriented Simulator for the Apiary Conference of the American Association for Artificial Intelligence, Washington, D. C., August 1983 *Carl Hewitt and Peter de Jong. '
Analyzing the Roles of Descriptions and Actions in Open Systems
'' Proceedings of the National Conference on Artificial Intelligence. August 1983. *Carl Hewitt and Henry Lieberman. Design Issues in Parallel Architecture for Artificial Intelligence MIT AI memo 750. Nov. 1983. * C.A.R. Hoare. '
Communicating Sequential Processes
'' Prentice Hall. 1985. *Carl Hewitt. The Challenge of Open Systems Byte. April 1985. Reprinted in ''The foundation of artificial intelligence: a sourcebook'' Cambridge University Press. 1990. *Carl Manning. Traveler: the actor observatory ECOOP 1987. Also appears in
Lecture Notes in Computer Science ''Lecture Notes in Computer Science'' is a series of computer science books published by Springer Science+Business Media since 1973. Overview The series contains proceedings, post-proceedings, monographs, and Festschrifts. In addition, tutorials, ...
, vol. 276. *William Athas and Charles Seitz '
Multicomputers: message-passing concurrent computers
'' IEEE Computer August 1988. *William Athas and Nanette Boden Cantor: An Actor Programming System for Scientific Computing in Proceedings of the NSF Workshop on Object-Based Concurrent Programming. 1988. Special Issue of SIGPLAN Notices. *Jean-Pierre Briot. '
From objects to actors: Study of a limited symbiosis in Smalltalk-80
'' Rapport de Recherche 88–58, RXF-LITP, Paris, France, September 1988 *William Dally and Wills, D. '
Universal mechanisms for concurrency
'' PARLE 1989. *W. Horwat, A. Chien, and W. Dally. '
Experience with CST: Programming and Implementation
'' PLDI. 1989. *Carl Hewitt. Towards Open Information Systems Semantics Proceedings of 10th International Workshop on Distributed Artificial Intelligence. October 23–27, 1990. Bandera, Texas. *Akinori Yonezawa, Ed. ABCL: An Object-Oriented Concurrent System MIT Press. 1990. * K. Kahn and Vijay A. Saraswat,
Actors as a special case of concurrent constraint (logic) programming
, in SIGPLAN ''Notices'', October 1990. Describes
Janus In ancient Roman religion and myth, Janus ( ; la, Ianvs ) is the god of beginnings, gates, transitions, time, duality, doorways, passages, frames, and endings. He is usually depicted as having two faces. The month of January is named for Janu ...
. *Carl Hewitt. Open Information Systems Semantics Journal of Artificial Intelligence. January 1991. *Carl Hewitt and Jeff Inman. '
DAI Betwixt and Between: From "Intelligent Agents" to Open Systems Science
'' IEEE Transactions on Systems, Man, and Cybernetics. Nov./Dec. 1991. *Carl Hewitt and Gul Agha. Guarded Horn clause languages: are they deductive and Logical? International Conference on Fifth Generation Computer Systems, Ohmsha 1988. Tokyo. Also in ''Artificial Intelligence at MIT'', Vol. 2. MIT Press 1991. *William Dally, ''et al.'' '
The Message-Driven Processor: A Multicomputer Processing Node with Efficient Mechanisms
''
IEEE Micro ''IEEE Micro'' is a peer-reviewed scientific journal published by the IEEE Computer Society covering small systems and semiconductor chips, including integrated circuit processes and practices, project management, development tools and infrastruc ...
. April 1992. *S. Miriyala, G. Agha, and Y.Sami. '
Visualizing actor programs using predicate transition nets
'' Journal of Visual Programming. 1992. *Carl Hewitt and Carl Manning. '
Negotiation Architecture for Large-Scale Crisis Management
'' AAAI-94 Workshop on Models of Conflict Management in Cooperative Problem Solving. Seattle, WA. Aug. 4, 1994. *Carl Hewitt and Carl Manning. Synthetic Infrastructures for Multi-Agency Systems Proceedings of ICMAS '96. Kyoto, Japan. December 8–13, 1996. *S. Frolund. Coordinating Distributed Objects: An Actor-Based Approach for Synchronization MIT Press. November 1996. *W. Kim. '
ThAL: An Actor System for Efficient and Scalable Concurrent Computing
'' PhD thesis. University of Illinois at Urbana Champaign. 1997. *Jean-Pierre Briot
Acttalk: A framework for object-oriented concurrent programming-design and experience
2nd France-Japan workshop. 1999. *N. Jamali, P. Thati, and G. Agha. '
An actor based architecture for customizing and controlling agent ensembles
'' IEEE Intelligent Systems. 14(2). 1999. *Don Box, David Ehnebuske, Gopal Kakivaya, Andrew Layman, Noah Mendelsohn, Henrik Nielsen, Satish Thatte, Dave Winer. Simple Object Access Protocol (SOAP) 1.1
W3C The World Wide Web Consortium (W3C) is the main international standards organization for the World Wide Web. Founded in 1994 and led by Tim Berners-Lee, the consortium is made up of member organizations that maintain full-time staff working to ...
Note. May 2000. *M. Astley, D. Sturman, and G. Agha. '
Customizable middleware for modular distributed software
'' CACM. 44(5) 2001. *Edward Lee, S. Neuendorffer, and M. Wirthlin
Actor-oriented design of embedded hardware and software systems
'' Journal of Circuits, Systems, and Computers''. 2002. *P. Thati, R. Ziaei, and G. Agha. A Theory of May Testing for Actors Formal Methods for Open Object-based Distributed Systems. March 2002. *P. Thati, R. Ziaei, and G. Agha. A theory of may testing for asynchronous calculi with locality and no name matching Algebraic Methodology and Software Technology. Springer Verlag. September 2002. LNCS 2422. *Stephen Neuendorffer.
Actor-Oriented Metaprogramming
PhD Thesis. University of California, Berkeley. December, 2004 *Carl Hewitt (2006a) '
The repeated demise of logic programming and why it will be reincarnated
'' What Went Wrong and Why: Lessons from AI Research and Applications. Technical Report SS-06-08. AAAI Press. March 2006. *Carl Hewitt (2006b
''What is Commitment? Physical, Organizational, and Social''
COIN@AAMAS. April 27, 2006b. *Carl Hewitt (2007a) What is Commitment? Physical, Organizational, and Social (Revised) Pablo Noriega .et al. editors. LNAI 4386. Springer-Verlag. 2007. *Carl Hewitt (2007b) '
Large-scale Organizational Computing requires Unstratified Paraconsistency and Reflection
'' COIN@AAMAS'07. *D. Charousset, T. C. Schmidt, R. Hiesgen and M. Wählisch
''Native actors: a scalable software platform for distributed, heterogeneous environments''
in AGERE! '13 Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized control.


External links


Hewitt, Meijer and Szyperski: The Actor Model (everything you wanted to know, but were afraid to ask)
Microsoft Channel 9. April 9, 2012. {{YouTube , id=7erJ1DV_Tlo
Functional Java
– a Java library that includes an implementation of concurrent actors with code examples in standard Java and Java 7 BGGA style.
ActorFoundry
– a Java-based library for actor programming. The familiar Java syntax, an ant build file and a bunch of example make the entry barrier very low.
ActiveJava
– a prototype Java language extension for actor programming.
Akka
– actor based library in Scala and Java, from Lightbend Inc.
GPars
– a concurrency library for Apache Groovy and Java
Asynchronous Agents Library
– Microsoft actor library for Visual C++. "The Agents Library is a C++ template library that promotes an actor-based programming model and in-process message passing for coarse-grained dataflow and pipelining tasks. "
ActorThread in C++11
– base template providing the gist of the actor model over naked threads in standard C++11 Concurrent computing