Zurück zur Übersicht

Begriff

Continuation Passing Style (CPS)

Computer Science Programming S4
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Normaler Code: x = add(1, 2); print(x); Die Funktion kehrt zurück (return). In CPS kehrt eine Funktion niemals zurück. Stattdessen übergibst du ihr den "Rest des Programms" als Extra-Argument (die Continuation). add(1, 2, (x) => print(x)); "Addiere 1 und 2. Und wenn du fertig bist, ruf diese Funktion mit dem Ergebnis auf." Das ist das Prinzip von Node.js Callbacks. Aber man kann damit krasse Dinge bauen: Eigene Control-Flows (Exceptions, Coroutinen, Backtracking) ohne Sprach-Support.

Merksatz: Ein Programmierstil, bei dem der Kontrollfluss explizit durch Übergabe von Fortsetzungsfunktionen (Continuations) gesteuert wird, anstatt durch den impliziten Call-Stack und Return-Anweisungen.


Quick-Check

  1. Lesbar?
    Hölle ("Callback Hell"). Menschen denken linear, nicht verschachtelt. CPS schreibt man nie freiwillig, außer man baut Compiler.
  2. Exceptions?
    In CPS trivial. Man übergibt einfach zwei Continuations: success_k und error_k. div(a, b, success, error). Wenn b=0 -> ruf error. Sonst success.
  3. Erfindung?
    1970er (Steele & Sussman). Scheme wurde erfunden, um CPS zu verstehen.