Promise (programming): Difference between revisions

Content deleted Content added
Zestyping (talk | contribs)
No edit summary
No edit summary
Line 1:
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 [http://www.erights.org/elib/distrib/pipeline.html|message pipelining].
 
This [[concurrent programming]] technique of promises/futures was invented independentlyby the MIT Actors twicegroup in the 1980s1970s. It wasbecame inventedmore atwell [[Projectknown Xanadu]]by asits the "promise" and also inventedinclusion in [[MultiLisp programming language|MultiLisp]]. asThe theuse of logic variables for communication in concurrent logic programming languages is quite similar. These started with "futureProlog with Freeze" and "IC Prolog", thoughand thebecame implicationsa fortrue latencyconcurrency reductionprimitive dowith notConcurrent appearProlog, toFlat haveConcurrent beenProlog, recognizedParlog, Vulcan, Janus, Mozart/Oz, Flow Java, and Alice. The single assignment "I-var" from data flow languages, included in MultiLispReppy'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" include [[Joule programming language|Joule]] and [[E programming language|E]].
 
Languages containing "promises/futures/concurrent logic variables/I-vars" include [[Alice programming language|Alice]] and [[MultiLisp programming language|MultiLisp]].
 
Languages containing "promisespromise pipelining" include [[Joule programming language|Joule]] and [[E programming language|E]].
 
{{stub}}