Promise (programming): Difference between revisions

Content deleted Content added
CarlHewitt (talk | contribs)
No edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 1:
#REDIRECT [[Futures and promises]]
In [[computer science]], a '''promise''' (also known as a '''future''' in some languages) is a proxy for a result that is not yet known, usually because the computation of its value has not yet completed. They were introduced in [[1977]] in the paper by [[Henry Baker (computer scientist)|Henry Baker]] and [[Carl Hewitt]]. The use of promises (futuures) can dramatically reduce latency in [[distributed computing|distributed systems]]. ''E.g.'', it enables pipelining of messages, called '''promise pipelining''' [http://www.erights.org/elib/distrib/pipeline.html] [http://c2.com/cgi/wiki?PromisePipelining].
 
== Known implementations ==
Promises (futures) became more better known by its inclusion in programming lannguages such as [[MultiLisp]] and [[Actor model|Act1]]. 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.
 
The pipelining technique (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 supporting "promises/futures/concurrent logic variables/I-vars" include:
* [[Alice programming language|Alice]]
* [[Oz programming language|Oz]]
* [[MultiLisp]]
 
 
Languages supporting promise pipelining include:
* [[Joule programming language|Joule]]
* [[E programming language|E]]
 
==Reference==
*Henry Baker and Carl Hewitt '''The Incremental Garbage Collection of Processes''' Proceeding of the Symposium on Artificial Intelligence Programming Languages. SIGPLAN Notices 12, August 1977.
*Henry Lieberman. '''Thinking About Lots of Things at Once without Getting Confused: Parallelism in Act 1''' MIT AI memo 626. May 1981.
*Henry Lieberman. '''A Preview of Act 1''' MIT AI memo 625. June 1981.
 
==External references==
* [http://c2.com/cgi/wiki?PromisePipelining PromisePipelining] on the [http://c2.com/cgi/wiki?FrontPage C2 wiki]
 
 
[[Category:Software design patterns]]