2012-05-08 18 views
6

Estoy un tanto familiarizado con Scheme. Estoy leyendo OnLisp, y me encantaría hacer un proyecto del mundo real en él. Lo más probable es que el desarrollo web. Me encantaría saber qué tipo de configuración utilizan las personas para desarrollar sitios web en lisp. Tengo un par de Macs en casa y pensé que usaría Clozure cl. Sin embargo, soy cauteloso con algunas cosas. He leído en los internets que cl no tiene una instalación confiable de enhebrado ni buenas conexiones de red. ¿Es esto cierto? ¿Cuál fue tu experiencia?Webdevelopment en Common Lisp

PD: No me digas acerca de clojure :). Lisp es un picor que necesito arañar.

+0

Además, la mayoría de las aplicaciones web que estaban por ahí parecen un poco anticuadas. No estoy diciendo "Jaja ... mira ma ... no hay ropa", pero ¿alguien puede decirme por qué es este el caso, o mostrarme un contraejemplo? Además, ¿hay algún ceceo a los traductores de Javascript que hay? ¿Hay alguna ayuda de lisp en el frente? – Ravi

+0

Sospecho que es un problema social. Como hay relativamente pocas Lispers, las aplicaciones web basadas en Lisp generalmente no tienen muchos contribuyentes. Por lo tanto, los desarrolladores tienden a tener que enfocarse en hacer lo básico y descuidar cosas como las llamativas características de AJAX. –

+0

Para compañeros de googlers: sugiero tener una mirada más fresca al [impresionante ceceo común] (https: //codyreichert.github.io/awesome-cl /) lista! – Ehvince

Respuesta

6

No estoy seguro de por qué no tendría "buenas conexiones de red"; no puede confiar en los subprocesos si desea escribir una aplicación portátil de Common Lisp ya que ciertas implementaciones no los admiten (AFAIK, solo clisp, aunque puede compilarlo con soporte experimental de subprocesos). Si planea elegir una implementación y cumplirla, no tendrá ese problema.

La pila CL web "estándar" es Hunchentoot/cl-who/clsql, aunque se pueden encontrar tutoriales que se ejecutan en Araneida o Portable AllegroServe.

La configuración que utilizo es Debian/SBCL corriendo quicklisp y los sistemas anteriores, junto con MySQL (aunque estoy considerando seriamente la posibilidad de saltar a Postgres) para la base de datos y nginx para correr delante de Hunchentoot servir contenido estático.

+0

Intenté usar SBCL en mac, pero obtengo el error "threading disabled" cuando intento cargar weblocks. He habilitado el enhebrado, pero todavía dice la misma maldita cosa :). De todos modos, me quedaré con Clozure por ahora. Gracias por toda la información. Creo que este es un buen comienzo. – Ravi

+0

@Ravi En mi experiencia, SBCL y Clozure CL son muy similares en la forma en que se comportan, por lo que es poco probable que usar este último cause ningún problema. Me refiero a Clozure CL en Mac OS X y SBCL en GNU/Linux, por ejemplo, y todavía tengo que encontrar problemas de portabilidad entre los dos. (CLISP y ECL son otra cosa completamente distinta, por supuesto, pero cuando escribo aplicaciones web, simplemente ignoro su existencia. :)) –

+0

Por cierto, además de las bibliotecas mencionadas en esta respuesta, sugiero buscar en [Postmodern] (http://marijnhaverbeke.nl/postmodern/) para sus necesidades de base de datos. He encontrado que es muy flexible y predecible. –

2

El problema con Common Lisp de "networking" es, no disponemos de tomas en serie CL, por lo que cada aplicación tiene su propio socket API. Sin embargo, tenemos algunos intentos de ofrecer una interfaz común, como usocket. Puede encontrar una lista de paquetes relacionados con la red here.

Si necesita un marco web, mire en Caveman. Todavía no lo he usado, pero parece el marco web CL más completo que he visto en mi vida.

+0

Nunca escuché de Caveman antes. Se ve bien. – Ravi

8

Actualmente estoy usando Restas un marco basado en Hunchentoot e inspirado en el sistema de rutas de Rails. También uso Postmodern para interactuar con una base de datos PostgreSQL y genero HTML con cl-markup aunque estoy pensando en cambiar a cl-who que parece más personalizable.

Cuando he comenzado También he considerado el uso de Parenscript para generar el JavaScript pero ahora estoy feliz con Mootools y sencillo JavaScript.

Todo se ejecuta en SBCL y está disponible con Quicklisp.

+0

Parenscript parece interesante. Tu configuración parece completa. Gracias. – Ravi

+1

He estado jugando con Restas desde hace un tiempo. Por qué me gusta: 1) Como su nombre lo indica, fomenta el diseño reparador 2) Es simple, si piensas en términos de MVC es más o menos la parte C, y lo haces bastante bien. 3) Es muy flexible 4) Considero que su concepto de rutas es superior a la forma en que Django realiza su envío utilizando expresiones regulares (aunque creo que obtuvo esa buena idea de los rieles) 5) Puede estructurar su sitio en módulos y luego montarlos en URL específicas, una vez más, superior a la forma en que Djangos organiza las aplicaciones en un proyecto de uso de un arco espagueti de archivos url.py. 6) su ceceo :) –