Es obvio que 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?¿Es factible hacer desarrollo web (serio) en Lisp?
Respuesta
Sí, el desarrollo web es uno de los puntos fuertes de Common Lisp en la actualidad.
como un 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.
Hay varias soluciones de generación de HTML disponibles, desde plantillas de estilo PHP hasta macros de Lisp para XSLT. Solo elige.
HTML-TEMPLATE es un ejemplo.
Closure XML está disponible para XML, serialización, XPath 1.0, XSLT 1.0. También hay HTML de cierre para el análisis de sopa de etiquetas HTML.
(La revelación completa: Soy el encargado del mantenimiento de XML y HTML Cierre Cierre.)
Si lo desea, puede hacer que su Parenscript experiencia lispier JavaScript, pero también se puede escribir el viejo y simple JavaScript ti mismo, 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 que se utiliza para eso en la actualidad.
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 su servidor está escrito en Common Lisp :-)
y esto es solo para lisp común y solo un conjunto de herramientas ... –
[En Internet, nadie sabe que eres un perro] (http://petersmagnusson.files.wordpress.com/2007/09/dogoninternet .jpg? w = 380 & h = 422) - ¿verdad? –
@MattBall woof. ladrar. aullido. – unsynchronized
Paul Graham's compañía Viaweb wrote a product en Common Lisp que posteriormente se convirtió en tiendas de Yahoo. Aparentemente, Yahoo posteriormente lo reescribió en C++. Hay bastantes recursos web para el programa de Lisp.
Si eso es cierto acerca de Yahoo, algunos podrían ver esto como una falla de CL como lenguaje web. Pero lo veo como un éxito de CL como un lenguaje de creación de prototipos web. – gcbenison
No consideraría la reescritura como una falla, como dijo Paul Graham en las notas sobre Derrotando los promedios: "En enero de 2003, Yahoo lanzó una nueva versión del editor escrita en C++ y Perl. Es difícil decir si el programa es sin embargo, ya no está escrito en Lisp, porque para traducir este programa a C++ literalmente tenían que escribir un intérprete Lisp: los archivos fuente de todas las plantillas generadoras de páginas siguen siendo, hasta donde yo sé, código Lisp ". – protist
viaweb no fue prototipado en lisp común para reescribir en otro idioma, C++. los productores de la aplicación lo escriben y lo ejecutan con ceceo debido a varias razones obvias, como el poder de los lenguajes, la creación rápida de prototipos y la producción rápida; él sabía muy bien el ceceo, etc. lo ejecutan con la versión que han escrito en lisp, algunas partes estaban en balbuceamiento en realidad. después de que lo adquirieron, según el rumor lo reescribió, no estoy seguro. es la elección del adquirente, puede incluso wirte en vbasic o pascal fortran. –
Echa un vistazo a Allegro Common Lisp. Tiene algunas bibliotecas, incluido un servidor web, específicamente para desarrollo web.
Puede encontrar información sobre herramientas para aplicaciones web Lisp en this question.
También podría valer la pena escuchar Stack Overflow Podcast 27 donde los chicos de Reddit hablan un poco acerca de su experiencia de ejecutar un sitio web en Lisp (y su cambio a Python).
Creo que se puede decir que sí sin demasiado hazzle.
uno de los primeros servidor HTTP fue cl-http
La gente esquema de todo DrScheme han pasado una cantidad notable de tiempo en él:
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.
Así que sí, uno puede hacer una 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 ....
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 Paul Graham's ViaWeb. Reddit se implementó inicialmente en lisp, pero luego switched to python. Si decides usar lisp, prueba el libro de Seibel: Practical Common Lisp.
Existen algunos frameworks web para desarrollo web. Echar un vistazo a:
Si desea bien apoyado herramientas Lisp, entonces tendrá que pagar por ellos. 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.
Éstos son algunos productos Lisp comerciales:
También debe notarse que Reddit fue construido inicialmente en Lisp, pero los autores más tarde emigraron a Python, citando una falta de bibliotecas bien usadas y documentadas. (link)
Él dice que las bibliotecas eran el "mayor problema", pero justo antes de eso dijo "reddit no se ejecutaría en mi Mac"; en ese momento, solo había una CL enhebrada para la Mac, que no podía ejecutar su código de socket de bajo nivel. Eso suena como al menos como un tramposo. – Ken
Soy un gran fan de Lisp, está reemplazando a Python por mí. Pero trabajo en C++. Puedo encontrar otros programadores de Python que comprendan los prototipos de Python, pero hasta que el actual resurgimiento de Lisp tenga más éxito, no puedo usarlo en el trabajo sin interminables preguntas "¿por qué no usaste Python o Ruby?" – Aaron
desarrollo Web en Common Lisp es a la vez eficaz y divertido.
Algunos ejemplos:
CL-WHO le permite escribir HTML sin olvidar una etiqueta de cierre nunca más.
Weblocks permite definir formas declarativa con la 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 una forma totalmente automática, cayendo de nuevo a los enlaces normales si el navegador no lo soporta.
cl-prevalence es una alternativa muy simple a SQL.
Bastantes de las personas que están utilizando estas tecnologías últimamente para aplicaciones de misión crítica - con éxito.
más importantes proyectos de código abierto CL, de hecho, tienen un excelente apoyo de la comunidad.
Parece que una gran cantidad de Orbitz was or is written in LISP.
No puedo hablar con otros marcos, pero he tenido mucha suerte usando Hunchentoot para un servidor web (funciona bien por sí solo, o puede put it behind Apache). Lo que realmente lo hace brillar (esto probablemente sorprenderá a algunos) ¡son las bibliotecas!
- Uso CL-WHO para escribir HTML sin esfuerzo en una sintaxis de estilo Lisp
- Parenscript le permite escribir código que se compila a JavaScript
- Para el uso de conectividad de base de datos Postmodern hablar con PostgreSQL
Lo 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.
¿Conoce algo que pueda hacer que LISP sea compatible con MongoDB? – MadPhysicist
para ayudar aún más a disipar el mito de que no existen marcos web Lisp, aquí están los que todavía 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 para saber cómo empezar a construir aplicaciones web Lisp en este estilo del año pasado:
- 1. ¿Es factible hacer el desarrollo .NET usando Eclipse?
- 2. ¿Es factible el desarrollo de WPF en VM?
- 3. ¿Es Mono lo suficientemente robusto para un serio desarrollo empresarial?
- 4. Usando el desarrollo de Vim for Lisp
- 5. Lisp o Haskell para desarrollo de aplicaciones web
- 6. Objective-C en desarrollo web
- 7. ¿Es factible virtualizar las máquinas de desarrollador?
- 8. ¿Es factible introducir el desarrollo impulsado por prueba (TDD) en un proyecto maduro?
- 9. Desarrollo web
- 10. ¿El mejor framework web en Common-Lisp?
- 11. Desarrollo de interfaz gráfica de usuario de Common Lisp
- 12. Sobrecarga de recursión: ¿qué tan serio es?
- 13. ¿Puedo hacer esto en Lisp?
- 14. Servicio web con Lisp
- 15. Lisp Web Frameworks?
- 16. ¿Alguien usa continuaciones delimitadas para hacer desarrollo web en Haskell?
- 17. Es factible convertir una aplicación MFC C++ basada en escritorio a una aplicación web
- 18. Desarrolladores web: ¿es mejor hacer desarrollo en su máquina local o en un host remoto?
- 19. Rails, Heroku y Subdominios. ¿Es factible mi caso especial?
- 20. En desarrollo web: ¿Qué ASP.net puede hacer que PHP no puede hacer?
- 21. MVVM para desarrollo web
- 22. Webdevelopment en Common Lisp
- 23. Cómo hacer ((AB) (CD).) En Lisp
- 24. ¿El verbo HTTP 'HEAD' es útil en el desarrollo web?
- 25. Subversion y desarrollo web
- 26. ¿Qué tan serio es el error Java7 "Solr/Lucene"?
- 27. Del desarrollo web al desarrollo de Android
- 28. ¿Es factible compilar Python para código de máquina?
- 29. Valgrind Advertencia: Debería tomarlo en serio
- 30. Desarrollo web Java sin Eclipse
depende de lo que entendemos por "práctico". Posible, sí.Práctico, probablemente no para la mayoría. ¿Planeas tener tu sitio alojado? ¿Va a operar su propia caja dedicada donde tendrá control de raíz? ¿Cuánto esfuerzo estás dispuesto a poner en ello? – core
Leonardo, estoy preparando un libro sobre este tema ahora, y me gustaría recibir comentarios de los desarrolladores web que estén interesados en Lisp. Si lo desea, ¿podría decirme cómo se le ocurrió la idea de utilizar Lisp y qué le gustaría ver en un libro como este? [email protected] – vsedach
@chris - Recientemente establecí el hosting Scheme para algunos de mis proyectos secundarios; fue más fácil de lo que pensé que sería - http://www.gcbhacks.dreamhosters.com/scheme-web-apps/ – gcbenison