Active Objects with Syntax Directed Dialogs

Zonnon offers a new computing model based on active objects with their interaction defined by syntax controlled dialogs.

The Concepts of Zonnon: A language for systems engineering with Modules, Objects and Concurrency



And there's a Zonnon compiler for .Net

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Interesting and occam-like

At first glance, their approach to concurrency seems very like that used in occam (and by extension CSP). In particular, the "syntax controlled dialogs" are reminiscent of occam's tagged protocols (might need to scroll down a little on that link). However, their provisions for working with objects seem much stronger than those available in occam (which doesn't, AFAIK, directly support things like inheritance - although there may well be some games you can play to simulate it).

Where is the model?

I am a bit affraid to say that, but where is this "new computing model" defined? In the "Concepts" presentation? Or in the language report? The former looks like a sales presentation, the latter seems to be dealing mostly with syntax issues, and not a computing model (it may be there, I just don't see it easily behind BNF).

I would really appreciate a pointer to a definition of this computational model.

Details are sparse

I agree that the details are sparse. However, from slide 2 of the sales pitch:

Its computing model is concurrent,
based on active objects which interact via
syntax controlled dialogs

and, from the summary (slide 28):

Zonnon introduces a new computing model
based on concurrency, retaining type safety

Based on these two statements, I'm inferring that the "new computing model" is essentially just a reinvention of Actors and/or CSP. The other innovation here seems to be the "syntax controlled dialogs", which, as I've said already, bear a startling resemblance to channel protocols in occam.

From the code samples I've looked at so far it's not clear to me exactly how the objects interact. My impression is that they can use both direct method calls, and send/receive operations on a "dialog". It's not obvious (to me at least) from the language report if it's possible to generate dialogs between objects which don't share a parent-child relationship (i.e. can dialog names be passed around as parameters?). Nor is it clear what happens when an object is engaged in a dialog, and has a method invoked on it. Scheduling appears to be driven by object readiness, but I haven't seen any description of the policy for cases where several objects are ready to proceed.

While all of this speculation and inference is fun, it would be nice to see a little more on the underlying semantics of all of this. Which I guess leads us right back to your question :-)