Nearly all commercial software today is built on an imperative/sequential
model (FORTRAN, COBOL, C, Java, ...) and has notorious difficulties managing
concurrency.  See "Threads Considered Harmful" (
http://radar.oreilly.com/archives/2007/01/threads_conside.html) and "The
Problem with Threads" (
http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.html) for
details.

The best-known alternative has been the functional model (LISP, Scheme, ML,
Haskell, ...) which has difficulties handling non-determinism and stateful
behavior.

Around the same time that FORTRAN and LISP were developed, another model,
the ACTOR model, was proposed.  Hewitt's "Viewing Control Structures as
Patterns of Passing Messages" started the ball rolling, Agha's "ACTORS: A
Model of Concurrent Computation in Distributed Systems" captures the model
in it's fully developed form.  Both are included in the links at ERights.org(
http://www.erights.org/history/actors.html).  I've found "An Algebraic
Theory of Actors and its Application to a Simple Object-Based Language" at (
http://formal.cs.uiuc.edu/papers/ATactors_festschrift.ps) to be an excellent
(brief) introduction to the key concepts.

Unlike the imperative and functional models, the actor model has not had
much success in popular implementation.  The most visible example that
claims roots in the actor model is Erlang, although it's no more pure
actor-model than LISP is pure functional.  It appears that the actor model,
in its pure form, provides an ideal model for safe implementation of
massively concurrent systems.  If that is the case, then why don't we have
well-developed actor-based languages?  What fatal flaw in the model am I
missing?
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org

Reply via email to