2011-01-21 13 views
7

Estoy pensando seriamente en hacer de Clojure mi nuevo lenguaje de pirateo ya que amo a Lisp pero tengo algunos problemas con CL y Scheme. Nunca antes había trabajado en el entorno Java y mi experiencia lisp se limita a trabajar a través de "SICP" y "The Little Schemer".Aprendiendo Clojure proveniente de Lisp

¿Qué necesito saber? ¿Hay algún buen recurso en "La forma de Clojure"? ¿Algún recurso en el estilo Clojure? Encontré la excelente página de Mark Volkmann, pero los libros que he visto parecen un poco extraños.

Además, ¿qué necesito saber sobre Java? Prefiero no aprender Java solo para aprender Clojure, pero imagino que tendré que saber al menos un poco. Además, ¿cómo es el flujo de trabajo? Mi experiencia se limita a los lenguajes dinámicos, así que no tengo idea de qué tendría que hacer para distribuir una aplicación sin fuente en la JVM.

He buscado en Google esto obviamente, pero hay una gran cantidad de información y no mucha información "específica de clojure".

Supongo que estoy buscando algunas sugerencias sensatas sobre el tipo de literatura que debería leer en una especie de secuencia lógica.

+1

pedante, Clojure es un Lisp. –

+0

Lol, me di cuenta de que mi publicación me hacía sonar como si no supiera eso. Esa es la razón por la que estoy recogiendo clojure. Porque es lisp. –

Respuesta

15

No se puede equivocar al ver tantas de las Clojure videos on Blip.tv como pueda manejar, especialmente las del propio Rich Hickey. Estos realmente ayudan a llevar a casa los puntos conceptuales y aspectos únicos de Clojure.

Si está lo suficientemente familiarizado con los conceptos de Lisp, es posible que desee centrarse inicialmente en aprender cómo Clojure "asigna" a los Lisps con los que ha jugado. Mira los videos de Rich Hickey en "Clojure for Lisp Programmers."

Necesitas estar un poco familiarizado con Java, porque Clojure no deja de usarlo. De alguna manera no es Clojurey (hasta donde puedo decir) para usar Java donde es inteligente. Al menos hojearía el API docs para los paquetes java.lang y java.io, porque java.lang está automáticamente disponible dentro de sus programas Clojure y java.io se usa con frecuencia.

Con mi diccionario Clojure-to-Lisp en mi cabeza y mis conceptos básicos de Java detrás de mí, elegiría un pequeño proyecto para trabajar en. Mantenga a mano los documentos API de Clojure y Clojure-contrib (ya sea en la web o use el comando (doc) de REPL), y lea detenidamente los muchos, muchos blogs de Clojure que existen. Dos de mis favoritos son http://nakkaya.com/ y http://stuartsierra.com/. Si usa Diigo, se han agregado una gran cantidad de blogs al clojure group.

NOTA: no se cuelgue en su entorno de desarrollo. Hay una multitud de opciones enumeradas en el Getting Started wiki page. Para aprender Clojure y sus primeros proyectos pequeños, elegiría su editor de texto sin formato de su elección, aprendería y usaría los conceptos básicos de Leiningen para obtener una buena configuración del directorio del proyecto con todas sus rutas y dependencias atendidas, luego use el comando " lein repl "para iniciar un REPL con todas sus dependencias cargadas y disponibles. Al asumir que usted usa Emacs (basado en su experiencia Lisp previa), puede describe-variable su inferior-lisp-program para ser lein repl, y simplemente inicie Emacs desde la raíz de su proyecto de ejemplo para que todo funcione automágicamente.

Hay libros que puede leer, especialmente La alegría de Clojure, Programación Clojure y Clojure práctico. Los dos últimos son más "prácticos" que el primero, que es más "filosófico" (disculpen las generalizaciones generales). Práctico Clojure está actualizado con Clojure 1.2, mientras que Programming Clojure es un poco más antiguo.

Finalmente, ingrese en el canal de IRC#clojure y use el grupo de Clojure Google, porque hay un grupo de personas inteligentes y amigables que disfrutan ayudando a los demás.

+1

Para emacs prefiero swank-clojure sobre la interfaz cruda inferior-lisp. Además, paredit es esencial para cualquier emacs lisp edición de IMO. Nada más que agregar a esta agradable respuesta :) – bsteuber

+0

También recomendaría Clojure en Acción, que está disponible a través de MEAP, como The Joy of Clojure. Este libro contiene muchos ejemplos, en comparación con el Clojure práctico, y también actualizado, en comparación con la programación Clojure –

+0

Fuimos y compramos el MEAP de Clojure en acción; aunque está lleno de material muy interesante y explora algunas áreas problemáticas únicas, no lo encuentro tan pulido como otros MEAP que he leído, y algunas veces el autor no ve un concepto o ejemplo hasta su conclusión o en suficiente detalle Dicho esto, vale la pena leer sus capítulos sobre almacenamiento de datos, procesamiento, web y mensajes. – semperos

2

Sólo una rápida perspectiva de alguien que vino a Clojure desde la otra dirección (Java -> Clojure)

  • realidad me encontré con las partes lispy de Clojure fácil de aprender una vez que llegué a mi alrededor de la sintaxis y comunes modismos. Espero que sea aún más fácil para ti.
  • No necesita mucho conocimiento de Java para hacer la mayoría de las cosas; puede hacer casi todo en Clojure puro si lo desea.
  • Es probable que solo cuando comiences a querer usar bibliotecas de Java necesitarás sumergirte en la interoperabilidad de Java. Afortunadamente, la interoperabilidad es muy simple: es más estilo LISP que el estilo Java, por lo que lo único que tendrá que averiguar es cómo entender las interfaces Java y hacer las llamadas apropiadas desde el lado de Clojure.

Para mi entorno, utilizo Eclipse + Counterclockwise. Esto funciona excepcionalmente bien si le gustan los IDEs y/o piensa que en última instancia también puede querer trabajar en Java. No requiere más dependencias, le ofrece un depurador excelente, tiene un REPL completo (un nREPL incrustado), realiza toda la administración de archivos del proyecto (Git, SVN, etc.) y maneja automáticamente cosas como la configuración de la ruta de clase de Java para usted (que puede ser un gran obstáculo para los recién llegados a Java!). Te recomiendo que lo consultes si crees que se ajuste a tu estilo, también he oído cosas buenas sobre Enclojure.

Si no te gustan los IDE, entonces probablemente seas mejor con tu editor de texto favorito y herramientas de línea de comando como lo sugiere Semperos en su excelente respuesta.

0

creé sitio llamado Clojurecademy para los principiantes a aprender Clojure, que es una plataforma interactiva que enseña Clojure, es como Codecademy de Clojure