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