Experiencia con Clojure
(tryclojure.org)- Try Clojure es una página de prueba de 5 minutos donde puedes evaluar expresiones de Clojure directamente en el navegador
- Lo que escribes en el REPL de la derecha se ejecuta mediante un ciclo read-eval-print loop
- Puedes escribir directamente expresiones de ejemplo como
(+ 1 2)o hacer clic en fragmentos de código para insertarlos automáticamente - Usa
(help)para ver los comandos y, cuando estés listo, escribe(start)para comenzar la experiencia - Esta página fue creada con Clojurescript y en la información de creación aparecen Elia Scotto, Michiel Borkent y la comunidad de Clojure
Clojure que se ejecuta al instante en el navegador
- Try Clojure está diseñado para que pruebes Clojure rápidamente con el mensaje “Got 5 minutes?”
- La symbolic expression de Clojure que el usuario escribe en el REPL de la derecha es evaluada
- El flujo de la experiencia es simple
- escribir directamente expresiones como
(+ 1 2) - hacer clic en fragmentos de código para insertarlos automáticamente
- usar
(help)para revisar los comandos - comenzar con
(start)
- escribir directamente expresiones como
Información de creación
- La página incluye una cita de Rich Hickey: “If you want everything to be familiar, you'll never learn anything new.”
- Try Clojure fue creado con Clojurescript y Elia Scotto aparece como creador
- También incluye agradecimientos a Michiel Borkent y a la comunidad de Clojure
1 comentarios
Opiniones de Hacker News
Me alegra que esto haya vuelto. Una versión de hace muchísimo tiempo me hizo probar Clojure, y esa elección terminó siendo la decisión con mayor impacto en mi carrera.
Incluso hoy uso Clojure casi todos los días, tanto en el trabajo como en casa; a veces Clojure estándar, y a veces Babashka, que es excelente como reemplazo de ejecutores de tareas tipo Make o scripts de Zsh.
Go también es una segunda opción potente cuando necesito compilar a un binario único, pero Clojure se siente más cómodo gracias a su flujo de desarrollo basado en REPL, que se siente como conversar con el programa más que el ciclo típico de escribir-compilar-ejecutar.
Si a eso se suma que corre sobre la JVM, queda un conjunto de herramientas con el que se puede terminar el trabajo de forma agradable. Si tienes aunque sea un poco de interés en Lisp y la programación funcional, te recomiendo mucho probarlo; y si usas VSCode, el plugin Calva ayuda muchísimo.
Cambiar a un lenguaje menos expresivo me resultó doloroso y molesto; recuerdo que, al pasar de Python a Java 5, el código para expresar lo mismo se volvió entre 3 y 5 veces más largo.
Quizás la clave esté en usar los lenguajes menos expresivos solo para escribir cosas pequeñas, como scripts de shell, pequeñas funciones en C para rendimiento o interfaces de funciones externas, o utilidades pequeñas en Go.
Si te encuentras con Clojure por primera vez y quieres experimentar con algo útil de inmediato, recomiendo mucho el runtime Babashka para scripting: https://babashka.org
Es divertido y accesible, y es una de las partes más pulidas del ecosistema de Clojure.
A diferencia de Clojure completo sobre la JVM, arranca muy rápido, así que es una buena puerta de entrada; los principiantes pueden trabajar de una forma parecida a la interactiva con herramientas de vigilancia/recarga de archivos que ya les resulten familiares, como nodemon.
Más adelante conviene pasar a una configuración plenamente interactiva usando una conexión REPL desde el editor, pero para principiantes es un flujo poco familiar y puede ser engorroso de configurar.
Tenía que crear una pequeña UI para mostrar estadísticas de una app de trabajo y lo usé junto con HTMX; fue una muy buena experiencia.
Babashka trae integrado casi todo lo necesario para una app web básica, y con HTMX puedes hacer cargas dinámicas en la página sin lidiar con un frontend en JavaScript.
Además, puedes levantar nREPL con
bb --nrepl-servery conectar un editor como Calva para desarrollar scripts de forma interactiva, así que vale la pena echarle un vistazo si necesitas una UI web sencilla.En una línea similar también está https://www.maria.cloud/
Está más orientado a enseñar programación a principiantes absolutos, pero creo que las operaciones básicas al estilo paredit y la evaluación por formularios se acercan mucho más al desarrollo guiado por REPL que se usa en la práctica.
Escribir directamente en una ventana de terminal del REPL tiene una ergonomía muy mala; normalmente es más realista enviar el formulario bajo el cursor a algún proceso REPL usando algo como Calva en VSCode o CIDER en Emacs.
La mejor razón para aprender Clojure es Reagent, y me parece, por mucho, la mejor forma de usar React: https://reagent-project.github.io/
shadow-cljs facilita el uso de librerías de npm: https://github.com/thheller/shadow-cljs
Como configuración base, terminé quedándome con un backend en Go y un frontend en Reagent: https://github.com/nathants/aws-gocljs
Quería ver con más claridad qué pasa internamente e interoperar de forma más simple con componentes nativos de React
Parece que se está poniendo al día con el soporte experimental de React 18, pero Reagent quedó rezagado respecto del flujo más reciente de React y quizá no aproveche todos los beneficios de optimización de rendimiento
Todavía usa class components y no hooks, y también preocupa que la conversión en tiempo de ejecución de Hiccup pueda afectar el rendimiento
Dicho eso, en la mayoría de los casos probablemente no sea un problema perceptible, y si no haces nada muy sofisticado, debería estar bien. Extraño el modelo de UI-as-data de Hiccup, así que quizá algún día vuelva a Reagent
Para manejo de estado recomiendo mucho re-frame: https://day8.github.io/re-frame/
Al principio puede parecer abrumador, pero la documentación es excelente y, una vez que lo entiendes, el modelo queda muy claro
También hay alternativas como Helix(https://github.com/lilactown/helix) o UIx(https://github.com/pitch-io/uix), y también refx(https://github.com/ferdinand-beyer/refx), que elimina casi por completo la dependencia de Reagent
O puedes agregar código de interoperabilidad a UIx/Helix para conectarlo con re-frame: https://github.com/pitch-io/uix/blob/master/docs/interop-wit...
En 2024 no se puede servir un archivo HTML vacío, porque arruina la optimización para buscadores; si no fuera por eso, me gustaría probarlo
Disfruté muchísimo el tiempo en que usé Clojure y lo recomiendo mucho: https://eli.thegreenplace.net/2017/clojure-the-perfect-langu...
Clojure for the Brave and True, de Daniel Higginbotham, es un recurso realmente excelente para aprender Clojure, y lo recomiendo mucho
Se puede leer gratis en línea: https://www.braveclojure.com/clojure-for-the-brave-and-true
El verdadero problema de este libro no es Clojure, sino que empieza enseñando Emacs
Hoy en día probablemente muchos principiantes vienen de VSCode, y para ellos eso se vuelve una gran distracción
Hace unos años, un colega me recomendó leer History of Clojure aunque no fuera a probar Clojure, pero lo fui postergando: https://dl.acm.org/doi/pdf/10.1145/3386321
Luego vi Rich Hickey - Greatest Hits https://changelog.com/posts/rich-hickeys-greatest-hits, leí History of Clojure y enseguida empecé a aprenderlo
Clojure es uno de los lenguajes más divertidos para construir cosas y también uno de los más bellos
No tanto por la sintaxis en sí, sino por la manera en que te permite expresar ideas mediante buen diseño y composición, lo que estimula la mente de una forma muy satisfactoria
Si todavía estás buscando esa herramienta brillante que te encaje perfecto y nada te ha convencido, vale la pena probar Clojure. De los lenguajes que he visto hasta ahora, está entre los más concisos y a la vez potentes
Me pregunto si aprender Clojure aporta algo adicional sobre eso, o si en general es bastante similar
Me pregunto si existe una versión de Clojure que se compile con algo como LLVM
Se siente parecido a lo que Scala Native originalmente intentaba ser, pero en la práctica no logró consolidarse así
Me gusta la programación funcional, pero en 2024 el ecosistema Java se siente demasiado viejo y cuesta tolerarlo
Se puede ver en https://jank-lang.org/
Todavía no alcanzó la paridad de funciones con el Clojure completo de la JVM, pero sigo de cerca su desarrollo
En realidad, probablemente eso no sea un gran problema
Enlaces relacionados:
Try Clojure – An interactive tutorial in the browser - https://news.ycombinator.com/item?id=30423856 - febrero de 2022, 93 comentarios
Try Clojure in your browser - https://news.ycombinator.com/item?id=3366526 - diciembre de 2011, 26 comentarios
Try Clojure - https://news.ycombinator.com/item?id=1359682 - mayo de 2010, 60 comentarios
Clojure está ganando popularidad en México, y en Brasil parece que podría haber una tendencia similar por Nubank
Es un lugar al que los científicos de la computación quieren ir a trabajar, y al parecer trabajan principalmente con Clojure
Creo que contrataron a algunos miembros clave del lenguaje, y recuerdo que en algún momento también adquirieron la empresa de José Valim, el creador de Elixir
Aun así, sigue pareciendo una empresa que usa principalmente Clojure
Esta última fue para obtener la experiencia de Platformatec en gestión de proyectos (https://building.nubank.com.br/tech-perspectives-behind-nuba...), y hasta donde sé no hay código Elixir corriendo en Nubank
En el “otro lado” de los pipelines ETL hay Python, pero en las áreas de cara al usuario, hasta donde sé, el backend es Clojure y las apps de Android e iOS son TypeScript
Me pregunto si Clojure en China también es una tendencia significativa