lisp clojure scheme

¿Alguna sugerencia para cual variante de Lisp aprender?



clojure scheme (13)

Finalmente quiero aprender Clojure, pero he encontrado recursos de aprendizaje para Clojure que son escasos para personas de poca experiencia ...

Me pregunto si sería beneficioso comenzar con Scheme (lea The Little Schemer and SICP ) o alguna otra variante de Lisp.

Mi única experiencia de programación es con Java y Python (que es bastante mínima). Finalmente, quiero estudiar Clojure en mi tiempo libre, ya que me parece fascinante y mis clases universitarias usan Java.



Apoya la recomendación de dnolen de agarrar el libro de S. Halloway (lo compré, y es genial) y aprender Clojure de inmediato.

Me SICP camino (en parte) a través de SICP un tiempo y realmente luché. Encontré a Clojure agradablemente simple después de eso, posiblemente porque ya tenía un poco de experiencia con Scheme. Aún así, especialmente para alguien que ya está familiarizado con Java, diría que es genial saltar directamente a Clojure. Razón fundamental:

  • Tiene acceso conveniente a toda la API de Java y al cuerpo completo de bibliotecas escritas para Java; por ejemplo, recientemente construí una interfaz gráfica de usuario de Swing para / de un programa de Clojure, y utilicé los componentes HTTP de Apache para hacer algunas discusiones de la Web.
  • Clojure intenta ser menos "lispy" que otros Lisps: los casos en cuestión son:
    • reducción de paréntesis "innecesarios": por ejemplo
      (cond (condition) (value) (condition) (value)) lugar de
      (cond ((condition) (value)) ((condition) (value)))
    • uso de algo que no sea paréntesis en unos pocos lugares significativos; por ejemplo, las listas de argumentos y enlaces para let y loop , etc. están entre [corchetes] en lugar de (paréntesis). Hace que las definiciones de funciones sean más fáciles de leer IMHO.
    • La lista no es la única estructura de datos. Hay bien integrados.
      • [vectores] (accesibles aleatoriamente como matrices) y
      • {hashmaps};
        Esto facilita la vida, especialmente si estás acostumbrado a tenerlos en Java.
  • La función para definir funciones es (defn) . Usted de todas las personas debería apreciar eso;)

Un primer tutorial que vale la pena recomendar es el tutorial Clojure de Moxley Stratton . También hay una gran discusión sobre SO en los tutoriales de Clojure que proporciona muchos enlaces.

Algo que encontré enormemente útil con mis primeros pasos en Clojure fue la Hoja de referencia de Clojure . Esto aborda el caso común en el que sabe aproximadamente lo que quiere hacer, pero no qué función utilizar. Uno desearía que otros idiomas adoptaran este concepto. Habiendo encontrado una función probable para su necesidad, puede obtener más documentación sobre ella usando (doc <name>) en un REPL de Clojure.

Su kilometraje puede variar, por supuesto; pero para cuando Amazon entregó Programación Clojure , ya había aprendido suficiente de la Web que el libro era más una fuente de "la gran imagen" que un tutorial para mí. Pero ciertamente uno podría hacer mucho peor que aprender la programación de Clojure de ese libro.

Posiblemente de lo anterior se desprende que estoy entusiasmado con Clojure. Me parece refrescantemente diferente después de años de Java, y lo suficientemente potente como para lograr lo que me pica. Incluso doné al proyecto :)

A riesgo de arrepentirme de esto más tarde, también ofrezco asistencia (gratuita) de Clojure y tutoría por correo electrónico, Google Chat u Wave. Mi dirección de correo debe ser bastante fácil de adivinar.


Aprender algo nuevo es casi siempre bueno. Y si solo conoces Java y Python, entonces aprender un lenguaje de programación funcional te distraerá.

El esquema se encuentra entre las variantes de LISP más simples y está bien documentado. ¡Ve a por ello!


Comencé con el libro Practical Common Lisp, y uso Emacs & SLIME con Steel Bank Common Lisp.


El libro de Stuart Halloway es un excelente recurso si está comenzando. Hay un par de libros nuevos en las obras que están disponibles para descargar en forma temprana (Joy of Clojure, Clojure in Action, etc.).

También recomiendo la lista de correo, así como el canal de irc. Especialmente en el canal de irc, hay mucha gente útil y las preguntas generalmente se responden con bastante rapidez.

Aunque aprender Scheme es ciertamente útil (ahora que he jugado con Clojure durante un año), también diría que no es necesario para aprender y divertirse con Clojure.


En realidad solo hay dos variantes comunes, Scheme y Common Lisp. Son muy similares, ambos tienen una variedad de implementaciones, y cambiar entre las dos es bastante fácil. Si desea escribir una aplicación, sugeriría CL debido a las bibliotecas superiores. Si quieres aprender el estilo de FP, ve con Scheme.

Además de los libros mencionados aquí, también sugiero "Paradigmas de la Inteligencia Artificial Programación: Estudios de Caso en Common Lisp" por Peter Norvig.


Estaba en tu posición y dividí mi atención entre Scheme y Common Lisp. Mirando hacia atrás ahora creo que (para los fines de aprender Clojure, en lugar de para el desarrollo personal), hubiera sido mejor concentrarme en Common Lisp, con Practical Common Lisp y PG''s On Lisp .

Ahora que hay libros reales centrados en Clojure, definitivamente debes ir con uno de esos. Joy of Clojure es un gran libro, y 4clojure.com es una buena forma de practicar la resolución de acertijos con Clojure.


Le sugiero que comience con Scheme y luego continúe con Common Lisp, ya que Scheme es más simple. Como usted es nuevo en Lisp, un buen punto de partida será Enseñe usted mismo el Esquema en Fixnum Days de Dorai Sitaram. Una vez que se sienta cómodo con los conceptos básicos del idioma, puede comenzar a trabajar con SICP.

Para Common Lisp, puede seguir un camino similar: comience con un enfoque basado en un tutorial simple, familiarícese con la escritura de pequeños programas y luego lea un libro que le enseñará conceptos avanzados. Te sugiero los siguientes libros para aprender Common Lisp. Tenga cuidado de leerlos en el orden dado: LISP COMÚN: Un enfoque interactivo (Stuart C. Shapiro), Lisp exitoso (David B. Lamkins), Lisp común práctica (Peter Seibel) y On Lisp (Paul Graham).

Paul Graham también ha escrito ANSI Common Lisp , que es una buena referencia.


Me gustaría ir con LFE, la velocidad que aprendes es proporcional a la cantidad de errores que experimentas. Elegir LFE te dará tanto Erlang como Lisp al mismo tiempo.


Para los estudiantes de aprendizaje visual / audo, recomiendo la serie de videos de Righ Hicky en blip.tv
Clojure para programadores de java y luego simplemente presione el REPL. El resto de la serie sigue naturalmente y realmente puede hacer que fluyan los jugos creativos. PCL (Practical Common Lisp) es un libro emocionante, aunque parte de él no es realmente aplicable a clojure. Recomiendo encarecidamente el capítulo sobre macros.


Yo iría con Scheme. Es simple, minimalista, extremadamente consistente y se podría argumentar que es más funcional que LISP (lo cual es bueno si quieres aprender un nuevo paradigma). También he encontrado que los IDE de Scheme son mucho más fáciles de usar que los LISP (el PLT Scheme es muy bueno).

Además, hay un montón de excelentes recursos en Common Lisp o Scheme, por lo que no debería ser el punto decisivo.



newLISP - hmm ..., porque es moderno (¿y el único ??) lenguaje de scripts general basado en LISP? (No estoy contando AutoLISP y demás, porque son lenguajes de scripting específicos del dominio). Entonces, si te gustará mucho, quizás en el futuro arrojarás Python a través de la ventana :-))