„Beating the Averages “ betitelte Paul Graham im Jahr 2001 seinen berühmten Artikel über die Vorteile von Lisp in der Produktentwicklung. 2013, 55 Jahre nach der Erfindung dieser Gattung von Programmiersprachen, ist Clojure , ein Lisp für die Java Virtual Machine, in aller Munde. Ob Startup oder Produktteam, Forschungsinstitut, Bank oder Zeitungshaus, Clojure scheint einen guten Eindruck zu hinterlassen.
Trotzdem spielt diese seit 2007 aktiv entwickelte Programmiersprache hierzulande im Beratungsgeschäft beziehungsweise in der Auftragsentwicklung praktisch keine Rolle. Warum und wie wir das ändern möchten, darum soll es in diesem Artikel gehen.
Rahmenbedingungen
Um aber grundsätzlich als Berater eine Programmiersprache mit gutem Gewissen empfehlen zu können, müssen einige Voraussetzungen erfüllt sein. Lassen Sie uns vor diesem Hintergrund einen Blick auf Clojure werfen:
- Clojure wird aktiv entwickelt und steht unter einer industriefreundlichen Open-Source-Lizenz zur Verfügung. Mit Cognitect steht mittlerweile ein Unternehmen hinter der Sprache und stellt Finanzierung und professionellen Support sicher.
- Clojure wird zu Java Bytecode kompiliert, läuft auf der Java Virtual Machine und lässt sich reibungslos mit bestehenden Java-Komponenten kombinieren . Aus Betriebssicht ist Clojure nur eine Java-Bibliothek. Bestehende Investitionen in das Java-Ökosystem können daher weiter genutzt werden.
- Clojure wird erfolgreich in Software-Projekten eingesetzt. Es gibt eine große und aktive Community und mehrere internationale Konferenzen .
- Clojure verfügt über ausgezeichnete Dokumentation . Zahlreiche Bücher beschäftigen sich mit der Programmiersprache. Eine große Zahl an Open-Source-Bibliotheken für jeden Einsatzzweck steht zur Verfügung.
Sieht man von dem Verbreitungsgrad ab (dazu mehr im letzten Abschnitt), sind so die wichtigsten Risiken hinsichtlich des Einsatzes einer neuen Technologie adressiert.
Vorteile
Es würde den Rahmen des Artikels sprengen, im Detail auf alle relevanten Sprachfeatures einzugehen. Stattdessen möchte ich an dieser Stelle die Aspekte von Clojure hervorheben, die es aus meiner Sicht sowohl für Kunden wie auch für Anbieter zu einer ausgezeichneten Programmiersprache für die Auftragsentwicklung machen:
- Clojure ist verhältnismäßig leicht zu erlernen. Die Anzahl der Syntaxelemente ist erheblich geringer als in funktionell vergleichbaren Sprachen. Die Syntax selbst ist sehr regelmäßig. Die Möglichkeit der interaktiven Entwicklung im REPL vereinfacht den Zugang zur Programmiersprache und zu Bibliotheken erheblich.
- Clojure isoliert Zustand und macht Zustandsmanipulation explizit. Dadurch entfällt in der Praxis eine ganze Kategorie häufig auftretender Softwarefehler.
- Die interaktive Natur der Softwareentwicklung mit Clojure verkürzt Feedback-Zyklen auf allen Ebenen. Dadurch eignet sich die Sprache insbesondere für Rapid Prototyping und agile Vorgehensweisen.
- Clojure ist ausdrucksstark. Idiomatischer Clojure-Code kann im Vergleich zu Java-Code desselben Funktionsumfangs um eine Größenordnung weniger Lines of Code haben. Während Lines of Code keine an sich sinnvolle Metrik ist, ist die Diskrepanz hier so groß, dass sich daraus ein realer Wartungsvorteil ergibt.
- Die Clojure-Community legt größten Wert auf das Konzept der „Einfachheit „. Diese Haltung spiegelt sich in idiomatischem Code, Architekturansätzen, vielen Bibliotheken und der generellen Ausrichtung der Sprach-Weiterentwicklung wieder und hat einen positiven Effekt auf Wartbarkeit und Robustheit.
- Als funktionale Programmiersprache motiviert Clojure die Verwendung nebeneffektfreier Funktionen. Solche reinen Funktionen sind sowohl leichter testbar als auch einfacher verständlich als objektorientierter Code mit vergleichbarem Funktionsumfang.
- Clojure eignet sich durch seine speziellen Datenstrukturen und das Konzept des Software Transactional Memory besonders für die im Bereich der serverseitigen Software häufig benötigte Abbildung nebenläufiger Prozesse.
In der Kombination mit den zuvor genannten Rahmenbedingungen ergibt sich das Bild einer Programmiersprache, die schlüssige Antworten auf wichtige Fragen wie Produktivität, Lernkurve und Wartungskosten geben kann.
Perspektiven
Das aus meiner Sicht größten Hindernis für die weitere Verbreitung von Clojure ist das im Vergleich mit Java geringe Angebot an Entwicklungskapazitäten. Während sich die meisten anderen Befürchtungen für den Einsatz der Sprache objektiv adressieren lassen, kann der Eindruck eines Anbietermarkts nicht ohne weiteres ausgeräumt werden. An dieser Stelle möchten wir bei codecentric ansetzen:
- Wir unterstützen die Clojure-Community in Deutschland (z.B. durch Sponsoring auf Konferenzen, Gründung lokaler User Groups und die Unterstützung großer Open-Source-Projekte wie ClojureWerkz ).
- Wir bauen gezielt Clojure-Kapazitäten auf, um für die Projekte unserer Kunden bereit zu sein, sobald Clojure für sie eine Option wird.
- Im Rahmen unsere Schulungen und durch Vorträge auf Konferenzen vermitteln wir praktische Kenntnisse in der funktionaler Programmierung mit Clojure.
Wenn Sie Interesse an dem Thema haben, würden wir uns freuen, mit Ihnen ins Gespräch zu kommen. Hinterlassen Sie hier einen Kommentar oder schreiben Sie uns unter clojure@codecentric.de .
Weitere Beiträge
von Nils Wloka
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Nils Wloka
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.