Jump to content

Promise (programming)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 82.42.16.116 (talk) at 21:33, 9 January 2005. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computer programming, a promise (also known as a future in some languages) is a placeholder for a result that is not yet known, usually because a computation has not yet finished or a message from a remote party has not yet arrived. The use of promises can dramatically reduce latency in distributed systems because it enables message pipelining.

This concurrent programming technique of promises/futures was invented by the MIT Actors group in the 1970s. It became more well known by its inclusion in MultiLisp. The use of logic variables for communication in concurrent logic programming languages is quite similar. These started with "Prolog with Freeze" and "IC Prolog", and became a true concurrency primitive with Concurrent Prolog, Flat Concurrent Prolog, Parlog, Vulcan, Janus, Mozart/Oz, Flow Java, and Alice. The single assignment "I-var" from data flow languages, included in Reppy's "Concurrent ML", is much like the concurrent logic variable.

This pipelining technique (of using promises/futures to overcome latency) was invented independently twice in the 1980s. It was invented at Project Xanadu (circa 1989) and by Barbara Liskov in 1988.

Languages containing "promises/futures/concurrent logic variables/I-vars" include Alice and MultiLisp.

Languages containing "promise pipelining" [[1]] include Joule and E.

External references