Actor System

'''''Description'''''

Actor systems are a line of research by Carl Hewitt (a professor in the AI laboratory at MIT) in the seventies. There is an alternative Thread Mode page on this Wiki using the (historically perhaps less accurate) Actors Model moniker.

Actor systems are based on a Model Of Computation 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 Model Of Computation is more suitable.

Therefore Actor System research is somewhat obscure, and mainly of historical interest except that early variants of Small Talk were strongly influenced by it, as Alan Kay worked with Carl Hewitt, and from there Actor System terminology, in particular Message Passing, 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 Actor System computational engines using Object Oriented decomposition, in particular its prototype oriented variant, almost all Object Oriented languages and programs are based on the procedural model of computation, and also are class oriented rather than prototype oriented, and the conflation of Actor System terminology and concepts with those of Object Oriented 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 Actor System model of computation.

'''''Pointers'''''

Alternate Thread Mode page:
Actors Model

A site dedicated to actor systems:
www.dekorte.com

History of actor research up to 1993:
ftp://sail.stanford.edu/pub/MT/93actors.ps.Z

Page about the main original actor languages:
hopl.murdoch.edu.au

Advocacy of ACT-1, a later actor language:
agents.www.media.mit.edu

A very recent (2004) actor language and system simulator:
www.ncc.up.pt

The Free Lunch Is Over (why no 10GHz today):
www.gotw.ca

-- Blissex 040505

See original on c2.com