Publicidad:
La Coctelera

un rato de sol

i will work harder, ja ja ja, no ahora en serio.

12 Agosto 2008

Instalando Weblocks: desarrollo web con LISP

Esto llevaba por aquí un montón de tiempo como un borrador inacabado, como me parece que nunca lo terminaré del todo, lo publico por si a alguien le sirve de ayuda


Weblocks es un framework para el desarrollo de aplicaciones web, (vaya novedad), usando el lenguaje Common Lisp, (caramba el de los paréntesis).

La página principal del proyecto está aquí: http://common-lisp.net/project/cl-weblocks/

¿por qué mola weblocks? por varias razones, por ejemplo y sin ningún orden en particular:

  • Para sacarle alguna utilidad al LISP o al Scheme que se aprende en la carrera
  • Por las continuations, capacidades de metaprogramación, la capacidad de borrar la distinción entre código y datos, las macros y todas esas cosas maravillosas que permite LISP a los programadores.
  • Para probar unos sorbitos de programación funcional entre tanto código imperativo
  • Por qué tiene un logo muy chulo

Weblocks se basa en la idea de usar las contiuaciones para mantener el estado del cliente de la aplicación, idea que ya ha implementado con éxito otro bonito framework basado en Smalltalk llamado Seaside. Una continuation es algo así como un savegame de la ejecución de un programa que puede ser almacenada para reanudar su ejecución posteriormente. Esto hace que una sesión entre un cliente y la aplicación web se transforme en una sesión donde se recupera la continuación de la sesión y se reanuda su ejecución en el punto en el que se quedo en la anterior petición. Para poder hacer esto necesitamos dos cosas: un lenguaje de programación que soporte continuaciones como lisp, smalltalk o ruby, y que las continuaciones sean serializables para poder almacenarlas en algún sitio y poder recuperarlas (esto es lo que no puede hacer hoy por hoy ruby).

La otra idea en la que se basa Weblocks es la de que los objetos persistentes deben poder transformarse directamente en la vista sin que sea necesario escribir un template para generar el HTML. Las abstracciones que encapsulan los datos (clases CLOS en este caso) se transforman directamente en componentes de la vista (tablas, listas, botones) sin que sea necesario escribir un template ni HTML. Algo así como el scaffold de Rails, pero que se utiliza en todos los momentos en que se quiere renderizar algún dato en el navegador cliente. Desde este punto de vista, la tarea de diseño queda reducida a escribir una hoja de estilo CSS para el HTML autogenerado.

Bien ¿qué necesitamos para instalar Weblocks?, en primer lugar lisp, una buena implementación con soporte multihilo. Yo estoy utilizando SBCL, que parece ser super rápida. Su instalación es muy sencilla:

En Debian:

 #apt-get install sbcl
 

En Mac OS X con darwinports:

 #port install sbcl
 

Ahora ya tenemos lisp, mostremos el prompt del interprete para probar el REPL (read-eval-print-loop):

 # sbcl
 This is SBCL 1.0.6, an implementation of ANSI Common Lisp.
 More information about SBCL is available at
. SBCL is free software, provided as is, with absolutely no warranty. It is mostly in the public domain; some portions are provided under BSD-style licenses. See the CREDITS and COPYING files in the distribution for more information. * (format t "hola mundo") hola mundo NIL * (quit) #

OK. Ahora necesitamos instalar Weblocks. Desgraciadamente, instalar weblocks no es tan fácil como hacer gem install rails. Necesitamos instalar un sistema de distribución de bibliotecas lisp llamada ASDF, en el que en el futuro se distribuirá Weblocks (si has instalado SBCL ya está instalado), pero por ahora, todavía no es posible instalarlo con esta utilidad, así que debemos descargar primero el código y después decirle a ASDF donde se encuentra el framework.

Weblocks utiliza como sistema de control de versiones darcs, así que necesitamos instalarlo para hacer el checkout del proyecto:

En debian

 #apt-get install darcs
 

En Mac OS X el port de darcs esta formidablemente roto, así que, siguiendo las recomendaciones del sitio de darcs, me bajé un binario de http://glozer.net/darcs y lo instale copiando el bianrio a /usr/local/bin y el .framework a /Library/Frameworks.

Vamos a hacer una instalación para un sólo usuario.
Bien hagamos un checkout (o como se diga en darcs) del proyecto:

 ~$mkdir cl
 ~$cd cl 
 cl$darcs get http://common-lisp.net/project/cl-weblocks/darcs/cl-weblocks
 

Esto se bajará el código de weblocks, cuando haya acabado, debemos decirle a ASDF donde se encuentra el paquete de Weblocks, para ello hay que añadirlo a una lista de biliotecas que ASDF mantiene. Un buen sitio para hacerlo, dado que hacemos la instalación para un sólo ususario, es el fichero de inicio de SBCL para este usuario, que se encuentra en ~/.sbclrc, donde debemos copiar el siguiente código:

 (require 'asdf)
 
 (push #p"/home/antonio/cl/cl-weblocks/" asdf:*central-registry*)
 
 
 -- THIS IS NOT THE END --
 
Tags: lisp, weblocks

servido por Antonio 2 comentarios compártelo

2 comentarios · Escribe aquí tu comentario

javi

javi dijo

La verdad es que el logo es llamativo...

12 Agosto 2008 | 10:54 PM

david

david dijo

Maravillas de Lisp. No conocia este framework, es muy interesante.
Tambien descubri otro llamado Symbolicsweb hoy. En fin, ya tengo algo con lo que jugar. :)

27 Agosto 2008 | 01:03 AM

Escribe tu comentario


Sobre mí

Avatar de Antonio

un rato de sol

Barcelona/Salamanca, España
ver perfil »
contacto »
Trabajador del metal y del acero, en la gloriosa XING AG, escribo software con el que poder ganarme el jornal. En mi tiempo libre sigo tecleando código de bonitos colores a medio camino entre lo sublime y lo terrible. Últimamente me gustan mucho los gatos.

Fotos

Antonio Garrote Hernández todavía no ha subido ninguna foto.

¡Anímale a hacerlo!

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera