Beschreibung

Der Name Lisp steht für »LISt Processing«. Lisp ist nach Fortran die zweitälteste heute noch verwendete Computersprache der Welt – die ersten Versionen stammen aus dem Jahre 1959. Trotzdem erfreut sich die Sprachfamilie Lisp heute immer noch einiger Beliebtheit. Früher wurde Lisp häufig mit dem Bereich »Künstlicher Intelligenz« assoziiert; korrekter ist jedoch, dass die Sprache insbesondere in Bereichen komplexer Problemstellungen und a priori schwierig planbaren Projekten verwendet wurde und wird. Einige Lisp-Dialekte werden als Skriptsprachen in sehr verbreiteten Anwendungsprogrammen benutzt; beispielsweise dem bekannten CAD-Paket AutoCAD oder den Editor Emacs. Die Syntax von Lisp ist sehr einfach aufgebaut und gleichzeitig eine der Besonderheiten: Lisp ist homoikonisch - d.h. Lispprogramme sind gleichzeitig Lisp-Datenstrukturen. Damit ist Lisp besonders geeignet um mit geringem Aufwand neue Programmiersprachen zu entwerfen. Die meisten Lispsysteme haben ein sehr reichhaltiges Laufzeitsystem:

  • Laufzeit-Interpreter
  • Laufzeit-Compiler
  • Integrierter Debugger
  • Ausnahmebehandlung (Conditions) mit "Restarts" (z. B. Fortsetzung nach Fehlerbehandlung)
  • beliebig große Zahlen, rationale Zahlen, komplexe Zahlen...
  • CLOS: Objektsystem mit Multidispatch, Mixins, Methodenkombinationen
  • CLOS: Durch Metaobjektprotokoll erweiterbares Objektsystem

Es ist auch ein weit verbreiteter Mythos dass Lisp eine Interpreter-Sprache ist. Dabei sind Compiler für Lisp schon seit 50 Jahren üblich. Dieser Irrtum kommt meist von der für andere Programmiersprachen ungewöhnlichen Eigenschaft eines Compilers als Sprachelement. Mit den Funktionen compile und compile-file kann man zur Laufzeit Lispprogramme kompilieren (zu Maschinencode!). Es ist in Lisp sehr einfach möglich mit Lisp-Datenstrukturen ein Funktionen zu generieren, diese mit compile zu übersetzen und danach einfach zu benutzen; alles ohne den Lisp-Prozess beenden zu müssen. Mit dem integrierten Debugger ist so auch ein echtes "Hotfixing" möglich - fehlerhafte Funktionen können im laufenden Programm behoben werden - damit ist Lisp besonders für hochverfügbare Serveranwendungen geeignet.

Der heute vermutlich verbreitetste Dialekt ist ANSI Common Lisp.

Die bedeutendste Open-Source-Implementierung von Common Lisp speziell für den Mac dürfte heute Clozure CL sein, ein Compiler sehr aktiv weiterentwickelt wird. Es hat auch eine Cocoa-Bridge mit der sehr bequem auf die Cocoa-Frameworks zugegriffen werden kann. Eine auf Cocoa basierende IDE ist in Arbeit. ClozureCL basiert auf dem Quelltext des von Digitool entwickelten kommerziellen Lispsystems Macintosh Common Lisp. MCL wurde ursprünglich von Apple entwickelt und gilt als eine der besten Programmierumgebungen auf dem klassischen Mac; daher lohnt sich vielleicht ein Blick. Außerdem gibt es auf Digitools Website eine Menge von nützlicher Share- und Freeware im Zusammenhang mit (Macintosh) Common Lisp.

Auch das besonders für seine gute Performance bekannte SBCL (Steel Bank Common Lisp) wird von Mac OS X unterstützt.

ABCL (Armed Bear Common Lisp) ist ein Open Source Common Lisp System für die Java Virtual Machine. Mit ABCL können Common Lisp Programme in Java Bytecode übersetzt werden.

Über Fink kann man sich mit GNU CLISP auch einen Common-Lisp-(Bytecode)-Compiler installieren.

Eine der bekanntesten kommerziellen Common Lisp Implementierungen ist LispWorks (Mac OS X, MS Windows, Linux, div. UNIX-Systeme). LispWorks hat mit CAPI eine GUI-Bibliothek, mit der es möglich ist Benutzeroberflächen für Mac OS X (Cocoa), MS Windows und Linux (Motif) zu bauen. Die IDE von LispWorks ist ebenfalls mit CAPI geschrieben und läuft daher auch unter Mac OS X. Auch mit LispWorks ist es sehr einfach möglich auf die Cocoa-Frameworks zuzugreifen. Man kann sogar Cocoa-Views in CAPI-GUIs einbauen. Die LispWorks-IDE ist die heute vermutlich umfangreichste IDE für Common Lisp. Es gibt Browser für Klassen, generische Funktionen, Symbole, einen integrierten graphischen Debugger, Listener (Lisp-Konsole), Projektverwaltung und vieles mehr.

Lisp hat gemeinhin den Ruf übermäßig viele Klammern zu benötigen. Eigentlich ist das Humbug, da auch in Lisp (wie z. B. in C oder Java) lediglich ein Klammernpaar pro Funktionsaufruf benötigt wird. Anders ist lediglich, dass bei Lisp die öffnende Klammer vor dem Funktionsnamen steht (bei C und Java danach). Dafür benötigt Lisp keine Kommas zwischen den Parametern und Funktionen wie Addition (+) erlauben mehr als zwei Parameter. Die Syntax von Lisp kann in modernen Editoren auf Knopfdruck korrekt eingerückt werden.

Entwicklungsumgebungen

  • LispWorks - Kommerzielle sowie freie Personal Edition

Literatur

  • Paul Graham: ANSI Common Lisp, München (Prentice Hall) 1997
  • Peter Norvig: Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp, San *Mateo CA (Morgan Kaufmann Publishers, Inc.) 1992
  • Steven L. Tanimoto: The Elements of Artificial Intelligence Using Common Lisp, New York (Freeman) 2nd Edition 1995
  • Patrick Henry Winston: Artificial Intelligence, Reading MA (Addison Wesley) 3rd Edition 1992
  • Patrick Henry Winston, Berthold Klaus Paul Horn: Lisp, Reading MA (Addison-Wesley) 3rd Edition 1989

Verweise

Kategorie
Softwareentwicklung

Zuletzt geändert am 07.10.2014 23:46 Uhr von fri ( Besuche)

© 2004 – 2024 ApfelWiki

Impressum - Datenschutz

cb