<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Clojure</id>
	<title>Clojure - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Clojure"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Clojure&amp;action=history"/>
	<updated>2026-05-18T06:56:33Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Clojure&amp;diff=1541081&amp;oldid=prev</id>
		<title>imported&gt;Dk1909: Klammern korrigiert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Clojure&amp;diff=1541081&amp;oldid=prev"/>
		<updated>2026-01-11T10:50:03Z</updated>

		<summary type="html">&lt;p&gt;Klammern korrigiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Programmiersprache&lt;br /&gt;
| Name                          = Clojure&lt;br /&gt;
| Logo                          = [[Datei:Clojure logo.svg|120px|Clojure Logo]]&lt;br /&gt;
| Beschreibung                  = Lisp-Dialekt&lt;br /&gt;
| Paradigma                     = [[Funktionale Programmierung|Funktionale Programmiersprache]]&lt;br /&gt;
| Erscheinungsjahr              = 2007&lt;br /&gt;
| Designer                      = &lt;br /&gt;
| Entwickler                    = [[Rich Hickey]]&lt;br /&gt;
| AktuelleVersion               = 1.12.4&amp;lt;ref&amp;gt;[https://clojure.org/releases/downloads Clojure Downloads]&amp;lt;/ref&amp;gt;&lt;br /&gt;
| AktuelleVersionFreigabeDatum  = 10. Dezember 2025&lt;br /&gt;
| AktuelleVorabVersion          = &lt;br /&gt;
| AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
| Typisierung                   = [[Dynamische Typisierung|dynamisch]], [[Starke Typisierung|stark]]&lt;br /&gt;
| Implementierung               = &lt;br /&gt;
| Dialekte                      = &lt;br /&gt;
| Standardisierungen            = &lt;br /&gt;
| Beeinflusst_von               = [[Lisp]], [[Prolog (Programmiersprache)|Prolog]], [[ML (Programmiersprache)|ML]], [[Erlang (Programmiersprache)|Erlang]], [[Haskell (Programmiersprache)|Haskell]], [[Java (Programmiersprache)|Java]]&amp;lt;ref&amp;gt;{{cite web |title=Books that influenced Clojure |url=http://www.amazon.com/gp/richpub/listmania/fullview/R3LG3ZBZS4GCTH |date=2009-06-30 |author=Rich Hickey |language=en |access-date=2010-08-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| Beeinflusste                  = &lt;br /&gt;
| Betriebssystem                = [[Microsoft Windows|Windows]], [[Linux]], [[macOS]], [[Solaris (Betriebssystem)|Solaris]], [[FreeBSD]]&lt;br /&gt;
| Lizenz                        = [[Eclipse Public License]]&lt;br /&gt;
| Website                       = [https://clojure.org/ clojure.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Clojure&amp;#039;&amp;#039;&amp;#039; [{{IPA|ˈkləʊʒə(r)}}] ist ein moderner [[Lisp]]-Dialekt, der interaktive Entwicklung unterstützt. Die Sprache fördert einen [[Funktionale Programmierung|funktionalen]] Stil, der [[Thread (Informatik)|nebenläufige]] Programmierung stark vereinfacht. Clojure läuft in der [[Java Virtual Machine]] und ist eng mit der [[Java-Plattform|Java Runtime]] integriert. Eine [[JavaScript]]-Implementierung mit dem Namen ClojureScript sowie eine [[Common Language Runtime|CLR]]-Implementierung existieren ebenso. Das [[Makro#Makros in der Programmierung|Makrosystem]] ist mit dem anderer Lisp-Umgebungen vergleichbar, unterstützt jedoch (anders als etwa [[Common Lisp]]) keine Reader-Macros&amp;lt;ref&amp;gt;[https://groups.google.com/g/clojure/c/8RSLNWno0nU/m/9o5GC6mJUBsJ Google Group Konversation zu Reader-Macros mit Clojure-Gründer Rich Hickey (in Englisch)]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Gängige Hilfsmittel zur Paketverwaltung und zur Kompilierung von Clojure-Programmen sind tools.build, &amp;#039;&amp;#039;Leiningen&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;Boot&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;[https://www.braveclojure.com/appendix-b/ Clojure for the Brave and True - Appendix B Appendix B: Boot, the Fancy Clojure Build Framework], auf braveclojure.com (englisch)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Vollständige [[Hallo-Welt-Programm]]e:&lt;br /&gt;
&lt;br /&gt;
textuell im Lisp-Stil:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;clojure&amp;quot;&amp;gt;&lt;br /&gt;
(println &amp;quot;Hallo Welt!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
grafisch mit Hilfe der Java-Bibliothek [[Swing (Java)|Swing]]:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;clojure&amp;quot;&amp;gt;&lt;br /&gt;
(javax.swing.JOptionPane/showMessageDialog nil &amp;quot;Hallo Welt!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Fakultäts-Funktion als Beispiel für Rekursion in Clojure:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;clojure&amp;quot;&amp;gt;&lt;br /&gt;
(defn factorial [n]&lt;br /&gt;
  &amp;quot;tail recursive version of n!&amp;quot;&lt;br /&gt;
  (loop [cur n, acc 1]&lt;br /&gt;
    (if (&amp;lt;= cur 1)&lt;br /&gt;
      acc&lt;br /&gt;
      (recur (dec cur) (*&amp;#039; cur acc)))))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Fakultäts-Funktion durch Verwendung von Funktionen höherer Ordnung:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;clojure&amp;quot;&amp;gt;&lt;br /&gt;
(defn fac [n]&lt;br /&gt;
  (reduce *&amp;#039; (range 1 (inc n))))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Merkmale von Clojure ==&lt;br /&gt;
* Funktionale Sprache mit einer Lisp-Syntax.&lt;br /&gt;
* Dynamische, interaktive Entwicklung in der REPL (&amp;#039;&amp;#039;Read-eval-print loop&amp;#039;&amp;#039;).&lt;br /&gt;
* Neben der in [[Lisp]] klassischen Liste unterstützt die Syntax Vektoren, [[Assoziatives Datenfeld|assoziative Arrays]] und Mengen.&lt;br /&gt;
* Die Abstraktion der Folge (&amp;#039;&amp;#039;sequence&amp;#039;&amp;#039;) erlaubt es, alle diese Datenstrukturen uniform mit denselben Funktionen zu verwenden. Folgen werden typischerweise verzögert ([[Lazy Evaluation|&amp;#039;&amp;#039;lazy&amp;#039;&amp;#039;]]) ausgewertet.&lt;br /&gt;
* Alle Datenstrukturen sind Werte (&amp;#039;&amp;#039;immutable&amp;#039;&amp;#039;).&lt;br /&gt;
* Zustandsbehaftete Daten werden in Clojure durch spezielle Typen realisiert (&amp;#039;&amp;#039;atoms&amp;#039;&amp;#039; und &amp;#039;&amp;#039;refs&amp;#039;&amp;#039;). Der konkurrierende Zugriff auf Variablen mit veränderlichen Werten wird mittels STM ([[Transaktionaler Speicher|&amp;#039;&amp;#039;software transactional memory&amp;#039;&amp;#039;]]) durch das Laufzeitsystem der Sprache synchronisiert. Die Konzepte entsprechen der [[Multiversion Concurrency Control]], wie sie in [[Datenbank]]managementsystemen verwendet werden (exakt so wie in [[Oracle]]).&lt;br /&gt;
* Clojure wird zu Java-Bytecode kompiliert und in der [[Java Virtual Machine]] ausgeführt. Dadurch ist es möglich, in Clojure jede beliebige Java-Bibliothek zu verwenden, und für sehr viele von diesen gibt es (oft schmale) Wrapper-Bibliotheken in Clojure.&lt;br /&gt;
* Neben Clojure gibt es [[ClojureScript]], eine Sprache, die Konzept und Syntax mit Clojure teilt. Clojurescript wird zu [[JavaScript]] kompiliert.&lt;br /&gt;
&lt;br /&gt;
== Homoikonizität ==&lt;br /&gt;
Als Lisp-Dialekt spielt das Prinzip &amp;#039;&amp;#039;Code als Daten&amp;#039;&amp;#039; bzw. [[Homoikonizität]] eine wichtige Rolle. Das Makrosystem von Clojure beruht auf dieser Eigenschaft und erlaubt so [[Metaprogrammierung]]. Konkret kann Clojure davon profitieren, indem es Eigenschaften, die in anderen Programmiersprachen fest integriert sind, als Bibliotheken zur Verfügung stellt. Als Beispiele seien hier [[Pattern Matching]]&amp;lt;ref&amp;gt;[https://github.com/clojure/core.match/ core.match], auf github.com&amp;lt;/ref&amp;gt; und ein [[Typsystem]]&amp;lt;ref&amp;gt;[https://github.com/clojure/core.typed core.typed], auf github.com&amp;lt;/ref&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
== IDE-Unterstützung ==&lt;br /&gt;
* [[Light Table]] ist eine interaktive IDE mit Clojure-Unterstützung.&amp;lt;ref&amp;gt;[http://www.lighttable.com/ Light Table], auf lighttable.com&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Für [[IntelliJ IDEA]] gibt es das Plugin Cursive.&amp;lt;ref&amp;gt;[https://cursiveclojure.com/ Cursive]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Für [[Eclipse (IDE)|Eclipse]] gibt es Counterclockwise&amp;lt;ref&amp;gt;[https://github.com/ccw-ide CounterClockWise IDE], auf github.com&amp;lt;/ref&amp;gt; (seit 2018 nicht mehr gewartet).&lt;br /&gt;
* Eine ClojureCLR-Erweiterung für [[Visual Studio]] ist vsClojure.&amp;lt;ref&amp;gt;[https://github.com/vsClojure/vsClojure vsClojure], auf github.com&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Für [[Emacs]] sind Clojure-Mode&amp;lt;ref&amp;gt;[https://github.com/technomancy/clojure-mode Clojure-Mode], auf github.com&amp;lt;/ref&amp;gt; und CIDER&amp;lt;ref&amp;gt;[https://github.com/clojure-emacs/cider cider], auf github.com&amp;lt;/ref&amp;gt; verfügbar.&lt;br /&gt;
* Für [[Vim]] gibt es VimClojure.&amp;lt;ref&amp;gt;[https://www.vim.org/scripts/script.php?script_id=2501 VimClojure : A filetype, syntax and indent plugin for Clojure], auf vim.org&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Für [[Visual Studio Code]] gibt es Clojure&amp;lt;ref&amp;gt;[https://marketplace.visualstudio.com/items?itemName=avli.clojure Clojure], auf marketplace.visualstudio.com&amp;lt;/ref&amp;gt; oder Calva.&amp;lt;ref&amp;gt;[https://marketplace.visualstudio.com/items?itemName=betterthantomorrow.calva Calva], auf marketplace.visualstudio.com&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Für [[Sublime Text]] gibt es Clojure Sublimed.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://packagecontrol.io/packages/Clojure%20Sublimed |titel=Clojure Sublimed - Packages - Package Control |abruf=2022-02-24 | hrsg=packagecontrol.io }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Alex Miller mit Stuart Halloway und Aaron Bedra: &amp;#039;&amp;#039;Programming Clojure – Third Edition&amp;#039;&amp;#039;. Pragmatic Programmers, 2018, ISBN 978-1-68050-246-6.&lt;br /&gt;
* Rich Hickey: &amp;#039;&amp;#039;The Clojure programming language&amp;#039;&amp;#039;. In: &amp;#039;&amp;#039;Dynamic Languages Symposium archive, Proceedings of the 2008 symposium on Dynamic languages&amp;#039;&amp;#039;. Juli 2008, ISBN 978-1-60558-270-2, [[doi:10.1145/1408681.1408682]].&lt;br /&gt;
* Stefan Kamphausen, Tim Oliver Kaiser: &amp;#039;&amp;#039;Clojure&amp;#039;&amp;#039;. dpunkt.verlag, 2010, ISBN 978-3-89864-684-0.&lt;br /&gt;
* Carin Meier: &amp;#039;&amp;#039;Living Clojure&amp;#039;&amp;#039;. O’Reilly, 2015, ISBN 978-1-4919-0904-1.&lt;br /&gt;
* Chas Emerick, Brian Carper und Christophe Grand: &amp;#039;&amp;#039;Clojure Programming&amp;#039;&amp;#039;. O’Reilly, 2012, ISBN 978-1-4493-9470-7.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Commonscat}}&lt;br /&gt;
{{Wikibooks|Clojure Programming|lang=en}}&lt;br /&gt;
* [https://clojure.org/ Offizielle Website von Clojure]&lt;br /&gt;
* [http://clojure-doc.org/ Clojure Documentation] – gemeinschaftlich betriebenes Dokumentationsprojekt&lt;br /&gt;
* [https://clojuredocs.org/ ClojureDocs] – ebenfalls gemeinschaftlich betriebene Sammlung von Dokumentation und Beispielen&lt;br /&gt;
* [https://clojure.org/community/books Literatur zu Clojure]&lt;br /&gt;
* [https://www.linux-magazin.de/ausgaben/2010/01/nebenlaeufig/ &amp;#039;&amp;#039;Concurrent Programming mit Clojure&amp;#039;&amp;#039;.] In: &amp;#039;&amp;#039;Linux-Magazin&amp;#039;&amp;#039; (deutsch)&lt;br /&gt;
* [https://clojurescript.io/ Interaktiver Onlineinterpreter für Clojure und ClojureScript zum Ausprobieren]&lt;br /&gt;
* [https://www.youtube.com/playlist?list=PLZdCLR02grLrEwKaZv-5QbUzK0zGKOOcr Vorträge von Rich Hickey über Clojure]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=7722643-4}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lisp]]&lt;br /&gt;
[[Kategorie:Freies Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Funktionale Programmiersprache]]&lt;br /&gt;
[[Kategorie:Programmiersprache für die Java Virtual Machine]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Dk1909</name></author>
	</entry>
</feed>