Es gibt ja jede Menge Programmiersprachen auf der JavaVM. Die beiden Dinge (also die VM und die Sprache) gleichzusetzen ist so ziemlich das Unzutreffenste, das man annehmen kann.

Es gibt Portierungen von Sprachen wie Ruby, Python, Tcl (JRuby, Jython, Jacl) und vielen anderen. Aber es gibt auch eine Reihe von Sprachen, die speziell für die JVM ausgelegt worden sind.

Als erstes fällt einem dabei vielleicht Groovy ein. Wenn man typische Skriptaufgaben auf der JVM lösen möchte, ist das vielleicht sogar das Mittel der Wahl. Besonders, wenn man Erfahrung mit Java hat, denn Java-Code ist in den allermeisten Fällen syntaktisch korrekter Groovy-Code.

Dann ist da Scala. Und Scala ist im Moment "everybody's darling", so scheint es mir. Es handelt sich dabei um eine Sprache, die objektorientierte und funktionale Ansätze zu vereinen versucht.

Zu guter Letzt ist da Clojure, was im Kern ein Lisp ist. Das heißt, die Sprache hat eine extrem einfache Syntax. Clojure hat zudem hohe Interoperabilität mit Java (wenn man möchte - oder muß). Die Sprache implementiert Software Transactional Memory als Teil der Sprache, was Clojure zum Einsatz in Programmen mit simultanen Abläufen prädestiniert.

Als echtes Lisp hat Clojure natürlich eine REPL (in emacs steht sogar slime als Interaktionsmodus zur Verfügung - Common-Lisper werden nun frohlocken...). Und natürlich hat die Sprache ein Makrosystem. Keine "hygenic macros", wie in Scheme; eher klassische Lisp Makros, wie in Common Lisp. Allerdings hat Clojures System ein paar Tricks eingebaut, die unbeabsichtigte Namenskonflikte umschiffen sollten. (Ein Makrosystem ist kein zu unterschätzendes Argument für eine Sprache. Wenn man nur die Makros aus C kennt, hat man vielleicht Angst vor dem Konzept. Richtige Makrosysteme, wie sie die verschiedenen Lisps implementieren sind dagegen unglaublich mächtige Werkzeuge in einer Sprache. Sie machen Lisps - und damit Clojure - zu programmierbaren Programmiersprachen. Wer die Möglichkeiten davon noch nicht kennt verpaßt etwas. Wirklich.)

Scala und Clojure stehen beide schon lange auf der Liste der Sprachen, die ich mir genauer ansehen wollte. Und ich denke, man kann schon heraushören, welche der beiden Sprachen mich mehr beeindruckt bisher. Steve Yegge geht im Vorwort des Buches "The Joy of Clojure" sogar so weit zu sagen: "[...]Clojure feels like a minor miracle. It's an astoundingly high-quality language, sure - in fact, I'm beginning to think it's the best I've ever seen[...]".

Der Entwickler von Clojure (Rich Hickey) hat vor einiger Zeit längere Einführungsvorträge in die Sprache gehalten. Einmal für Leute die aus der Java Ecke kommen und ein anderes Mal für Leute mit Lisp Hintergrund. Hier sind Links:

Lisper können sich die Java-Vorträge sparen. Java-Leute möchten sich vielleicht erst die Java-Version geben und danach zur Vertiefung noch einmal die Lisp-Version ansehen, da hier naturgemäß noch etwas tiefer auf den Lisp-Charakter von Clojure eingegangen wird.

Die Vorträge sind ziemlich lang, also viel Spaß beim Schauen!

[Update 2013-06-03]

Da schau her. Offenbar hat "blib.tv" entschieden alle Clojure Videos vom Netz zu nehmen. Und das ohne den zahlenden Kunden Rich Hickey davon zu informieren. Charmeoffensive nennt man das wohl, würde ich sagen. Egal. Es gibt ja noch andere Videoportale im Netz: Die Videolinks weiter oben sind entsprechend neu gesetzt.

Posted Wed 28 Mar 2012 09:18:28 CEST Tags: