Re: Question about E's history.

"Mark S. Miller" <[email protected]> Sat, 11 Jun 2011 13:23:47 -0700
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
On Sat, Jun 11, 2011 at 12:01 PM, Tom Van Cutsem <[email protected]> wrote:

> Hi Constantine,
>
> Having looked at various actor languages, I have not previously encountered
> the type of asynchronous composability that when-expressions provide. So E
> may be the first language to have introduced this feature.
>
> About E's origins: in the paper "Concurrency among strangers", there is a
> section titled "From objects to actors and back again" (section 11) which I
> feel is a good reference to work that inspired E: <
> http://www.erights.org/talks/promises/index.html>
>
> In general, I believe the actor model served as the greatest source of
> inspiration for E: <http://en.wikipedia.org/wiki/Actor_model>
>
> I know from Mark that promises in Liskov's Argus language were also a
> source of inspiration for promises in E.
>

Not inspiration, but precedence and therefore credit. In 1989, Dean, I, and
others independently came up with a promise pipelining model similar to
Liskov and Shrira's promises as part of the Xanadu (aka Udanax Gold) work <
http://web.archive.org/web/20071023111712/http://www.sunless-sea.net/Transcripts/promise.html>.
Afterwards, we found out about their 1988 paper <
http://portal.acm.org/citation.cfm?id=54016>, and so have consistently given
them credit for inventing the idea first, as they did.


However, Argus's promises, unlike E's promises, support synchronous
> "claiming" or "touching" of the promise.
>

IIRC, the Udanax promises were both pipelined and potentially blocking in
the same sense as Liskov & Shrira's.

Dean's Joule language, IIRC, begun shortly afterwards, had pipelining
inspired by our Udanax experience, but generalized to by symmetric and fully
non-blocking based on Joule's main inspirations: Actors and Concurrent Logic
Programming. (See that "From Actors to Objects and Back Again" history Tom
referred to.) Joule's promises are "non-blocking" in the same sense that
Hewitt and Baker's old futures were "non-blocking" -- they're in a language
with pervasive fine-grained concurrency, where there's essentially no
built-in notion of sequentiality to enable anything to be conventionally
"blocking". Whether these count as "non-blocking promises" depends on your
definitions. AFAIK, Joule is the first language to combine Actor-like
pervasively concurrent futures/promises with Liskov-like promise pipelining.
(Confusingly, the old Actors literature does use the term "pipelining", but
for a distinct concept.)

Original-E's unique achievement, which Tom draws attention to here, is that
it was the first to invent non-blocking promises, via "when", in the context
of concurrency added to a locally sequential-imperative language. All
previous attempts we know of sequential-imperative + promises provided for
blocking or "forcing".

This elegant invention happened when Doug Barnes first created Original-E,
by shoehorning Joule-inspired concurrency onto a Java base in an intense two
week efforts driven by a business panic, after a contractual dispute between
Agorics (creator, provider, and supporter of Joule, where I was) and
Electric Communities (using Joule to create a decentralized secure virtual
reality, where Doug Barnes was). I only joined E.C. a year or so later, in
1995, whereupon I took over leadership of the Original-E effort.

In 1998, with help from Chip Morningstar and Danfuzz Bornstien, I designed
(the language now known as) E based on experiences with (the language now
known as) Original E, convinced E.C.'s board to open source E, and left E.C.
to form erights.org. Sometime afterwards, Mark Seaborn suggested having E's
"when" return a promise for its eventual result, resulting in the modern
"when" construct.


Kind regards,
> Tom
>
> 2011/6/7 Constantine Plotnikov <[email protected]>
>
>> Hi!
>>
>> One of very nice features of E is that operation of listening for promise
>> with when returns a promise, so asynchronous operations could be composed
>> and it enables functional asynchronous programming. I'm interested whether
>> it is E's original invention or E has borrowed the idea from somewhere?
>>
>> I'm also interested if there is some document that describes origins of
>> core ideas on which E's concurrency model is based.
>>
>> Thanks,
>> Constantine
>>
>> _______________________________________________
>> e-lang mailing list
>> [email protected]
>> http://www.eros-os.org/mailman/listinfo/e-lang
>>
>>
>
> _______________________________________________
> e-lang mailing list
> [email protected]
> http://www.eros-os.org/mailman/listinfo/e-lang
>
>


-- 
    Cheers,
    --MarkM

_______________________________________________
e-lang mailing list
[email protected]
http://www.eros-os.org/mailman/listinfo/e-lang