Clojure Gazette 1.34
The Actor Model
Clojure Gazette
Issue 1.34 --- March 11, 2013
Update
Hi, Clojurians!
The Kickstarter Video project is in its final three days! As I write this, the page says 66 hours remain. This is your last chance to be part of Clojure history.
Enjoy the issue!
Eric Normand
The Actor Model
The Actor Model is a formal model of computation developed by Carl Hewitt. By formal, I mean it has a set of axioms and properties which derive from those axioms. Whereas the Lambda Calculus is based on math and the Smalltalk object model is based on psychology , the Actor Model is based on Physics.
Because it is based on Physics, the Actor Model has an explicit model of time. Time is defined for each Actor based on the order of messages received, much like different relativistic viewpoints.By forcing indeterminacy down into the model of computation, the programmer is forced to deal with it from the start. Erlang takes this idea even further and builds computational failure into its model. The Actor Model supports concurrency and fault tolerance.
In this video , Erik Meijer interviews Carl Hewitt to elicit the essence of the Actor Model. Meijer does a good job of guiding Hewitt to a concrete and formal concept. Be sure to check out the non-Turing model of computation which includes arbiters .
A cool thing about Actors is that they lend themselves to visualization. Actors are circles and messages are lines, and the messages can be stepped through.Dale Schumacher demonstrates this in this video while presenting some interesting topological patterns.
Akka is an Actor system for the JVM written in Scala. There is a Clojure wrapper .
I have to mention Erlang , which is a language based directly on the Actor Model.