2. Cinderella.2: Breve historia

La versión actual del programa, Cinderella.2, es el resultado de una secuencia de tres proyectos llevados a cabo entre 1993 y 1998. La idea del primero de estos proyectos surgió en 1992 durante la celebración de unas conferencias en el Instituto Mittag-Leffler de Suecia cuando Henry Crapo and Jürgen Richter-Gebert estaban en un paseo fluvial a bordo de un barco llamado Cinderella (Cenicienta).

Prof. Dr. Jürgen Richter-Gebert. (Fuente: https://www-m10.ma.tum.de/bin/view/Lehrstuhl/RichterGebert)

En aquellos entonces, Jürgen Richter-Gebert había desarrollado métodos simbólicos para la demostración automática de teoremas geométricos y los dos soñaban con un programa de ordenador que permitiera generar construcciones geométricas con unos pocos clics de ratón y preguntar al ordenador acerca de las propiedades de dichas construcciones.

Henry y Jürgen se pusieron manos a la obra y comenzaron a trabajar con un ordenador NeXT que, por aquellos entonces, era famoso por su maravillosa arquitectura de software. Cabe destacar que NeXT fue el proyecto de Steve Jobs cuando lo echaron de Apple, empresa que él mismo había fundado. Posteriormente, NeXT fue adquirida por Apple siendo el software desarrollado por NeXT la base del sistema operativo Mac OS X.

Ordenador NeXTcube. (Fuente: Wikipedia)

El primer prototipo de programa estaba basado en los principios de la geometría proyectiva y la teoría de invariantes. Era capaz de encontrar pruebas algebraicas de muchos teoremas de la geometría proyectiva sobre puntos, rectas y cónicas.

En la medida que declinaba la popularidad del sistema NeXT lo hizo el ímpetu del proyecto Cinderella. En 1995 en una conferencia sobre Geometría computacional y discreta en el Mt. Holyoke College se logró hacer una demostración del software solo a última hora debido a que no había disponibles ordenadores con el sistema operativo NeXT y los que había disponibles tenían una versión obsoleta del sistema operativo o no se podían conectar a un proyector. Esta situación dejó claro que no se podía depender de un único sistema operativo por muy bueno que fuese.

Prof. Dr. Ulrich Kortenkamp. (Fuente: http://didaktik.mathematik.uni-halle.de/mitarbeiter/ehemalige_angehoerige/kortenkamp/)

En 1996, Ulli Kortenkamp and Jürgen Richter-Gebert que estaban trabajando en la Universidad Técnica de Berlin en el grupo de Günter M. Ziegler, decidieron empezar de nuevo basándose en el lenguaje de programación independiente Java desarrollado originalmente por Sun Microsystems en 1995. Java es un lenguaje de programación orientado a objetos cuya intención era permitir a los desarrolladores escribir una vez el programa y ejecutarlo en cualquier dispositivo. La plataforma Java consiste en tres grandes bloques: el lenguaje Java, una máquina virtual Java (JVM) y una interfaz de programación de aplicaciones (API) que permiten que las aplicaciones de Java pueden ejecutarse en cualquier máquina virtual sin importar la arquitectura del ordenador en el que se ejecute. Estas características y el ser un lenguaje de código abierto, contribuyeron a la popularización de Java como lenguaje de programación de numerosas aplicaciones en los años 90 y primera década del siglo XXI. Sin embargo, en 2009 la compañía Oracle adquirió Sun Microsystems dejando Java de ser un lenguaje abierto con una comunidad de programadores detrás para pasar a ser uno de los grandes quebraderos de cabeza en el tema de seguridad informática en estos momentos.

La intención de este segundo proyecto era implementar las funcionalidades presentes en la versión de NeXT añadiendo características de la geometría euclídea y las no euclídeas. Se pretendía también implementar la generación de locus o curva algebraica generada por la trayectoria seguida por un objeto de una construcción. Además, al ser Java un lenguaje que tiene integrado el protocolo TCP-IP lo que es ideal para Internet, la nueva versión debería ser capaz de funcionar en un navegador web. En particular, el programa debía ser capaz de crear ejercicios para los estudiantes vía web. La funcionalidad de comprobación de teoremas debía usarse para comprobar automáticamente la validez de las respuestas de los estudiantes.

Una primera versión operativa fue presentada en septiembre de 1996 en la Universidad Técnica de Zurich. La segunda versión ganó el 'Multimedia Innovation Award' en el 'Multimedia Transfer' del ASK Karlsruhe en enero de 1997.

Esta segunda versión, al igual que otros programas informáticos de Geometría, tenía inconsistencias matemáticas que parecían insolubles. Estas inconsistencias provenían de ambigüedades en operaciones tales como 'calcula la intersección de una recta y una circunferencia'. Puede haber dos puntos de intersección, uno o ninguno dependiendo de la posición relativa de la recta y la circunferencia. Al mover la construcción, el programa debe decidir qué punto de intersección elegir. Esta situación que parece irrelevante puede hacer que al mover un poco un punto, partes enteras de la construcción desaparezcan. Así, a comienzos de 1998 se resolvió este problema decidiendo utilizar como base del programa un espacio vectorial de números complejos. Los resultados de la teoría analítica de funciones se usaron para evitar situaciones singulares lo que suponía reescribir todo el programa y que los cálculos en cada operación fuesen entre veinte y doscientas veces los realizados en la versión anterior.

El logo de Cinderella.2 que simboliza las 3 partes del programa: Cinderella, la máquina geométrica, CindyScript, el lenguaje de programación y CindyLab, la máquina de simulación física. (Fuente: http://www.cinderella.de/tiki-index.php)

De esta forma se terminó el tercer proyecto cuyo resultado es el Sistema de Geometría Dinámica Cinderella.2. El programa tiene una versión gratuita completamente funcional para nuestros propósitos y otra de pago con funcionalidades añadidas tales como editar scripts y crear hojas de ejercicios para los alumnos.

Referencias:

Mechanical Theorem Proving in Projective Geometry. Jürgen Richter-Gebert

Foundations of Dynamic Geometry. Ulrich Kortenkamp

Cinderella.2 Documentation

1. SISTEMAS DE GEOMETRÍA DINÁMICA

3. CINDERELLA.2: BASE TEÓRICA