Soy un programador de C ++ que intenta aprender Common Lisp. He mirado algunos libros como Land of Lisp y he leído numerosos artículos en línea sobre las diversas virtudes de Lisp. Sin embargo, necesito algunos consejos.
Casi todo lo que he leído sobre Common Lisp tiene que ver con lo asombroso que es y lo increíblemente rápido que se pueden hacer cosas con él y cómo resolvió asombrosamente muchos problemas con los lenguajes de programación modernos hace 30 años. También lo asombrosas que son las macros, y cómo cada paradigma de programación (OO, funcional, basado en actores o lo que sea, etc.) puede usarse en Lisp, y cómo las listas son la estructura de datos definitiva. Básicamente, tratar Lisp como un lenguaje de investigación y decir cuán diferente y revolucionario es.
Y todo eso probablemente sea cierto, pero el problema es que no he visto muchas cosas sobre cómo hacer cosas prácticas como leer un archivo, dividirlo en palabras y procesarlo. No estoy interesado en aprender Common Lisp por aprender Common Lisp, sino por hacer lo que solía hacer en C ++ más rápido y con menos errores.
Entonces, mi pregunta es cuál es el mejor recurso (ya sea un sitio web, un libro, cualquier cosa) que se enfoca en enseñar cómo usar Common Lisp para realizar tareas de programación comunes como
- Cómo leer archivos
- Cómo leer un archivo, reemplazar palabras en el archivo y volver a escribir el resultado en el archivo
- Itere los archivos en un directorio y otras cosas del sistema de archivos
- Interactuar con una base de datos SQL
- Hacer comunicaciones sobre enchufes
- Subprocesos para cosas como un servidor web
- Crear GUI
- Realizar operaciones en archivos binarios
- Escriba un analizador (no un intérprete para Lisp en Lisp, que según tengo entendido es como 5 líneas de Lisp)
- Interactuar con el sistema operativo (es decir, cosas escritas en C o C ++) para hacer cosas que Lisp no puede hacer de forma nativa
- Cómo escribir extensiones Lisp en C (¿es eso posible?)
- Incrustar un intérprete lua (¿es posible?)
Y también en una nota práctica menos inmediata, cómo implementar estructuras de datos comunes en lisp como un montón, pila, árbol de búsqueda binaria, etc. Sin embargo, eso puede ser simplemente usando las operaciones de lista de Lisp como car
y cdr
de la manera correcta. No lo sé.
Dudo mucho que algo de esto (con la improbable excepción de los dos últimos de la lista) sea imposible con Lisp o a la gente no le encantaría tanto. Y lo antes mencionado que he leído menciona un montón de software del mundo real escrito en Lisp (me viene a la mente la tienda web de Yahoo!).
Sin embargo, teniendo la programación en un lenguaje imperativo ( ¿el? ) Antes, estoy ansioso por usar los nuevos conocimientos que obtengo para escribir aplicaciones del mundo real. Entonces, ¿cuál es la forma más rápida de aprender a escribir software práctico con Lisp?
Por cierto, he visto Practical Common Lisp de Peter Seibel pero, a juzgar por el TOC, solo toca algunas de las cosas que me gustaría aprender a hacer con Lisp.
Una pregunta más si puedo (lo siento si esto es combinar dos preguntas en una), ¿dónde puedo encontrar una referencia a las funciones de Lisp y esas cosas?
Y realmente quiero que me guste Lisp.