Actor

Noun · Development

Definitions

  1. Actor is a concurrency model where the fundamental unit of computation is an independent entity called an actor that communicates with other actors exclusively through asynchronous message passing. Each actor has its own private state that cannot be directly accessed by other actors, eliminating shared mutable state and the race conditions, deadlocks, and synchronization bugs that come with it. When an actor receives a message, it can create new actors, send messages to other actors, and update its own internal state. The model was introduced by Carl Hewitt in 1973 and has been implemented in languages and frameworks including Erlang/OTP, Akka (Scala/Java), and Microsoft Orleans (.NET). The Erlang actor model powers highly available telecom systems, and the approach is well suited for distributed systems, real-time applications, and any scenario requiring massive concurrency.

    In plain English: A tiny independent worker that does its job by receiving and sending messages, without directly sharing memory with other workers.

    Example: "Each user session is an actor, so a crash in one session cannot corrupt another."

Etymology

1973
Carl Hewitt, Peter Bishop, and Richard Steiger introduce the Actor model in their paper 'A Universal Modular ACTOR Formalism.'
1986
Erlang is developed at Ericsson, building on Actor model principles for fault-tolerant telecom systems.
2009
Akka brings the Actor model to the JVM, making it practical for high-concurrency applications on Java and Scala.
2010s
Actor-based systems power WhatsApp, Discord, and other high-scale messaging platforms. The pattern sees renewed interest.

Origin Story

The 1973 Paper That Gave Software Its Stage Performers

The Actor model of computation was introduced by Carl Hewitt, Peter Bishop, and Richard Steiger in their 1973 paper 'A Universal Modular ACTOR Formalism for Artificial Intelligence.' Working at MIT's Artificial Intelligence Laboratory, Hewitt was searching for a mathematical model of concurrent computation that was more flexible than existing approaches. In the Actor model, the fundamental unit of computation is the 'actor,' an independent entity that can receive messages, make local decisions, create new actors, send messages to other actors, and determine how to respond to the next message it receives. The model drew inspiration from physics (where everything is a concurrent process), Smalltalk's message-passing objects, and PLANNER (Hewitt's earlier logic programming language). Gul Agha further developed the formalism in his influential 1986 PhD thesis and book 'Actors: A Model of Concurrent Computation in Distributed Systems.' For decades the Actor model remained primarily academic, but it found practical expression in Erlang (created by Joe Armstrong at Ericsson in 1986 for telecom switches), Scala's Akka framework, and Microsoft's Orleans. Today it underpins systems handling millions of concurrent connections.

Coined by: Carl Hewitt, Peter Bishop, and Richard Steiger

Context: MIT AI Laboratory, 1973

Fun fact: Joe Armstrong chose the Actor model for Erlang because telecom switches must handle hundreds of thousands of simultaneous phone calls. Erlang processes are so lightweight that a single server can run millions of them.

Related Terms