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 utilizarlo 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?
99
Respuestas:
Sí, el desarrollo web es una de las fortalezas de Common Lisp en la actualidad.
Como servidor web, utilice Hunchentoot , anteriormente conocido como tbnl, por el Dr. Edmund Weitz.
Puede ejecutarlo como back-end para Apache usando mod_proxy como proxy inverso o como servidor independiente.
Hay varias soluciones de generación de HTML disponibles, desde plantillas estilo PHP hasta hacks de macros Lisp y XSLT. Solo elige tu opción.
HTML-TEMPLATE es un ejemplo.
Closure XML está disponible para análisis XML, serialización, XPath 1.0, XSLT 1.0. También hay Closure HTML para el análisis de la 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 con JavaScript sea más fácil, pero también puede escribir JavaScript simple y simple, por supuesto.
Otra excelente 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 a utilizar 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 su servidor está escrito en Common Lisp :-)
fuente
El desarrollo web en Common Lisp es efectivo y divertido.
Algunos ejemplos:
CL-WHO le permite escribir HTML sin volver a olvidar una etiqueta de cierre.
Weblocks le permite definir formularios de forma declarativa con validación incorporada:
También es compatible con AJAX de manera totalmente automática, volviendo a los enlaces normales si el navegador no lo admite.
cl-prevalence es una alternativa increíblemente simple a SQL.
Mucha gente está utilizando estas tecnologías últimamente para aplicaciones de misión crítica, con éxito.
De hecho, los proyectos de código abierto más importantes de CL cuentan con un excelente apoyo de la comunidad.
fuente
Existen algunos marcos web para el desarrollo web. Mira esto:
Si desea herramientas lisp bien soportadas, deberá 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, por ejemplo, Django en Python.
A continuación, se muestran algunos productos comerciales de lisp:
También vale la pena señalar que Reddit se construyó inicialmente en Lisp, pero los autores luego migraron a Python, citando la falta de bibliotecas bien utilizadas y documentadas. ( enlace )
fuente
No puedo hablar con otros marcos, pero he tenido muy buena suerte al usar Hunchentoot para un servidor web (funciona bien por sí solo, o puede ponerlo detrás de Apache ). Lo que realmente lo hace brillar (esto probablemente sorprenderá a algunos) son las bibliotecas.
Lo que realmente me gusta de usar CL para la web es que puede modificarlo todo mientras se ejecuta. Siempre tiene un REPL funcionando con el código de su 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.
fuente
Para ayudar aún más a disipar el mito de que no existen 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 marco web. Prefiero construir aplicaciones web combinando herramientas ortogonales (David Lichteblau ha mencionado algunas buenas) usando patrones de diseño de una manera que sea realmente apropiada para la aplicación que está creando, y ese es el enfoque que recomiendo. Common Lisp proporciona una gran cantidad de herramientas de este tipo y una capacidad incomparable 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:
http://www.adampetersen.se/articles/lispweb.htm
fuente
Creo que se puede decir que sí sin mucho lío.
uno de los primeros servidores HTTP fue cl-http
El esquema que la gente de DrScheme ha dedicado una gran cantidad de tiempo a él:
www.franz.com se ejecuta en su propio servidor web (AllegroServer) y webframework (webactions)
Si tiene dudas, consulte los paquetes lisp comunes de Edi Weitz. Suelen funcionar.
Así que sí, uno puede hacer programación web "seria" con Common Lisp. Por mi parte, actualmente estoy indeciso de seguir alguna ruta Common Lisp o Ruby on Rails. Prefiero ambos sobre cualquier cosa .NET ....
fuente
Viaweb, la empresa de Paul Graham, escribió un producto en Common Lisp que posteriormente se convirtió en Yahoo Shops. Aparentemente, Yahoo lo reescribió posteriormente en C ++. Hay bastantes recursos web para la programación Lisp.
fuente
Puede encontrar algunas cosas sobre herramientas para aplicaciones web Lisp en esta pregunta .
También podría valer la pena escuchar Stack Overflow 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).
fuente
Las opiniones varían. La sabiduría común es: mejor use un lenguaje diferente, o más bien una pila web diferente, como LAMP, .NET, Ruby on Rails, Java. El proyecto web de éxito conocido en lisp fue ViaWeb de Paul Graham . Reddit se implementó inicialmente en lisp, pero luego se cambió a python . Si decide utilizar lisp, pruebe el libro de Seibel: Practical Common Lisp .
fuente
Parece que mucho de Orbitz estaba o está escrito en LISP .
fuente
Eche un vistazo a Allegro Common Lisp. Tiene algunas bibliotecas, incluido un servidor web, específicamente para el desarrollo web.
fuente