Clojure ausprobieren
(tryclojure.org)- Try Clojure ist eine 5-minütige Mitmach-Seite, auf der sich Clojure-Ausdrücke direkt im Browser auswerten lassen
- Die Eingaben im REPL auf der rechten Seite werden als read-eval-print loop ausgeführt
- Beispielausdrücke wie
(+ 1 2)können direkt eingegeben oder per Klick auf Code-Snippets automatisch eingefügt werden - Mit
(help)lassen sich die Befehle anzeigen, und wenn alles bereit ist, startet das Erlebnis mit(start) - Die Seite wurde mit ClojureScript erstellt; Elia Scotto, Michiel Borkent und die Clojure-Community sind in den Mitwirkendeninformationen genannt
Clojure direkt im Browser ausführen
- Try Clojure ist als kurzes Clojure-Erlebnis mit dem Hinweis „Got 5 minutes?“ aufgebaut
- Im REPL auf der rechten Seite werden die vom Nutzer eingegebenen Clojure symbolic expressions ausgewertet
- Der Ablauf ist einfach
- Ausdrücke wie
(+ 1 2)direkt eingeben - Auf Code-Snippets klicken, um sie automatisch einzufügen
- Mit
(help)die Befehle anzeigen - Mit
(start)beginnen
- Ausdrücke wie
Informationen zur Erstellung
- Die Seite enthält ein Zitat von Rich Hickey: „If you want everything to be familiar, you'll never learn anything new.“
- Try Clojure wurde mit ClojureScript erstellt; als Ersteller ist Elia Scotto genannt
- Außerdem wird Michiel Borkent sowie der Clojure-Community gedankt
1 Kommentare
Hacker-News-Kommentare
Schön, dass das wieder da ist. Eine sehr alte Version davon hat mich dazu gebracht, Clojure auszuprobieren, und diese Entscheidung wurde zur prägendsten meiner Karriere.
Ich nutze Clojure immer noch fast täglich bei der Arbeit und zu Hause – manchmal Standard-Clojure, manchmal das großartige Babashka als Ersatz für Task-Runner wie Make oder Zsh-Skripte.
Go ist ebenfalls eine starke zweite Wahl, wenn ich zu einem einzelnen Binary kompilieren muss, aber Clojure fühlt sich für mich am angenehmsten an, weil der REPL-basierte Entwicklungs-Workflow eher wie ein Dialog mit dem Programm wirkt als die übliche Schreiben-Kompilieren-Ausführen-Schleife.
Zusammen mit der Tatsache, dass es auf der JVM läuft, ergibt das ein Toolset, mit dem man Dinge mit Freude erledigen kann. Wenn du auch nur ein wenig Interesse an Lisp und funktionaler Programmierung hast, empfehle ich dringend, es auszuprobieren; wenn du VSCode verwendest, ist das Calva-Plugin eine große Hilfe.
Der Wechsel zu einer weniger ausdrucksstarken Sprache war für mich schmerzhaft und nervig; ich erinnere mich, dass beim Wechsel von Python zu Java 5 Code für denselben Inhalt drei- bis fünfmal länger wurde.
Vermutlich liegt der Schlüssel darin, mit weniger ausdrucksstarken Sprachen nur kleine Dinge zu schreiben, etwa Shell-Skripte, kleine C-Funktionen für Performance oder Foreign-Function-Interfaces oder kleine Go-Utilities.
Wenn du Clojure zum ersten Mal ausprobierst und sofort sinnvoll damit experimentieren willst, empfehle ich nachdrücklich die Babashka-Runtime fürs Scripting: https://babashka.org
Sie macht Spaß, ist zugänglich und gehört zu den ausgereifteren Teilen des Clojure-Ökosystems.
Im Unterschied zu vollständigem JVM-Clojure startet sie sehr schnell, ist daher ein guter Einstiegspunkt, und Anfänger können mit bereits vertrauten File-Watching-/Reloading-Tools wie etwa nodemon quasi interaktiv arbeiten.
Später lohnt sich der Wechsel zu einem vollständig interaktiven Setup mit REPL-Verbindung im Editor, aber für Anfänger ist dieser Workflow ungewohnt und die Einrichtung kann umständlich sein.
Ich musste eine kleine UI bauen, die Statistiken einer Arbeits-App anzeigt, und habe es zusammen mit HTMX verwendet – das war eine sehr gute Erfahrung.
Babashka bringt fast alles mit, was man für eine einfache Web-App braucht, und mit HTMX kann man dynamisches Laden auf der Seite umsetzen, ohne sich mit einem JavaScript-Frontend beschäftigen zu müssen.
Außerdem kann man mit
bb --nrepl-servereinen nREPL starten und dann einen Editor wie Calva verbinden, um Skripte interaktiv zu entwickeln; wenn du eine einfache Web-UI brauchst, lohnt sich ein Blick darauf.Eine Website in ähnlicher Richtung ist auch https://www.maria.cloud/
Sie ist eher darauf ausgerichtet, kompletten Anfängern Programmieren beizubringen, aber die grundlegenden paredit-artigen Bearbeitungen und die Auswertung auf Form-Ebene kommen der tatsächlich genutzten REPL-getriebenen Entwicklung meiner Meinung nach deutlich näher.
Direkt in ein REPL-Terminalfenster zu tippen, hat eine sehr schlechte Ergonomie; in der Praxis ist es meist realistischer, mit etwas wie Calva in VSCode oder CIDER in Emacs die Form unter dem Cursor an einen irgendwo laufenden REPL-Prozess zu senden.
Der beste Grund, Clojure zu lernen, ist Reagent, und ich halte es mit Abstand für die beste Art, React zu verwenden: https://reagent-project.github.io/
shadow-cljs erleichtert die Nutzung von npm-Libraries: https://github.com/thheller/shadow-cljs
Als Grundkonfiguration habe ich mich auf ein Go-Backend und ein Reagent-Frontend festgelegt: https://github.com/nathants/aws-gocljs
Ich wollte klarer sehen, was intern passiert, und einfacher mit nativen React-Komponenten interoperieren
Es scheint zwar bei der experimentellen Unterstützung für React 18 aufzuholen, aber Reagent ist bei den aktuellen React-Entwicklungen zurückgefallen und profitiert möglicherweise nicht von allen Performance-Optimierungen
Es verwendet noch class components und keine Hooks, und es gibt auch Bedenken, dass die Hiccup-Laufzeittransformation die Performance verschlechtern könnte
In den meisten Fällen dürfte das aber kein spürbares Problem sein, und wenn man nichts Ausgefallenes macht, ist es wohl in Ordnung. Das UI-as-data-Modell von Hiccup vermisse ich, daher könnte ich irgendwann zu Reagent zurückkehren
Für State Management empfehle ich re-frame nachdrücklich: https://day8.github.io/re-frame/
Anfangs kann es abschreckend wirken, aber die Dokumentation ist hervorragend, und sobald man es verstanden hat, ist das Modell sehr klar
Es gibt auch Alternativen wie Helix(https://github.com/lilactown/helix) oder UIx(https://github.com/pitch-io/uix) sowie refx(https://github.com/ferdinand-beyer/refx), das die Reagent-Abhängigkeit fast vollständig entfernt hat
Oder man kann UIx/Helix Interop-Code hinzufügen und re-frame anbinden: https://github.com/pitch-io/uix/blob/master/docs/interop-wit...
Im Jahr 2024 kann man keine leere HTML-Datei ausliefern, weil das die Suchmaschinenoptimierung ruiniert; wenn das also nicht der Fall ist, würde ich es gern ausprobieren
Die Zeit, in der ich Clojure genutzt habe, war wirklich großartig, und ich empfehle es sehr: https://eli.thegreenplace.net/2017/clojure-the-perfect-langu...
Daniel Higginbothams Clojure for the Brave and True ist eine wirklich hervorragende Ressource, um Clojure zu lernen, und ich empfehle sie nachdrücklich
Man kann es kostenlos online lesen: https://www.braveclojure.com/clojure-for-the-brave-and-true
Das eigentliche Problem des Buchs ist nicht Clojure, sondern dass es zuerst Emacs zu lehren beginnt
Heutzutage kommen wahrscheinlich viele Anfänger aus VSCode, und für sie wird das zu einer großen Ablenkung
Vor ein paar Jahren riet mir ein Kollege, History of Clojure zu lesen, selbst wenn ich Clojure nicht ausprobieren würde, aber ich habe es aufgeschoben: https://dl.acm.org/doi/pdf/10.1145/3386321
Dann sah ich Rich Hickey - Greatest Hits https://changelog.com/posts/rich-hickeys-greatest-hits, las History of Clojure und begann direkt danach, es zu lernen
Clojure ist eine der unterhaltsamsten Sprachen, um etwas zu bauen, und zugleich eine der schönsten
Nicht so sehr wegen der Syntax selbst, sondern wegen der Art, wie sie einen durch gutes Design und Komposition Gedanken ausdrücken lässt – das stimuliert den Kopf auf angenehme Weise
Wenn man noch nach genau dem passenden, glänzenden Werkzeug sucht und bisher nichts wirklich gezündet hat, lohnt es sich, Clojure auszuprobieren. Es gehört zu den knappsten und zugleich mächtigsten Sprachen, die ich bisher gesehen habe
Ich frage mich, ob man durch das Lernen von Clojure darüber hinaus noch etwas gewinnt oder ob es im Großen und Ganzen ähnlich ist
Ich frage mich, ob es eine Clojure-Version gibt, die zu etwas wie LLVM kompiliert wird
Das fühlt sich ein wenig danach an, was Scala Native ursprünglich sein wollte, hat sich in der Praxis aber nicht so etabliert
Ich mag funktionale Programmierung, aber das Java-Ökosystem fühlt sich 2024 zu altbacken an, um es noch auszuhalten
Zu sehen unter https://jank-lang.org/
Noch ist keine vollständige Feature-Parität mit JVM Clojure erreicht, aber ich verfolge die Entwicklung aufmerksam
Eigentlich dürfte das kein großes Problem sein
Verwandte Links:
Try Clojure – An interactive tutorial in the browser - https://news.ycombinator.com/item?id=30423856 - Februar 2022, 93 Kommentare
Try Clojure in your browser - https://news.ycombinator.com/item?id=3366526 - Dezember 2011, 26 Kommentare
Try Clojure - https://news.ycombinator.com/item?id=1359682 - Mai 2010, 60 Kommentare
In Mexiko gewinnt Clojure an Beliebtheit, und in Brasilien dürfte es wegen Nubank eine ähnliche Entwicklung geben
Das ist ein Ort, an dem Informatiker gerne arbeiten wollen, und offenbar wird dort hauptsächlich mit Clojure gearbeitet
Soweit ich weiß, haben sie einige Kernmitglieder der Sprache eingestellt, und ich meine mich zu erinnern, dass sie irgendwann auch die Firma von Elixir-Schöpfer José Valim übernommen haben
Trotzdem wirkt es weiterhin wie ein Unternehmen, das hauptsächlich Clojure einsetzt
Letzteres geschah, um Platformatecs Expertise im Projektmanagement zu gewinnen (https://building.nubank.com.br/tech-perspectives-behind-nuba...); soweit ich weiß, läuft bei Nubank kein Elixir-Code
Auf der „anderen Seite“ der ETL-Pipeline gibt es Python, aber im nutzerseitigen Bereich besteht das Backend meines Wissens aus Clojure, und die Android- und iOS-Apps sind in TypeScript geschrieben
Ich frage mich, ob Clojure auch in China eine nennenswerte Strömung ist