¿Es factible hacer un desarrollo web (serio) en Lisp? [cerrado]

99

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?

Leonardo
fuente
2
Depende de lo que quieras decir con "práctico". Posible, si. Práctico, probablemente no para la mayoría. ¿Planea tener su sitio alojado? ¿Vas a operar tu propia caja dedicada donde tendrás control de root? ¿Cuánto esfuerzo estás dispuesto a poner en ello?
núcleo
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 usar Lisp y qué le gustaría ver en ese libro? [email protected]
vsedach
@chris - Recientemente configuré Scheme hosting para algunos de mis proyectos paralelos; fue más fácil de lo que pensé que sería - gcbhacks.dreamhosters.com/scheme-web-apps
gcbenison
2
Ve a leer los ensayos de Paul Graham. Dudo que haya algo que se haya perdido en una discusión sobre el uso de LISP para aplicaciones web, además de que es un gran escritor. paulgraham.com/avg.html su página de inicio es: paulgraham.com/index.html
Kelly S. French
Compañeros de Google: hay más respuestas actualizadas en la impresionante lista de CL .
Ehvince

Respuestas:

82

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 :-)

David Lichteblau
fuente
1
y esto es solo para lisp común y solo un conjunto de herramientas ...
Attila Lendvai
1
@ MattBall guau. ladrar. aullido.
no sincronizado
En Internet nadie puede escuchar el grito de su servidor lisp.
kd4ttc
31

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:

(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 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.

Leslie P. Polzer
fuente
19

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 )

d4nt
fuente
Dice que las bibliotecas eran el "mayor problema", pero justo antes dijo que "reddit no se ejecutaría en mi Mac"; en ese momento, solo había un CL subproceso para Mac, que no podía ejecutar su código de socket de bajo nivel. Eso suena al menos como un factor decisivo.
Ken
3
Soy un gran fan de Lisp, me está reemplazando a Python. Pero trabajo en C ++. Puedo encontrar otros programadores de Python que entiendan los prototipos de Python, pero hasta que el actual resurgimiento de Lisp tenga más éxito, no puedo usarlo en el trabajo sin un sinfín de preguntas "¿por qué no usó Python o Ruby?"
Aaron
10

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.

  • Utilice CL-WHO para escribir HTML sin esfuerzo en una sintaxis de estilo lisp
  • Parenscript le permite escribir código que se 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 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.

Chris
fuente
¿Conoce algo que haga que LISP sea compatible con MongoDB?
MadPhysicist
9

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

vsedach
fuente
8

Creo que se puede decir que sí sin mucho lío.

  1. uno de los primeros servidores HTTP fue cl-http

  2. El esquema que la gente de DrScheme ha dedicado una gran cantidad de tiempo a él:

  3. www.franz.com se ejecuta en su propio servidor web (AllegroServer) y webframework (webactions)

  4. 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 ....

Friedrich
fuente
4

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.

PreocupadoDeTunbridgeWells
fuente
1
Si eso es cierto acerca de Yahoo, algunos podrían ver esto como una falla de CL como lenguaje web. Pero lo vería como un éxito de CL como lenguaje de creación de prototipos web.
gcbenison
3
Difícilmente consideraría la reescritura un fracaso, como dijo Paul Graham en las notas de Beating the Average: "En enero de 2003, Yahoo lanzó una nueva versión del editor escrita en C ++ y Perl. Es difícil decir si el programa no ya escrito en Lisp, sin embargo, porque para traducir este programa a C ++ literalmente tuvieron 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 ".
protista
viaweb no fue prototipado en common lisp para poder reescribirlo en otro idioma, c ++. Está previsto por los productores que se escriba y ejecute en lisp debido a varias razones obvias que él mismo ha dicho, el poder de los lenguajes, la rápida, sí, la creación de prototipos y la producción rápida, conocía muy bien lisp, etc., lo ejecutan con la versión que he escrito en lisp, partes de él en realidad estaba en lisp. después de que ahoo lo adquirió, según el rumor lo reescribieron, no estoy seguro. es la elección del adquirente, que incluso podría escribir en vbasic o pascal fortran.
sçuçu
2

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).

Dave Webb
fuente
2

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 .

Yuval F
fuente
1
¿Alguna posibilidad de que puedas agregar un poco más de FUD a tu publicación?
jrockway
@Yuval tiene razón. Esta es la sabiduría común. Reddit cambió. Creo que la publicación pregunta si hay algo de verdad detrás de esa sabiduría común.
Steve Rowe
1
@jrockway y Steve Rowe: la sabiduría común está ahí por una razón. No creo que esto sea FUD. No he oído hablar de un sitio web exitoso escrito en LISP desde ViaWeb. Por favor corríjame si me equivoco. Creo que el lenguaje de programación debe usarse de acuerdo con sus méritos, en lugar de su ideología.
Yuval F
0

Eche un vistazo a Allegro Common Lisp. Tiene algunas bibliotecas, incluido un servidor web, específicamente para el desarrollo web.


fuente