Warum Clojure gegenüber anderen JVM-Lisps: Kawa, Bewaffneten Bären oder SISC?
JVM hatte bereits drei Lisps vor Clojure kam auf die Szene: KawaBewaffnete Tragen und SISC.
Welche Lücke hat Clojure füllen, was übrig war von jenen Lisps?
InformationsquelleAutor der Frage uzo | 2009-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kawa, ABCL, und SISC sind reimplementations der vorhandenen Sprachen, die ziemlich lange im zahn. Sie sind ausgezeichnet, wenn aus irgendeinem Grund Sie möchten, verwenden Sie ein standard-Schema oder standard Common Lisp auf der JVM.
Clojure ist eine neue Sprache. Es füllt nicht eine Lücke. Es fügt völlig neue Möglichkeiten. Es tritt ein rein funktionaler Ansatz - Scheme-und CL sind beide multi-Paradigma. Clojure leiht sich stark von der Gestaltung der verschiedenen FP-Sprachen (ML, Haskell).
Und ja man könnte hinzufügen, die Unterstützung von Parallelität zu anderen Lisps, aber das ist völlig fehlt der Punkt. Clojure wurde von Anfang an als gleichberechtigte Sprache. So sehr, dass schreiben von gleichzeitigen Programme ist trivial Clojure - nicht Rakete-Wissenschaft, wie Sie in nicht-funktionalen Sprachen (Schema CL nicht ausgeschlossen). Suchen auf diesem Weg:
Leute sagen, dass C können Sie schnell schreiben Programme standardmäßig.
Gut, Clojure können Sie schreiben Auger Programme standardmäßig.
InformationsquelleAutor der Antwort dnolen
"Clojure ist ein Lisp-nicht eingeschränkt durch die rückwärts-Kompatibilität" (das sind die aus der Clojure-Webseite).
Es ist ein Neuanfang. Es ist Fortschritt. Verwenden Sie die Ideen, die die Lisp/Scheme mächtig, aber überdenken Sie rund um die Java - Plattform.
Clojure werden immer die aktuellsten Clojure. Mit jeder anderen Sprache portiert, um die JVM die JVM-version kann immer spielen catch-up. Wenn Sie nicht die Java-Plattform, warum SISC über ein anderes Schema? Wenn Sie es tun, warum nicht verwenden, die eine Lisp (Clojure), das speziell entworfen wurde?
Entworfen mit Parallelität in den Sinn.
InformationsquelleAutor der Antwort z5h
Die einfachste Antwort, die ich mit oben kommen kann ist, Clojure ist nicht die Common-Lisp. Clojure ist nicht eingeschränkt, durch die Geschichte von anderen Lisps. Es ist ein neue Sprache gebaut für die JVM.
InformationsquelleAutor der Antwort Rayne
Ich war einfach nicht bewusst, diejenigen, die eine ernste Vorteil für Clojure (dass die Menschen machten genug Lärm fand ich heraus). Die größte Sache, die Clojure hat, dass ich nicht sehen, in denen Sie aufgeführt ist Software Transactional Memory.
Clojure wurde auch entwickelt für die JVM, im Gegensatz zu einer Ebene für eine andere Sprache, so ist es ein wenig mehr "Java-y", das ich mir vorstellen das andere wäre, wenn Sie zu tun haben, die Interoperabilität.
InformationsquelleAutor der Antwort MBCook
Wenn ich als zynisch, würde ich sagen, dass es ist, weil Clojure hat eine schöner website und ein sexy name.
InformationsquelleAutor der Antwort ire_and_curses
Begründung Seite auf clojure.org Staaten:
Tun, die 3 Sprachen, die Sie erwähnt (Kawa, ABCL und SISC) erfüllen diese Anforderungen? Sie sind:
aber Sie sind nicht entwickelt für (STM) Gleichzeitigkeit; aber, um fair zu sein, und komplett, es sind mindestens 2 STM-Bibliotheken fand ich für die CL, die noch nicht erwähnt wurde:
Hmm... warum Also erstellen Sie eine neue Lisp? Vor allem, weil diese sind Bibliotheken. Die Begründung auf Seite clojure.org weiter (Hervorhebung Hinzugefügt):
Es ist ein Sprache Parallelität design Problem, wie andere erwähnt haben.
Außerdem, warum Anschlag auf die JVM? Clojure CLR-Unterstützung ist in der aktiven Entwicklung.
Diejenigen sind, die 2 Lücken füllt, aus meiner Sicht. Sie verwenden sollten, Clojure, wenn es Ihren Anforderungen entspricht. Mach dir keine sorgen über den Verlust Ihrer Fähigkeiten, wenn Clojure Tropfen aus der Karte. Ihre Lisp-Fähigkeiten, aber noch wichtiger ist Ihre Art zu denken, führt über zu anderen Lisp-Dialekten.
InformationsquelleAutor der Antwort Francis Harbison
Ich sollte auch hinzufügen, dass Clojure ist eine relativ neue Sprache, durchgeführt von einer person, mit guten marketing-Fähigkeiten und eine Menge Energie. Er investiert viel Zeit und hype in clojure ... manchmal, der hype ist eine sich selbst erfüllende Prophezeiung, wenn Sie überzeugen können, genug Leute, dass es ist die neueste größte Sache, dann kann man die bekommen genug Unterstützung und den Schwung, um es wirklich funktionieren.
Ich vermute, der Entwickler von Kawa etc. nicht so viel auf dem Spiel, sind also nicht hochgespielt Ihr Produkt. Außerdem, was ist es hype? "Wir haben eine tolle Sprache .. es heißt Lisp" Es ist ein schwerer marketing verkaufen.
Ich denke, Java ist ein gutes Beispiel dafür. Es hatte einige sehr gravierende Mängel, sondern weil es wurde beworben und gehyped wird, so schwer es erreicht viel Schwung, was bedeutete, Unterstützung von hardware - /software-Anbieter, Hersteller von Werkzeugen, Investitionen in der Industrie, usw. So oder so, es erreicht einen gewissen Erfolg, obwohl ich hasste Programmierung. Clojure erreichen könnten einen ähnlichen Erfolg, wo andere Lisps nicht.
InformationsquelleAutor der Antwort Larry Watanabe
Den Vorteil, Clojure ist, dass es gibt Ihnen Zugriff auf alle java-Bibliotheken/code gibt, und multi-threading Unterstützung, denn es basiert auf der JVM. Zusätzlich wurde er mit Parallelität im Sinn, etwas, das nicht in der Regel sollen in lisp, obwohl wegen der Zuordnung primitive, wäre es wahrscheinlich nicht schwer sein zu entwerfen ein lisp, das die Parallelität gut.
Dass gesagt wird, ich habe versucht, Clojure und hasste die syntax und die Schmerzen in den Hintern Faktor, der scheint zu gehen zusammen mit etwas, das mit Java verbunden.
InformationsquelleAutor der Antwort Larry Watanabe
Clojure ist ein "lisp", es ist nicht jeder lisp-Sie wissen schon. Ich habe in den letzten
paar Tagen liest das material und den videos, und ich bin beeindruckt. Seine
Voraussetzung ist, dass funktionale Programme (basierend auf unveränderliche Daten) sind der beste Weg, um
verwalten der Parallelität. Clojure implementiert eine lisp-ähnliche system, basierend auf der JVM zur Verfügung stellen.
InformationsquelleAutor der Antwort ddyer
Wir nicht haben, um eine weitere Antwort (und ich erwarte nicht, dass Stimmen für diese ein), aber hier sind einige kleine Erweiterungen zu mehreren anderen Antworten.
Neuer ist nicht unbedingt besser. Neuere und schlecht entwickelt, ist nicht gut, neuere und nicht gepflegt ist nicht gut, und die neueren ohne größere (oder zumindest immer) user-community ist nicht gut. (Neue Sprachen kommen regelmäßig, aber die meisten von Ihnen auf der Strecke bleiben, weil der Nichtnutzung.)
Ich Liebe Common Lisp. Ihre Schönheit ist seine Schrulligkeit, die sich aus der Tatsache, dass es wurde entworfen von Ausschüssen mit dem Ziel der Abwärtskompatibilität zu mehrere inkompatible Dialekte.
Ich Liebe Schema. Es ist eine schöne, elegante Sprache. Dennoch, seine Entwicklung hängt davon ab, Ausschüsse, und vielleicht hat das bremst mal. In jedem Fall, seine Ziele unterscheiden sich von Clojure.
Common Lisp und Scheme haben Schwerpunkte wie tail-Rekursion, die sind nicht gut geeignet, um die Effizienz auf der JVM. Clojure wurde von Anfang an anzeigen, sowie auf der JVM, und die die Interoperabilität zwischen (ziemlich) gut mit Java. (Ich bin mir nicht sicher, was das bedeutet, über die Clojurescript-und CLR-Dialekte.)
Die Tatsache, dass Clojure entwickelt wurde, wird zunächst von einer person, Rich Hickey, und ist von ihm kontrolliert zusammen mit einem kleinen team, nicht unbedingt machen es besser als eine Sprache, die gesteuert durch die Ausschüsse. Wenn eine person, die schlechte Entscheidungen treffen, Clojure wäre keine gute Sprache.
Jedoch, und das ist der wichtige Punkt: Hickey entwickelt, eine Sprache, die ist gut durchdacht, elegant und von Anfang an enthalten eine systematisch zusammenhängende suite von Funktionen, die es einfach zu machen, eine Menge mit ein wenig. Das gilt für die grundlegende JVM-interop-ebenso wie der rest der Sprache. Die Leute, die die Kontrolle über Clojure weiterhin ein strenges festhalten an der Sprache Ziele, so weit.
Dies ist ein großer Teil von dem, was ich Liebe über Clojure: Es ist gut gestaltet, sowohl als ganzes sowie in seinen details. Das bedeutet, dass, sobald Sie gewöhnen es, es ist eine Freude zu Programmieren.
Wäre es nur ein bisschen eine übertreibung (oder understatment?) zu sagen, dass Clojure die macht hat, Common Lisp mit der Eleganz der Regelung. Common Lisp hat viele und viel von dem, was Sie brauchen, erstellt in der Sprache, aber es ist ein Chaos (ich sage das mit Liebe), und wenn Sie etwas brauchen mehr als das, was in der Sprache gibt es manchmal mehrere inkompatible Bibliotheken mit verschiedenen Kompromisse. Schema design ist klein, es gibt zwar Bibliotheken zur Verfügung. Clojure hat eine wachsende Zahl von standard Bibliotheken (im Gegensatz zu CL), mehr oder weniger Teile der Sprache. Eine schöne illustration dieses ist der Kern.matrix-Projekt, das bietet eine gemeinsame Schnittstelle zu mehreren verschiedenen matrix-Implementierungen. Dies ist wichtig, da es verschiedene matrix-Implementierungen, die sind am besten für den gelegentlichen Gebrauch von kleinen Matrizen, oder für den umfangreichen Einsatz von sehr großen Matrizen, zum Beispiel.
Nichts davon ist zu sagen beabsichtigte, dass Clojure ist besser als Common Lisp oder Scheme, ist es nicht. Die drei Sprachen haben unterschiedliche Tugenden.
InformationsquelleAutor der Antwort Mars
Es ist neu! Das bedeutet nicht eine Menge von alten lispers benutzt es, da die traditionellen lisp-community ist gut, traditionell, aber es bedeutet auch, dass Menschen ohne Vorherige lisp Erfahrung es aufnehmen werden, wie die neue Sache.
Imho, Clojure ist älter Lisps, was Ruby war Smalltalk. Nicht unbedingt besser, aber gut genug. Und entscheidend ist, dass es mehr akzeptabel für Ihren Arbeitgeber, denn es hat Schwung und ist angesehen als eine Sprache auf dem Vormarsch, ähnlich wie Ruby einmal war.
InformationsquelleAutor der Antwort saolof