Im Allgemeinen finde ich so stark Punkte für Clojure (in keiner bestimmten Reihenfolge):
1) Die REPL Dinge interaktiv ausprobieren.
2) Alles ist unveränderlich von Ausfall- und Veränderlichkeit mehr gut gewählte Standardmuster hat
3) Endrekursion explizit gemacht Zustand auf sichere Weise in einer Multithread-Umgebung zu modifizieren. Bis es richtig Unterstützung für Tail-Rekursion auf der JVM gibt, ist dies wahrscheinlich der beste Kompromiss.
4) Sehr ausdrucksstarke Sprache, die einen funktionalen Ansatz gegenüber einem imperativen Ansatz bevorzugt.
5) Sehr gute Integration mit der Java-Plattform es schmerzlos in Java-Bibliotheken
6) Leiningen als Build und Abhängigkeitsmanagement-Tool zusammen mit der clojars Website
Ok zu mischen, Punkt 6 hat nichts mit der Sprache perse zu tun, aber definitiv mit meiner Freude, es zu benutzen.
In Bezug auf Anwendungen zielt es Multithreading-Anwendungen, aber so wie die Dinge jetzt gehen, dass alles bedeuten könnte, wie überall Menschen versuchen, all diese Kerne beschäftigt zu halten, während der Benutzer nicht Warten sind. Auf der anderen Seite verwenden anscheinend viele Leute es zur Google App Engine, die radikal EINFACH ist.
Der funktionale Ansatz funktioniert gut in meiner (begrenzten) Erfahrung für die Implementierung von Datentransformationen und Berechnungen. Wo Informationen und Ereignisse durch die Anwendung "gestreamt" werden können. Web-Apps fallen weitestgehend unter diese Kategorie, wo wir eine Anfrage in eine "Antwort" verwandeln.
Aber ich muss es immer noch in realen Produktionscode verwenden. Momentan verwende ich es für persönliche Projekte und Prototyping/Benchmarking.
Die Vorteile benötigt von clojure im Vergleich zu was? Gemeinsame Liste? Planen? Java? – sepp2k
http://clojure.org/rationale – msw
@ Sepp2k: Sie wahrscheinlich gemeinsame LISP gemeint – Max