Da ich in letzter Zeit schon mehrfach Wundersames über die Programmiersprache Lisp gelesen habe, wollte ich nun endlich selbst ausprobieren, was es damit auf sich hat. Bei Lisp denken die meisten erstmal an furchtbar viel Mathe oder an eine uralte Sprache, die heute wohl kaum noch einer benutzt. Richtig ist, daß der Kreis der Lisp-Programmierer eher eine verschworene kleine Gemeinschaft als eine große Mainstream-Bewegung ist und der Ursprung der Sprache basiert ganz klar auf mathematischen Grundlagen. Trotzdem ist der Einstieg nicht schwer und jeder kann das mit einfachen Mitteln ausprobieren. Die schlichte Schönheit der Sprache lässt sich dabei schnell erkennen.
Paul Graham sieht die nach wie vor geringe Verbreitung von Lisp als Wettbewerbsvorteil für Lisp-Programmierer an. Konkurrenten müssten nach Graham in sogenannten „Blub-Sprachen“ programmieren und wären dadurch weit weniger flexibel in der Entwicklung. Dies ist natürlich recht überheblich formuliert, allerdings betonen doch eigentlich alle Lisp-Programmierer, welche Vorteile Lisp gegenüber allen anderen Sprachen hat und warum eben diese anderen Sprachen niemals genau diese Vorteile haben werden. Es sei denn, man baut sie zu Lisp um 🙂 Jeder mag natürlich die Sprache die er am besten kann am liebsten, dennoch lohnt es sich eigentlich immer über den Tellerrand hinauszuschauen.
Lisp wurde 1958 erstmals von John McCarthy am Massachussets Institute of Technology (MIT) als theoretische Erforschung einer mathematischen Syntax spezifiziert. Einer seiner Studenten implementierte dies schließlich als Programmiersprache. Seitdem wurden zahlreiche Lisp-Dialekte entwickelt, doch die Basis blieb stets dieselbe. Nach Fortran ist Lisp die zweitälteste Programmiersprache, die noch in Verwendung ist.
Der Begriff Lisp bedeutet „List Processing“ (Listen-Verarbeitung) und tatsächlich ist in Lisp alles eine Liste. Listen können beliebig verschachtelt sein und es läßt sich alles damit ausdrücken. So sind auch Programmanweisungen Listen, wobei das erste Element der Liste die auszuführende Funktion darstellt. Dies kann zum Beispiel ein Operator sein, wie bei Addition oder Multiplikation:
(* 3 (+ 2 5))
Wer als Ergebnis 21 herausbekommt, hat das Prinzip schon verstanden 🙂