Clojure

Clojure ist eine der alternativen Sprachen für die JVM. Allerdings unterscheidet es sich als Lisp-Dialekt deutlich von den anderen üblichen Verdächtigen wie Groovy, Scala, JRuby und Co., die einem sonst als Erstes als Alternative zu Java in den Sinn kommen. Clojure ist im Gegensatz zu den anderen gerade Genanten eine rein funktionale Programmiersprache, wobei es ähnlich wie Groovy und JRuby dynamisch typisiert ist.

Als akademisch verschrien, hat sich Lisp in der Wirtschaft nie breitflächig durchsetzen können. Aber es gibt eine eingefleischte Community, die sich trotz der vielen Klammern nicht abschrecken läßt, die Ausdrucksmächtigkeit von Lisp für ihre alltäglichen Programmieraufgaben einzusetzen. Durch Clojure könnte Lisp nun wieder verstärkt in den Fokus rücken. Der Hauptgrund dafür ist, daß es sich nahtlos auf der Java Plattform einbindet und damit auch für Java Enterprise Projekte interessant wird.

Der Umstieg auf Clojure fällt Entwicklern aus der prozeduralen und objektorientierten Welt meist nicht leicht. Dabei ist der Kern der Sprache sehr klein. Ein Grundsatz lautet:

Code ist Daten und Daten ist Code.

<

p>Dementsprechend besteht die Syntax in erster Linie aus atomaren Datentypen wie Zahlen, Strings, Booleans und noch vier Datenstrukturen: Listen, Vektoren, Maps und Sets.

<br />
 (1 2 3 4 5) ;Definition einer Liste<br />
 [1, 2, 3, 4, 5] ;Definition eines Vektors<br />
 {:a 1, :b 2, :c 3} ;Definition einer Map<br />
 #{1 2 3 4 5} ;Definition eines Sets<br />
 

Alles andere läßt sich damit abbilden, so sind Deklarationen, Kontrollstrukturen und auch Funktionsaufrufe nichts weiter als Listen mit dem jeweiligen Operator als erstem Element. Die Syntax ergibt sich somit aus der Interpretation dieser Datenstrukturen. Dieser kleine Sprachkern ist zudem sehr flexibel durch Bibliotheken und Makros erweiterbar. Und durch die nahtlose Integration mit Java hat man natürlich Zugriff auf die gesamte Java-Klassenbibliothek (JDK) und jedes andere Java-Framework.

In Zeiten von Multicore- bzw. Multi-Prozessor-Maschinen wird immer mehr Wert auf nebenläufige Programmierung gelegt. Clojure bietet hier sehr gute Unterstützung, um seiteneffektfrei zu entwickeln. Immutability ist quasi in die Sprache eingebaut, zudem ermöglichen Refs, Atoms, STM (Software Transactional Memory) und Agenten je nach Anwendungsfall den sicheren Schreibzugriff auf gemeinsam genutzte Werte.

Der Einstieg in Clojure wird nicht leicht fallen. Es lohnt sich aber auf jeden Fall, einen Blick darauf zu werfen. Und sei es nur, um einige Ideen in die tägliche Arbeit mit der Programmiersprache seiner Wahl einfließen zu lassen. Hat man sich dann irgendwann sogar an die Klammern und die eigenartige Syntax gewöhnt, so wird man vermutlich nicht mehr so schnell von Clojure lassen können.

Short URL for this post: http://wp.me/s4nxik-clojure
This entry was posted in Other languages for the Java VM and tagged , . Bookmark the permalink.

Leave a Reply