Re: Question about E's history.

Tom Van Cutsem <[email protected]> Sun, 12 Jun 2011 02:39:22 -0700
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
> I suspect they got the 'promise' idea from Hewitt.
>>
>
> Yes. Hewitt and Baker.
>

The earliest reference I can find on the notion of "futures" was in Hewitt
and Baker's 1977 paper named "The incremental garbage collection of
processes" <http://dspace.mit.edu/handle/1721.1/41969>.

In that paper, they seem to credit Friedman and Wise, and Hibbard, for a
similar idea.

Halstead, in his 1985 paper on Multilisp, cites the Baker & Hewitt 1977
paper, but also explicitly relates his futures to Hibbard's "eventuals" in
Algol 68. There is this footnote in Halstead's paper:

"These “futures” greatly resemble the “eventual values” of Hibbard’s Algol
68 [39]. The principal difference is that eventual values are declared as a
separate data type, distinct from the type of the value they take on,
whereas futures cannot be distinguished from the type of the value they take
on. This difference reflects the contrast between Algol’s philosophy of type
checking at compile time and the Lisp philosophy of run-time tagging of
data."

So it seems the principal novelty of Multilisp's futures was that they were
designed as transparent stand-ins for their values.

It's interesting to note the many design dimensions of promises/futures that
have been explored over the years, including:
- whether "touching" or "claiming" a future/promise is blocking or
non-blocking
- whether "touching" or "claiming" a future/promise is implicit (by
performing an operation that needs its value) or explicit (e.g. future.get()
in Java, promise claiming in Argus)
- whether the type Future<T> is distinct from the type T, in statically
typed languages
- whether futures/promises are created implicitly as the return value of a
message send or explicitly as in the Multilisp form "(future expr)"
- whether or not "pipelining" is supported
- whether or not futures/promises support proper exception propagation
- ...

Which only goes to say that "promise" and "future" are very overloaded terms
:-)

Cheers,
Tom


>
>
>>
>> <http://en.wikipedia.org/wiki/MultiLisp>Jonathan
>> <http://en.wikipedia.org/wiki/MultiLisp>
>> On Jun 11, 2011, at 4:23 PM, Mark S. Miller wrote:
>>
>> 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?idT016>, and so have consistently
>> given them credit for inventing the idea first, as they did.
>>
>> ...
>>
>> _______________________________________________
>> 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
>
>

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