<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Continuation</id>
	<title>Continuation - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Continuation"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Continuation&amp;action=history"/>
	<updated>2026-05-25T11:51:38Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Continuation&amp;diff=2723419&amp;oldid=prev</id>
		<title>imported&gt;Freimut Bahlo: Grammatik korrigiert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Continuation&amp;diff=2723419&amp;oldid=prev"/>
		<updated>2022-08-21T09:44:22Z</updated>

		<summary type="html">&lt;p&gt;Grammatik korrigiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Dieser Artikel|behandelt das Konzept. Zum Jazzalbum von Sun Ra siehe [[Continuation (Album)]].}}&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;Continuation&amp;#039;&amp;#039;&amp;#039; ist ein abstraktes Konzept [[Höhere Programmiersprache|höherer]], insbesondere [[Funktionale Programmierung|funktionaler Programmiersprachen]]. Er bezeichnet den [[Kontrollstruktur|Kontrollzustand]] eines Programms zu einem bestimmten Zeitpunkt zu dessen [[Laufzeit (Informatik)|Laufzeit]]. Der Begriff &amp;#039;&amp;#039;Continuation&amp;#039;&amp;#039; entspricht daher näherungsweise dem Konzept des [[Prozesskontext]]s, allerdings schließt der Prozesskontext den aktuellen Zustand der Programmdaten, also z.&amp;amp;nbsp;B. die Werte lokaler und globaler Variablen mit ein.&lt;br /&gt;
&lt;br /&gt;
Zugriff auf Continuations ermöglicht es, den [[Kontrollfluss]] eines Programmes beliebig zu beeinflussen. So wird es möglich, ein Programm zu einem beliebigen Zeitpunkt anzuhalten und später fortzusetzen, oder das Programm an einer bestimmten Stelle in einen früheren Zustand zurückzuversetzen.&lt;br /&gt;
Diese Eigenschaft kommt auch im Namen &amp;#039;&amp;#039;Continuation&amp;#039;&amp;#039;, zu deutsch &amp;#039;&amp;#039;Fortsetzung&amp;#039;&amp;#039; zum Ausdruck.&lt;br /&gt;
Unter Verwendung von Continuations ist jede Art von [[Schleife (Programmierung)|Schleife]] simulierbar.&lt;br /&gt;
Der uneingeschränkte Zugriff auf die Continuation sowie eine Form einer [[Verzweigung (Programmierung)|bedingten Anweisung]] reichen bereits aus, um beliebige berechenbare Probleme zu lösen. Diese Fähigkeit ermöglicht einen eigenen Programmierstil, den sog. [[continuation-passing style]].&lt;br /&gt;
&lt;br /&gt;
Verschiedene Programmiersprachen unterstützen den Umgang mit Continuations, die bekanntesten Vertreter dabei sind verschiedene [[Lisp]]dialekte wie [[Scheme]]. Moderne objektorientierte Sprachen bieten mit Konzepten wie [[Ausnahmebehandlung]] eingeschränkte Möglichkeiten, auf die Continuation eines Programms zuzugreifen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Endliche Automaten ===&lt;br /&gt;
&lt;br /&gt;
In der [[Automatentheorie]], einem Teilbereich der [[Theoretische Informatik|theoretischen Informatik]], ist ein wesentliches theoretisches Konstrukt der [[Endlicher Automat|endliche Automat]].  Dieser befindet sich zu jedem Zeitpunkt in einem aus einer endlichen Menge möglicher Zustände. Dieser Zustand kann als die Continuation zum jeweiligen Zeitpunkt interpretiert werden.&lt;br /&gt;
&lt;br /&gt;
=== Moderne Mikroprozessoren ===&lt;br /&gt;
&lt;br /&gt;
Moderne Mikroprozessoren sind meist [[Registermaschine]]n.&lt;br /&gt;
Auf einer solchen Registermaschine stellt der Inhalt bestimmter [[Register (Computer)|Register]] zu einem gegebenen Zeitpunkt die Continuation des ausgeführten Prozesses zum jeweiligen Zeitpunkt dar.&lt;br /&gt;
Moderne Prozessoren machen sich dies zunutze, um zwischen mehreren [[Prozess (Informatik)|Prozess]]en hin- und herzuschalten und so den Eindruck zu erwecken, dass diese gleichzeitig ausgeführt werden. Steht ein solcher [[Kontextwechsel]] an, so sichert der Prozessor den Inhalt aller Register. Anschließend füllt er die Register mit Inhalten, die zu einem früheren Zeitpunkt aus den Registern gesichert wurden. Damit wird der Prozess, der zum Zeitpunkt des Sicherns aktiv war, an genau der Stelle fortgesetzt, an welcher er sich zum Zeitpunkt der Sicherung befand. Die Continuation wird hierbei durch den [[Befehlszähler]], zusammen mit dem Inhalt des [[Aufrufstapel]]s bzw. den Inhalt des [[Stapelzeiger]]s, repräsentiert.&lt;br /&gt;
&lt;br /&gt;
=== Continuations in Scheme ===&lt;br /&gt;
&lt;br /&gt;
Scheme behandelt Continuations als [[First-Class-Objekt]]e, d.&amp;amp;nbsp;h. Scheme macht es nicht nur möglich, auf die aktuelle Continuation zuzugreifen, sondern auch, diese Continuation in beliebigen Variablen abzulegen und Funktionen als Parameter zu übergeben. Scheme bietet dazu die Funktion &amp;lt;code&amp;gt;call/cc&amp;lt;/code&amp;gt;. Der folgende Code implementiert die [[Fakultät (Mathematik)|Fakultät]] mittels Continuations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;scheme&amp;quot;&amp;gt;&lt;br /&gt;
(define fac (lambda (x)&lt;br /&gt;
  (let ((a 1)&lt;br /&gt;
        (cont #f))&lt;br /&gt;
    (call/cc (lambda (k) (set! cont k) #t))&lt;br /&gt;
    (cond&lt;br /&gt;
      ((&amp;lt; x 2) a)&lt;br /&gt;
      (else&lt;br /&gt;
        (set! a (* a x))&lt;br /&gt;
        (set! x (- x 1))&lt;br /&gt;
        (cont))))))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei wird der Funktion &amp;lt;code&amp;gt;call/cc&amp;lt;/code&amp;gt; eine anonyme Funktion übergeben. &amp;lt;code&amp;gt;call/cc&amp;lt;/code&amp;gt; ruft diese Funktion mit der aktuellen Continuation auf, die anonyme Funktion speichert diese Continuation in der Variablen &amp;lt;code&amp;gt;cont&amp;lt;/code&amp;gt;. In der letzten Zeile wird mittels &amp;lt;code&amp;gt;(cont)&amp;lt;/code&amp;gt; die Continuation aufgerufen, der Programmfluss springt daher zu der Anweisung hinter dem Aufruf von &amp;lt;code&amp;gt;call/cc&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Continuation-Passing Style]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
&lt;br /&gt;
* {{Literatur&lt;br /&gt;
 | Autor= Christian Queinnec&lt;br /&gt;
 | Titel= Lisp in Small Pieces&lt;br /&gt;
 | Verlag= Cambridge University Press&lt;br /&gt;
 | Jahr=1994&lt;br /&gt;
 | ISBN=0-521-54566-8}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierkonzept]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Freimut Bahlo</name></author>
	</entry>
</feed>