www.wikidata.de-de.nina.az
Chicken ist ein Compiler und Interpreter fur die Programmiersprache Scheme der den Scheme Quelltext nach C ubersetzt Chicken ist weitestgehend R5RS 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 ChickenBasisdatenErscheinungsjahr 20 Juli 2000Aktuelle Version 5 3 0 18 November 2021 Betriebssystem PlattformunabhangigProgrammiersprache SchemeKategorie ProgrammierspracheLizenz BSDcall cc org Inhaltsverzeichnis 1 Design 2 Beschrankungen und Abweichungen vom Standard 3 Add on Software 4 Weblinks 5 EinzelnachweiseDesign BearbeitenWie viele Scheme Compiler verwendet auch Chicken die Programmiersprache C als Zwischencode Scheme Programme werden vom Chicken Compiler nach C ubersetzt und anschliessend von einem Standard C Compiler in die Maschinensprache des Zielsystems ubersetzt die dann ausgefuhrt werden kann Die weite Verbreitung von C Compilern erlaubt eine weitgehende Plattformunabhangigkeit Das Design von Chicken wurde inspiriert von einer Veroffentlichung von Henry G Baker aus dem Jahre 1994 in der ein innovativer Weg zur Ubersetzung von Scheme nach C beschrieben wurde 1 Hierbei wird ein Scheme Programm in C Funktionen ubersetzt die jedoch nicht zum Aufrufer zuruckkehren sondern stattdessen nach Beendigung eine sogenannte Continuation aufrufen Diese Continuations sind weitere C Funktionen die vom Chicken Compiler erzeugt werden und als Parameter an andere C Funktionen ubergeben werden Dies ist nichts anderes als der Continuation passing style formuliert in C Bakers neuartige Idee ist es den C Stack als Scheme Heap zu verwenden Daher konnen normale Stack Operation wie automatische Variablenerzeugung alloca Aufrufe zur Erzeugung von Arrays variabler Grosse und ahnliches verwendet werden Sobald der Stack voll ist wird eine Garbage Collection gestartet um den Stack wieder zu leeren Im Chicken Design wird ein Copying Garbage Collector verwendet der erstmals 1970 von C J Cheney beschrieben wurde 2 Hierbei werden alle noch verwendeten Scheme Objekte und Continuations auf den Heap verschoben es werden jedoch keine C Stack Frames verschoben wodurch Chicken ohne Kenntnis der zugrundeliegenden C Implementierung auskommt 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 endrekursive Verhalten erreicht werden ohne dass der Speicherbedarf ubermassig steigt Beschrankungen und Abweichungen vom Standard BearbeitenChicken Scheme ist weitestgehend R5RS konform Es werden andere Makros explicit renaming anstelle der Makros des Sprachstandards verwendet Add on Software BearbeitenEine grosse Anzahl zusatzlicher Libraries und Programme die sogenannten Eggs sind fur Chicken verfugbar Diese Eggs sind vergleichbar mit den Ruby Gems der Programmiersprache Ruby Weblinks BearbeitenChicken Scheme WebsiteEinzelnachweise Bearbeiten Henry Baker CONS Should Not CONS Its Arguments Part II Cheney on the M T A Memento des Originals vom 3 Marz 2006 imInternet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot home pipeline com ACM SIGPLAN Notices 30 1995 17 20 doi 10 1145 214448 214454 C J Cheney A Nonrecursive List Compacting Algorithm In CACM Band 13 Nr 11 1970 S 677 678 doi 10 1145 362790 362798 Abgerufen von https de wikipedia org w index php title Chicken Scheme amp oldid 237186569