Open Source im professionellen Einsatz
Linux-Magazin 01/2010
© Ina Van, 123rf.com

© Ina Van, 123rf.com

Concurrent Programming mit Clojure

Nebenläufig

Die Welt der Programmiersprachen hat seit zwei Jahren eine neue Bewohnerin: Die funktionale Sprache Clojure spezialisiert sich auf Programme mit Multithreading und bietet dank Java-Verwandtschaft trotz ihres jugendlichen Alters eine umfangreiche Bibliotheken-Landschaft.

534

Mit Intels Core-Mikroarchitektur sind Rechner mit mehreren CPUs oder Prozessorkernen in Firmen und Privatwohnungen massenhaft angekommen. Dieser Entwicklung muss sich die aktuelle Generation von Programmierern stellen. Programme, die in mehreren Threads laufen, sind die Antwort. Derzeit entstehen Bibliotheken, die notwendige Funktionen in bekannten Programmiersprachen nachrüsten, es tauchen aber auch ganz neue Programmiersprachen auf, die diese Fähigkeit mitbringen.

Ein neuer Spieler auf dem Feld der Werkzeuge ist die Programmiersprache Clojure [1]. Die Grundzüge, die Sprachdesign und Motivation gleichermaßen beschreiben, sind schnell zusammengefasst: Concurrent Programming und die Java Virtual Machine. Concurrent Programming nennt man das Programmieren in einem Umfeld, in dem separate Programme oder Threads zusammenwirken und auf Ressourcen zugreifen, die sie sich teilen müssen. Dabei dürfen keine inkonsistenten Zustände durch die konkurrierenden Zugriffe entstehen. Clojure begegnet dem durch einen funktionalen Ansatz, spezielle Datenstrukturen und sichere Zugriffsmechanismen auf die Ressourcen.

Eine Plattform, die das Ausführen mehrerer Threads explizit unterstützt, ist die Java Virtual Machine (JVM), die es in Versionen für viele Betriebssysteme gibt. Zudem existiert bereits eine stattliche Menge an Bibliotheken in Java, die in Clojure sofort und ohne Integrationsaufwand verwendbar sind. Clojure erzeugt beim Kompilieren Java-Bytecode, sogar ».class«-Dateien lassen sich erstellen. Die JVM als Zielplattform ist kein Implementations-Detail, sondern ein Feature.

Sprache samt Zubehör

Der Erfinder von Clojure, Rich Hickey, stellt Clojure unter der Eclipse Public License 1.0 zum Download bereit. Wer Clojure unkompliziert testen möchte, lädt »clojure_1.0.0.zip« von [2] herunter, entpackt es in einem beliebigen Verzeichnis und startet zum interaktiven Programmieren die Read Eval Print Loop (siehe Kasten "REPL"). Aus Komfortgründen empfiehlt sich die Integration von Clojure in eine IDE. Lösungen für Netbeans [3], Emacs ([4], [5]), Vim [6] und Eclipse [7] sind verfügbar. Wer die aktive Entwicklung von Clojure verfolgen möchte, begibt sich zu Github [8].

Erste Experimente

Clojure startet nach der Eingabe von »java -jar clojure.jar clojure.lang.main« in einem Terminal und präsentiert dem Anwender einen Prompt, an dem er Befehle eingeben kann, die er mit der [Return]-Taste abschickt. Größere Mengen an Quellcode schreibt der Programmierer besser in einer separaten Datei, deren Inhalt er dann an der REPL mit Copy & Paste einfügt. Es gibt auch einen Befehl, um eine ganze Datei zu kompilieren und ihren Inhalt zu laden: »(load-file "file.clj")«.

In alter Tradition ist "Hello World" das erste Beispiel:

user=> (println "Hello World")
Hello World
nil
user=>

In diesem kurzen Codestück zeigen sich bereits wichtige Eigenschaften von Clojure. Zum einen ist das die Lisp-artige Syntax. Neueinsteigern sei versichert, dass die Klammern in der Regel nach wenigen Tagen nicht mehr stören und später unverzichtbar erscheinen. Befehle in Clojure werden in runden Klammern eingefasst, das erste Element einer Liste von Elementen in einem Klammernpaar ist der Befehl, alle folgenden Elemente sind dessen Argumente. In diesem Beispiel lautet der Name des Befehls »println«, was »System.out.println« in Java entspricht, und das einzige Argument ist der String »Hello World«. Darunter ist die Ausgabe zu sehen. In der dritten Zeile gibt Clojure »nil« aus, was »NULL« in Java entspricht, um danach wieder einen neuen Prompt anzubieten. Dabei ist »nil« der Rückgabewert des Befehlsaufrufs.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 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

  • Clojure

    Clojure sieht aus wie Lisp und läuft überall, wo Java installiert ist. Dank praktischer Tools und ausgereifter Bibliotheken ist mit der Sprache auch rasch eine moderne Webanwendung programmiert.

  • Unabhängigkeit: Clojure will ohne Spenden auskommen

    Der Erfinder des Lisp-Dialekts Clojure will sein Projekt künftig ohne Spenden weiterführen.

  • Spenden für Clojure

    Rich Hickey, Erfinder und Hauptentwickler der funktionalen Programmiersprache Clojure, bittet um Spenden, um das Projekt weiter verfolgen zu können.

  • Tux liest

    Das Linux-Magazin nimmt ein englischsprachiges Buch unter die Lupe, das sich mit Ubuntu Server beschäftigt und das Etikett "offizielles Handbuch" trägt. Der zweite Titel ist in Deutsch abgefasst und widmet sich der funktionalen Programmiersprache Clojure.

     

  • Clojure 1.6 stabilisiert Alpha-Features

    Die funktionale, Java-basierte Programmiersprache Clojure, die sich an Lisp orientiert, ist in Version 1.6 erschienen. Einige vormalige Alpha-Features sind nun den Kinderschuhen entwachsen.

comments powered by Disqus