Differenze tra le versioni di "Continuazione"

m
Cat. Programmazione
m (→‎Risorse esterne: traduzioni)
m (Cat. Programmazione)
In [[informatica]], una '''continuazione''' ('''''continuation''''' in inglese) è un modo per rappresentare lo stato di esecuzione di un programmma (vedi anche [[Stack]]) ad un punto dato. Molti linguaggi hanno un costrutto che permette di salvare lo stato corrente di esecuzione per poi riprendere l'esecuzione a partire da questo stato in un momento successivo. Questa tecnica è tipica della [[programmazione funzionale]] ma sono molti i [[linguaggio di programmazione|linguaggi di programmazione]] che presentano questa caratteristica con varie denominazioni:
 
*[[Scheme]]: <code>call/cc</code> (abbreviazione di <code>call-with-current-continuation</code>)
La continuazione si utilizza per "saltare" da una parte del programma all'altra a seconda delle necessità. Funziona in modo analogo al comando goto presente nel [[BASIC]] con la differenza che il comando goto è sconsigliato perché rende la manutenzione del codice difficile mentre la continuazione non rende ardua la modifica del codice quando questo diventa di elevate dimensioni. La continuazione non salta tra linee di codice ma tra stati. Si può vedere il programma come un insieme di stati che evolvono a seconda delle azioni dell'utente e la continuazione consente di saltare tra stati diversi a seconda delle necessità. Utilizza un modello di programmazione simile a quello delle [[Rete di Petri|reti di Petri]].
 
Il supporto per la continuazione da parte dei vvarivari linguaggi è molto variabile. Un linguaggio di programmazione supporta la continuazione ''rientrante'' o di ''prima classe'' se una continuazione può essere richiamata più volte per rientrare nello stesso contesto (l'uso del termine rientrante in questo caso non è da confondere con l'uso fatto trattando il [[multitasking]]).
 
Se le continuazione può essere usata solo per uscire dal contesto corrente, si dice il linguaggio supporta l<nowiki>'</nowiki>''escape continuation''. Molti linguaggi che non supportanto direttamente la continuazione, hanno il supporto per la [[gestione delle eccezioni]], che è equivalente all'''escape continuation'' e può essere usata per gli stessi scopi. I costrutti C <code>setjmp</code> e <code>longjmp</code> sono di questo tipo: possono essere usati solo per srotolare lo stack e non per ripristinare una precedente continuazione salvata.
* [http://www.phubuh.org/Media/Writing/Continuations/ Using continuations for web programming] (in inglese)
 
[[Categoria:InformaticaProgrammazione]]