2008-10-08 24 views
27

Nachdem ich Clojure entdeckt habe, habe ich die letzten paar Tage darin verbracht.Wie kann ich von Java zu Clojure wechseln?

Welche Projekttypen eignen sich für Java über Clojure, umgekehrt und in Kombination?

Was sind Beispiele für Programme, die Sie nie zuvor Clojure versucht hätten?

+1

Ich habe noch nie davon gehört! Aber sein Lisp! Hurra! Lisp kommt zurück! –

+0

Ich bin daran interessiert, die Antwort auch zu wissen. Ich würde gerne mehr über Clojure erfahren. –

+0

@Andre Bossard: Es ist nie gegangen. Aber jetzt, in Bezug auf Clojure, hat es Lisp definitiv geholfen, "Mainstream" zu werden. Mehrere Startups verwenden Clojure und es wird angenommen, dass es mindestens Zehntausende von Clojure-Programmierern gibt: diese Sprache ist einfach ein Arschfick. Sei beim nächsten Mal vorsichtig mit Sarkasmus: Du wirst niemals nach so vielen Jahren deinen unnötigen Sarkasmus am Ende albern aussehen lassen. –

Antwort

14

Clojure eignet sich gut zu concurrent programming. Es bietet so wunderbare Werkzeuge für den Umgang mit Threading als Software Transactional Memory und veränderbare Referenzen.

Als eine Demo für die Western Mass Developer's Group, machte Rich Hickey eine Ameisenkolonie-Simulation, in der jede Ameise ein eigener Thread war und alle Variablen unveränderlich waren. Selbst mit einer sehr großen Anzahl von Threads hat es super geklappt. Das liegt nicht nur daran, dass Rich ein erstaunlicher Programmierer ist, sondern auch, weil er sich beim Schreiben seines Codes keine Gedanken über Sperren machen musste. Sie können seine presentation on the ant colony here überprüfen.

+0

Großartige Köpfe denken gleich :) Rick und ich waren beide an der Parallelpräsentation, die Rich Hickey Anfang dieses Jahres in Northampton gemacht hat. –

+0

Weiß jemand, wo die Quelle für diese Ameisenkolonie-Demo zu finden ist? –

+0

Ant Colony Quelle: http://clojure.googlegroups.com/web/ants.clj –

6

Wenn Sie gleichzeitige Programmierung versuchen, dann denke ich, clojure ist viel besser als das, was Sie von Java aus der Box bekommen. Werfen Sie einen Blick auf diese Präsentation zu sehen, warum:

http://blip.tv/file/812787

ich meine ersten 20 Tage mit Clojure auf meinem Blog

http://loufranco.com/blog/files/category-20-days-of-clojure.html

dokumentiert ich mit den SICP Vorlesungen gestartet und baute dann eine parallele Primzahl Sieb. Ich habe auch mit Makros herumgespielt.

+0

@LouFranco: Oh hey, yeah Ich habe all deine Posts letzte Nacht gelesen, habe die Verbindung vorher nicht hergestellt, sorry. Es war sehr informativ, danke. :) Ich habe mir alle Videos angeschaut und lese viele Blogs sowie deine eigenen. Ich frage mich wirklich, ob es möglich ist, das Schiff komplett zu überspringen. –

+0

Das größte Problem für mich ist die Interpretation von Fehlermeldungen vom Compiler. Es wird mit der Zeit einfacher. Ich habe gerade kein Projekt, dass ich auf der JVM laufen möchte, aber wenn ich es tun würde - wäre es in Clojure. –

4

Welche Projekttypen eignen sich Java über Clojure, umge kehrt, oder in Kombination?

Ein Projekt, bei dem ein GUI-Building-Tool (wie Matisse in Netbeans) ist einen Fall wäre erforderlich, in denen Java kann noch erforderlich sein. Alles getan in Java kann in Clojure durchaus bereitwillig getan werden, mit Proxy und gen-Klasse, wenn benötigt, oder nur Zugriff auf Java als benötigt (., Doto, neu, etc.). Mit dieser können Clojure-Projekte problemlos Java-Bibliotheken oder älteren Java-Code verwenden.

Welche Programme hätten Sie vor Clojure nie versucht?

Bevor ich Clojure gefunden, ich war ein Projekt betrachten, die JDBC erforderlich ist, würde in einem Servlet Container laufen, und ich erwartete eine viele iterative Entwicklung zu tun, weil nicht klar war, welche Methoden würde arbeite für die Daten, die ich analysieren musste. Ich setze es auf den hinteren Brenner, weil ich hatte nicht die Zeit oder die Geduld für die Compile-Debug-Deploy-Validierung Radfahren, dass Java erfordert. Ich habe jetzt geschrieben die Anwendung in Clojure, und ich bin sehr zufrieden über die Leichtigkeit der Änderungen im laufenden Betrieb und in der Lage, die Ergebnisse sofort zu überprüfen.Ganz zu schweigen von der Freude der Lock-Free-Programmierung und befreit von der Entwicklung Klassenhierarchien (und Refactor).

- "Mikem" über die [email protected] Mailingliste

+0

Haben Sie ein Framework zum Erstellen eines Clojure-Servlets verwendet? – Pablo

+0

@ J.PabloFernández: Ich würde vorschlagen, dass du zur Clojure-Gruppe @ Google Groups gehst und deine Frage stellst. Es gibt viele erfahrene Benutzer zusammen mit dem Schöpfer von Clojure Rich Hickey. –

2

Welche Projekttypen sich Java über Clojure verleihen, umgekehrt, und in Kombination?

Wenn Sie einen Rahmen zu entwickeln, die von Java und Clojure verbraucht werden soll, habe ich die wichtigsten Abstraktionen zu schreiben (Schnittstellen ad Basisklassen) in Java gefunden über das Schreiben vorzuziehen zu sein, um sie in Clojure (ich finde Clojure gen-class um etwas langweilig zu sein und lieber).

Wenn Sie ein Benutzer von Hibernate oder eines anderen Frameworks sind, das häufig Java-Annotationen verwendet, ohne eine programmatische Alternative anzubieten, werden Sie einige Probleme haben, da es nicht trivial ist, annotierte POJOs mit Clojures Datenstrukturen zu emulieren.

Abgesehen davon habe ich keine Anwendungsfälle erlebt, für die Clojure weniger geeignet ist als Java; Man muss natürlich mit dem Verlust der statischen Typisierung zurechtkommen, was zunächst etwas befremdlich wirkt, aber eher weggeht.