Talk:Futures and promises

From Wikipedia, the free encyclopedia
Jump to: navigation, search
WikiProject Computing / CompSci (Rated Start-class, Low-importance)
WikiProject icon This article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 Low  This article has been rated as Low-importance on the project's importance scale.
Taskforce icon
This article is supported by WikiProject Computer science (marked as Mid-importance).
 

Requested move[edit]

The following discussion is an archived discussion of the proposal. Please do not modify it. Subsequent comments should be made in a new section on the talk page. No further edits should be made to this section.


Future (programming)Futures and promises (programming) — The scope of the article has been changed to reflect the fact that there is a technical distinction between "futures" and "promises" in several programming languages (although they are very similar and should still be covered by the same article). DavidHopwood 01:23, 22 March 2007 (UTC)

Survey[edit]

Add  # '''Support'''  or  # '''Oppose'''  on a new line in the appropriate section followed by a brief explanation, then sign your opinion using ~~~~. Please remember that this survey is not a vote, and please provide an explanation for your recommendation.

Survey - in support of the move[edit]

Survey - in opposition to the move[edit]

I added some material to clarify the definition of futures. After doing so, it seems to me that a similar definition of promisises is badly needed since the promise concept seems highly ambiguous.--2ndMouse 14:03, 24 March 2007 (UTC)

Discussion[edit]

Add any additional comments:

Is the "(programming)" disambiguation really needed? Futures and promises is also a redlink, and I suspect that somebody would just move the article there later, because we're not distinguishing futures and promises in programming from some other "futures and promises". -GTBacchus(talk) 02:48, 28 March 2007 (UTC)

The above discussion is preserved as an archive of the proposal. Please do not modify it. Subsequent comments should be made in a new section on this talk page. No further edits should be made to this section.
Even with the additions that 2ndMouse suggests, the article would still cover both futures and promises, and as GTBacchus points out, there is no need for the disambiguating term. Future (programming) has been moved to futures and promises as the result of a move request. Stemonitis 08:06, 28 March 2007 (UTC)

"Promise" term[edit]

I really don't believe that the use of the definition of "Promise" is the correct term to be used in this article, but rather "expectations". Humans expect things that are better than was previously presented before, and this is the future of anything. Everything that has been invented and engineered was due to to the fact that people were confronted with a limited problem that involved the expectations of something better. To promise something would imply that a time machine would have already been invented, for example. It is more accurate to say that the belief in the invention of a time machine by now was a possibility, or even an expection, in that era. To promise this would guarantee that it was definitely a reality now. That is if a promise is like anything my loving girlfriend pulls off time and time again. I've had a few drinks in the past few hours, so I hope I make some sense. E-mail me if you have any questions, I'm sure I'd find it entertaining arguing with you. Bring it on nerds. cerulean_flame@yahoo.com

Well, since Wikipedia documents, not invents, the issue is a bit moot. They're called "futures" and "promises" in the field, so calling them anything else on Wikipedia will just confuse matters. (Oh, and where i come from, you can only make promises about the future, and promises can be broken. :) --Piet Delport 12:47, 10 January 2006 (UTC)

Java 1.5 Futures[edit]

Is there any relation to Future interface in the Java API?

Not really. You can think of Java's Future as a one-element, one-shot, thread-safe result queue. It's useful for thread synchronization, but doesn't implement any of the techniques described in this article. --Piet Delport 10:46, 3 February 2006 (UTC)
Yes there is; FutureTask implements an "explicit future". The article now describes the difference between this and the implicit futures/promises implemented by most of the other languages mentioned. --DavidHopwood 02:20, 21 March 2007 (UTC)
Addendum: As the article mentions, there is a dialect of Java, called Flow Java, which does implement single-assignment and future variables. The website has a nice paper and presentation about how they are used, and what kind of problems they can solve. --Piet Delport 09:52, 5 April 2006 (UTC)

Twisted's Deferred[edit]

Is this the same as Twisted's deferred object? If not, how does it differ?

Not meaningfully. Deferreds are similar to Java 1.5's Future, discussed above; the main difference is that they're usually used without threads, and have their results processed by a dual callback/errback chain instead of a polling/blocking caller. --Piet Delport 23:55, 19 September 2006 (UTC)
That's correct, although this feature of Twisted was inspired by promises in E. The differences are mainly due to the fact that Twisted is strictly a library/framework; it doesn't change the Python language. --DavidHopwood 02:24, 21 March 2007 (UTC)

what about C# TPL[edit]

I think C# TPL implements this concept. I wonder why it is ignored in the list of languages implementing the concept [Futures]

Future is associated with a thread or not?[edit]

"Futures and delays are well defined in terms of their denotational semantics in the Actor model. These definitions do not require recourse to low level implementation concepts such as threads."

"a future is associated with a specific thread that computes its value. This computation may be started either eagerly when the future is created, or lazily when its value is first needed. A lazy future is similar to a thunk (in the sense of a delayed computation)."

In the first statement it is said the a future does not require do recourse to threads, however, in the second statement it is said that a future is associated with a specific thread. Shouldn't it be associated with a specific computation instead of a thread? —Preceding unsigned comment added by 89.180.107.28 (talk) 14:00, 30 June 2009 (UTC)

You are correct: futures (like all Actors) are not associated with a specific thread. The article has been corrected. See what you think. --98.210.236.129 (talk) 14:21, 30 June 2009 (UTC)
Seems good to me. Thank you for the clarification. —Preceding unsigned comment added by 89.180.107.28 (talk) 15:46, 1 July 2009 (UTC)

Lucid[edit]

Does Lucid really support futures in the sense meant here? It supports stream-based dataflow, but that's not the same thing. I don't know enough about the language to be sure, though. --David-Sarah Hopwood ⚥ (talk) 04:57, 25 September 2009 (UTC)

Future vs Promise[edit]

some differences in usage between "future" and "promise" are discussed below

Having trouble finding this discussion —Preceding unsigned comment added by 1.153.45.43 (talk) 19:26, 17 January 2011 (UTC)

There is a discussion of futures versus promises in Actor Model of Computation published in arXiv:1008.1459. 70.137.165.34 (talk) 20:08, 17 January 2011 (UTC)

What is stinging or forcing?[edit]

The article says "Obtaining the value of an explicit future can be called "stinging" or "forcing"." but does not explain what these mean or whether there is a difference. — Preceding unsigned comment added by Gvanrossum (talkcontribs) 18:50, 11 January 2012 (UTC)

Should mention jQuery's Deferred / Promise implementation[edit]

Possibly the most visible implementation of this concept is the one added to jQuery in version 1.5. There were other JavaScript implementations before it, but jQuery is getting more and more ubiquitous all the time, and of course JavaScript has been ubiquitous for years.

I had never come across this concept outside of jQuery despite my 22 years of programming. — Hippietrail (talk) 16:31, 8 August 2012 (UTC)