Actor Model And Process Calculi History Article Index for
Actor Model
Website Links For
Actor
 

Information About

Actor Model And Process Calculi History





EARLY DEVELOPMENT OF THE ACTOR MODEL

The Actor Model , first published in ''et, al'' 1973 , is a mathematical model of Concurrent Computation . The Actor model treats “Actors” as the universal primitives of concurrent digital computation: in response to a message that it receives, an Actor can make local decisions, create more Actors, send more messages, and determine how to respond to the next message received.


No buffering

Messages in the Actor model are not necessarily buffered which 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". However, the "ether" doesn't make a very good buffer. Messages ''put'' in the Ether don't stay until they are ''gotten''! Also messages in the Actor model are simply sent (like Packets in IP ) there is no requirement for a synchronous handshake with the recipient of the message.


Dynamic topology

A natural development of the Actor model was to allow addresses in messages. Influenced by Packet Switched Networks 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.

A computation might need to send a message to a recipient from which it would later receive a response. The way to do this is to send a communication which has the message along with the address of another Actor called the ''resumption'' (sometimes also called Continuation or Stack Frame ) along with the message. The recipient could then cause a response message to be sent to the resumption.

Actor creation plus the inclusion of the addresses of Actors in messages means that Actors have a potentially variable topology in their relationship to one another much as the objects in Simula also had a variable topology in their relationship to one another.


Arrival ordering not necessarily same as sending order

Hewitt argued against making the requirement messages must arrive in the order that they are sent a requirement of the Actor model. 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 in response to a subsequent message that X received, it 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 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.


Milner's early publications

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 . Robin Milner 's {Link without Title} 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 using synchronous buffered communication.


Hoare's early publications

The original Communicating Sequential Processes model published by Tony Hoare {Link without Title} differed from the Actor model because it was based on the parallel composition of a fixed number of sequential processes of fixed topology communicating using synchronous buffered communication.

These early models by Milner and Hoare both had the property of bounded nondeterminism as opposed to the Unbounded Nondeterminism in the Actor model.


PROCESS CALCULI AND ACTOR MODEL



Milner, ''et. al.''

In his Turing lecture , Milner remarked as follows:

:Now, the pure lambda-calclus 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 expession ... 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. Thereafter we regard access-by-name as the raw material of computation...


Hoare, ''et. al.''

Tony Hoare , Stephen Brookes , and A. W. Roscoe {Link without Title} developed and refined the ''theory'' of CSP into its modern form. The approach taken in developing the theoretical version of CSP was heavily influenced by Robin Milner 's work on the Calculus Of Communicating Systems (CCS), and vice versa. Over the years there have been many fruitful exchanges of ideas between the researchers working on both CSP and CCS.


Further Coevolution

The (see Actor Model And Process Calculi ).

Although algebraic laws have been developed for the Actor model, they do not capture the crucial property of guaranteed of delivery of messages sent to Serializers. For example see the following:
  • and




REFERENCES

  • Carl Hewitt, Peter Bishop and Richard Steiger. A Universal Modular Actor Formalism for Artificial Intelligence IJCAI 1973.

  • Robin Milner. Processes: A Mathematical Model of Computing Agents in Logic Colloquium 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. al.'' 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..

  • Irene Greif. Semantics of Communicating Parallel Processes MIT EECS Doctoral Dissertation. August 1975.

  • Gordon Plotkin. A powerdomain construction SIAM Journal of Computing September 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.

  • Henry Baker and Carl Hewitt The Incremental Garbage Collection of Processes Proceeding of the Symposium on Artificial Intelligence Programming Languages. SIGPLAN Notices 12, August 1977.

  • Gilles Kahn and David MacQueen. Coroutines and networks of parallel processes IFIP. 1977

  • Carl Hewitt and Henry Baker Laws for Communicating Parallel Processes IFIP-77, August 1977.

  • Aki Yonezawa Specification and Verification Techniques for Parallel Programs Based on Message Passing Semantics MIT EECS Doctoral Dissertation. December 1977.

  • Carl Hewitt. Journal of Artificial Intelligence. June 1977.

  • Henry Baker . Actor Systems for Real-Time Computation MIT EECS Doctoral Dissertation. January 1978.

  • Michael Smyth. Power domains Journal of Computer and System Sciences. 1978.

  • George Milne and Robin Milner . Concurrent processes and their syntax JACM. April, 1979.

  • CAR Hoare . Communicating Sequential Processes CACM. August, 1978.

  • Nissim Francez, C.A.R. Hoare , Daniel Lehmann, and Willem de Roever. Semantics of nondetermiism, concurrency, and communication Journal of Computer and System Sciences. December 1979.

  • Nancy Lynch and Michael Fischer. On describing the behavior of distributed systems in Semantics of Concurrent Computation. Springer-Verlag. 1979.

  • Jerald Schwartz Denotational semantics of parallelism in Semantics of Concurrent Computation. Springer-Verlag. 1979.

  • Ralph-Johan Back. Semantics of Unbounded Nondeterminism ICALP 1980.

  • Mathew Hennessy and Robin Milner. On Observing Nondeterminism and Concurrency LNCS 85. 1980.

  • Will Clinger. Foundations of Actor Semantics MIT Mathematics Doctoral Dissertation. June 1981.

  • Mathew Hennessy. A Term Model for Synchronous Processes Computer Science Dept. Edinburgh University. CSR-77-81. 1981.

  • Robin Milner. Four combinators for concurrency ACM SIGACT-SIGOPS Symposium on Principles of Distributed Computing. Ottawa, Canada, 1982.

  • J.A. Bergstra and J.W. Klop. Process algebra for synchronous communication Information and Control. 1984.

  • Eike Best. Concurrent Behaviour: Sequences, Processes and Axioms Lecture Notes in Computer Science Vol.197 1984.

  • S.D. Brookes, C.A.R. Hoare and W. Roscoe. A theory of communicating sequential processes JACM 1984.

  • Luca Cardelli. An implementation model of rendezvous communication Seminar on Concurrency. Lecture Notes in Computer Science 197. Springer-Verlag. 1985

  • Gul Agha. Actors: A Model of Concurrent Computation in Distributed Systems Doctoral Dissertation. 1986.

  • Eike Best and R.Devillers. Sequential and Concurrent Behaviour in Petri Net Theory Theoretical Computer Science Vol.55/1. 1987.

  • Robert van Glabbeek. Bounded nondeterminism and the approximation induction principle in process algebra Symposium on Theoretical Aspects of Computer Sciences on STACS 1987.

  • Robin Milner. Some directions in concurrency theory International Conference on Fifth Generation Computer Systems. 1988.

  • Carl Hewitt. Knowledge processing International Conference on Fifth Generation Computer Systems. 1988.

  • Robin Milner, Joachim Parrow and David Walker. A calculus of mobile processes Computer Science Dept. Edinburgh. Reports ECS-LFCS-89-85 and ECS-LFCS-89-86. June 1989. Revised Sept. 1990 and Oct. 1990 respectively.

  • Carl Hewitt and Gul Agha. Guarded Horn clause languages: are they deductive and Logical? in Artificial Intelligence at MIT, Vol. 2. MIT Press 1991.

  • Robin Milner. The Polyadic pi-Calculus: A Tutorial Edinburgh University. LFCS report ECS-LFCS-91-180. 1991.

  • Kohei Honda and Mario Tokoro. An Object Calculus for Asynchronous Communication ECOOP 91.

  • José Meseguer. Conditional rewriting logic as a unified model of concurrency in Selected papers of the Second Workshop on Concurrency and compositionality. 1992.

  • Frederick Knabe. A Distributed Protocol for Channel-Based Communication with Choice PARLE 1992.

  • Benjamin Pierce, Didier Rémy and David Turner. A typed higher-order programming language based on the pi-calculus Workshop on type Theory and its application to computer Systems. Kyoto University. July 1993.