Zum Inhalt springen

Common Lisp

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 19. Mai 2006 um 01:43 Uhr durch Boelthorn~dewiki (Diskussion | Beiträge) (Großer Teil von der englischen Seite übersetzt). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Common Lisp, häufig abgekürzt CL, ist ein standardisierter Dialekt der Programmiersprache Lisp. Common Lisp ist keine Implementierung sondern eine Spezifikation zu der sowohl kommerzielle als auch Open-Source Implementationen existieren. Die Sprache Common Lisp ist seit dem 8. Dezember 1994 offizieller American National Standards Institute Standard (ANSI/X3.226-1994) und somit die erste standardisierte objektorientierte Programmiersprache.

Common Lisp ist eine Allzweckprogrammiersprache im Gegensatz zu den Lisp-Dialekten Emacs Lisp und AutoLISP, welche nur eingebettete Erweiterungssprachen für bestimmte Programme darstellen. Common Lisp und Scheme benutzen im Gegensatz zu vielen älteren Dialekten (wie MacLisp oder ZetaLisp) lexikalischen Gültigkeitsbereich (lexical scope) für Variablen.

Common Lisp ist eine Multiparadigmensprache, die

  • sowohl imperatives, funktionales und objekt-orientiertes Programmieren unterstützt.
  • mittels optionaler Typdeklarationen effizient kompiliert werden kann.
  • durch standardisierte Sprachelemente wie z.B. Lisp-Makros (Neuanordnung von Code zur Kompilierzeit durch das Programm selbst) und Reader-Makros (Syntaxerweiterungen, die bestimmten Zeichen neue Bedeutungen geben) erweitert werden kann.

Syntax

Common Lisp ist ein Lisp; es nutzt also S-Expressions, um sowohl Code als auch Daten darzustellen. Funktions- und Makroaufrufe werden als Listen geschrieben, die als erstes Element den Namen der Funktion bzw. des Makros enthalten:

;; Addiere 2 und 2
(+ 2 2)
;; Setze die Variable p auf 3.1415
(setf p 3.1415)
;; Eine Funktion, die ihr Argument quadriert
(defun square (x) (* x x))
;; Quadriere 3
(square 3)

Datentypen

Common Lisp unterstützt eine Vielzahl von Datentypen, mehr als viele andere Sprachen. Diese Typen sind hierarchisch angeordnet.

Skalare Typen

Zahlen in Common Lisp sind vom Typ number. Untertypen von number sind u.a. integer (Ganzzahlen), ratio (rationale Zahlen bzw. Brüche), real (Fließkommazahlen) und complex (komplexe Zahlen). Arithmetik mit Ganzzahlen und Brüchen ist beliebig genau. Eine Klasse von Programmfehlern in Sprachen wie C, die durch überlaufende Ganzzahlen verursacht werden, ist in Common Lisp somit praktisch ausgeschlossen.

Der Common Lisp character-Typ ist nicht auf ASCII beschränkt, was nicht überrascht, da Lisp älter als ASCII ist. Viele Implementationen unterstützen Unicode, siehe [1] (englisch).

Der Typ symbol ist ein besonderes Merkmal fast aller Lisp-Dialekte, aber in anderen Sprachfamilien größtenteils unbekannt. Ein Symbol in Lisp ist ähnlich einem Bezeichner in anderen Sprachen, da es als Variable benutzt wird und einen Wert hat. Da sie aber Objekte erster Klasse sind, können sie auch zu anderen Zwecken benutzt werden.

Datenstrukturen

Common Lisp unterstützt u.a. Listen, Arrays, Hashtables.

Funktionen

In Common Lisp sind Funktionen normale Objekte, die als Parameter übergeben oder von einer Funktion zurückgegeben werden können. Dadurch können sehr allgemeine Operationen ausgedrückt werden.

Die Common Lisp Standardbibliothek benutzt solche Funktionen höherer Ordnung oft. Zum Beispiel nimmt die sort-Funktioen einen Vergleichsoperator als Argument.

Implementierungen

Frei

Kommerziell

E-Books