Sage (Software for Algebra and Geometry Experimentation) es un sistema de álgebra computacional, creado por William Stein profesor de la Universidad de Washington; que integra muchos otros paquetes de software libre pre-existentes (como Pari/GP, Gap, Singular, Maxima, NTL, GNU GSL, etc.) , ofreciendo una interface unificada para todos ellos en Python. El slogan de Sage es “Estamos construyendo el auto, no reinventando la rueda”. Sage está fundamentalmente orientado a problemas de teoría de números, álgebra y geometría algebraica, pero también integra paquetes para aplicaciones numéricas, álgebra lineal, teoría de códigos, etc.

Python es un lenguaje de alto nivel y orientado a objetos, del que ya hemos hablado hace un tiempo. Es particularmente adecuado para aplicaciones matemáticas como esta, por su sistema dinámico de tipos (objetos matemáticos tales como polinomios, grupos y anillos se pueden representar en Sage), y porque es relativamente fácil vincular código en Python con librerías pre-existentes escritas en C o C++. El uso de un lenguaje ampliamente utilizado para diferentes propósitos como Python (en lugar de un lenguaje propio, como hace la mayoría de los sistemas de álgebra computacional representa una enorme ventaja, ya que los usuarios que conozcan Python, no necesitan aprender otro lenguaje más a la hora de usar Sage, y por otra parte es fácil integrar sage con otros paquetes escritos en Python)

Sage integra también algunas herramientas de desarrollo como el intérprete de Python con mejoras para uso interactivo IPython y el sistema de control de versiones Mercurial. Otra característica interesante de Sage, es que es posible utilizarlo (en modoc mdo cliente-servidor) directamente con un web browser usando Sage Notebook (¡se puede probarla en linea!). Aquí pueden ver una captura de pantalla de Sage Notebook funcionando en mi computadora con Mozilla Firerox:

sage_notebook.png

A la hora de explicar porqué el software libre es crucial para la ciencia, William Stein cita una frase de Linus Torvals que me pareció muy pertinente:

“I think, fundamentally, open source does tend to be more stable software. It’s the right way to do things. I compare it to science vs. witchcraft.

In science, the whole system builds on people looking at other people results and building on top of them.In witchcraft, somebody had a small secret and guarded
it but never allowed others to really understand it and build on it. Traditional software is likewitchcraft. In history, witchcraft just died out.
The same will happen in software.

When problems get serious enough, you can’t have one person or one
company guarding their secrets. You have to haveeverybody share in knowledge.”

Y también cita a J. Neubuser:

” You can read Sylow’s Theorem and its proof in Huppert’s book in the library […] then you can use Sylow’s Theorem for the rest of your life free of charge, but for many computer algebra systems license fees have to be paid regularly […]. You press buttons and you get answers in the same way as you get the bright pictures from your television set but you cannot control how they were made in either case.


With this situation two of the most basic rules of conduct in mathematics are violated: In mathematics information is passed on free of charge and everything is laid open for checking. Not applying these rules to computer algebra systems that are made for mathematical research […] means moving in a most undesirable direction. Most important: Can we expect somebody to believe a result of a program that he is not allowed to see? ”

Sage es software libre y se distribuye bajo la GNU GPL. Sage es realmente una importante contribución al software libre para matemática. y merece todo nuestro apoyo.

Como pueden ver en mi captura de pantalla, en efecto, Lyx tiene la apariencia de de ser un procesador de texto corriente. Sin embargo, no lo es: utilizándolo, al escribir, uno sólo tiene que preocuparse por el contenido y la estructura lógica, no por el formato.

Captura de pantalla de Lyx

Basta entonces apretar una tecla, y el maravilloso sistema de procesamiento de textos Tex creado por Donald Knuth , y el paquete de macros LaTeX creado por Leslie Lamport, se ocuparán de hacer que nuestro documento adquiera un aspecto profesional, con una calidad de terminación imposible de igualar, para otros procesadores de texto. Aquí pueden ver el PDF generado por Lyx a partir del documento que se muestra en la anterior captura de pantalla:

Lyx es especialmente útil para quienes escribimos matemática, ya que es una excelente herramienta para generar documentos en LaTeX, pero sin necesidad de aprender LaTex. En efecto, practicamene todo lo que se escribe en matemática hoy por hoy, se escribe en TeX (y particularmente en LaTeX, que es uno de sus dialectos), ya que como dice un amigo mío “(La)TeX es simplemente la mejor herramienta que se ha inventado para representar fórmulas en la computadora” .

Sin embargo, LaTeX no es un procesador de textos convencional. Es más parecido a un lenguaje de programación, donde en vez de ver el documento tal como se verá en el papel, debemos darle a LaTeX una serie de instrucciones, como por ejemplo indicarle como se organiza lógicamente nuestro documento (por ej: decirle “esto es el título de una sección”, y LaTeX se ocupará de darle el formato adecuado).

Aunque LaTeX es realmente fácil de aprender y de utilizar, escribir directamente en LaTeX puede resultar intimidante para quienes están más acostumbrados a los procesadores de textos convencionales. Para los que deseen aprender LaTeX, recomiendo: The not so short introduction to LaTeX (or LaTex in 87 minutes).

Incluso para quienes sabemos escribir en LaTeX, Lyx puede ser útil para escribir un documento con fórmulas matemáticas, viendo estas fórmulas como se verán en el papel, al mismo tiempo.

La historia de Lyx también es realmente interesante: fue escrito inicialmente por Mathias Ettrich , y (según se cuenta en su página en Wikipedia) su búsqueda de una mejor interface gráfica para Lyx fue lo que en última instancia lo llevó a crear el proyecto KDE.

Para saber más sobre Lyx, pueden también visitar su página en Wikipedia.

El título que sirve de motivación a este artículo, está tomado del anuncio de la versión 1.5.0-beta 1 que acaba de ser publicada. Lyx es software libre y se distribuye bajo la GNU GPL.

Axiom es un sistema de álgebra computacional con capacidades similares a las de Maple o Mathematica. Puede realizar operaciones simbólicas tales como derivar,integrar, desarrollar en serie de Taylor, etc.

No es un software cualquiera: Está en desarrollo desde 1973. Originalmente Axiom fue desarrollado por investigadores de IBM bajo el nombre de Scratchpad, y aunque anteriormente era un producto privativo, ahora es software libre ( Axiom se distribuye bajo una licencia de BSD modificada), y se puede descargar su código fuente desde el sitio Savannah de la Free Software Foundation.

Lo que me ha parecido muy atractivo de Axiom es que su sistema de tipos de datos es muy cercano a la manera de pensar de los matemátcos . Tiene ‘Categorías’ como por ejemplo anillo o monoide asociativo, y se puede escribir algoritmos polimórficos especificando por ejemplo, que se puede aplicar el algoritmo a matrices con coeficientes en un anillo y despes usar el algoritmo para distintos anillos (como por ej. losenteros, o los reales en punto flotante). No he visto nada similar en otros sistemas de álgebra computacional.

Axiom viene con abundante documentación . Es más: otra cosa que me pareció interesante es que estáescrito usando literate programming , una técnica introducida por Donald Knuth al desarrollar TeX, que consiste en que cada módulo delprograma contiene también su documentación legiblepara humanos, de modo que la documentación sea completa y actualizada (de hecho cada archivo del programa, es un documentoen TeX)

La liberación de Axiom es una muy buena noticia paratodos los que trabajamos en matemática, o en disciplinas relacionadas, ya que un sistema de álgebra computacional de esa potencia era algo que le estaba faltando al software libre.

Vean también la página en Wikipedia sobre Axiom