Description
Actor systems are a line of research by
CarlHewitt (a professor in the AI laboratory at MIT) in the seventies. There is an alternative
ThreadMode page on this Wiki using the (historically perhaps less accurate)
ActorsModel moniker.
Actor systems are based on a
ModelOfComputation involving collections of self contained
actors, which are entities with the following characteristics:
- A unique identity for each actor.
- A list of identities of other actors it can interact with, called its acquaintances.
- A script that drives the behaviour of the actor, which involves constructing and sending messages (themselves actors) to its acquaintances, and receiving, examining and processing messages received from other actors.
Computation then proceeds as a pattern of message exchanges among actors.
Motivation
This model of computation maps well onto
fine grained massively parallel, distributed computer systems, because there is no shared state, and maximum concurrently is allowed in the message passing patterns.
Hewitt envisaged that a possible evolutionary path of computer systems was indeed as chips and boxes containing very large numbers of simple general purpose processors.
Part of the research involved for example concept like greedy, speculative execution, and the consequent need to garbage collection of processes.
Evolution
However, so far the dominant evolutionary path of computer systems has been towards even more complex and faster single processor systems for which the more conventional procedural
ModelOfComputation is more suitable.
Therefore
ActorSystem research is somewhat obscure, and mainly of historical interest except that early variants of
SmallTalk were strongly influenced by it, as
AlanKay worked with Carl Hewitt, and from there
ActorSystem terminology, in particular
MessagePassing, entered the OO mainstream in a somewhat pervasive way. This is why Smalltalk refers to message calls as
sending messages, even though Smalltalk-80 "messages" have synchronous (blocking-the-caller) semantics similar to function/method calls in most other maintstream procedural and OO languages.
While it is very natural to write programs for
ActorSystem computational engines using
ObjectOriented decomposition, in particular its prototype oriented variant, almost all
ObjectOriented languages and programs are based on the procedural model of computation, and also are class oriented rather than prototype oriented, and the conflation of
ActorSystem terminology and concepts with those of
ObjectOriented programming has lead to much confusion.
There is some speculation that the growth of single processor performance has hit some limits and that fine grained, massively parallel distributed systems are therefore the way of the future, and this may lead to a resurgence of interest in the
ActorSystem model of computation.
Pointers
-- Blissex 040505