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