programacion - lisp pdf
¿Es factible hacer desarrollo web(serio) en Lisp? (11)
Obviamente, es posible escribir casi cualquier tipo de aplicación en casi cualquier lenguaje de programación, especialmente en uno tan poderoso como Lisp (ya sea Scheme o Common Lisp). Pero, ¿es práctico usarlo para el desarrollo web? Si es así, ¿cuál debería ser un buen punto de partida? ¿Dónde se pueden encontrar los recursos adecuados (herramientas, bibliotecas, documentación, mejores prácticas, ejemplos, etc.) para un proyecto de esta naturaleza?
Creo que uno puede decir que sí sin mucho aliento.
uno de los primeros servidores HTTP fue cl-http
La gente de esquema alrededor de DrScheme ha dedicado una notable cantidad de tiempo a esto:
www.franz.com se ejecuta en su propio servidor web (AllegroServer) y webframework (webactions)
Si tiene dudas, consulte los paquetes de lisp comunes de Edi Weitz. Usualmente trabajan.
Entonces, sí, uno puede hacer programación web "seria" con Common Lisp. Por mi parte, actualmente no estoy decidido a seguir alguna ruta de Common Lisp o Ruby on Rails. Prefiero ambos sobre cualquier cosa .NET ....
Eche un vistazo a Allegro Common Lisp. Tiene algunas bibliotecas, incluido un servidor web, específicamente para desarrollo web.
El desarrollo web en Common Lisp es efectivo y divertido.
Algunos ejemplos:
CL-WHO permite escribir HTML sin olvidar una etiqueta de cierre nunca más.
Weblocks permite definir formularios de forma declarativa con validación incorporada:
(defview signup (:type form :caption "Sign up")
(username :satisfies #''valid-username)
(password :present-as dual-password :parse-as dual-password)
(receive-newsletter-p :present-as checkbox :parse-as predicate))
También es compatible con AJAX de forma totalmente automática, volviendo a los enlaces normales si el navegador no lo admite.
cl-prevalence es una alternativa increíblemente simple para SQL.
Mucha gente está utilizando estas tecnologías últimamente para aplicaciones de misión crítica, con éxito.
La mayoría de los proyectos de código abierto CL realmente tienen un excelente apoyo de la comunidad.
Existen algunos frameworks web para desarrollo web. Mira esto:
Si quieres herramientas de lisp bien compatibles, entonces tendrás que pagarlas. Simplemente no hay una comunidad muy grande en torno a las herramientas de código abierto, por lo que no tienen el mismo nivel de documentación / adopción que, digamos, Django en Python.
Aquí hay algunos productos comerciales de lisp:
También vale la pena señalar que Reddit se construyó inicialmente en Lisp, pero los autores migraron posteriormente a Python, citando la falta de bibliotecas bien utilizadas y documentadas. ( link )
Las opiniones varían La sabiduría común es: mejor utilizar un lenguaje diferente, o más bien una pila web diferente, como LAMP, .NET, Ruby on Rails, Java. El conocido proyecto web exitoso en lisp fue ViaWeb de Paul Graham. Reddit se implementó inicialmente en lisp, pero luego link . Si decides usar lisp, prueba el libro de Seibel: Practical Common Lisp .
No puedo hablar con otros frameworks, pero he tenido mucha suerte usando Hunchentoot para un servidor web (funciona bien por sí mismo, o puedes ponerlo detrás de Apache ). Lo que realmente lo hace brillar (esto probablemente sorprenderá a algunos) ¡son las bibliotecas!
- Utilice CL-WHO para escribir HTML sin esfuerzo en una sintaxis de estilo lisp
- Parenscript permite escribir código que compila en javascript
- Para la conectividad de la base de datos use Postmodern para hablar con PostgreSQL
Lo que realmente me gusta de usar CL para la web es que puedes modificarlo todo mientras se ejecuta. Siempre tiene un REPL que ejecuta y ejecuta su código de servidor, luego puede conectarse a ese REPL y cambiar o inspeccionar cómo funciona el código, todo sin tener que detener nada. He redefinido funciones mientras el sitio se está ejecutando, la próxima vez que se llama a la función, simplemente toma el nuevo código y funciona.
Para ayudar a disipar el mito de que no hay marcos web Lisp, aquí hay algunos que aún no se han mencionado:
Obviamente, mucha gente parece pensar que Lisp es lo suficientemente bueno para escribir muchos frameworks web.
No uso ni apruebo ningún framework web. Prefiero construir aplicaciones web combinando herramientas ortogonales (David Lichteblau ha mencionado algunas buenas) usando patrones de diseño de una manera que es realmente apropiada para la aplicación que está construyendo, y ese es el enfoque que recomiendo. Common Lisp proporciona una gran cantidad de tales herramientas y una capacidad inigualable para combinarlas.
Adam Petersen publicó un excelente tutorial introductorio sobre cómo comenzar a construir aplicaciones web Lisp en este estilo el año pasado:
Parece que mucho de Orbitz estaba o está escrito en LISP .
Puede encontrar algunas cosas sobre herramientas para aplicaciones web Lisp en esta pregunta .
También podría valer la pena escuchar Podcast 27, donde los chicos de Reddit hablan un poco sobre su experiencia al ejecutar un sitio web en Lisp (y su cambio a Python).
Sí, el desarrollo web es uno de los puntos fuertes de Common Lisp en la actualidad.
Como servidor web, utilice Hunchentoot , anteriormente conocido como tbnl, por el Dr. Edmund Weitz.
Puede ejecutarlo como un back-end para Apache usando mod_proxy como un proxy inverso, o como un servidor independiente.
Varias soluciones de generación de HTML están disponibles, desde plantillas de estilo PHP hasta macros de macro Lisp y XSLT. Solo elige.
HTML-TEMPLATE es un ejemplo.
Cierre XML está disponible para análisis XML, serialización, XPath 1.0, XSLT 1.0. También hay HTML de cierre para el análisis de sopa de etiquetas HTML.
(Divulgación completa: soy el mantenedor de Closure XML y Closure HTML.)
Si lo desea, Parenscript puede hacer que su experiencia de JavaScript sea lispier, pero también puede escribir JavaScript antiguo, por supuesto.
Otra jwacs solución de mejora de JavaScript en jwacs , que está escrita en Common Lisp y transforma JavaScript para agregar soporte de continuación.
Los proyectos de servicios web pueden requerir un cliente HTTP además de un servidor.
Drakma es la biblioteca que se usa para eso hoy.
PURI es útil para la manipulación de URI.
¡Y hay más! Un punto de partida es cliki, por ejemplo cliki.net/web .
En la web, nadie sabe que tu servidor está escrito en Common Lisp :-)
La empresa de Paul Graham Viaweb escribió un producto en Common Lisp que posteriormente se convirtió en Yahoo Shops. Aparentemente, Yahoo posteriormente lo reescribió en C ++. Hay bastantes recursos web para el programa de Lisp.