# CLISP

CLISP es una completa implementación libre de Common Lisp realizada por Bruno Haible, de la Universidad de Karlsruhe, y Michael Stoll, de la Universidad de Múnich, que cumple con casi la totalidad del estándar ANSI Common Lisp, además de muchas otras extensiones. CLISP es software libre y está publicado con la licencia GPL.
CLISP incluye un intérprete, un compilador a bytecode CLISP que permite ejecutar las aplicaciones 5 veces más rápido, un depurador que permite la ejecución paso a paso, programación dirigida a objetos con CLOS (Common Lisp Object System), interfaces a/desde otros lenguajes mediante FFI (Foreign Function Interface), soporte para internacionalización y localización de aplicaciones con gettext, soporte para expresiones regulares POSIX y perl, una interfaz para sockets, tipos de datos sin límites de tamaño y números con coma flotante sin límite en su precisión, entre otras muchas características. También incorpora una interfaz X Window System gracias a CLX, Garnet y CLUE/CLIO. La edición en línea se realiza a través de GNU readline. Además, CLISP proporciona una interfaz de usuario en inglés, alemán, francés, español, holandés, ruso y danés, que puede cambiarse en cualquier momento.
El código CLISP es muy portable y funciona tanto en sistemas POSIX (GNU/Linux, FreeBSD, NetBSD, OpenBSD, Solaris, Tru64, HP-UX, BeOS, NEXTSTEP, IRIX, AIX, etc) además de sistemas Windows (Windows NT/2000/XP, Windows 95/98/ME), Mac OS X o BeOS y tan solo necesita 4 MB de RAM.
CLISP permite ejecutar sistemas tan complejos como el sistema de álgebra computacional Maxima, el demostrador de teoremas ACL2 y muchos otros paquetes Common Lisp.
Como curiosidad, el logo del proyecto es una menorá, candelabro de siete brazos relacionado con el Judaísmo.

## Historia del proyecto

El proyecto se inició en 1987, cuando los autores originales, Bruno Haible y Michael Stoll, aún eran estudiantes en Alemania. La versión original sólo era para Atari ST y estaba escrito en lenguaje ensamblador del Motorola 68000 y Lisp. En 1992 se anunció la versión 2.0 para Linux en comp.os.linux, aunque sólo en formato binario.
Inicialmente Bruno Haible no tenía la intención de distribuir CLISP bajo la licencia GPL, pero tras un debate público en octubre de 1992 en la lista de correo del proyecto con Richard Stallman, cambió de opinión. El inicio de este debate fue la reclamación por parte de Richard Stallman para que cambiase la licencia CLISP a la GPL al considerar que era un trabajo derivado de la biblioteca GNU readline que se había empezado a usar en el proyecto poco sobre aquellas fechas.
En 1993 apareció la primera versión portable, en la que se incluía el código fuente bajo licencia GNU GPL. Esta versión estaba disponible para Atari ST, Amiga 500-2000, MS-DOS (emx, djgpp), OS/2 (emx), Unix (Linux, Sun4, Sun386, HP9000/800). A finales de 1993 apareció la versión 2.6 que incluía soporte para CLOS. Para finales de ese año apareció la versión 2.8 que sumó el paquete COMMON-LISP, que es el contiene las primitivas del sistema Common Lisp tal y como se definen en la especificación del lenguaje. En la versión 2.14 de 1995 se incorporó la interfaz FFI (Foreign Function Interface) que permite llamar a funciones C desde CLISP y hacer disponibles funciones CLISP desde C.
Desde el año 2000, el proyecto se aloja en sourceforge.net que le proporciona los recursos necesarios para poder continuar con su desarrollo.

## Estructuras organizativas/asociativas o de decisión

En la actualidad, CLISP está mantenido por Bruno Haible y Sam Steingold con la ayuda de un pequeño grupo de desarrolladores: Jörg Höhle, Arseny Slobodyuk, Dan Stanger, John Hinsdale, Peter Burwood y Peter Seibel.
El proyecto está hospedado en sourceforge.net y hace uso de varios de sus servicios para su desarrollo, en especial:
* CVS como repositorio central del código de CLISP
* La utilidad de seguimiento, a la que toda persona puede acceder, se usa con los siguientes fines :
** Reporte de errores
** Petición de nuevas funcionalidades
** Envío de parches
** Peticiones de soporte técnico
* Además, existen tres listas de correo:
** clisp-announce: es una lista dedicada a la publicación anuncios de proyecto, normalmente el lanzamiento de una nueva versión, y por tanto con un volumen muy bajo de anuncios.
** clisp-devel: el envío a esta lista está limitada a desarrolladores y testadores. No obstante, se puede acceder al archivo de mensajes de la lista.
** clisp-list: esta lista de correo es de carácter general para consultas a nivel de usuario sobre CLISP.

## Radiografía

Los datos y cifras que se muestran en la tabla siguiente nos permitirán analizar CLISP con un poco más de detalle. La versión 2.41 CLISP cuenta con unas 170,325 líneas de código fuente según la utilidad SLOCCount de David A. Wheeler, una cifra que según el modelo COCOMO requeriría un esfuerzo de 40.85 persona-años para producir un software de este tamaño. Por otro lado, otra estimación que arrojo el SLOCCount es la referente al tiempo que tardaría una empresa en desarrollar CLISP, el cual es de un año y medio; también obtuvimos que el número de desarrolladores que pueden trabajar en paralelo es de aproximadamente 27, cuyo cálculo se obtiene al dividir las persona-años entre los años.
Una vez que sabemos cuánto tiempo y cuánta gente necesitamos, el cálculo de costes es fácil, para ello se toma en consideración el salario de 56.286 $/año, que es el salario promedio de un programador en los Estados Unidos, luego se multiplica ese resultado por 2,40 que incluye cualquier gasto extra que no sean los programadores como por ejemplo: luz y teléfono, todo esto asciende a un monto de 5,518,120 $.
Estado actual de CLISP :
| Página web | http://clisp.cons.org/ |
| Inicio del proyecto | 1987 |
| Versión actual | 13 de octubre de 2006 |
| Líneas de código fuente | 670,06 |
| Esfuerzo estimado de desarrollo (persona-años / persona-meses) | 40.85 (490.19) |
| Estimación de tiempo (años) | 1.50 |
| Estimación del n.º de desarrolladores en paralelo | 27.233 |
| Estimación de coste | 5,518,120 $ |
Otro aspecto a mencionar son los diversos lenguajes de programación utilizados en el desarrollo del proyecto, según el análisis realizado con SLOCCount, el lenguaje más utilizado es LISP, seguido de ANSI C, ensamblador, y en una menor proporción: shell, C++, Objective C, Perl y sed. En la tabla se muestra dicha información junto con las líneas de código y el porcentaje.
Lenguajes de programación utilizados en CLISP :
| Lenguaje | Líneas de código | % |
| LISP | 75894 | 44.56% |
| ANSI C | 55766 | 32.74% |
| asm | 22166 | 13.01% |
| sh | 11139 | 6.54% |
| C++ | 2660 | 1.56% |
| Objective C | 2481 | 1.46% |
| perl | 164 | 0.10% |
| sed | 55 | 0.03% |