<?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=Chicken_%28Scheme%29</id>
	<title>Chicken (Scheme) - 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=Chicken_%28Scheme%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Chicken_(Scheme)&amp;action=history"/>
	<updated>2026-06-12T09:40:18Z</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=Chicken_(Scheme)&amp;diff=1635298&amp;oldid=prev</id>
		<title>imported&gt;Phzh: Form, typo</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Chicken_(Scheme)&amp;diff=1635298&amp;oldid=prev"/>
		<updated>2025-10-16T10:43:00Z</updated>

		<summary type="html">&lt;p&gt;Form, typo&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
|Name                 = Chicken&lt;br /&gt;
|Logo                 = [[Datei:Chicken Scheme logo and wordmark.svg|rahmenlos|hochkant|Logo]]&lt;br /&gt;
|Hersteller           = Felix Winkelmann&lt;br /&gt;
|AktuelleVersion      = 5.4.0&lt;br /&gt;
|AktuelleVersionFreigabeDatum = 16. Juli 2024&lt;br /&gt;
|Betriebssystem       = [[Plattformunabhängig]]&lt;br /&gt;
|Kategorie            = [[Programmiersprache]]&lt;br /&gt;
|Lizenz               = [[BSD-Lizenz|BSD]]&lt;br /&gt;
|Website              = [http://www.call-cc.org/ call-cc.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Chicken&amp;#039;&amp;#039;&amp;#039; ist ein [[Compiler]] und [[Interpreter]] für die Programmiersprache [[Scheme]], der den Scheme-Quelltext nach [[C (Programmiersprache)|C]] übersetzt. Chicken ist weitestgehend R&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;RS konform und bietet viele Erweiterungen zu diesem Standard. Es handelt sich um [[freie Software]], die unter einer [[BSD-Lizenz]] vertrieben wird. Der Autor ist Felix Winkelmann.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
Wie viele Scheme-Compiler verwendet auch Chicken die Programmiersprache C als [[Zwischencode]]. Scheme-[[Computerprogramm|Programme]] werden vom Chicken-Compiler nach C übersetzt und anschließend von einem Standard-C-Compiler in die [[Maschinensprache]] des Zielsystems übersetzt, die dann ausgeführt werden kann. Die weite Verbreitung von C-Compilern erlaubt eine weitgehende [[Plattformunabhängigkeit]].&lt;br /&gt;
&lt;br /&gt;
Das Design von Chicken wurde inspiriert von einer Veröffentlichung von [[Henry G. Baker]] aus dem Jahre 1994, in der ein innovativer Weg zur Übersetzung von Scheme nach C beschrieben wurde.&amp;lt;ref name=&amp;quot;Baker1994&amp;quot;&amp;gt;Henry Baker: &amp;#039;&amp;#039;{{Webarchiv |url=http://home.pipeline.com/~hbaker1/CheneyMTA.html |text=CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A. |wayback=20060303155622 |archiv-bot=2022-10-17 14:37:12 InternetArchiveBot}}&amp;#039;&amp;#039;, ACM SIGPLAN Notices 30, (1995), 17–20, [[doi:10.1145/214448.214454]]&amp;lt;/ref&amp;gt; Hierbei wird ein Scheme-Programm in C-Funktionen übersetzt, die jedoch nicht zum Aufrufer zurückkehren, sondern stattdessen nach Beendigung eine sogenannte [[Continuation]] aufrufen. Diese Continuations sind weitere C-Funktionen, die vom Chicken-Compiler erzeugt werden und als [[Parameter (Informatik)|Parameter]] an andere C-Funktionen übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Dies ist nichts anderes als der [[Continuation-passing style]], formuliert in C. Bakers neuartige Idee ist es, den C-[[Stapelspeicher|Stack]] als Scheme-[[Dynamischer Speicher|Heap]] zu verwenden. Daher können normale Stack-Operation wie automatische Variablenerzeugung, &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;alloca&amp;lt;/span&amp;gt;-Aufrufe zur Erzeugung von Arrays variabler Größe und ähnliches verwendet werden. Sobald der Stack voll ist, wird eine [[Garbage Collection]] gestartet, um den Stack wieder zu leeren. Im Chicken-Design wird ein &amp;#039;&amp;#039;Copying Garbage Collector&amp;#039;&amp;#039; verwendet, der erstmals 1970 von C. J. Cheney beschrieben wurde.&amp;lt;ref&amp;gt;{{Literatur |Autor=C. J. Cheney |Titel=A Nonrecursive List Compacting Algorithm |Sammelwerk=CACM |Band=13 |Nummer=11 |Datum=1970 |Seiten=677-678 |DOI=10.1145/362790.362798}}&amp;lt;/ref&amp;gt; Hierbei werden alle noch verwendeten Scheme-Objekte und Continuations auf den Heap verschoben, es werden jedoch &amp;#039;&amp;#039;keine&amp;#039;&amp;#039; C-Stack-Frames verschoben, wodurch Chicken ohne Kenntnis der zugrundeliegenden C-Implementierung auskommt.&lt;br /&gt;
&lt;br /&gt;
Dieser Ansatz gibt vielen Operationen die Geschwindigkeit von normalen Stack-Operationen, insbesondere das Aufrufen der Continuations ist ein einfacher Funktionsaufruf. Weiterhin kann hierbei das von Scheme geforderte [[Endrekursion|endrekursive]] Verhalten erreicht werden, ohne dass der Speicherbedarf übermäßig steigt.&lt;br /&gt;
&lt;br /&gt;
== Beschränkungen und Abweichungen vom Standard ==&lt;br /&gt;
&lt;br /&gt;
Chicken Scheme ist weitestgehend R&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;RS-konform. Es werden andere Makros (&amp;#039;&amp;#039;explicit renaming&amp;#039;&amp;#039;) anstelle der Makros des Sprachstandards verwendet.&lt;br /&gt;
&lt;br /&gt;
== Add-on-Software ==&lt;br /&gt;
Eine große Anzahl zusätzlicher Libraries und Programme, die sogenannten &amp;#039;&amp;#039;Eggs&amp;#039;&amp;#039;, sind für Chicken verfügbar. Diese Eggs sind vergleichbar mit den &amp;#039;&amp;#039;Ruby Gems&amp;#039;&amp;#039; der Programmiersprache [[Ruby (Programmiersprache)|Ruby]].&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.call-cc.org/ Chicken Scheme Website]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lisp]]&lt;br /&gt;
[[Kategorie:Freies Programmierwerkzeug]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Phzh</name></author>
	</entry>
</feed>