¿Cómo debo comenzar con Lisp? [cerrado]


48

He estado programando durante años, trabajando en varias iteraciones de Blub (BASIC, Assembler, C, C ++, Visual Basic, Java, Ruby sin ningún orden particular de "Blub-ness") y me gustaría aprender Ceceo. Sin embargo, tengo mucha intertia con tiempo limitado (familia, trabajo a tiempo completo, etc.) y una felicidad cómoda con mi Blub (Java) actual.

Entonces mi pregunta es esta, dado que soy alguien que realmente quisiera aprender Lisp, ¿cuáles serían los pasos iniciales para obtener un buen resultado que demuestre la superioridad de Lisp en el desarrollo web ? Tal vez me estoy perdiendo el punto, pero así es como vería inicialmente la aplicación de mi conocimiento Lisp.

Estoy pensando "usa el dialecto A, usa IDE B, sigue las instrucciones en la página C, cuestiona tu cordura después de las mónadas con el consejero D". Solo me gustaría saber qué considera la gente aquí un conjunto óptimo de valores para A, B, C y quizás D. También una discusión sobre el mérito relativo de aprender un lenguaje tan poderoso en lugar de, por ejemplo, convertirse en un Rails experto.

Solo para agregar más detalles, desarrollaré en MacOS (o una máquina virtual Linux): no será necesario un enfoque basado en Windows, gracias.

Notas para aquellos que solo navegan por

Voy a mantener esta pregunta abierta por un tiempo para que pueda ofrecer comentarios sobre las sugerencias después de que haya podido explorarlas. Si está navegando y siente que tiene algo que agregar, hágalo. Realmente agradecería sus comentarios.

Enlaces interesantes

Suponiendo que vienes a Lisp desde un entorno Java, este conjunto de enlaces te ayudará a comenzar rápidamente.

  1. Uso del complemento La Clojure de Intellij para integrar Lisp ( videocast )
  2. Lisp para la web
  3. Versión en línea de Practical Common Lisp (c / o Frank Shearar)
  4. Land of Lisp es una (+ (+ very quirky) game based)manera de entrar, pero lo hace todo tan sencillo
  5. Instale Clojure y Sublime 2 en MacOS, una excelente guía de inicio
  6. Mira el libro Clojure in Action . Trabajó para mi.

1
Al leer "ANSI Common Lisp" y "On Lisp" de Paul Graham.
duros el

2
En rocas de Lisp (no he leído ANSI Common Lisp), pero como libro de introducción , Practical Common Lisp> On Lisp. OMI, al menos. (Leí en Lisp primero, pero PCL fue lo que me llevó a CL.)
Frank Shearar

Tengo que decir que estoy disfrutando de leer PCL en este momento: excelentes notas al pie de página sobre la historia del idioma realmente dan una idea de la comunidad
Gary Rowe

1
Mi primera introducción a Lisps fue ver la famosa Estructura e interpretación de programas de computadora. Luego vi Clojure de Rich Hickey para programadores de Java. Recomendaría estos videos como una buena introducción.
WuHoUnited

Respuestas:


18

Esto es probablemente contrario a las recomendaciones de la mayoría de las personas, pero al principio evite Emacs, a menos que ya lo sepa. Especialmente si estás acostumbrado a los IDEs / editores modernos.

Estoy hablando por experiencia; Traté de comenzar con Emacs, pero tener que aprender el idioma Y el editor al mismo tiempo realmente me frustraba (especialmente porque Emacs es muy diferente de otras herramientas). Terminé lanzándolo, comenzando con PLT Scheme (ahora Racket) que viene con un IDE multiplataforma comparativamente simple, un repositorio de paquetes centralizado y documentos fabulosos (incluido un tutorial intermedio específicamente dirigido al desarrollo web ). Después de tener un control claro sobre Lisp, terminé volviendo a Emacs, recogiendo EL / CL a través de Practical Common Lisp y Xah's Elisp Guide. Básicamente, tal como lo veo, necesita conocer un Lisp antes de poder usar Emacs de manera efectiva, y necesita conocer Emacs para ser muy efectivo con CL / Elisp. Esto significa que puede elegir Scheme o aprender Common Lisp a través de otro editor primero (LispWorks personal, probablemente).

Si ya conoce Emacs, entonces sí, Elisp es el paso natural (aunque la forma en que disfrutaría el uso de Emacs sin saber primero que Elisp está más allá de mí).

YMMV, por supuesto, esto es justo lo que encontré ayudado.

Dado que su blub actual es Java, probablemente podría obtener mucho kilometraje de Clojure , Armed Bear o Kawa . No he probado ninguno de ellos yo mismo, no siendo un chico Java, pero Clojure viene especialmente recomendado por otros Lispers que conozco. Parece que la capacidad de mantener su VM e IDE actuales podría ayudar con el proceso de aprendizaje.


Ya tenía cierta fluidez básica en emacs cuando comencé. ¡Emacs tiene una curva de aprendizaje muy empinada!
Frank Shearar el

+1 porque mis experiencias previas con Emacs han sido menos que maravillosas (eso no me impide querer saberlo y tener Lisp incorporado, como Thorbjorn ha señalado, significa que puedo usar mi conocimiento de Lisp en mi trabajo diario)
Gary Rowe el

3
@ Thorbjørn Ravn Andersen - Hizo eso. Dos veces. Todavía me encuentro constantemente usando atajos CUA (que están desactivados por defecto en Emacs). Lo peor fue cerrar mi editor con un corte accidental + copia prevista ( C-x C-c). Amo a Emacs hasta la muerte, y prácticamente vivo en él ahora, pero date cuenta de que al principio, estás luchando contra años de memoria muscular diciéndote que C-ses Save, no Searchy eso Undoes C-z. No recomendaré ese tipo de frustración a alguien cuya intención es aprender Lisp. Primero aprende el idioma, date cuenta de que te encanta, luego comienza a luchar contra tus manos con un objetivo claro en mente.
Inaimathi

1
@Inaima, el poder viene con un precio, y los enlaces de Emacs son anteriores a CUA, así que culpe a IBM :) También Ctrl-C + Ctrl-v no es CUA :)

1
@Geoffrey van Wyk: para empezar, PLT es excelente, pero hay algunos límites con los que te encuentras después de un tiempo que me hicieron cambiar a CL / Emacs una vez que me orienté. YMMV. Escribí un artículo hace un tiempo, si le interesan los detalles langnostic.blogspot.com/2010/09/… En cuanto a la pregunta de LispWorks; Tengo que creer que se dirigen a grandes equipos (donde la empresa compra las herramientas) o consultores (que generalmente ganan lo suficiente como para justificar el precio). No estoy seguro de cómo les está yendo, pero no es el enfoque que habría elegido.
Inaimathi

10

Bueno, puedes golpear dos pájaros leyendo SICP ; uno está aprendiendo LISP (quiero decir, el esquema es un dialecto de Lisp) y el otro es una gran idea de cómo programar. ¡Período!


1
+1 para el enlace: un escaneo rápido parece mostrar que es muy detallado pero también bastante seco (leer académico) en su enfoque. Soy un gran admirador de "la voz de los expertos" que aparece al leer el texto, pero parece una buena referencia general.
Gary Rowe el

10

Conrad Barski tiene un gran tutorial llamado Casting SPELs en Lisp (SPEL es su acrónimo de macros). Implica hacer un juego simple de tipo Aventura, y salta directamente a las macros de Lisp. También ha estado trabajando en un libro introductorio que ahora está disponible en:

Aprende a programar Lisp, un juego a la vez .

Y, de la tabla de contenido:

  • Cree su propio servidor web y úselo para jugar juegos basados ​​en el navegador

Sin embargo, no sé qué implica esto para el desarrollo web (como en las páginas HTML) con Lisp. :)

Actualización: veo que alguien mencionó el libro "Estructura e interpretación de programas de computadora", que me recordó que el MIT ha publicado en línea, todas las conferencias de video del SICP de Hal Abelson y Gerald Jay Sussman . Es posible que haya encontrado el libro seco, pero las conferencias son excelentes. Aunque están basados ​​en esquemas, todavía comprenden muy bien los conceptos básicos también en Lisp. Vale la pena descargarlo y verlo.


8

Para obtener una buena introducción básica al lenguaje, lea Practical Common Lisp de Peter Seibel . El libro es excelente.

La configuración de emacs y SLIME puede ser difícil para un novato, donde la magnitud "difícil" varía según su sistema operativo. Como de costumbre, Windows se queda corto, pero la gente ha hecho la parte difícil y la ha escrito (SBCL, Emacs, SLIME).

Una vez que está fuera del camino, Planet Lisp hizo referencia a un artículo que describe recientemente cómo configurar Hunchentoot y nginx.

Edición específica del sistema operativo: MCLIDE podría ser un buen lugar para comenzar. Lo instalé, pero no he tenido la oportunidad de usarlo, así que no puedo decir nada útil al respecto. Ciertamente se ve interesante!

Editar: Eclipse también tiene el complemento Cusp .


6

Ya tengo muchas respuestas geniales, pero suponiendo que quieras sumergirte de cabeza en el desarrollo web con un Lisp, tengo algunas ideas más.

Clojure es el primer Lisp que he visto que tiene marcos web de pila completa realmente excelentes que están listos para el horario estelar.

  • Noir es un marco web sólido con enrutamiento, plantillas, etc., similar a Sinatra pero un poco más rico en funciones. Utiliza Ring, que es básicamente el equivalente de Clojure de Rack en Ruby.
  • Korma es una biblioteca de abstracción SQL que se combina muy bien con Noir.
  • Pinot es un marco del lado del cliente escrito completamente en ClojureScript, que nos lleva a:
  • Clojurescript es un compilador para Clojure que se dirige a Javascript.

Si no lo has notado, acabo de cubrir toda la pila web y todo está escrito en Clojure.

Creo que Clojure es un poco más fácil de comenzar que Common Lisp, con mucho mejor conjunto de características / soporte de biblioteca que Scheme.

Si viene de un entorno Java, tiene el beneficio adicional de ejecutarse en la JVM, lo que le da acceso a todo Java stdlib cuando lo necesita.

La documentación disponible es un trabajo en progreso, al igual que los marcos en sí. Pero hay un tutorial bastante bueno aquí.

En cuanto a los editores ... si te sientes cómodo con vim, puedes usar vim con SLIMV. Si te gusta emacs, emacs / SLIME está bien. Hay bastante buen soporte de Eclipse y NetBeans para Clojure (o eso me han dicho), pero generalmente uso TextMate (aunque Sublime Text 2 se está convirtiendo rápidamente en mi editor preferido). Sé que me estoy perdiendo una pequeña magia de Lisp que no usa un entorno más integrado, pero estoy feliz de presionar ⌘-Tab para intercambiar entre mi editor y REPL; Su experiencia puede ser diferente.

Si quieres que un libro te ayude, te recomiendo Programming Clojure de Stuart Halloway y Aaron Bedra. La segunda edición acaba de salir de PragProg , por lo que está actualizada.

Happy Lisping!


Es posible que desee agregar Leiningen
Gary Rowe

5

Otro comentarista, Inaimathi , recomendó este libro hace unos días: The Little Schemer

Lo recibí hoy y puedo decir, como alguien que tiene una gran biblioteca de libros de programación adquirida durante muchos años, que tal vez solo leí un capítulo, pero definitivamente necesitaré una versión de tapa dura. Se lee como el Tao Te Ching, un montón de pequeños fragmentos de sabiduría divina sobre el idioma. Puede decir Scheme, pero originalmente se llamaba "The Little LISPer", los idiomas en el nivel que discute son lo suficientemente similares como para ser enseñados como uno.

No es un texto avanzado, pero tiene la misión de inculcar los principios del lenguaje y para qué sirve realmente, cómo pensar así. Creo que sería un excelente comienzo para LISP.

NÓTESE BIEN. La Matriz de Competencias del Programador en realidad menciona este libro en el nivel más alto de competencia de las cosas a buscar. (ver la sección de libros)


4

Un lugar muy agradable para comenzar a usar Lisp es el editor de Emacs, donde se puede usar para redefinir casi cualquier cosa. Desea que la tecla 'e' inserte la hora de la fecha, simplemente escriba un pequeño fragmento de Lisp para generar la cadena y vincularla a la tecla e. Hecho.

Esto también le permitirá USAR realmente lo que aprende en un entorno diario, si utiliza un editor simple durante el día.


+1 para el consejo "usa lo que aprendes". Soy un Intellij bod para el trabajo diario, pero es posible que pueda obtener mis patas en emacs en nuestro entorno de software muy restringido.
Gary Rowe el

3

Si va a desarrollar en una Mac, puede probar Clozure CL . Viene con un IDE que tiene pulsaciones de teclas compatibles con Emacs, y hay un puente hacia Objective C para que pueda escribir aplicaciones Cocoa.

Además, he leído Practical Common Lisp, pero también he encontrado que Successful Lisp es útil.

Finalmente, se recompensará un poco de paciencia de su parte. La productividad y las victorias menores llegarán bastante rápido, pero la gran victoria puede llevar un tiempo.


2

Tengo una copia de ANSI Common Lisp aquí junto a mi escritorio. Lo tomo cada dos años y paso un par de capítulos, luego me atasco en un par de ejercicios y se desliza hacia abajo en la lista de prioridades. Sin embargo, eso probablemente te diga más sobre mí que el libro. El libro parece completamente competente ...


Tal vez leer las respuestas y los comentarios a esta pregunta le dará el ímpetu para trabajar hacia un objetivo más alto. Eche un vistazo al enlace de PCL y díganos qué piensa ...
Gary Rowe
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.