miércoles, mayo 30, 2007

Revisión 0.1 a Maxima


Desde hoy inicio una serie de escritos acerca de Maxima, en los cuales comentaré algunas ideas que tengo respecto a: interfaz gráfica, nuevas características, paquetes adicionales e interfaces con otros lenguajes o programas existentes. Pero primero que todo empezaré por comentar acerca de Maxima, su historia y evolución para aquellos que aún no lo conocen.

Qué es Maxima ?

Maxima es un completo sistema de álgebra computacional de propósito general diseñado para la manipulación de expresiones algebráicas. Con Maxima usted puede manipular expresiones algebráicas que contengan constantes, variables y funciones. Maxima es una implementación en Common Lisp realizada por William F. Schelter y se basa en la implementación original de Macsyma que fue construida en el MIT (Instituto Tecnológico de Massachuttes, por sus siglas en inglés) para el Departamento de Energía de los EEUU (DOE, por sus siglas en inglés). Hace unos años el profesor Schelter (puede ver la carta de autorización aqui) obtuvo los permisos de parte del DOE para hacer copias derivadas del software y en particular distribuirlas bajo licencia GPL.

La Historia de Maxima

Los comienzos de Macsyma, donde la mayor parte del desarrollo toma lugar, datan a finales de la década de 1.960 y comienzos de la década de 1.970 en el marco del proyecto MAC, una unidad investigativa del MIT, la cual fue añadida al Laboratorio de Ciencias de la Computación de ese tiempo. El soporte investigativo para Macsyma incluía a la Advanced Research Projects Agency (ARPA), al Departamento de Defensa y de Energía de los Estados Unidos y otras entidades estatales y privadas. La idea original surge de parte de Marvin Minsky. Tras varios esfuerzos de desarrollo, de los cuales hicieron parte muchos trabajos de tesis, surgió Macsyma, un acrónimo para MAC's Symbolic Manipulator (Manipulador Simbólico de MAC). La etapa de diseño se llevó a cabo en Julio de 1.968 y su codificación empezó a principios de Julio de 1.969. Este primer desarrollo se hizo usando un computador bastante sencillo: un DEC PDP-6. Posteriormente, se inició un proceso de porte hacia otras plataformas de hardware, utilizando otras implementaciones de Lisp (cuando se habla de una implementación Lisp, nos referimos a un dialecto derivado de Lisp, orientado a un uso particular, por ejemplo Steel Bank Common Lisp que fue diseñado con énfasis en proveer facilidades para su mantenimiento. Es algo así como una distribución GNU/Linux. Puede encontrar más información en http://es.wikipedia.org/wiki/Lisp y en http://www.alu.org/table/lisp.htm.

A mediados de 1.980, la idea de portar Macsyma se fortaleció y gracias a la distribución Vaxima basada en Unix, que ejecutaba una implementación de Lisp elaborada en la Universidad de California en Berkeley, demostró que desde el punto de vista teórico y práctico era posible ejecutar software en una gran cantidad de sistemas. Una vez el código entró en una etapa estable, empezaron a surgir variantes del sistema, entre las que se encuentran Macsyma, Maxima, Paramax/Paramacs, Punimax, Aljbar y Vaxima. De esas 6 variantes, sólo sobrevivieron dos: Maxima y Macsyma.

Debido a algunos incovenientes, Macsyma se empezó a distribuir de forma comercial y el código fuente fue cerrado. Gracias al Profesor William F. Schelter, quien en Octubre de 1.998 obtuvo los permisos necesarios de parte del Departamento de Energía de los Estados Unidos para poder distribuir copias de Maxima (dado que la compañia que distribuia Macsyma desapareció), bajo licencia GPL. Es así como el profesor Schelter mantiene Maxima hasta su fallecimiento en Julio de 2001, lo cual significó un duro revés, pero dado que el código fuente de Maxima estaba bajo licencia GPL, se empezó a distribuir libremente. Es así, como un grupo de usuarios y desarrolladores, que trabajan continuamente por lista de correo, están haciendo de Maxima un proyecto de software libre, que se proyecta como uno de los mejores sistemas para manipulación simbólica y numérica, que sea accesible libremente.

En la actualidad

El proyecto Maxima cuenta actualmente con una comunidad de desarrollo activa (24 desarrolladores) y muchos otros usuarios que trabajan por lista de correo reportando bugs, solicitando soporte, enviado mejoras y escribiendo nuevas funcionalidades para el programa. Más información y documentación en: http://maxima.sourceforge.net

Por ahora tengo algunas ideas acerca de mejorar la actual interfaz gráfica de Maxima, pero para ello quisiera recibir sugerencias de parte de quienes lean este blog. Qué crees debe tener la interfaz gráfica de Maxima o mejor aún que debería incluir la interfaz gráfica de un programa para manipulación de matemáticas ?

No hay comentarios.: