Clojure - Erfahrungen/Meinungen?



  • Hallo zusammen,

    ich bin gerade beim fröhlichen browsen über Clojure gestolpert. Was da so steht hört sich schon interessant an.
    Hat sich das mal jemand etwas genauer angeschaut und kann vielleicht ein wenig berichten?
    Was sagen die CL-Verfechter dazu? 🙂



  • Ich versuche schon länger, mir dazu eine Meinung zu bilden. Anfangs war ich extrem skeptisch, aber soviele Leute, die soviel kompetenter als ich sind, sind von Clojure fürchterlich begeistert und die Features lesen sich ja nicht gerade uninteressant.

    Selbst wenn ich sonst nicht viel sagen kann, ist es wohl eine wirklich praxistaugliche Möglichkeit, ein Lisp für richtige 0815-Aufgaben einzusetzen, die wohl auch kundennäher sein dürfen, als das bei mir üblich ist bzw. es mit den üblichen Deployment-Methoden mit freien Lisps Spaß macht.

    Aber würde mich persönlich auch sehr interessieren, wenn hier irgendjemand dazu was halbwegs fundiertes oder zumindestens erhellende Einschätzungen dazu zum Besten geben könnte.



  • Was genau willst du denn wissen? Gibt immernoch ein paar nervige Dinge, wie fehlende Tailcalls, die man mit recurs und einem vor kurzem dazugekommenen (expliziten!) Trampolining-Mechanismus umgehen kann (liegt daran, das die JVM keine Tailcalls hat).

    Clojure setzt weitestgehend auf Immutability, bringt entsprechend (sehr gute) persistente Datenstrukturen mit.

    Stärke ist eben Concurrency. Ein sehr ausgeriftes STM-System (Software Transactional Memory) über sogenannte Refs (so ähnlich, wie das was man aus ML kennt, aber mit Threadsemantik; im Gegensatz zu Haskell hat man aber kein Typsystem, das in Transaktionen garantiert, dass man keine Seiteneffekte verursacht), sogenannte Agents, die auf den ersten Blick aussehen, wie Actors aussehen, aber doch deutlich anders sind. Das Agent-System ist gut in das STM-System integriert, so dass man Seiteneffekte gut über diese erledigen kann (der Effekt wird trotz möglichen Rollbacks garantiert nur einmal ausgeführt, man weiß nur eben nicht genau wann; inmeinen Spielzeug-Projektchen bisher noch keine Probleme gehabt). Dann gibt's noch Vars, seit kurzem Atoms.
    Der Umgang mit STM ist deutlich einfacher als manuelles Locken, aber IMO auch nicht die "Silver Bullet" für das Many-Core-Problem (trotzdem ein Riesen Fortschritt und ein Werkzeug, das man in diesem Zusammenhang nicht verachten sollte).

    Da es auf der JVM läuft hat man einen verdammt guten JIT Compiler und Zugriff auf alle Java-libs und somit Bibliotheken für quasi alles, was man sich irgendwie vorstellen kann. Insoweit also Real-World-tauglich.

    Ich würde emphelen einfach mal die Vorträge von Rich Hickary anzusehen (gibt ne Version für Java-Programmierer und eine für Lisper).



  • Helium schrieb:

    Was genau willst du denn wissen?

    Naja, eine Meinung/Einschätzung, ob es wirklich eine interessante Sprache ist, oder halt "doch nur eine weitere".

    Helium schrieb:

    Gibt immernoch ein paar nervige Dinge, wie fehlende Tailcalls, die man mit recurs und einem vor kurzem dazugekommenen (expliziten!) Trampolining-Mechanismus umgehen kann (liegt daran, das die JVM keine Tailcalls hat).

    Ja, hab ich auch schon ein wenig drüber gelesen. Ist das jetzt "unsauber", "grottenhässlich" oder nur "naja"? Ich meine, ist es in der Praxis ein Problem so wie es jetzt ist?

    Helium schrieb:

    Ich würde emphelen einfach mal die Vorträge von Rich Hickary anzusehen (gibt ne Version für Java-Programmierer und eine für Lisper).

    Guter Hinweis, danke. Die gibt es hier: http://clojure.blip.tv/#989128


Anmelden zum Antworten