Découvrir Clojure
(tryclojure.org)- Try Clojure est une page d’initiation de 5 minutes qui permet d’évaluer directement des expressions Clojure dans le navigateur
- Le contenu saisi dans le REPL à droite de l’écran s’exécute via une boucle read-eval-print loop
- On peut saisir directement des expressions d’exemple comme
(+ 1 2)ou cliquer sur des fragments de code pour les insérer automatiquement - Utilisez
(help)pour voir les commandes, puis, quand vous êtes prêt, saisissez(start)pour commencer l’initiation - Cette page a été créée en ClojureScript, et les informations de réalisation mentionnent Elia Scotto, Michiel Borkent et la communauté Clojure
Exécuter Clojure directement dans le navigateur
- Try Clojure est conçu comme une courte initiation à Clojure, avec l’invitation « Got 5 minutes? »
- Dans le REPL à droite, les expressions symboliques Clojure saisies par l’utilisateur sont évaluées
- Le déroulement de l’initiation est simple
- saisir directement une expression comme
(+ 1 2) - cliquer sur un fragment de code pour l’insérer automatiquement
- utiliser
(help)pour voir les commandes - démarrer avec
(start)
- saisir directement une expression comme
Informations de réalisation
- La page inclut une citation de Rich Hickey : « If you want everything to be familiar, you'll never learn anything new. »
- Try Clojure a été créé en ClojureScript, et Elia Scotto y est indiqué comme créateur
- Des remerciements sont aussi adressés à Michiel Borkent et à la community de Clojure
1 commentaires
Avis sur Hacker News
Ravi de voir ça revenir. Une très ancienne version m’avait donné envie d’essayer Clojure, et ce choix a fini par être la décision la plus marquante de ma carrière
J’utilise encore Clojure presque tous les jours, au travail comme à la maison, parfois du Clojure standard, parfois Babashka, excellent en remplacement d’un exécuteur de tâches comme Make ou de scripts Zsh
Go reste aussi un excellent deuxième choix quand il faut compiler en binaire unique, mais Clojure reste de loin le plus confortable grâce à son flux de développement basé sur le REPL, qui donne plus l’impression de dialoguer avec le programme que de suivre la boucle classique écrire-compiler-exécuter
En y ajoutant le fait que ça tourne sur la JVM, on obtient un ensemble d’outils avec lequel on peut faire son travail avec plaisir. Si vous avez le moindre intérêt pour Lisp ou la programmation fonctionnelle, je vous recommande vivement d’essayer, et si vous utilisez VSCode, le plugin Calva aide énormément
Passer à un langage moins expressif m’a toujours semblé pénible et frustrant, et je me souviens qu’en passant de Python à Java 5, il fallait 3 à 5 fois plus de code pour exprimer la même chose
J’imagine que l’idée est de n’écrire que de petites choses dans les langages moins expressifs, comme des scripts shell, de petites fonctions C pour les performances ou les interfaces avec des fonctions externes, ou de petits utilitaires en Go
Si vous découvrez Clojure et voulez immédiatement faire des essais utiles, je recommande très fortement le runtime Babashka pour le scripting : https://babashka.org
C’est amusant, accessible, et c’est l’un des éléments les plus aboutis de l’écosystème Clojure
Contrairement à Clojure JVM complet, le démarrage est très rapide, ce qui en fait un excellent point d’entrée, et un débutant peut travailler de façon quasi interactive avec des outils de surveillance/rechargement de fichiers qu’il connaît déjà, comme nodemon par exemple
Plus tard, ça vaut le coup de passer à une configuration totalement interactive avec connexion REPL depuis l’éditeur, mais pour un débutant c’est un flux peu familier et la configuration peut être fastidieuse
J’ai dû créer une petite UI pour afficher des statistiques d’une application métier, et l’utiliser avec HTMX a été une excellente expérience
Babashka intègre pratiquement tout ce qu’il faut pour une application web basique, et avec HTMX on peut faire du chargement dynamique dans la page sans avoir à gérer un frontend JavaScript
On peut aussi lancer nREPL avec
bb --nrepl-server, puis connecter un éditeur comme Calva pour développer les scripts de manière interactive, donc si vous avez besoin d’une petite UI web, ça vaut le coup d’y jeter un œilIl existe aussi un site un peu dans le même esprit : https://www.maria.cloud/
C’est davantage orienté vers l’enseignement de la programmation à des débutants complets, mais je trouve que ses manipulations de type paredit et son évaluation par formulaire se rapprochent bien plus du développement piloté par REPL tel qu’il est réellement pratiqué
Saisir directement dans une fenêtre de terminal REPL est très mauvais du point de vue de l’ergonomie, et en pratique il est généralement plus réaliste d’envoyer le formulaire sous le curseur à un processus REPL quelque part via quelque chose comme Calva dans VSCode ou CIDER dans Emacs
La meilleure raison d’apprendre Clojure, c’est Reagent, et à mon avis c’est de loin la meilleure façon d’utiliser React : https://reagent-project.github.io/
shadow-cljs facilite l’utilisation des bibliothèques npm : https://github.com/thheller/shadow-cljs
Côté configuration de base, je me suis fixé sur un backend Go et un frontend Reagent : https://github.com/nathants/aws-gocljs
Je voulais voir plus clairement ce qui se passe en interne et interagir plus simplement avec les composants React natifs
Reagent semble suivre le support expérimental de React 18, mais il a pris du retard sur les évolutions récentes de React et pourrait ne pas bénéficier de tous les gains d’optimisation de performance
Il utilise encore des class components et pas de hooks, et il y a aussi des inquiétudes sur le fait que la transformation Hiccup à l’exécution puisse nuire aux performances
Cela dit, dans la plupart des cas ce ne sera probablement pas perceptible, et si on ne fait rien de trop sophistiqué, ça ira très bien. Le modèle UI-as-data de Hiccup me manque, donc je reviendrai peut-être à Reagent un jour
Pour la gestion d’état, je recommande vivement re-frame : https://day8.github.io/re-frame/
Au début, ça peut sembler intimidant, mais la documentation est excellente et, une fois le modèle compris, il devient très clair
Il existe aussi des alternatives comme Helix(https://github.com/lilactown/helix) ou UIx(https://github.com/pitch-io/uix), ainsi que refx(https://github.com/ferdinand-beyer/refx), qui élimine presque toute dépendance à Reagent
On peut aussi ajouter du code d’interop à UIx/Helix pour y brancher re-frame : https://github.com/pitch-io/uix/blob/master/docs/interop-wit...
En 2024, on ne peut pas se permettre de livrer un fichier HTML vide, et comme ça ruine le référencement, j’aimerais essayer si ce n’est pas le cas
La période où j’ai utilisé Clojure a été vraiment excellente, et je le recommande vivement : https://eli.thegreenplace.net/2017/clojure-the-perfect-langu...
Le livre Clojure for the Brave and True de Daniel Higginbotham est une ressource vraiment remarquable pour apprendre Clojure, je le recommande fortement
On peut le lire gratuitement en ligne : https://www.braveclojure.com/clojure-for-the-brave-and-true
Le vrai problème du livre, ce n’est pas Clojure, c’est qu’il commence par enseigner Emacs
Aujourd’hui, beaucoup de débutants viennent de VSCode, et pour eux c’est une grosse distraction
Il y a quelques années, un collègue m’avait conseillé de lire au moins History of Clojure, même si je ne comptais pas essayer Clojure, mais j’ai repoussé : https://dl.acm.org/doi/pdf/10.1145/3386321
Puis j’ai vu Rich Hickey - Greatest Hits https://changelog.com/posts/rich-hickeys-greatest-hits, j’ai lu History of Clojure et j’ai commencé à l’apprendre immédiatement
Clojure est l’un des langages les plus amusants pour construire quelque chose, et aussi l’un des plus beaux
Ce n’est pas tant sa syntaxe que sa façon de pousser à exprimer des idées par une bonne conception et la composition qui stimule agréablement l’esprit
Si vous cherchez encore l’outil brillant qui vous convient et que rien ne vous a convaincu jusqu’ici, Clojure vaut la peine d’être essayé. C’est l’un des langages les plus concis et les plus puissants que j’aie vus jusqu’à présent
Je me demande si apprendre Clojure apporte quelque chose en plus, ou si au fond c’est assez similaire
Je me demande s’il existe une version de Clojure compilée avec quelque chose comme LLVM
Ça donne une impression similaire à ce que Scala Native voulait être au départ, mais en pratique ça ne s’est pas vraiment imposé
J’aime la programmation fonctionnelle, mais en 2024, l’écosystème Java paraît trop vieilli pour être supportable
On peut voir ça sur https://jank-lang.org/
Ce n’est pas encore arrivé à une parité complète avec Clojure sur JVM, mais je suis le développement de près
En réalité, ça ne devrait pas être un gros problème
Liens connexes :
Try Clojure – Un tutoriel interactif dans le navigateur - https://news.ycombinator.com/item?id=30423856 - février 2022, 93 commentaires
Try Clojure in your browser - https://news.ycombinator.com/item?id=3366526 - décembre 2011, 26 commentaires
Try Clojure - https://news.ycombinator.com/item?id=1359682 - mai 2010, 60 commentaires
Clojure gagne en popularité au Mexique, et j’ai l’impression qu’il y a une dynamique similaire au Brésil à cause de Nubank
C’est un endroit où les informaticiens veulent aller travailler, et il semble qu’on y travaille surtout en Clojure
Il me semble qu’ils ont embauché certains membres clés du langage et qu’à un moment ils ont aussi racheté l’entreprise du créateur d’Elixir, José Valim
Malgré cela, ça semble toujours être avant tout une entreprise qui utilise principalement Clojure
Cette dernière acquisition visait à récupérer l’expertise de Platformatec en gestion de projet (https://building.nubank.com.br/tech-perspectives-behind-nuba...), et à ma connaissance il n’y a pas de code Elixir en production chez Nubank
Il y a du Python de « l’autre côté » des pipelines ETL, mais côté user-facing, à ma connaissance, le backend est en Clojure et les apps Android et iOS sont en TypeScript
Je me demande si Clojure en Chine représente aussi une tendance significative