Future (informatica)
# Future (informatica)

In informatica, con i termini future, promise e delay ci si riferisce a particolari costrutti usati nella sincronizzazione dell'esecuzione dei programmi scritti con alcuni linguaggi di programmazione di tipo concorrente. Questo costrutto fa uso di una sorta di segnaposto, un oggetto che prende il posto di un valore che è in attesa di essere restituito da un'operazione asincrona. Su questo oggetto vengono definite delle operazioni da effettuare quando l'operazione asincrona sarà stata completata.

Il concetto di promise fu proposto nel 1976 da Daniel P. Friedman e David Wise, e da Peter Hibbard che lo chiamò eventual. Il concetto abbastanza simile di future fu introdotto nel 1977 in una pubblicazione di Henry Baker e Carl Hewitt. Sebbene i due termini vengano spesso usati interscambiabilmente, esistono alcune differenze.

Questo tipo di costrutto è implementabile in diversi linguaggi, come JavaScript, Java, Scala, C# (a partire da .NET 4.5, con le parole chiave async e await), Python (da 3.2 con la libreria concurrent.futures e da 3.5 con async e await) e molti altri.

