Fortsetzung (Informatik)
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 den Back-Button des Browsers benutzt wird die Handhabung kompliziert.
[Bearbeiten] Continuations in verschiedenen Programmiersprachen
- Scheme:
call/cc
(kurz fürcall-with-current-continuation
) - Standard ML:
SMLofNJ.Cont.callcc
- C:
setcontext
et al. (UNIX System V and GNU libc) - Ruby:
callcc
- Smalltalk:
Continuation currentDo:
- Rhino:
Continuation
- Haskell:
callCC
(im ModulControl.Monad.Cont
) - C#:
yield
unddelegate
- Java: Das Web-Framework RIFE