Actor model
Actors may modify their own private state, but can only affect each other indirectly through messaging (removing the need for lock-based synchronization).[citation needed] It was also influenced by the programming languages Lisp, Simula, early versions of Smalltalk, capability-based systems, and packet switching."[2] Since that time, the advent of massive concurrency through multi-core and manycore computer architectures has revived interest in the actor model.Following Hewitt, Bishop, and Steiger's 1973 publication, Irene Greif developed an operational semantics for the actor model as part of her doctoral research.[3] Two years later, Henry Baker and Hewitt published a set of axiomatic laws for actor systems.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 (MIT).Research groups led by Chuck Seitz at California Institute of Technology (Caltech) and Bill Dally at MIT constructed computer architectures that further developed the message passing in the model.An actor is a computational entity that, in response to a message it receives, can concurrently: There is no assumed sequence to the above actions and they could be carried out in parallel.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).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)).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.Also, messages in the actor model are simply sent (like packets in IP); there is no requirement for a synchronous handshake with the recipient.Influenced by packet switched networks [1961 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, it is possible to perform the pipeline optimization incorrectly in some implementations, in which case unexpected behavior may occur.[22] 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., it can be used to prove a generalization of the Church-Turing-Rosser-Kleene thesis [Kleene 1943]: A consequence of the above theorem is that a finite actor can nondeterministically respond with an uncountable[clarify] number of different outputs.However, Hewitt and Agha [1991] claimed 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).E.g., in his dissertation, Aki Yonezawa modeled a post office that customer actors could enter, change locations within while operating, and exit.Robin Milner's initial published work on concurrency[23] was also notable in that it was not based on composing sequential processes.Petri nets 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).In his Turing lecture, Robin Milner wrote:[25] Now, the pure lambda-calculus is built with just two kinds of thing: terms and variables.According to Hewitt [2006], the actor model addresses issues in computer and communications architecture, concurrent programming languages, and Web services including the following: Many of the ideas introduced in the actor model are now also finding application in multi-agent systems for these same reasons [Hewitt 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.