I've been following with great interest the FoNC developments at VPRI.
 I too am very interested in compact, simple and expressive
representations of computer-based solutions.  My focus for the last
three years has been on the Actor model of computation [1][2].  It
seems to me that actors are closer to Alan Kay's original concept of
"objects" than the implementation of objects realized in Smalltalk and
its derivatives.  As Alan has said, the emphasis should be on the
messages.  In a concurrent environment, the asynchronous messaging of
actors is a much better primitive than the synchronous call-return
messaging typical in today's "object-oriented" languages (including
those based on COLA).  In order to explore these ideas, I've developed
an actor-based environment for protoyping.  Within this environment
I've implemented; a solution to the same-fringe problem, an
implementation of Joe Armstrong's "Erlang Challenge", a fault-tree
simulation, a dialect of FORTH, two dialects of Scheme, and a
meta-circularly-defined actor language called Humus.

Humus is a pure actor-based programming language that provides a
foundation for software developers to build reliable concurrent
computer systems.  It features a referentially transparent
pure-functional core for defining values.  These values become the
messages between (and specify the behavior of) dynamically configured
actors.  Actor behaviors are composed of concurrent, rather than
sequential, primitive operations.  Actor configurations may also be
composed without affecting their operation.  This allows
implementation of systems with high scalability and low latency in
both multi-core and distributed execution environments.  The
theoretical foundations of Humus have mathematically rigorous
semantics [3].  Unlike Erlang or Scala, there are no blocking
operations and all expressions are completely free of side-effects.
Mutable state is entirely encapsulated within actors and may be
affected only be sending asynchronous messages.

Some of the implementation techniques used in both Humus and my
actor-based environment (ABE) were inspired by COLA.  OMeta also
provided insight into the design of numerous parsers for the various
languages built in ABE.  I haven't implemented OMeta directly, but
believe an implementation is possible. The biggest hurdle to that
implementation is the specification of semantic actions.  If I use the
host language (Humus) to specify the semantic actions, then I can't
take advantage of all the useful OMeta "code" written for COLA.  It
seems that I would have to implement COLA (Coke) as well.  I would
love to find a way to connect my work with that of VPRI, to the extent
that we have shared goals.

[1] G. Agha.  Actors: A Model of Concurrent Computation in Distributed
Systems.  MIT Press, Cambridge, Mass., 1986.
[2] C. Hewitt.  Viewing Control Structures as Patterns of Passing
Messages.  Journal of Artificial Intelligence, 8(3):323-364, 1977.
[3] G. Agha, I. Mason, S. Smith, and C. Talcott.  A Foundation for
Actor Computation.  Journal of Functional Programming, Vol. 7, No. 1,
January 1997.

_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

Reply via email to