Open Source im professionellen Einsatz
Linux-Magazin 10/2008
© Rene Drouyer, Fotolia.com

© Rene Drouyer, Fotolia.com

Common Lisp und die Smalltalk-Implementierung Squeak

Schicke Klassiker

Die Programmiersprachen Lisp und Smalltalk haben schon einige Jahrzehnte auf dem Buckel. Doch dank engagierter Communitys glänzen sie mit modernen Bibliotheken. Beim Umsortieren von Fußnoten und vor allem bei der Webprogrammierung zeigen sie, was in ihnen steckt.

527

Das Linux-Magazin hatte seine Programmieraufgaben auch an Entwickler geschickt, die abseits der aktuellen Mainstream-Sprachen arbeiten. Zwei nahmen die Herausforderung an und reichten Lösungen in Lisp und Smalltalk ein, um für ihre Lieblingssprachen zu werben. Vollständige Listings gibt\'s online [1].

Für die Implementierung der Aufgaben in Lisp, genauer in der Ansi-standardisierten Variante Common Lisp (CL), sorgte der 29-jährige Entwickler Marco Baringer (Abbildung 1). Der gebürtige US-Amerikaner studierte in Italien an der Universität Turin Informatik und lebt derzeit in Berlin. Neben Perl, das er zum System-Scripting unter Mac OS X und Linux verwendet, programmiert Baringer ausschließlich Lisp. Sein Geld verdient er mit Lisp-Beratung und -Entwicklung bei der Firma Clozure Associates [2], einer der wenigen reinen Lisp-Consulting-Firmen weltweit.

Abbildung 1: Amerikaner in Berlin: Marco Baringer arbeitet für eine der wenigen reinen Lisp-Firmen.

Je oller, je doller

Die Sprachfamilie Lisp existiert etwa seit 1958, als sich am MIT der Hochschullehrer John McCarthy mit seinen Kollegen an ihre erste Umsetzung machte [3]. Damit gehört diese Sprache, zusammen mit Fortran, zu den ältesten noch im Einsatz befindlichen Programmiersprachen. Heute gibt es eine kleine, aber begeisterte Lisp-Community, die schwergewichtige Industrie-Anwendungen, beispielsweise Flugbuchungssysteme, entwickelt und gleichzeitig unterhaltsame Zeitgeist-Anwendungen wie den Online-Bildeditor Roflbot [4] hervorbringt.

Baringer betreut einige Lisp-Bibliotheken und ist einer der drei Hauptentwickler des Superior Lisp Interaction Mode for Emacs (Slime, [5]), der den GNU-Editor zur integrierten Entwicklungsumgebung für Lisp aufrüstet. Das Gespann Slime-Emacs kommt bei der Arbeit mit Open-Source-Implementierungen wie Clisp oder SBCL als De-facto-Standard zum Einsatz, lediglich einige kommerzielle Lisp-Systeme bringen eigene Tools mit.

Multi-Paradigma

Lisp gibt dem Entwickler mehrere Programmier-Paradigmen an die Hand; für die Fußnoten-Aufgabe des Linux-Magazins hat Marco Baringer hauptsächlich funktional programmiert. Er schrieb zuerst die Funktion »reorder-footnotes-by-order-of appearance«, die die Fußnoten nach ihrem Auftauchen im Text neu nummeriert.

Um die Fußnoten in den eingelesenen Textzeilen zu finden, verwendet er die Regex-Bibliothek CL-PPCRE (Portable Perl-compatible regular expressions for Common Lisp, [5]). Die alte Nummer einer Fußnote zusammen mit ihrem Ersatz speichert er in einer Liste von Paaren. Da die Aufgabenstellung noch eine weitere Interpretation zulässt, programmierte er zudem die Funktion »reorder-footnotes-by-order-listing-order«, die die Verweise nach ihrem Erscheinen in der Sektion »@footnote:« durchzählt. Code, den beide Blöcke verwenden, lagerte Baringer in separate Funktionen aus.

Den Quelltext schreibt der Slime-Programmierer in einem Emacs-Textpuffer, Tastaturbefehle kompilieren und laden den Code. Zum Debuggen dient die interaktive Befehlszeile, die Slime zur Verfügung stellt, REPL (Read-Evaluate-Print-Loop) genannt (Abbildung 2).

Abbildung 2: Das Gespann Emacs-Slime gibt das Resultat der Fußnoten-Programmieraufgabe aus.

Bei der Lösung der zweiten Programmieraufgabe nutzt Marco Baringer einen anderen Ansatz: "Lisp erlaubt mir, nach Wunsch funktional oder objektorientiert zu programmieren", kommentiert er sein Programm. Er geht von der Datenstruktur aus und schafft zunächst die Klasse »album« mit den benötigten Eigenschaften Titel, Künstler, Jahr und Genre (Listing 1), dazu Funktionen, um Alben anzulegen zu ändern oder zu suchen.

Listing 1: Die Klasse
»album«

01 (defclass album ()
02   ((id :type integer :reader id :initarg :id)
03    (title :type (or string null) :initarg :title :accessor title)
04    (artist :type (or string null) :initarg :artist :accessor artist)
05    (year :type (integer 0) :initarg :year :accessor year)
06    (genre :type genre :initarg :genre :accessor genre))
07   (:metaclass ele:persistent-metaclass))

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Nachrichten-Zustellung

    Smalltalk ist rein objektorientiert und Vorbild für neuere Entwicklungen wie Objective-C oder Ruby. Als Grundelemente dienen Objekte und Nachrichten, mitgelieferte Klassen bestimmen den Funktionsumfang. Der Artikel stellt zwei Implementierungen vor, die Einsteigern und Profis gerecht werden.

  • Kostenloses Lesefutter aus dem Linux-Magazin

    Mit Erscheinen des Linux-Magazin 09/2009 mit dem Titelthema "Netzwerk total" sind die Artikel der Linux-Magazin-Ausgabe 10/2008 in den frei zugänglichen Bereich von Linux-Magazin Online gerückt.

  • IBM gibt Roar-VM für Multicore-CPUs frei

    Die virtuelle Maschine des Squeak-Smalltalk wurde für Multicore-Prozessoren optimiert und soll in Zukunft für bis zu 1000 Cores skalieren.

  • In eigener Sache: Sonderseite zu Programmiersprachen

    Das Linux-Magazin 10/2008 kommt am 4. September an den Kiosk und zeigt unter dem Titel "Sprachwahl", wie Programmier-Profis Aufgaben in PHP, Perl, Python und Java lösen. Linux-Magazin Online begleitet das Thema mit einer Sonderseite.

  • Sprachwahl

    Das Linux-Magazin hat renommierten Vertretern von Programmiersprachen zwei Aufgaben gestellt. Der resultierende Code macht anschaulich, wie Könner in Perl, Java oder Python Probleme lösen, und was die Stärken exotischer Sprachen wie Lisp und Smalltalk sind.

comments powered by Disqus

Ausgabe 07/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.