<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Lisp</id>
	<title>Lisp - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Lisp"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Lisp&amp;action=history"/>
	<updated>2026-05-17T17:53:59Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=Lisp&amp;diff=2038&amp;oldid=prev</id>
		<title>imported&gt;Joswig: /* Datentypen */ Atomic Symbols : &quot;The symbols are atomic in the sense that any substructure they may have as sequences of characters is ignored.&quot; - https://www-formal.stanford.edu/jmc/recursive/node3.html</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Lisp&amp;diff=2038&amp;oldid=prev"/>
		<updated>2025-08-31T21:54:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Datentypen: &lt;/span&gt; Atomic Symbols : &amp;quot;The symbols are atomic in the sense that any substructure they may have as sequences of characters is ignored.&amp;quot; - https://www-formal.stanford.edu/jmc/recursive/node3.html&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Dieser Artikel|behandelt die Programmiersprache. Zur Routing-Architektur LISP siehe [[Locator/Identifier Separation Protocol]].}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Programmiersprache&lt;br /&gt;
| Name = Lisp&lt;br /&gt;
| Logo = [[Datei:Cons-Cell.svg|rahmenlos|Die Cons-Zelle ist der elementare Baustein sowohl für Programme als auch für Daten in Lisp.]]&lt;br /&gt;
| Beschreibung = Die Cons-Zelle ist der elementare Baustein sowohl für Programme als auch für Daten in Lisp.&lt;br /&gt;
| Dialekte = [[Common Lisp]], [[Scheme]], [[Emacs Lisp]] und viele weitere&lt;br /&gt;
| Erscheinungsjahr = 1958&lt;br /&gt;
| Designer = [[John McCarthy]]&lt;br /&gt;
| Entwickler = Steve Russell, Timothy P. Hart, Mike Levin&lt;br /&gt;
| Typisierung = [[Dynamische Typisierung|dynamisch]]&lt;br /&gt;
| Beeinflusst_von = [[Lambda-Kalkül]], [[Fortran]], [[Information Processing Language|IPL]]&lt;br /&gt;
| Beeinflusste = [[Logo (Programmiersprache)|Logo]], [[Perl (Programmiersprache)|Perl]], [[Smalltalk (Programmiersprache)|Smalltalk]], [[Clojure]], [[Python (Programmiersprache)|Python]], [[Reverse Polish LISP|RPL]], [[Ruby (Programmiersprache)|Ruby]], [[Dylan (Programmiersprache)|Dylan]], [[Mathematica]], [[REBOL]], [[Haskell (Programmiersprache)|Haskell]], [[Snap! (Programmiersprache)|Snap! / BYOB]]&lt;br /&gt;
| Paradigma = multiparadigmatisch: [[Funktionale Programmierung|funktional]], [[Prozedurale Programmierung|prozedural]]; manche Dialekte außerdem [[Modulare Programmierung|modular]], [[Objektorientierte Programmierung|objektorientiert]], [[Reflexion (Programmierung)|reflexiv]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lisp&amp;#039;&amp;#039;&amp;#039; ist eine Familie von [[Programmiersprache]]n, die 1958 erstmals spezifiziert wurde und am [[Massachusetts Institute of Technology]] (MIT) in Anlehnung an den ungetypten [[Lambda-Kalkül]] entstand. Es ist nach [[Fortran]] die zweitälteste Programmiersprache, die noch verbreitet ist.&lt;br /&gt;
&lt;br /&gt;
Auf Basis von Lisp entstanden zahlreiche [[Dialekt#Dialekte bei Programmiersprachen|Dialekte]]. Zu den bekanntesten zählen [[Common Lisp]] und [[Scheme]]. Daher bezieht sich der Begriff &amp;#039;&amp;#039;Lisp&amp;#039;&amp;#039; oft auf die Sprachfamilie und nicht auf einen konkreten Dialekt oder eine konkrete [[Implementierung]].&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
[[Datei:LISP machine.jpg|mini|Eine [[Lisp-Maschine]] im MIT-Museum]]&lt;br /&gt;
Lisp steht für &amp;#039;&amp;#039;&amp;#039;Lis&amp;#039;&amp;#039;&amp;#039;t &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;rocessor (Listen Prozessor). Damit waren ursprünglich [[Fortran]]-Unterprogramme gemeint, mit denen symbolische Berechnungen durchgeführt werden sollten, wie sie der [[Lambda-Kalkül]] definiert. Steve Russell, einer der Studenten von [[John McCarthy]], kam dann auf die fundamentale Idee, auf Grundlage dessen Formulierung eines „Lisp-Interpreters in Lisp“ einen [[Interpreter]] für diese Ausdrücke für die [[IBM 704]] zu schreiben. Damit war die Programmiersprache Lisp geboren.&lt;br /&gt;
&lt;br /&gt;
Die Grund[[datenstruktur]]en von Lisp sind Einzelwerte (z.&amp;amp;nbsp;B. Symbole, Zahlen, Zeichenketten), die &amp;#039;&amp;#039;[[#Datentypen|Atome]]&amp;#039;&amp;#039; genannt werden, und Cons-Zellen, aus denen [[Liste (Datenstruktur)|Listen]] gebildet werden. Die Listen können beliebig verschachtelt werden &amp;#039;&amp;#039;(Listen von Listen)&amp;#039;&amp;#039;. Damit lassen sich auch leicht Datenstrukturen wie ein [[Assoziatives Datenfeld|assoziatives Array]] implementieren. Listen werden zur Darstellung in Lisp in runde Klammern gefasst:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(A B C)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch Programmanweisungen sind (verschachtelte) Listen, bei denen das jeweils erste Listenelement die auszuführende Funktion identifiziert. Es gibt somit keinen grundsätzlichen Unterschied zwischen Daten und Programmen; diese Eigenschaft wird [[Homoikonizität]] genannt. Der Programmierer kann so beispielsweise neue [[Kontrollstruktur]]en oder Objektsysteme ([[Objektorientierte Programmierung|OOP]]) entwickeln ([[Metaprogrammierung]], [[Makro]]s). Es ermöglicht aber auch Programmteile zur Laufzeit beliebig zu manipulieren.&lt;br /&gt;
&lt;br /&gt;
Lisp bietet dem Programmierer große Flexibilität und weitreichende Einflussmöglichkeiten, weshalb es manchmal auch als &amp;#039;&amp;#039;programmierbare Programmiersprache&amp;#039;&amp;#039; bezeichnet wird. Datenstrukturen werden dynamisch aufgebaut, ohne dass der Programmierer explizit Speicherplatz reservieren oder freigeben muss (siehe auch [[Garbage Collection]]). Deklarationen für Datentypen sind optional  und ein Lisp-Symbol kann als Variable für beliebige Arten von Objekten stehen. Viele dieser Eigenschaften sind im Laufe der Zeit in weitere Programmiersprachen übernommen worden. Anfang der 1960er waren sie jedoch ihrer Zeit weit voraus.&lt;br /&gt;
&lt;br /&gt;
In den 1970er und 1980er Jahren wurden spezielle [[Lisp-Maschine]]n entwickelt und vertrieben. Diese ermöglichten das schnelle Ausführen von Lisp-Programmen, was auf damaligen allgemeinen Computern nur unter dem Verzicht auf [[Typisierung (Informatik)|Typüberprüfung]] und automatische Speicherbereinigung möglich war. Dies hat sich durch schnellere Computer jedoch geändert.&lt;br /&gt;
&lt;br /&gt;
Programme in Lisp können interpretiert oder von einem [[Compiler]] in effizienten Code übersetzt werden. Typische Compiler sind Batch-Compiler oder inkrementelle Compiler. Inkrementelle Compiler können einzelne Ausdrücke übersetzen. Batch-Compiler übersetzen einzelne Lisp-Dateien oder ganze Lisp-Programme. Compiler übersetzen entweder in einen [[Bytecode]] für eine [[virtuelle Maschine]], in andere Programmiersprachen (oft in C) für die weitere Übersetzung oder in [[Maschinensprache|Maschinencode]] für einen [[Prozessor]].&lt;br /&gt;
&lt;br /&gt;
Das [[Akronym]] &amp;#039;&amp;#039;LISP&amp;#039;&amp;#039; wird manchmal scherzhaft als „Lots of Irritating Superfluous Parentheses“ (eine Menge lästiger, überflüssiger Klammern) interpretiert.&lt;br /&gt;
&lt;br /&gt;
== Bedeutung ==&lt;br /&gt;
Historisch gesehen gehört Lisp zusammen mit [[Prolog (Programmiersprache)|Prolog]] zu den wichtigsten Programmiersprachen der [[Künstliche Intelligenz|künstlichen Intelligenz]]. Durch Lisp ist erstmals der Lambda-Kalkül zum Kern einer Programmiersprache gemacht worden. Dieser ist ein wesentliches Element der Semantik vieler moderner Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
Im Unterschied zu Europa, wo Programmiersprachen wie [[Assemblersprache|Assembler]], [[Fortran]] oder [[Pascal (Programmiersprache)|Pascal]] als klassische Vertreter der Familie der [[Prozedurale Programmierung|prozeduralen Programmiersprachen]] gelehrt wurden, war und ist zum Teil bis heute in den Vereinigten Staaten Lisp, bzw. einer seiner moderneren Dialekte wie [[Scheme]], die erste gelehrte Programmiersprache. Das hatte einen großen Einfluss, da es sich bei den klassischen Vertretern der prozeduralen Sprachfamilien um Vertreter einer &amp;#039;&amp;#039;statischen&amp;#039;&amp;#039; Verarbeitungsweise von Daten handelt, während unter anderem Lisp ein strikt &amp;#039;&amp;#039;dynamisches&amp;#039;&amp;#039; Konzept vertritt.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
Lisp benutzt [[#Symbolische Ausdrücke|S-Expressions]] als externes Format, um sowohl [[Quelltext]] als auch Daten darzustellen. Funktions- und Makroaufrufe werden als Listen geschrieben, die als erstes Element den Namen der Funktion bzw. des Makros enthalten. Kommentare werden mit einem oder mehreren &amp;lt;code lang=&amp;quot;lisp&amp;quot;&amp;gt;;&amp;lt;/code&amp;gt; eingeleitet.&lt;br /&gt;
&lt;br /&gt;
Beispiele in Common Lisp:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
;; Addiere 2 und 3 und 4:&lt;br /&gt;
(+ 2 3 4)&lt;br /&gt;
&lt;br /&gt;
;; Setze die Variable p auf den Wert 3,1415:&lt;br /&gt;
(setf p 3.1415)&lt;br /&gt;
&lt;br /&gt;
;; Definiere eine Funktion, die ihr Argument quadriert:&lt;br /&gt;
(defun square (x)&lt;br /&gt;
  (* x x))&lt;br /&gt;
&lt;br /&gt;
;; Quadriere die Zahl 3:&lt;br /&gt;
(square 3)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LISP-[[Hallo-Welt-Programm]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lisp&amp;quot;&amp;gt;&lt;br /&gt;
(princ &amp;quot;Hello, world!&amp;quot;)&lt;br /&gt;
(terpri)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;code&amp;gt;(terpri)&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |autor=Foldoc Jargon File |url=http://foldoc.org/terpri |titel=Herkunft des Schlüsselworts terpri |abruf=2010-12-02}}&amp;lt;/ref&amp;gt; erfolgt ein [[Zeilenumbruch]].&lt;br /&gt;
&lt;br /&gt;
== Minimaler Funktionsumfang für Lisp ==&lt;br /&gt;
Um ein minimales Lisp-System zu implementieren, sind nur sehr wenige Operatoren und ein allgemeiner Mechanismus zur Funktionsdefinition nötig.&lt;br /&gt;
Die folgenden Funktionen sind im ursprünglichen Bericht von McCarthy enthalten:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;first&amp;lt;/code&amp;gt; (gibt das erste Element einer Liste zurück; hieß ursprünglich &amp;lt;code&amp;gt;car&amp;lt;/code&amp;gt; (von Contents of Address Part of Register))&lt;br /&gt;
* &amp;lt;code&amp;gt;rest&amp;lt;/code&amp;gt; (gibt die Restliste (ohne das erste Element) zurück; hieß ursprünglich &amp;lt;code&amp;gt;cdr&amp;lt;/code&amp;gt; (von Contents of Decrement Part of Register))&lt;br /&gt;
* &amp;lt;code&amp;gt;cons&amp;lt;/code&amp;gt; (Erzeugt aus zwei [[Zeiger (Informatik)|Zeigern]] ein CONS-Paar und gibt einen Zeiger auf dieses zurück. Kann zum Beispiel verwendet werden, um ein Element an den Anfang einer Liste anzufügen) (von CONStruct)&lt;br /&gt;
* &amp;lt;code&amp;gt;quote&amp;lt;/code&amp;gt; (verhindert die Auswertung des nachfolgenden Objekts)&lt;br /&gt;
* &amp;lt;code&amp;gt;eq&amp;lt;/code&amp;gt; (Test auf Identität zweier oder mehrerer Objekte)&lt;br /&gt;
* &amp;lt;code&amp;gt;cond&amp;lt;/code&amp;gt; (bedingte Ausführung: Übernimmt eine beliebig lange Liste von Paaren, die jeweils aus einer Bedingung und einer Berechnungsvorschrift bestehen. Gibt das Auswertungsergebnis der ersten Berechnungsvorschrift zurück, deren zugehörige Bedingung wahr ist)&lt;br /&gt;
* Mechanismus zur Funktionsdefinition &amp;lt;code&amp;gt;[[Anonyme Funktion|lambda]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bereits mit diesen Sprachmitteln kann ein bemerkenswerter Teil der Funktionen, die übliche Lisp-Systeme mitbringen, definiert werden.&lt;br /&gt;
&lt;br /&gt;
== Datentypen ==&lt;br /&gt;
[[Datei:Cons-Cell.svg|mini|Cons-Zelle als allgegenwärtige ikonographische Darstellung in der LISP-Literatur.]]&lt;br /&gt;
In der Originalversion von Lisp gab es zwei grundsätzliche Arten [[Datentyp]]en: Atomare Symbole und [[Liste (Datenstruktur)|Listen]]. Atomare Symbole hießen so, weil sie nicht zerlegt werden konnten.&lt;br /&gt;
&lt;br /&gt;
Listen waren Sequenzen von Elementen, wobei diese Elemente Atome oder Unterlisten sein konnten. Die Listen selbst wurden aus Cons-Zellen, einem Paar von Zeigern, gebildet, dessen erste Komponente auf das Element verweist, die zweite aber auf den Rest der Liste. Die leere Liste bzw. das Ende der Liste wird durch das Atom &amp;#039;NIL&amp;#039; präsentiert. Die Zellen wurden in der Literatur wie rechts gezeigt visualisiert und dienten zusammengenommen als [[#Symbolische Ausdrücke|S-Ausdrücke]] auch zur Darstellung des LISP-Quelltexts selbst.&lt;br /&gt;
&lt;br /&gt;
Ein Atom war entweder eine Zahl oder ein Symbol. Ein Symbol war eine alphanumerische Zeichenkette, die als Variablenname oder Datenelement beim symbolischen Rechnen verwendet wurde.&lt;br /&gt;
&lt;br /&gt;
Intern wurde ein Symbol-Atom nur einmal in der [[Symboltabelle]] abgespeichert. Zwei Symbolatome, die gleich geschrieben wurden und an verschiedenen Stellen im Quelltext vorkamen, repräsentierten dasselbe Objekt.&lt;br /&gt;
&lt;br /&gt;
Später wurden in den Lisp-Dialekten weitere Datentypen eingeführt, und das Konzept der Lisp-Atome verlor an Bedeutung.&lt;br /&gt;
&lt;br /&gt;
=== Symbolische Ausdrücke ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;float-right wikitable infobox&amp;quot;&lt;br /&gt;
|align=center style=&amp;quot;background:#e0e0ff&amp;quot;|&amp;#039;&amp;#039;&amp;#039;Symbolische Ausdrücke&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;&lt;br /&gt;
  \begin{array}{lrlll}&lt;br /&gt;
 Sexp &amp;amp; =     &amp;amp; Atom               &amp;amp; \textrm{atom}\\&lt;br /&gt;
      &amp;amp; \vert &amp;amp; ( List )           &amp;amp; \textrm{list}\\&lt;br /&gt;
 List &amp;amp; =     &amp;amp;                    &amp;amp; \textrm{nil }\\&lt;br /&gt;
       &amp;amp; \vert &amp;amp; Sexp \,\, List    &amp;amp; \textrm{cons}\\&lt;br /&gt;
  \end{array}&lt;br /&gt;
  &amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Denotation der Lisp-Daten entsprechend der rechts gezeigten Grammatik eröffnet die Möglichkeit, diese Syntax selbst zu verwenden, um Lisp-Programme als Lisp-Daten (S-Ausdrücke, S-Expressions) niederzuschreiben.&lt;br /&gt;
&lt;br /&gt;
Umgekehrt kann diese sehr einfache Grammatik verwendet werden, um sowohl Daten als auch Programme einzulesen und zu bearbeiten oder zu interpretieren.&lt;br /&gt;
&lt;br /&gt;
John McCarthy beschreibt die Weise der Niederschrift von Programmen im Abschnitt 1.6 (A Universal LISP Function) des Lisp-Handbuchs, womit zugleich auch ein Lisp-Interpreter in Lisp selbst angegeben wird.&lt;br /&gt;
&lt;br /&gt;
[[Datei:S-Expression drawing example representing &amp;#039;(defun square (x) (* x x))&amp;#039;.svg|gerahmt|zentriert|Beispiel für die Präsentation der Definition &amp;#039;(defun square (x) (* x x))&amp;#039;.]]&lt;br /&gt;
&lt;br /&gt;
Diese enge Verzahnung der Repräsentation von Programmen und Daten stellt eine besondere Charakteristik der Lisp-Programmierung dar.&lt;br /&gt;
&lt;br /&gt;
== Zitate ==&lt;br /&gt;
{{Zitat&lt;br /&gt;
 |Text=Lisp is a programmable programming language.&lt;br /&gt;
 |Sprache=en&lt;br /&gt;
 |Autor=John Foderaro&lt;br /&gt;
 |Quelle=[[Communications of the ACM|CACM]], September 1991&lt;br /&gt;
 |Übersetzung=Lisp ist eine programmierbare Programmiersprache.&lt;br /&gt;
 |ref=&amp;lt;ref&amp;gt;[http://www.paulgraham.com/chameleon.html &amp;#039;&amp;#039;Lisp is a Chameleon&amp;#039;&amp;#039;.] paulgraham.com&amp;lt;/ref&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Zitat&lt;br /&gt;
 |Text=Lisp seems to be a lucky discovery of a local maximum in the space of programming languages.&lt;br /&gt;
 |Sprache=en&lt;br /&gt;
 |Autor=John McCarthy&lt;br /&gt;
 |Quelle=[https://letoverlambda.com/index.cl/guest/chap1.html Let Over Lambda]&lt;br /&gt;
 |Übersetzung=Lisp scheint die glückliche Entdeckung eines [[Extremwert|lokalen Maximums]] in der Menge der Programmiersprachen zu sein.}}&lt;br /&gt;
&lt;br /&gt;
== Lisp-Dialekte ==&lt;br /&gt;
&lt;br /&gt;
=== Historisch relevante Dialekte ===&lt;br /&gt;
&amp;lt;!-- nur diese Liste bitte chronologisch ordnen --&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;LISP 1.5&amp;#039;&amp;#039; war die erste Lisp-Version, die über das MIT hinaus verbreitet wurde und enthält die erste funktionsfähige Quelle einer Lisp-Implementierung.&lt;br /&gt;
* [[Maclisp]] war ein weit verbreiteter und einflussreicher Vorläufer von Common Lisp und die ursprüngliche Implementationssprache des [[Computeralgebrasystem]]s [[Macsyma]].&lt;br /&gt;
* &amp;#039;&amp;#039;InterLisp&amp;#039;&amp;#039; entwickelte sich ab 1967 aus &amp;#039;&amp;#039;BBN-Lisp&amp;#039;&amp;#039; und wurde zu &amp;#039;&amp;#039;Interlisp-D&amp;#039;&amp;#039; weiterentwickelt, das ein komplettes Entwicklungssystem für die [[Lisp-Maschine]] [[Xerox Alto|Xerox Dolphin]] bildete. 1992 verlieh die [[Association for Computing Machinery|ACM]] den Software System Award an [[Daniel G. Bobrow]], Richard R. Burton, [[L Peter Deutsch]], Ronald Kaplan, Larry Masinter und Warren Teitelman für ihre Pionierarbeit an InterLisp.&lt;br /&gt;
* &amp;#039;&amp;#039;ZetaLisp&amp;#039;&amp;#039; (auch &amp;#039;&amp;#039;Lisp Machine Lisp&amp;#039;&amp;#039; genannt) ist eine Weiterentwicklung von Maclisp und lief auf verschiedenen [[Lisp-Maschine]]n. Auf Basis dieses Dialekts wurde [[Flavors (Programmiersprache)|Flavors]], die erste [[Objektorientierte Programmierung|objektorientierte]] Erweiterung, entwickelt.&lt;br /&gt;
* &amp;#039;&amp;#039;Franz Lisp&amp;#039;&amp;#039; wurde 1978 aus MacLisp entwickelt, um auf einer [[Virtual Address eXtension|VAX]] das Computeralgebrasystem Macsyma laufen zu lassen. Es fand weite Verbreitung, weil es mit [[Berkeley Software Distribution|BSD]] [[Unix]] ausgeliefert wurde. Später wurde die Firma Franz Inc. gegründet, um dieses Lisp zu pflegen. Seit Mitte der 80er Jahre verkauft Franz Inc. aber eine Common-Lisp-Implementierung (Allegro CL).&lt;br /&gt;
* &amp;#039;&amp;#039;[[XLISP]]&amp;#039;&amp;#039; ist ein LISP mit objektorientierten Erweiterungen, das auch auf schwächeren Computern lief. Eine bekannte Anwendung ist das Statistikpaket XLispStat.&lt;br /&gt;
* &amp;#039;&amp;#039;EuLisp&amp;#039;&amp;#039; war ein europäischer Versuch, ein aufgeräumtes und einheitliches Lisp zu definieren.&lt;br /&gt;
* &amp;#039;&amp;#039;ISLisp&amp;#039;&amp;#039; ist ein [[Internationale Organisation für Normung|ISO]]-standardisierter, kompakter Lisp-Dialekt, der sich für die Programmierung [[Eingebettetes System|eingebetteter Systeme]] eignet.&lt;br /&gt;
* &amp;#039;&amp;#039;Portable Standard Lisp&amp;#039;&amp;#039; und das sogenannte &amp;#039;&amp;#039;Standard Lisp&amp;#039;&amp;#039; wurden ab 1980 an der [[University of Utah]] entwickelt und vor allem für das Computeralgebrasystem [[Reduce (Computeralgebrasystem)|Reduce]] genutzt. Darin war es in einer [[ALGOL]]-artigen Syntax als Skriptsprache &amp;#039;&amp;#039;RLISP&amp;#039;&amp;#039; nutzbar.&lt;br /&gt;
* &amp;#039;&amp;#039;S-1 Lisp&amp;#039;&amp;#039; war ein Lisp für den [[Supercomputer]] S-1 Mark IIA.&lt;br /&gt;
&lt;br /&gt;
=== Später verbreitete Dialekte ===&lt;br /&gt;
* [[Common Lisp]] ist der umfangreichste und in der Praxis am häufigsten eingesetzte Lisp-Dialekt. Er ist [[American National Standards Institute|ANSI]]-standardisiert und bietet Unterstützung für prozedurale Makros, lexikalische wie dynamische Variablenbindung und vieles mehr. Der Name erinnert an die Absicht, mehrere inkompatible Bestrebungen zu vereinigen, einen Nachfolger für [[Maclisp]] zu finden (&amp;#039;&amp;#039;ZetaLisp&amp;#039;&amp;#039;, [[CMU Common Lisp|Spice Lisp]], &amp;#039;&amp;#039;NIL&amp;#039;&amp;#039; und &amp;#039;&amp;#039;S-1 Lisp&amp;#039;&amp;#039;). Weitere Einflüsse waren &amp;#039;&amp;#039;InterLisp&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Scheme&amp;#039;&amp;#039;.&lt;br /&gt;
* [[Scheme]] ist eine minimale und elegante Variante, die u.&amp;amp;nbsp;a. [[Continuation]]s unterstützt. Im Gegensatz zu Common Lisp kennt sie nur lexikalische Variablenbindung und hygienische Makros. Sie findet aufgrund ihrer Einfachheit häufig in der Lehre Gebrauch, obgleich auch produktive Programmierung mit ihr möglich ist und praktiziert wird.&lt;br /&gt;
* [[Clojure]] ist ein Lisp-Dialekt, der auf der [[Java Virtual Machine]] läuft und [[Interoperabilität]] zu [[Java (Programmiersprache)|Java]] bietet.&lt;br /&gt;
* [[Emacs Lisp]] ist die [[Skriptsprache]] des [[Texteditor]]s [[Emacs|GNU Emacs]].&lt;br /&gt;
&lt;br /&gt;
=== Dialekte für besondere Zwecke ===&lt;br /&gt;
* [[AutoLISP]] ist die auf einer frühen Version von XLISP basierende Skriptsprache für das CAD-System [[AutoCAD]].&lt;br /&gt;
* &amp;#039;&amp;#039;librep&amp;#039;&amp;#039; oder kurz &amp;#039;&amp;#039;rep&amp;#039;&amp;#039; ist eine Skriptsprache für [[Unixoides System|unixartige Systeme]] und orientierte sich anfangs an &amp;#039;&amp;#039;Emacs Lisp&amp;#039;&amp;#039;, hat aber [[Variable (Programmierung)#Sichtbarkeitsbereich von Variablen (Scope)|lexikalische statt dynamischer Variablenbindung]]. Der [[Fenstermanager]] [[Sawfish]] wurde in rep geschrieben.&lt;br /&gt;
* [[muLISP]] läuft unter [[CP/M]] und [[MS-DOS]] sowie auf einigen [[Programmierbarer Taschenrechner|programmierbaren Taschenrechnern]]. Es wurde benutzt, um das Computeralgebrasystem [[Derive]] zu implementieren.&lt;br /&gt;
* [[Nyquist (Programmiersprache)|Nyquist]] ist eine Sprache für [[Klangsynthese]] und -analyse und basiert auf XLISP.&lt;br /&gt;
* [[Racket (Programmiersprache)|Racket]] ist ein vorrangig für die Entwicklung von Programmiersprachen konzipierter Scheme-Dialekt.&lt;br /&gt;
* [[Reverse Polish LISP|RPL]] läuft auf programmierbaren Taschenrechnern, insbesondere auf solchen von [[HP Inc.|Hewlett-Packard]]. Es handelt sich dabei um eine Lisp-Version, die mit der [[Umgekehrte polnische Notation|umgekehrten polnischen Notation]] vermischt wurde.&lt;br /&gt;
* [[System Management Language]] ist erweitert um Sprachstrukturen zur objekt- und [[Ereignis (Programmierung)|ereignisorientierten]] Programmierung. Sie enthält [[Programmierschnittstelle|APIs]] für [[Motif|X/Motif]], [[Content Management Interoperability Services|CMIS]] und weitere.&lt;br /&gt;
&lt;br /&gt;
=== Neuere Entwicklungen ===&lt;br /&gt;
* &amp;#039;&amp;#039;Arc&amp;#039;&amp;#039; ist ein von [[Paul Graham]] und [[Robert Tappan Morris|Robert Morris]] entwickelter Dialekt.&amp;lt;ref&amp;gt;[http://arclanguage.org/ &amp;#039;&amp;#039;Arc Forum&amp;#039;&amp;#039;], abgerufen am 6. November 2016.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[NewLISP]] ist eine [[Skriptsprache]]&amp;lt;ref&amp;gt;[http://www.newlisp.org/index.cgi?FAQ About newLISP]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;Hy&amp;#039;&amp;#039; ist ein Lisp-Dialekt, der eng mit Python verzahnt ist.&lt;br /&gt;
* &amp;#039;&amp;#039;lfe&amp;#039;&amp;#039; ist ein Lisp-Dialekt für die [[Erlang (Programmiersprache)|Erlang VM]]&amp;lt;ref&amp;gt;{{Internetquelle |url=http://lfe.io/ |titel=(lisp (flavoured (erlang))) |abruf=2019-07-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur |Autor=[[John McCarthy]] |Titel=LISP 1.5: Programmer&amp;#039;s Manual |Verlag=The MIT Press |Ort=Cambridge, Mass. |Datum=1962 |Umfang=106}}&lt;br /&gt;
&lt;br /&gt;
* {{Literatur |Autor=Anthony C. Hearn |Titel=Standard LISP |Verlag=University |Ort=Stanford, Calif. |Datum=1969}}&lt;br /&gt;
&lt;br /&gt;
* Walter Sonnenberg: &amp;#039;&amp;#039;Anwendung von Lisp zur Definition und Implementierung Algolähnlicher Programmiersprachen.&amp;#039;&amp;#039; Universität Karlsruhe, 1970.&lt;br /&gt;
&lt;br /&gt;
* {{Literatur |Hrsg=John McCarthy, Carolyn L. Talcott |Titel=LISP: Programming and proving |Verlag=Stanford University |Ort=Stanford |Datum=1978}}&lt;br /&gt;
&lt;br /&gt;
* {{Literatur |Autor=[[Herbert Stoyan]] |Titel=LISP-Programmierhandbuch: Eine Sprache für die nichtnumerische Informationsverarbeitung |Verlag=Akademie-Verlag |Ort=Berlin |Datum=1978 |Umfang=208}}&lt;br /&gt;
&lt;br /&gt;
* John Allen: &amp;#039;&amp;#039;Anatomy of Lisp&amp;#039;&amp;#039;. McGraw-Hill, 1978, ISBN 0-07-001115-X.&lt;br /&gt;
&lt;br /&gt;
* {{Literatur |Autor=Herbert Stoyan |Titel=LISP: Anwendungsgebiete, Grundbegriffe, Geschichte |Verlag=Akademie-Verlag |Ort=Berlin |Datum=1980 |Umfang=480}}&lt;br /&gt;
&lt;br /&gt;
* {{Literatur |Hrsg=Herbert Stoyan, Günther Görz |Titel=LISP: Eine Einführung in die Programmierung |Verlag=Springer |Ort=Berlin |Datum=1984 |ISBN=3540131582 |Umfang=358}}&lt;br /&gt;
&lt;br /&gt;
* Patrick Henry Winston, Berthold Horn: &amp;#039;&amp;#039;Lisp&amp;#039;&amp;#039;. Addison-Wesley Verlag, 1987, ISBN 3-925118-61-6.&lt;br /&gt;
* Harold Abelson, [[Gerald Jay Sussman]]: &amp;#039;&amp;#039;[https://mitpress.mit.edu/sicp/ Structure and Interpretation of Computer Programs (SICP)]&amp;#039;&amp;#039;. MIT Press, 1993, ISBN 978-0-262-01153-2.&lt;br /&gt;
* Christian Queinnec: &amp;#039;&amp;#039;Lisp in Small Pieces&amp;#039;&amp;#039;. Cambridge University Press, 2003, ISBN 0-521-54566-8.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Internetquelle |autor=John McCarthy et al. |url=https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf |titel=Lisp 1.5 Programmer’s Manual |format=PDF; 4,5&amp;amp;nbsp;MB |sprache=en |abruf=2025-02-10 |abruf-verborgen=ja}}&lt;br /&gt;
* {{Internetquelle |autor=John McCarthy |url=https://www-formal.stanford.edu/jmc/recursive.pdf |titel=Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part&amp;amp;nbsp;I |format=PDF; 214&amp;amp;nbsp;kB |sprache=en |abruf=2025-02-10 |abruf-verborgen=ja}}&lt;br /&gt;
* {{Internetquelle |autor=Paul Graham |url=https://www.paulgraham.com/lib/paulgraham/jmc.ps |titel=The Roots of Lisp |format=PostScript; 208&amp;amp;nbsp;kB |sprache=en |abruf=2025-02-10 |abruf-verborgen=ja |kommentar=eine konzise Einführung in Anlehnung an McCarthys Arbeit}}&lt;br /&gt;
* {{Internetquelle |autor=Paul McJones |url=https://www.softwarepreservation.org/projects/LISP/ |titel=History of LISP |hrsg=Software Preservation Group am [[Computer History Museum]] |sprache=en |abruf=2025-02-10 |abruf-verborgen=ja}}&lt;br /&gt;
* {{Internetquelle |autor=Paul Graham |url=https://languagelog.ldc.upenn.edu/myl/ldc/llog/jmc.pdf |titel=The Roots of Lisp |format=PDF; 141&amp;amp;nbsp;kB |sprache=en |abruf=2025-02-10 |abruf-verborgen=ja}}&lt;br /&gt;
* {{Internetquelle |autor=Guy L. Steele Jr., Richard P. Gabriel |url=https://www.dreamsongs.com/Files/HOPL2-Uncut.pdf |titel=The Evolution of Lisp |format=PDF; 996&amp;amp;nbsp;kB |sprache=en |abruf=2025-02-10 |abruf-verborgen=ja}}&lt;br /&gt;
* {{Internetquelle |autor=Tim Pritlove, Hans Hübner |url=https://cre.fm/cre084-lisp |titel=Lisp – Die Mutter aller Programmiersprachen |hrsg=[[CRE (Podcast)|CRE]] |format=Podcast; 01:35:28&amp;amp;nbsp;h |sprache=de |abruf=2025-02-10 |abruf-verborgen=ja}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=4035918-9|LCCN=sh85077449}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lisp| ]]&lt;br /&gt;
[[Kategorie:Funktionale Programmiersprache]]&lt;br /&gt;
[[Kategorie:Abkürzung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Joswig</name></author>
	</entry>
</feed>