Scheme
Aus LexiDict
Die Programmiersprache Scheme ist eine LISP-Variante. Sie unterstützt neben der funktionalen Programmierung auch eine Reihe anderer Paradigmen – wie z. B. die imperative Programmierung. Scheme liegt das Prinzip zugrunde, dass eine Programmiersprache nicht dadurch beschreibungsmächtig wird, dass man Feature über Feature häuft, sondern dadurch, dass man unnötige Einschränkungen entfernt. Beispielsweise gibt es im Scheme-Standard keine Hilfsmittel zur objektorientierten Programmierung, es ist aber dank Makros und λ-Ausdrücken sehr einfach, sich solche in der Sprache zu programmieren: Scheme ist eine programmierbare Programmiersprache, die von den Programmierern bei Bedarf sehr flexibel erweitert werden kann.
Entwickelt wurde Scheme von Gerald Jay Sussman und Guy Lewis Steele Jr. am Massachusetts Institute of Technology, wo auch die formale Spezifikation zur Verfügung steht, der so genannte Revised Report. Die derzeit aktuelle Spezifikation ist R6RS.
Drei wesentliche Merkmale unterscheiden Scheme von LISP. Zum einen gibt es in Scheme die Funktion call-with-current-continuation, die es erlaubt, die gegenwärtige Continuation des Programms anzusprechen oder an eine Variable zu binden. Damit ist es möglich, durch Aufrufen der in jener Variablen gespeicherten Continuation später im Programm an die Stelle dieser Continuation zurück zu springen. Zum anderen schreibt der Scheme-Standard proper tail recursion vor; das bedeutet, dass Prozeduraufrufe, die in einer endrekursiven Position stattfinden, keinen Speicherplatz auf dem Stack verbrauchen dürfen. Drittens sind Makros in Scheme im Gegensatz zu LISP „hygienisch“, was bedeutet, dass ihre Verwendung nicht die lexikalische Struktur der die Verwendung enthaltenden Ausdrücke verletzt, so dass einerseits die innerhalb eines Makros möglicherweise eingeführten Bindungen von Bezeichnern niemals die bereits in der lexikalischen Umgebung der Makroverwendung definierten Bindungen dieser Bezeichner überdecken und andererseits die innerhalb eines Makros verwendeten freien Bezeichner immer in der lexikalischen Umgebung der Makrodefinition aufgelöst werden statt in der lexikalischen Umgebung der Makroverwendung.
Weblinks
- www.schemers.org Materialsammlung zu Scheme
- The Original ‚Lambda Papers‘ by Guy Steele and Gerald Sussman
- SRFI (Scheme Request for Implementation) stellt eine Sammlung von Funktionalitäten bereit, die sich praktisch als Standard-Bibliothek für Scheme Implementierungen herausgebildet hat.
Dieser Artikel basiert auf dem Artikel Scheme aus der freien Enzyklopädie Wikipedia und steht unter der GNU-Lizenz für freie Dokumentation. In der Wikipedia ist eine Liste der Autoren verfügbar.












