Clojure Tutorial, Teil 1


Dies ist der erste Artikel in einer kleinen Serie, die meine ersten Schritte in der neuen funktionalen Programmiersprache Clojure dokumentieren soll. Die Artikel werden in unregelmäßigen Abständen hier publiziert.

Ich beschäftige mich im Moment mit Clojure, einer relativ neuen funktionalen Programmiersprache. Dabei will ich vor allem von meinem bisherigen Fokus der objekt-orientierten Programmierung (OOP) abrücken, um mal wieder ein wenig frischen Wind zu schnuppern. Golang war nicht ganz das richtige, da ich dort auch auf objekt-orientierte Weise entwickelt habe.

Funktionale Programmierung

Im Gegensatz zu der Daten- und Verhaltenssicht der OOP steht bei der funktionalen Programmierung das Zusammenschalten von Funktionen im Vordergrund. Ein Programm wird dabei nicht so sehr durch nacheinander abzuarbeitende Befehle, sondern durch ineinander geschachtelte Funktionsaufrufe beschrieben. Dabei stehen die sog. pure functions im Vordergrund, also Funktionen ohne Seiteneffekte. Weiterer wichtiger Bestandteil ist die Rekursion, mit der Probleme elegant gelöst werden können.

Clojure

Clojure ist ein LISP-Dialekt, läuft auf der Java VM und ist seit 2009 verfügbar. Als Einstieg habe ich mir das Buch Practical Clojure (Blick ins Buch) gekauft, an dem ich mich nun entlang arbeite.

Die wichtigsten Merkmale von Clojure sind

Explorative Entwicklung

In Clojure (und anderen Sprache?) hat sich die REPL durchgesetzt: Read Eval Print Loop. Man startet eine Kommandozeile, in der man direkt Code eingeben und ausführen kann. Damit lässt sich schnell etwas ausprobieren oder sogar ein laufendes Programm verändern. Für die ersten Schritte arbeite ich auch direkt in der REPL und verzichte auf gespeicherte Quelltexte. Natürlich lässt sich jede Clojure-Applikation auch in Dateien organisieren und ausführen.

Download und Start

Clojure kann als ZIP-Archiv heruntergeladen oder direkt von Github gecloned und gebaut werden. Hat man Clojure entpackt bzw. installiert, liegt im Installationsverzeichnis die Datei clojure.jar. Mit folgender Kommandozeile starte ich anschliessend die REPL:

java -cp clojure.jar clojure.main

Ich werde durch einen Prompt begrüßt und kann sofort Code eingeben:

$> java -cp clojure.jar clojure.main
Clojure 1.3.0-alpha3-SNAPSHOT
user=>

Jetzt kann ich das erste Programm schreiben.

Hallo, Welt!

Als erstes Programm steht natürlich das klassische Hallo Welt auf dem Programm. Die Anwendung soll den String “Hallo, Welt!” ausgeben, nichts weiter.

(println "Hallo, Welt!")

Die Ausgabe sieht so aus:

Hallo Welt
nil
user=>

Die erste Zeile ist die Ausgabe, die zweite Zeile ist der Rückgabewert der Funktion println und die dritte Zeile ist wieder der Prompt. Die Funktion println ist eine sog. special form, eine Systemfunktion von Clojure. Die übergebenen Argumente werden durch Leerzeichen getrennt ausgegeben. Ein etwas erweitertes Hallo Welt verwendet eine Var für die auszugebende Nachricht:

(def msg "Hallo Welt")
(println msg)

Das war es erstmal für diesen Artikel. In den kommenden Artikeln will ich etwas weiter in die verfügbaren Datenstrukturen einsteigen. Stichwort: Alles ist eine Liste!

Weitere Artikel

Unterschiedliche Sichtweisen

Vorbestellt: Sony Xperia XZ Premium

Giants Run 2017

Gelesen: SciFi Serie 'The Expanse'

Neue Tastatur: Pok3r Vortex RGB

New minecraft survival mod for 1.11.2

Änderungen beim Flug mit Quadkoptern

Ein paar Fotos

Nach den Crossfit Open

Crossfit Open WOD 17.5