[e-lang] E is data-flow, not control-flow, correct?
Mark Miller
markm at caplet.com
Sat Jul 24 17:49:56 EDT 2004
At 11:36 PM 7/22/2004 Thursday, zuzu wrote:
>please forgive my ignorance, i'm new to E, though i'm reading through
>the walnut.
No apologies necessary -- I love to hear from people new to E. Welcome!
>although i am very enthusiastic about secure distributed objects, i
>have conerns about -- E seemingly built upon Java (not unlike SALSA)
>-- that it is not a "pure actor" language nor is it "data flow"
>(rather than "control flow").
In many ways, E's starting point was Actors.
(See http://www.erights.org/history/overview.html )
E's most important and most E-like ancestor is Joule
http://www.agorics.com/Library/joule.html , which is a pure Actors language
without compromise.
As Shap (Jonathan Shapiro) says, the E language definition is in no way tied
to Java specifically. But E is a compromise between pure actors and
conventional sequential call-return object programming. This compromise
comes from the desire to seem instantly familiar to those coming from the C
syntactic tradition. In explaining E to others, Java is our main point of
reference. In deciding on conventions, Java was again our main starting point.
Our compromise is not a hodge-podge mixture of the two paradigms. Rather, it
is a principled nesting of one in the other. At Vat granularity, E remains a
pure actors language. A Vat is an actor-configuration -- essentially an
actor, but with multiple incoming mailboxes (one for each target of an
incoming remote reference). A Vat turn
http://www.erights.org/elib/concurrency/turns.html then corresponds
precisely to an actor event: During each Vat turn, a Vat sends outgoing
asynchronous (eventual) messages and computes the new vat-state it
"becomes" -- the one in which it will process the next message. From this
perspective, E's immediate calls and assignments are internal to an
individual actor event.
Within an actor event, then, we are programming in the conventional familiar
call-return sequential object model. E's individual objects are, from this
perspective, not actors, but components of the state and behavior of the
Vat-actor they are in.
Put another way, to someone coming from Smalltalk..Java, E seems like a
conventional sequential call return object language, using "." for
invocation, to which we added eventual sending "<-" to support communicating
distributed event loops. To someone coming from an actors language,
especially Joule, E seems like an actor language, using "<-" for invocation,
to which we added "." to support more complex computation within an event.
If you have access to Powerpoint 2002 or later, please step through the
animations at http://www.erights.org/talks/promises/index.html , which is
our best explanation to date of what you get when you combine the constructs
in this way.
>p.s. i am interested in porting "secure distributed actors" to the
>ruby language, which is already pure OO.
That would be great! I don't know Ruby, but so long as you explain the Ruby
we need to answer your questions as you go, I, and the rest of e-lang, would
love to help you succeed at this.
I encourage you to look at CapTP and the web-calculus as protocols you may
want to adopt, so that perhaps Rube-E vats could interoperate with secure
distributed E and Waterken objects.
--
Text by me above is hereby placed in the public domain
Cheers,
--MarkM
More information about the e-lang
mailing list