tutorial programming language example common functional-programming lisp clojure

functional programming - programming - Clojure para un analfabeto de lisp



clojure tutorial (8)

Ahora es 11 meses después de que originalmente hice esta pregunta. Acabo de comenzar un nuevo proyecto para ayudar a los principiantes a hacer la transición a Clojure. Se llama 4clojure y te reta a resolver problemas interactivos de estilo de relleno en blanco.

Soy un programador orientado a objetos de por vida. Mi trabajo es principalmente el desarrollo de Java, pero tengo experiencia en varios idiomas. Ruby me dio mi primer gusto real de programación funcional. Me encantaron las características que Ruby tomó prestadas del paradigma funcional, como cierres y continuaciones. Finalmente, me gradué en Scala. Esta ha sido una excelente forma de aprender gradualmente a abordar problemas no triviales de manera funcional.

Ahora estoy interesado en Clojure. Conozco todas las características atractivas que lo hacen atractivo (memoria transaccional de software, macros, etc.), pero simplemente no me acostumbro a "pensar con ceceo". He visto los screencasts de Rich Hickey dirigidos a los programadores de Java, pero están orientados a explicar las características del lenguaje y no a los problemas del mundo real.

Estoy buscando cualquier consejo o recurso que haya hecho esta transición más fácil para otros.


Dirigiéndome directamente a Clojure desde OOP, solo recomendaría la excelente Programación Clojure de Stuart Halloway.

Me encanta, y hace un gran trabajo al cubrir una gran cantidad de Clojure y un poco de programación funcional en el proceso.

The Little Schemer y SICP son geniales, pero no son tan relevantes para Clojure, si eso es lo que quieres aprender.


Me gusta mucho la serie de videos Clojure de Brian Twill en youtube como una introducción indolora a algunas de las ideas de clojure. No asumen ningún gran conocimiento de Lisp o lenguajes de programación funcionales.

En cuanto a los libros, estoy de acuerdo con Isaac en que la programación de Clojure es un excelente recurso. También puede considerar algunos libros próximos en clojure:

La alegría de Clojure

Clojure en acción

Ambos tienen acceso anticipado disponible en línea si usted compra ahora. También creo que ambos tienen descuentos disponibles; intente buscar en clojure.org.

Los libros de Lisp que Peter y Norman mencionan son probablemente buenas opciones (me gusta el SICP, pero no he leído los demás). Pero las diferencias en la sintaxis con Clojure pueden ser un poco frustrantes si recién estás empezando. Por esa razón, recomiendo comenzar con libros específicos de Clojure al principio.

(Editado para corregir el enlace)


Mi primera introducción a Lisp fue: Paradigmas de Inteligencia Artificial Programación de Peter Norvig. Es una introducción muy fácil y legible a muchas funciones de Common Lisp y conceptos de programación funcional.

Comenzar directamente con algunos libros de Clojure podría ser preferible para ti, porque hay varias differences entre Common Lisp y Clojure que pueden ser confusas si estás tratando de aprender ambas al mismo tiempo.

Al mismo tiempo, intente obtener experiencia práctica jugando con Clojure REPL , haciendo algunos ejercicios como Project Euler que luego puede contrastar con otras soluciones Clojure e imperativas de Java.

Además, si tiene alguna pregunta sobre la programación de Clojure y el estilo idiomático, no dude en discutir su código con otros Clojurianos . Hay varias opciones para hacer esto, como: Clojure en Grupos de Google , el canal de IRC #clojure en Freenode , Twitter a través del hashtag #clojure , y por supuesto aquí en clojure .


Para un principiante en bruto, How to Design Programs te hará pensar como un Lisper. Si te impacientas, ve más rápido :-) Otro buen libro es On Lisp de Paul Graham, que como bonificación ahora es gratis en línea.

No me importa Estructura e Interpretación de Programas de Computadora ; si conoces Lisp o Scheme, ya es un gran tour intelectual y muy satisfactorio, pero mis alumnos y yo no hemos encontrado un buen libro para aprender. The Little Schemer tiene mucha información buena si puedes soportar su organización dialéctica y su estilo de pastel de cutesie. No puedo


Recomiendo obtener la versión MEAP de The Joy of Clojure. Lo tengo, y en este momento el MEAP ofrece un total de 12 capítulos. Hasta ahora, es de lejos el mejor libro que he leído en un lenguaje de programación. Esos 12 capítulos son suficientes para comenzar con Clojure, y hasta algunos temas avanzados. El MEAP actual (que recibe actualizaciones con capítulos nuevos con bastante frecuencia) combinado con el tutorial oclojweb Clojure , .com, y el canal IRC #clojure en freenode, creo que estarás bien.

Aunque estoy de acuerdo en que programar Clojure es una gran introducción a Clojure, y hace un muy buen trabajo, no podemos negar el hecho de que se vuelve cada vez más obsoleto cada semana. Debes tener en cuenta que Programming Clojure fue escrito para Clojure 1.0. En este momento, nos estamos acercando rápidamente al lanzamiento de Clojure 1.2. Por ejemplo, con la inclusión de defrecord, las estructuras van a quedar obsoletas.


Si está buscando una introducción al "Pensamiento Lispy", le recomendaría Practical Common Lisp . Es una buena lectura y en mi humilde opinión perfecta para los programadores experimentados que provienen de un fondo no lisp.

La desventaja es que apunta a Common Lisp, no a Clojure; la razón principal es que Clojure es mucho más funcional en su enfoque. Probablemente también quieras un libro específico de Clojure.


Todas las respuestas hasta ahora son geniales. Yo podria agregar:

  • Purely Functional Retrogames es una excelente serie sobre cómo diseñar videojuegos de la vieja escuela de manera funcional y sin efectos secundarios. Si pasas por esto y entiendes cómo escribir Pac-Man sin efectos secundarios, entonces habrás recorrido un largo camino para inducir la mentalidad necesaria para resolver muchos / la mayoría de los otros problemas funcionalmente.
  • Programación de Halloway Clojure es la mejor introducción general a Clojure, y da una idea de cómo pensar sobre los problemas de una manera funcional en lugar de orientada a objetos, particularmente el ejemplo del juego de serpientes.
  • El Lisb Common Lisp de Seibel es una excelente guía práctica para resolver problemas del mundo real de manera funcional, como la creación de una base de datos. Aunque está escrito para CL en lugar de Clojure, que permite datos mutables, los conceptos se transfieren sin mucha modificación, y el texto completo está disponible en línea de forma gratuita desde el sitio web del autor. Vale la pena al menos un vistazo.