Aprender un lenguaje de programación no es solo encender un interruptor y ser totalmente fluido. Está el lenguaje en sí, luego la biblioteca incorporada, las expresiones idiomáticas adecuadas (y las razones detrás de esas expresiones idiomáticas), luego la imagen más amplia: las herramientas, bibliotecas y marcos más allá del lenguaje en sí. Además, suponiendo que está conectando a Clojure desde un lenguaje más tradicional (presumiblemente Java), necesita comprender la “programación funcional” y el estilo de datos persistentes (por ejemplo, inmutables) de Clojure.
Es un proceso; Mientras codificaba Java todos los días durante una década, mi enfoque de codificación cambió y evolucionó constantemente; y recuerdo claramente que Java parecía muy extraño en comparación con mi primer lenguaje OO, Objective-C.
He estado codificando Clojure a tiempo completo durante aproximadamente 18 meses, y mi estilo todavía está evolucionando. El código que escribí hace 18 meses parece razonable, pero hoy no lo escribiría de la misma manera.
- ¿Qué es el software especializado? ¿Cómo se crea?
- ¿Cómo se podrían rediseñar NNTP y Usenet para que sean más relevantes hoy?
- ¿Con qué frecuencia se utilizan las pruebas basadas en propiedades (a la QuickCheck) para desarrollar productos reales?
- Si fuera a subcontratar sus pruebas de software, ¿qué parámetros usaría para seleccionar proveedores?
- ¿Te ha gustado estudiar Sistemas Cognitivos en la Universidad de Columbia Británica?
Dicho esto, Clojure es muy fácil de aprender. La sintaxis es radicalmente simple. Pasas rápidamente de la etapa de “bueno, ¿cómo defino una clase” (generalmente, no lo haces) a la etapa de “¿por qué Java necesita toda esa basura?”.
Es importante destacar que debido a que Clojure tiene un REPL puede probar cosas de forma rápida e interactiva. Cada vez que estoy confundido acerca de lo que hace exactamente una función de biblioteca, puedo experimentar.
Debido a que Clojure es un lenguaje funcional impuro (le permite hacer algunas cosas inseguras, como E / S y mutaciones cuidadosamente controladas), creo que es más fácil de aprender que Haskell, por ejemplo. Puede recurrir a los viejos malos hábitos como un puente, y luego dejar esos malos hábitos atrás.
El hecho de que Clojure esté tan ligado a Java es tanto un beneficio como una maldición. El beneficio es que le brinda un modelo mental particular de cómo se ejecuta el código Clojure: todavía se trata de clases y métodos. Montones y montones de clases. La maldición es que siempre que tengo problemas con Clojure generalmente está relacionado con la interoperabilidad con el código Java de alguna manera.