51 Stimmen

Was ist Ihre Meinung zu Clojure?

Was haltet ihr von Clojure? Ich denke darüber nach, es als nächstes zu lernen. Derzeit benutze ich Erlang und bin im Allgemeinen zufrieden damit, mit Ausnahme des Fiaskos mit den Datensätzen... Ist Clojure so leistungsfähig wie LISP?

14voto

Berlin Brown Punkte 11220

"Clojure hat das Potenzial, für die nebenläufigkeitsorientierte Programmierung das zu tun, was Java vor einem Jahrzehnt für die objektorientierte Programmierung getan hat: es einfacher zu machen, eine Sprache (oder im Fall von Clojure eine "Sprachumgebung") zu verwenden, die dem ähnelt, was Programmierer bereits gewohnt sind. " -- Bill Clementson

Und Leute, LISP besteht aus einer Familie von Programmiersprachen. Es gibt Lisp-Dialekte wie Common Lisp und Clojure. Und darüber hinaus gibt es viele Implementierungen von Common Lisp oder Scheme.

5voto

Arthur Ulfeldt Punkte 89086

Ich habe Erlang bei der Arbeit für koordinierte Netzwerklasttests verwendet, und es war perfekt dafür, weil das Problem gut in Erlangs "Sweet Spot" der "korrekten Ausführung verteilter kommunikationsorientierter Software" lag. Ich finde Clojure VIEL besser für Code, der etwas Komplexes auf einer einzelnen Box mit mehreren Threads tun muss (dies ist ein häufigeres Szenario).

Sie haben die Nase vorn, weil Sie Erlang kennen, und das wird Ihnen helfen, die Probleme zu erkennen, bei denen es wirklich glänzt. Wo liegt Ihrer Meinung nach der wahre "Sweet Spot" von Clojures?

5voto

artagnon Punkte 3461

Clojure ist ein Lisp-1, ja. Betrachten Sie es als ein schöneres Common Lisp ohne den ganzen historischen Ballast. Es hat auch einige moderne Nebenläufigkeitsfunktionen wie STM und Agenten (es wurde beschlossen, das Actors-Modell von Erlang nicht zu implementieren). Der Vorteil der Ausführung auf der JVM ist einfach - es gibt bereits SO viele Bibliotheken dafür geschrieben (meist in Java).

Clojure in Clojure ist ein laufender Versuch, den Clojure-Compiler in Clojure neu zu schreiben, um ihn portabler und wartbarer zu machen. Abgesehen von core.clj ist das meiste von Clojure derzeit in Java geschrieben. Nach dieser Umstellung wird es möglich sein, es auf eine Vielzahl von VMs zu portieren, einschließlich Parrot.

3voto

deepblue Punkte 8046

Was ich mit "ist Clojure so mächtig wie LISP" meine, ist, dass ich irgendwo hier auf Stackoverflow gelesen habe, dass Common Lisp Lisp-2 und Clojure Lisp-1 ist? (Ich könnte hier leicht abschweifen)...

Was die Gleichzeitigkeit betrifft, gefällt mir die Erlang-Geschichte sehr gut, da es so einfach ist, Anwendungen zu verteilen, indem man sie im Akteursmodell schreibt

vom Schöpfer von Clojure unter http://groups.google.com/group/clojure/browse_thread/thread/2a2b24ffef5d1631?pli=1

"Selbst mit Akteuren wird Clojure noch keine verteilte Gleichzeitigkeit bieten. Geschichte, aber ich erwäge, Erlangs Geschichte komplett zu übernehmen, indem ich Jinterface für Clojure<->Clojure oder sogar Clojure<->Erlang verteilte Prozesse. Vielleicht sieht das dann aus wie Termite, wenn es fertig ist. Bleiben Sie dranbleiben. "

3 Stimmen

Lisp-1 vs. Lisp-2 bezieht sich darauf, ob Funktionen im gleichen Namensraum wie alles andere leben, oder ob Funktionen ihren eigenen Namensraum haben. Das hat nichts mit Leistung zu tun. Es bedeutet, dass Scheme "lst" als Variablenname anstelle von "list" verwenden muss, und CL muss "funcall" sehr oft verwenden.

0 Stimmen

So in der Scheme-Beispiel u're sagen, dass, weil Variablen des Objekts in den gleichen Namensraum wie seine Methoden sind?

1 Stimmen

(Clojure umgeht das Problem von Lisp-1 mit der Symbolerfassung in Makros, indem es alle Symbole mit ihrem Namensraum qualifiziert: de.wikipedia.org/wiki/Clojure#Makros )

3voto

Leslie P. Polzer Punkte 2970

Mir gefällt Common Lisp besser als Clojure, weil die Syntax regelmäßiger ist und es nicht an die schrecklichen (IMHO) Java-APIs gebunden ist.

Bei Common Lisp habe ich außerdem die Wahl zwischen mehreren ausgezeichneten und gut getesteten Implementierungen und einem ausgereiften Standard, auf den ich mich verlassen kann.

Aber wenn ich Java für einen Job verwenden müsste, würde ich auf jeden Fall Clojure in Betracht ziehen :)

0 Stimmen

Ich sehe nicht, wie die Syntax durch Java-APIs beeinträchtigt wird :\

4 Stimmen

Sie müssen keine Java-APIs in Clojure verwenden, wenn Sie das nicht wollen, d.h. Sie können großartigen, funktionalen LISP-Code in Clojure schreiben, ohne die Java-Interoperabilitätsfunktionen anzufassen. Andererseits gibt es viele großartige Java-Bibliotheken, so dass ich persönlich dies als einen großen Pluspunkt von Clojure ansehe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X