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? -------------- next part -------------- An HTML attachment was scrubbed... URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20080110/a12fd99d/attachment.html |
Dale Schumacher wrote:
> 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, > 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? I don't think it really requires a language. All that's needed are spawn/synchronize primitives, and then the rest is following the programming model. In a number of those papers, they basically use Lisp to demonstrate the model. I'd say it's just a problem so many programmers having deeply ingrained habits for assigning stuff to mutable variables, and thus there being so much (C/Java/Fortran) legacy code that does that. Even in C with gcc, there's now a notion of vector variables. Just have to decide to use that instead of a `for' loop. A recent take on "Hey, transactions facilitate parallelism!", is Software Transactional Memory... Meanwhile Lisp-like languages like R work very neatly with MPI with simple, but high level operators like `apply'. Marcus |
Free forum by Nabble | Edit this page |