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.

The Actor Model (everything you wanted to know, but were afraid to
ask)

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 .

![Actor Interaction Patterns](http://gallery.mailchimp.com/a33b5228d1b5bf2e0c68a83f4/imag es/actorvisualization.png)

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

Akka is an Actor system for the JVM written in Scala. There is a Clojure wrapper .

Erlang

I have to mention Erlang , which is a language based directly on the Actor Model.