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
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.
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.
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.
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.
-- Blissex 040505