2009-01-12 20 views
6

im reading Práctico Lisp común como resultado de another question.Intentando aprender: ¡Reorientación de objetos y funciones genéricas en LISP!

Acabo de leer el capítulo 16 y 17 donde puede encontrar cómo LISP administra los objetos. Pero después de un par de años de pensar cómo maneja Java los objetos, realmente no puedo entender cómo implementaría arquitecturas más grandes en LISP usando el CLOS.

Así que les pido a ustedes por unas 20-50 páginas leyendo sobre CLOS aplicado a arquitecturas más grandes que simples ejemplos. ¡Tal vez un par de entradas de blog o incluso experiencias!

TY

+1

¿Puedes dar un ejemplo de una arquitectura? CLOS es más o menos un superconjunto del sistema de objetos Java, por lo que no estoy seguro de qué arquitecturas tiene en mente ... – Jules

Respuesta

4

Tal vez echar un vistazo a las aplicaciones de ejemplo que se camina a través de los capítulos posteriores. Verá que las clases y los objetos son solo otra herramienta en su caja. Resista el impulso de programar Java con sintaxis Lisp.

Otro lugar para mirar es Successful Lisp, los capítulos 7 y 14 para los conceptos básicos, y los capítulos 31 y una parte de 3.10 son sobre paquetes y manejo de proyectos grandes.

Algún gurú de Lisp (podría haber sido Paul Graham, pero no estoy seguro) dijo una vez que aún no había necesitado CLOS.

edit: Creo que su confusión puede provenir del hecho de que en Lisp, no utiliza el sistema de clases para organizar espacios de nombres. Esto se hace por separado; los dos realmente no tienen nada que ver el uno con el otro.

+0

En el caso de pg, es porque prefiere escribir su propia versión rota en su lugar.Casi todo en el mundo de Lisp es un objeto: CLOS es una buena herramienta para saber. – jrockway

+2

jrockway, ¿has leído el código fuente de Paul? – Svante

+0

De hecho, el hiperespec define "objeto" como "cualquier dato Lisp": http://www.lispworks.com/documentation/lw50/CLHS/Body/26_glo_o.htm – Ken

7

Si desea obtener el libro, "Programación orientada a objetos en COMMON LISP" de Sonja E. Keene, el Capítulo 11 (Desarrollo de un programa CLOS avanzado: Streams) contiene un ejemplo no trivial con herencia múltiple abarca alrededor de 40 páginas.

Se discuten ocho clases en detalle (flujo, flujo de entrada, flujo de salida, flujo bidireccional, flujo de caracteres, flujo de bytes, flujo de disco y flujo de cinta). Las clases concretas de las que se esperaría que un usuario cree instancias se derivan utilizando herencia múltiple.

Es más importante que el ejemplo de cuenta bancaria en Practical Common Lisp. También puede encontrar el resto del libro de Keene útil para obtener una comprensión más profunda de CLOS: todo el libro trata de CLOS.

+0

El libro de Keene proporciona exactamente lo que este OP está buscando. –

+0

Sonya (se ha jubilado) es una de las mejores escritoras técnicas de todos los tiempos. Su libro es muy claro y ha sido muy estudiado por los creadores de CLOS. –

5

Si realmente quiere comprender CLOS, puede volver atrás y leer The Art of the Meta Object Protocol, que proporciona la base y el código subyacente para Closette, una versión subconjunto de CLOS.

+0

Este libro es fantástico, pero trata más sobre la teoría subyacente y la belleza de CLOS que sobre el desarrollo práctico cotidiano. Creo que este último es más de lo que se pide aquí. –

0

Bigger aplicaciones CLOS son 1) CAPI de LispWorks 2) CL-http servidor web 3) un gran paquete de CLOS es CLIM 4) si te gusta OpenGenera (que es un sistema operativo de Lisp con Common Lisp y algunos predecesor ZetaLisp 5) un paquete más pequeño es http://www.cliki.net/mel-base

Saludos Friedrich

2

Nosotros en Weblocks también utilizan el CLOS en gran medida, por lo que es posible que desee navegar por la fuente un poco.

Cuestiones relacionadas