Continuare

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică , o continuare (limba engleză continuare) este o modalitate de a reprezenta starea de execuție a unui program de la un anumit punct. Multe limbi au o construcție care vă permite să salvați starea curentă de execuție și apoi să reluați execuția din această stare ulterior. Această tehnică este tipică programării funcționale, dar există multe limbaje de programare care prezintă această caracteristică cu nume diferite:

  • Schemă : call/cc (prescurtare pentru call-with-current-continuation )
  • ML Standard din New Jersey: SMLofNJ.CONT.callcc
  • C : setcontext și colab. ( UNIX System V și GNU libc)
  • Rubin : callcc
  • Python : (a se vedea mai jos) a avut modulul de continuation dar a fost eliminat.
  • Haskell : Continuarea monadei

Continuarea este utilizată pentru a „sări” dintr-o parte a programului în alta, după cum este necesar. Funcționează într-un mod similar cu comanda goto prezentă în BASIC, cu diferența că comanda goto nu este recomandată deoarece face dificilă întreținerea codului, în timp ce continuarea nu face dificilă modificarea codului când devine mare. Continuarea nu sare între linii de cod, ci între stări. Puteți vedea programul ca un set de stări care evoluează în funcție de acțiunile utilizatorului, iar continuarea vă permite să săriți între diferite stări, după cum este necesar. Folosește un model de programare similar cu cel al rețelelor Petri .

Suportul pentru continuarea prin diferite limbi este foarte variabil. Un limbaj de programare acceptă continuarea reentrantă sau de primă clasă dacă o continuare poate fi apelată de mai multe ori pentru a intra din nou în același context (utilizarea termenului reentrant în acest caz nu trebuie confundată cu utilizarea făcută atunci când este vorba de multitasking ).

Dacă continuarea poate fi utilizată doar pentru a ieși din contextul actual, se spune că limba susține continuarea evadării . Multe limbi care nu acceptă în mod direct continuarea au suport pentru gestionarea excepțiilor , ceea ce este echivalent cu continuarea evadării și poate fi utilizat în aceleași scopuri. Construcțiile C setjmp și longjmp sunt de acest tip: pot fi utilizate numai pentru derularea stivei și nu pentru a reveni la o continuare salvată anterior.

Continuări de primă clasă pot fi folosite pentru a implementa optimizarea apelurilor în coadă . Prezența atât a continuării de primă clasă, cât și a optimizării garantate a apelurilor la coadă este unul dintre punctele distinctive ale Schemei de alte limbi Lisp .

Mulți programatori care nu sunt obișnuiți cu continuarea consideră că este un concept dificil de înțeles. Limbajul esoteric de programare Unlambda include această caracteristică numai datorită dificultății sale de înțelegere.

Continuarea este strâns legată de transformarea dublei negații de la logica clasică la logica intuiționistă prin izomorfismul Curry-Howard și legea lui Peirce .

Elemente conexe

Alte proiecte

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT