Continuation
aus Wikipedia, der freien Enzyklopädie
Eine Fortsetzung (engl. Continuation) repräsentiert in der Programmierung einen bestimmten Punkt in der Ausführung eines Programms. Klassisch bestünde sie aus dem Befehlszähler und dem aktuellen Stack frame. Viele Programmiersprachen erlauben es, zur Laufzeit eine Continuation zu erzeugen und den Programmablauf später an diesem Punkt wieder aufzunehmen. Der Ausdruck wurde von Christopher Strachey, C. P. Wadsworth und John Reynolds geprägt.
Continuations gibt es in verschiedenen Ausprägungen: In der flexibelsten Form kann eine Continuation später mehrfach aufgerufen werden. Häufiger angeboten werden Continuations, die nur einmal aufgerufen werden können, beispielsweise in Ruby. Eine sehr beschränkte Form sind sogenannte escape continuations, die es nur erlauben den aktuellen Kontext zu verlassen und in einen umgebenden zu springen. Hierzu zählen Exceptions in Sprachen wie Java und nochmals einfacher auch setjmp und longjmp in C.
Continuations erlangen in der Webprogrammierung zunehmend Bedeutung, da mit ihrer Hilfe der asynchrone Request/Response-Zyklus, wie er bei HTTP üblich ist, in einen linearen Ablauf umgebogen werden kann. Es lässt sich dabei eine Methode schreiben, die eine Seite an den Benutzer schickt und dann die aktuelle Continuation in die Hosentasche schiebt, um bei der nächsten Aktion des Benutzers hinter dieser Methode mit dem Programm fortzufahren. Kenner warnen allerdings davor den Benutzer solcherart als „Peripheriegerät“ zu behandeln, denn wenn selbiger die Zurück-Funktion des Browsers benutzt, wird die Handhabung kompliziert.
Inhaltsverzeichnis |
[Bearbeiten] Continuations in verschiedenen Programmiersprachen
- C:
setcontextet al. (UNIX System V and GNU libc) - Ruby:
callcc - Haskell:
callCC(im ModulControl.Monad.Cont) - Java: Das Web-Framework RIFE
- Standard ML:
SMLofNJ.Cont.callcc - Python:
yield[1] - Rhino:
Continuation - Scheme:
call/cc(kurz fürcall-with-current-continuation) - Smalltalk:
Continuation currentDo: - Icon (Programmiersprache):
suspend - Common Lisp:
handler-bind, cerror, continue

