Quicklisp und mehr: Neues bei Common Lisp

Die Familie der Programmiersprache Lisp ist mit Clojure erweitert und wieder etwas prominenter geworden. Doch auch für das Arbeiten mit dem Klassiker Common Lisp gab es mit der Bibliotheksverwaltung Quicklisp eine wesentliche Neuerung. Mit dem Gespann Quicklisp, Emacs, SLIME und Git steht eine leistungsfähige Entwicklungsumgebung für Common Lisp zur Verfügung.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen
Lesezeit: 14 Min.
Von
  • Christian Pape
Inhaltsverzeichnis

Die Familie der Programmiersprache Lisp ist mit Clojure erweitert und wieder etwas prominenter geworden. Doch auch für das Arbeiten mit dem Klassiker Common Lisp gab es mit der Bibliotheksverwaltung Quicklisp eine wesentliche Neuerung. Mit dem Gespann Quicklisp, Emacs, SLIME und Git steht eine leistungsfähige Entwicklungsumgebung für Common Lisp zur Verfügung.

Bei Common Lisp handelt es sich um eine seit 1994 standardisierte Sprache aus der Lisp-Familie.(Urspünglich war LISP das Akronym für "LISt Processing". Heute schreibt man nur noch Lisp). Erste Bemühungen zur Standardisierung gab es bereits vor 1984. Im Gegensatz zu Programmiersprachen wie Python gibt es einige kompatible Implementierungen von Common Lisp, sowohl freie als auch kommerzielle – mit verschiedenen Stärken und zusätzlichen Eigenschaften. Eine kurze Übersicht liefert die iX, eine ausführliche mit mehr als zehn Implementierungen und der Auflistung der Eigenschaften stammt von Daniel Weinreb.

Common Lisp hat ein großes Einsatzspektrum. Dazu gehört nicht nur funktionale Programmierung, sondern die Sprache bietet auch die Unterstützung für zum Beispiel imperative oder objektorientierte Programmierung mit dem Common Lisp Object System (CLOS). Ein Blick ins Common-Lisp-Wiki CLiki auf die für den praktischen Einsatz empfohlenen Bibliotheken lässt erahnen, dass sich Common Lisp nicht nur für die oft unterstellten ausschließlich akademischen, sondern auch für die meisten zeitgemäßen Aufgaben einsetzen lässt.

Durch die frühe Standardisierung umfasst der Standard einige Dinge nicht, die man vielleicht erwartet hätte, etwa Threads und reguläre Ausdrücke. Viele Implementierungen stellen Threads und reguläre Ausdrücke zur Verfügung, und es ist die Aufgabe von Bibliotheken, erweiterte Funktionen oder Kompatibilitätsschichten für die Implementierungen anzubieten. Mit der Bibliotheksverwaltung Quicklisp hat sich seit 2010 dank Zach Beane die Situation für das Ökosystem um Common Lisp deutlich verbessert.

Eine heute viel verwendete Kombination für die praktische Arbeit mit Common Lisp besteht aus Emacs, SLIME, Quicklisp und Git. Dabei dient der Emacs als Editor, SLIME verbindet die Common-Lisp-Instanz mit dem Editor, während Quicklisp und Git der Fremd- beziehungsweise eigenen Softwareverwaltung dienen. Hierbei ist SLIME auf den Emacs-Editor angewiesen, ansonsten sind diese Komponenten unabhängig voneinander und man kann sie je nach persönlicher Präferenz weglassen oder durch andere ersetzen. Ein Vorteil dieser Kombination ist, dass sie die dynamische Natur der Programmentwicklung mit Common Lisp wie Read-Eval-Print Loop (REPL) und Reflexion unterstützt.

Vor der Beschäftigung mit der Entwicklungsumgebung steht die Wahl einer Lisp-Implementierung. Zwei häufig verwendete freie sind Steel Bank Common Lisp (SBCL) und Clozure CL (CCL). Die meisten Entwickler von Bibliotheken entwickeln oder testen zumindest mit dem SBCL-Compiler unter Linux, sodass dieser dort oder unter FreeBSD eine gute Wahl darstellt. Unter Windows bietet sich eher CCL an. Unter Mac OS X laufen sowohl SBCL als auch CCL, wobei letzteres zusätzlich eine integrierte Entwicklungsumgebung mitbringt.

LispWorks stellt für Windows, Mac, Linux und FreeBSD eine Personal Edition seiner kommerziellen Implementierung zum Download bereit. Diese bringt eine eigene grafische Benutzeroberfläche mit, sodass sich Common Lisp auch gut ohne die Installation von Emacs oder SLIME testen lässt.