Concept

Futures (informatique)

Résumé
En programmation, les notions de futurs (« futures »), promesses (« promises ») ou délais (« delay ») font référence à des techniques de synchronisation pour certains langages concurrents. Il s'agit d'abstractions qui servent de proxy pour un résultat non-connu au moment où il est référencé pour la première fois, car son calcul ou son obtention se feront « plus tard » à l'exécution. Le terme générique de promise (« promesse ») a été proposé par Daniel P. Friedman et David Wise en 1976 ; Peter Hibbard le dénommait eventual à la même époque. Le concept similaire de future a été introduit en 1977 dans une publication de et Carl Hewitt. Les termes future, promise et delay sont la plupart du temps interchangeables, bien que certains programmeurs soulignent des différences entre future et promise. L'action consistant à attribuer sa valeur à une promise est la plupart du temps notée resolving, fulfilling ou binding. Les futurs et les promesses trouvent leur origine dans la programmation fonctionnelle et les paradigmes connexes (comme la programmation logique) pour découpler une valeur (un futur) de la façon dont elle a été calculée (une promesse), ce qui rend le calcul plus souple, notamment en le parallélisant. Plus tard, il a été utilisé dans le calcul distribué, en réduisant la latence des communications aller-retour et a ainsi gagné encore plus dans son utilisation en permettant d'écrire des programmes asynchrones dans un style direct (Direct style), plutôt que dans un style de continuation-passage (Continuation-passing style). L'utilisation de futurs peut être implicite : à chaque utilisation un futur obtient automatiquement sa valeur, comme si c'était un nombre ordinal ; ou explicite : l'utilisateur doit appeler une fonction pour obtenir sa valeur, comme la méthode get de java.util.concurrent.Future en Java. Obtenir une valeur d'un futur peut être appelé "stinging" ou "forcing". Les futurs explicites peuvent être implémentés comme une bibliothèque, tandis que les futurs implicites nécessitent un support du langage.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.