Zum Inhalt springen

Lisp

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 1. Juli 2003 um 16:01 Uhr durch 81.62.5.221 (Diskussion) (Minimales Lisp). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Lisp ist eine Programmiersprache, die 1959 am Massachusetts Institute of Technology (MIT) als Implementation des Lambda-Kalküls entstand.
LISP steht für LISt Processing, damit waren ursprünglich FORTRAN-Unterprogramme gemeint, mit denen symbolische Berechnungen durchgeführt werden sollten, wie sie im Lambda-Kalkül gebraucht werden. Einer der Studenten von John McCarthy kam dann auf die fundamentale Idee, einen Interpreter für diese Ausdrücke zu programmieren, womit die Programmiersprache LISP geboren war.

Die Grunddatenstrukturen von LISP sind Einzelwerte (Skalarwerte), die Atome genannt werden und Listen. Die Listen können beliebig verschachtelt werden (Listen von Listen). Damit lassen sich auch leicht Datenstrukturen wie ein assoziatives Array implementieren. Die Listen werden mit runden Klammern dargestellt:

  (A B C)

Auch Programmanweisungen sind Listen.

Lisp bietet dem Programmierer eine große Flexibilität und weitreichende Einflußmöglichkeiten. Datenstrukturen werden dynamisch aufgebaut, ohne dass der Programmierer explizit Speicherplatz reservieren muss. Deklarationen für Daten sind nicht nötig und ein Lisp-Symbol kann als Variable beliebige Arten von Objekten bezeichnen. Viele dieser Eigenschaften sind im Laufe der Zeit in weitere Programmiersprachen übernommen worden. Anfang der 50er waren sie sicherlich ihrer Zeit weit voraus.
Die Ausführung von Programmen in Lisp wird normalerweise von einem Interpreter übernommen. Compiler werden benutzt, um eine Optimierung der Laufzeiten bestimmter Programmteile zu erreichen.

Eine wichtige Datenstruktur sind die Listen. Auch Programme sind als Listen dargestellt.

Minimaler Funktionsumfang für Lisp

Nur ganz wenige Operatoren und ein allgemeiner Mechanismus zur Funktionsdefinition is nötig um ein minimales Lisp-System zu implementieren. Die folgenden Funktionen sind im ursprünlichen Bericht von McCarthy enthalten.

   * car  (gib das erste Element einer Liste zurück)
   * cdr   (gib das letzte Element einer Liste zurück)
   * cons
   * quote
   * eq  (Test auf Gleichheit)
   * cond
   * Mechanismus zur Funktionsdefinition

Mit diesen Sprachmitteln kann man alle andern Lispfunktionen wenn auch überhaupt nicht effizient. Aktuelle Lispimplemenation implementieren einen grossen Teil ihrer Funktionen in C oder in Maschiensprache.


Lisp und KI

LISP ist mit PROLOG die Lieblingsprogrammiersprache für KI'ler (siehe Künstliche Intelligenz). Bekannte Abkömmlinge:

Common LISP (CLisp (GNU Variante)
Emacs-LISP
MacLisp
InterLisp
Scheme
AutoLisp
SML (System Management Language)


Das berühmte Hello World in LISP:

; LISP
(DEFUN HELLO-WORLD ()
                  (PRINT (LIST 'HELLO 'WORLD)))