tutorial net descargar compiler compiladores common lisp common-lisp

net - Dónde aprender a usar prácticamente Common Lisp



lisp descargar (2)

Soy un programador de C ++ que intenta aprender Common Lisp. He visto 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 increíble que es y lo increíblemente rápido que puede hacer las cosas con él y cómo resolvió asombrosamente muchos problemas con los lenguajes de programación modernos hace 30 años. Además, cuán asombrosas son las macros y cómo cada paradigma de programación (OO, funcional, basado en actor o lo que sea, etc.) se puede usar en Lisp, y cómo las listas son la estructura de datos definitiva. Básicamente, trata a Lisp como un lenguaje de investigación y dice lo diferente y revolucionario que es.

Y todo eso probablemente sea cierto, pero el problema es que no he visto muchas cosas prácticas como leer un archivo, dividirlo en palabras y procesarlo. No estoy interesado en aprender Common Lisp por el bien de aprender Common Lisp, sino por hacer lo que solía hacer en C ++, hacerlo más rápido y con menos errores.

Así que mi pregunta es cuál es el mejor recurso (ya sea un sitio web, un libro, cualquier cosa) que se centre en enseñar a usar Common Lisp para hacer tareas de programación comunes, como

  • Cómo leer archivos
  • Cómo leer un archivo, reemplazar palabras en el archivo y escribir el resultado en el archivo
  • Iterar los archivos en un directorio y otras cosas del sistema de archivos
  • Interactuar con un SQL db
  • Hacer comunicaciones sobre enchufes
  • Enhebrar cosas como un servidor web
  • Crear GUIs
  • Realizar operaciones en archivos binarios
  • Escribir un analizador (no un intérprete para Lisp en Lisp, que como entiendo 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 de Lisp en C (¿es 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 binario de búsqueda, etc. Sin embargo, eso puede ser simplemente usando las operaciones Lisp''s list 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 en la lista) sea imposible con Lisp o la gente no lo amaría tanto. Y las cosas antes mencionadas que he leído mencionan 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 ( el ) lenguaje imperativo antes, estoy ansioso por llegar a utilizar el nuevo conocimiento que tengo 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 usar Lisp.

Una pregunta más si puedo (lo siento si esto combina 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.


Echa un vistazo a CLIKI , proporciona una lista de bibliotecas disponibles para Common Lisp que te ayudarán a lograr todos tus artículos.

Además, querrá consultar el libro de recetas de Common Lisp (también hay una versión más actualizada ). Tiene un montón de código para tareas comunes, como leer un archivo de una en una , y Foreign Function Interfaces para interactuar con bibliotecas escritas en C.

Puede escribir extensiones para Lisp en C, dependiendo de la implementación que esté usando. Emacs-Lisp, por ejemplo, te permite hacer eso aunque no sea Common Lisp. Por lo general, lo que desea hacer es escribir el código en Common Lisp y luego optimizarlo tanto como sea posible usando diferentes declaraciones de compilador Lisp, o el otro método donde usa una interfaz de función externa.

El enhebrado depende de la implementación que utilice, pero creo que la mayoría de ellos tienen hilos ahora.

Hunchentoot es uno de los mejores servidores web Lisp y es bastante fácil de Hunchentoot . No tiene que escribir ningún código de enhebrado, solo tiene que escribir las funciones del manejador de solicitudes HTTP.

Alguien compiló una lista de opciones de GUI para Lisp :

  • cl-gtk2, una interfaz para la biblioteca gui de GTK
  • McClim
  • Granate
  • Qt común
  • EQL

Yo propondría leer '' Practical Common Lisp '', ya que ya responde algunas de sus preguntas.

Probablemente hay tres o cuatro libros que deberías leer :

Referencia común de Lisp

Manuales

Ahora, lo siguiente que debe verificar es el manual de su implementación de Lisp. Describe muchas extensiones específicas: redes, hilos, ...

Documentación para implementaciones de Common Lisp:

SLIME (el Lisp-IDE basado en Emacs) tiene un manual de usuario SLIME .

Documentación para las bibliotecas Common Lisp:

Bibliotecas

Para uso de bibliotecas

Ahora mirando algunos de sus puntos:

  • Cómo leer archivos

Vea los archivos y el diccionario de secuencias en HyperSpec . WITH-OPEN-STREAM, READ, READ-LINE, READ-CHAR, READ-BYTE, READ-SEQUENCE, ...

  • Cómo leer un archivo, reemplazar palabras en el archivo y escribir el resultado en el archivo

Usar arriba Ver también: ESCRIBIR y relacionado.

  • Iterar los archivos en un directorio y otras cosas del sistema de archivos

Véase más arriba. DIRECTORIO, nombres de ruta, ...

  • Interactuar con un SQL db

Use por ejemplo la biblioteca CLSQL.

  • Hacer comunicaciones sobre enchufes

Vea el manual de su Lisp o use una de las bibliotecas portátiles. Ver Quicklisp.

  • Enhebrar cosas como un servidor web

Vea el manual de su Lisp o use una de las bibliotecas portátiles. Ver Quicklisp.

  • Crear GUIs

Depende Vea Quicklisp o una biblioteca específica de implementación.

  • Realizar operaciones en archivos binarios

Consulte Hyperspec para las operaciones de archivos y secuencias. ESCRIBIR-BYTE, LEER-BYTE. Abra una secuencia como una secuencia binaria.

  • Escribir un analizador (no un intérprete para Lisp en Lisp, que como entiendo es como 5 líneas de Lisp)

Usa una de las herramientas existentes para eso. Estudie los analizadores existentes. Hay muchos analizadores sintácticos escritos en Lisp, pero no hay muchos libros sobre eso (aparte de los analizadores de lenguaje natural, que se describen en la literatura de IA).

  • Interactuar con el sistema operativo (es decir, cosas escritas en C o C ++) para hacer cosas que Lisp no puede hacer de forma nativa

Depende Vea Quicklisp o una biblioteca específica de implementación.

  • Cómo escribir extensiones de Lisp en C (¿es posible?)

Depende Vea Quicklisp o una biblioteca específica de implementación. -> FFI

Consejo final: Leer código de otros autores.

Estudia otro código Lisp. Hay suficiente código Lisp muy diverso por ahí. Desde servidores web hasta software de composición de música.