domingo, 22 de mayo de 2011

San Manuel Bueno, mártir. Miguel de Unamuno


San Manuel Bueno, mártir es una novela corta de madurez que sintetiza el sentimiento trágico de la vida, de la vida cotidiana, la más auténtica para Unamuno, la tragedia de haber nacido para tener que morir.

El protagonista es don Manuel, el cura párraco de Valverde de Lucerna, un pueblo situado cerca de un lago, éste al pie de unas montañas, motivos orográficos que sirven para establecer un símil literario recurrente a lo largo de la novela entre el misterio de la nieve que cae de las montañas y todo lo envuelve (simbolizando la fe) y el lago cuyas aguas todo lo disuelven (simbolizando la razón).

Don Manuel está completamente entregado al pueblo, un pueblo que lo admira como a un verdadero padre espiritual que lo guía por las dificultades de la vida. Deshace rencillas, ayuda a los necesitados, acompaña a los enfermos y a los moribundos y se esfuerza por mantener la fe de todos y por convertir a los que no creen. Es, en definitiva, un perfecto pastor de sus ovejas, un santo en vida.

Sin embargo, a medida que avanza la historia, se nos van revelando las dudas de don Manuel, las mismas que el propio Unamuno dejó traslucir en todos los escritos en los que trató el asunto de la vida perdurable. Concretamente, don Manuel se sentía incapaz de pronunciar, durante la misa, las palabras del credo “creo en la resurrección de la carne y en la vida perdurable”. Esta duda, insinuada en los primeros capítulos, alcanza su punto álgido durante el proceso de conversión de Lázaro, el hermano de Ángela, la narradora.

Frente al grueso del pueblo, felizmente pobre de espíritu, Lázaro representa al hombre culto de su tiempo. Él mismo, ateo, duda de que don Manuel crea realmente lo que enseña acerca de la resurrección. Desde que Lázaro llega al pueblo, don Manuel se vuelca en tratar de hacerle creyente, hasta que en un punto de inflexión de la novela le confiesa a Lázaro amargamente que él mismo no es capaz de creer en la otra vida. Esta agónica duda atormenta a don Manuel y la combate mediante la vida activa de entrega a sus feligreses, la cual le permite huir de la soledad de sus pensamientos.

Unamuno ensalza el papel de la religión como consuelo de la desdicha de haber nacido para morir. La religión ofrece a la gente sencilla la ilusión de la vida perdurable. Don Manuel, incapaz de creer, y con él Lázaro después, encuentra su consuelo en consolar a los demás. Salvando las enormes diferencias, Unamuno llega a admitir la calificación de la religión como opio del pueblo, según la cita de Marx. Mientras que Marx utilizó la metáfora para criticar la religión, Unamuno ensalza su función social y psicológica, incluso ante la trágica situación de no creer en su contenido fundamental: la promesa de una vida perdurable. Pero la religión hace soñar y soñar es necesario para vivir y, ante todo, ¡hay que vivir!.

Tras la muerte de don Manuel y de Lázaro, Ángela reflexiona sobre la falta de fe de ambos y se pregunta si Dios no los habría hecho incrédulos a propósito por alguna misteriosa razón. A esta duda le sigue una serie de preguntas que la narradora formula acerca de su propia fe y, así, entre dudas y preguntas, en un ambiente tan característicamente unamuniano, concluye la narración.

lunes, 9 de mayo de 2011

GNU Chess v6

El día 27 de abril de 2011 anuncié la nueva versión de GNU Chess (http://lists.gnu.org/archive/html/info-gnu/2011-04/msg00015.html), el popular programa de ajedrez del proyecto GNU. Hace tiempo que venía persiguiendo esta publicación y por fin lo he conseguido. Sin la inestimable ayuda de Simon Waters, Stuart Cracraft y Karl Berry, no habría sido posible.

Mi relación con GNU Chess empezó hace ya más de tres años, a principios de 2008, cuando decidí ofrecer mi contribución al proyecto. Se me ocurrió la idea de incorporar una opción para debilitar artificialmente al programa en cuanto que jugador de ajedrez. En aquel primer contacto, sugerí la idea de esta nueva opción, pero también ofrecí mi colaboración en general. Stuart y Simon me comentaron que Fabien Letouzey había asignado la propiedad de su famoso programa de ajedrez Fruit a la Free Software Foundation (FSF) y estaría muy bien utilizarlo como base para una nueva versión de GNU Chess, la versión 6. La última versión de la línea v5, v5.07, se había publicado en 2003, es decir, el proyecto estaba en estado maduro y no manifestaba mucha actividad.

El ajedrez es un juego que me gusta desde niño. Soy un jugador mediocre (mi puntuación en FICS (http://www.freechess.org) es de unos 1300 puntos Blitz y 1700 Standard), pero me gusta mucho jugar. De pequeño jugaba de vez en cuando con mi abuelo Octavio y quizá me venga de aquello la afición. La oportunidad de contribuir, aunque fuese en pequeña medida, a un programa del proyecto GNU me resultaba muy atractiva porque goza de una enorme difusión. Además, desde hace muchos años utilizo el sistema GNU/Linux y, en cierto sentido, una pequeña contribución me parecía un más que merecido tributo.

Antes de empezar a trabajar en la versión 6 de GNU Chess, me puse en contacto con Richard Stallman para comprobar si había alguien más trabajando en ello y para recibir su consejo. Cuando Stuart me pidió que me comunicase con RMS, que son las iniciales del Sr. Stallman y como se le nombra habitualmente, me impresionó bastante y no me parecía probable que una persona tan importante (fundador de GNU y presidente de la FSF) contestase al mensaje de un desconocido. Sin embargo, a los pocos días RMS me contestó, y me dijo que lo más importante era prestar atención, en primer lugar, a las normas de programación de GNU en lo que se refiere a los interfaces externos y a la documentación; en segundo lugar, al sistema de configuración e instalación (configure y make). No mencionó que hubiera nadie trabajando en ello, lo que interpreté como luz verde para mí. Con la bendición de RMS, podía empezar a trabajar.

Acordé con Simon y Stuart mantener "compatibilidad hacia atrás" con los interfaces externos de la versión 5. Esto significaba mantener la misma línea de comando para arrancar el programa y los mismos comandos. Hay que decir que GNU Chess es un programa que permite a una persona jugar al ajedrez con el ordenador de forma interactiva en un terminal de texto, introduciendo las jugadas en notación algebraica estándar (SAN) o en notación algebraica de coordenadas. El programa muestra el tablero por la pantalla en modo texto. Una variante de los comandos interactivos permite utilizar el programa con una interfaz gráfica de ajedrez como XBoard, que es la forma habitual de utilizarlo. La comunicación de XBoard con GNU Chess originó el Chess Engine Communication Protocol, que luego han utilizado otros programas de ajedrez como sistema de comunicación con el exterior

Por su parte, Fruit no está pensado para que una persona juegue partidas directamente con el programa, sino desde una interfaz gráfica. De hecho, Fruit usa otro protocolo de comunicación, el Universal Chess Interface (UCI), que es muy distinto del que utilizaba GNU Chess. Aquí es donde surgía una de las principales dificultades: integrar el antiguo protocolo de comunicación con el nuevo programa.

En realidad, este problema no era nuevo, pues ya había surgido la necesidad de integrar Fruit con XBoard. El propio Fabien creó un programa adaptador: Polyglot. Así que decidí estudiar este otro programa para realizar mi integración. 

Al principio tomé Fruit como base y durante mucho tiempo estuve intentando crear mi propio adaptador, hasta que me di cuenta de que era una cantidad de trabajo nada despreciable. Estuve yendo por caminos erróneos hasta finales de 2009, cuando por fin vi la luz. Por supuesto, durante todo ese tiempo mi dedicación fue muy intermitente. 

Empecé 2010 con las decisiones que finalmente demostraron ser las correctas. Debía utilizar Fruit y Polyglot tal y como son y, al mismo tiempo, mantener la versión 5 de GNU Chess como programa principal. Al mantener la versión anterior, los interfaces externos se mantenían por construcción. Lo que tenía que hacer era "puentear" toda la parte del programa antiguo que no tuviera que ver con la interacción con el exterior: las jugadas y los comandos introducidos por el usuario debían pasarse a Fruit, a través de Polyglot.

Esta integración la acometí en dos fases. En la primera, mantuve las tres piezas como procesos independientes. De este modo, Polyglot y Fruit se mantenían intactos. Sólo tenía que modificar el programa principal. De aquí surgió ya el diseño de la arquitectura final del programa, estructurado en tres componentes: módulo de interfaz con el exterior, adaptador de protocolo y motor de ajedrez. A principios de 2010 tenía una primera versión de las tres piezas integradas. Por entonces sólo las jugadas y algunos pocos comandos de la versión anterior funcionaban. El siguiente paso era ir avanzando en la migración de comandos de la versión 5 a la 6.

Una vez que ya funcionaban los comandos principales, pasé a la segunda fase de la integración: convertir los procesos independientes en hilos de ejecución (threads) de un proceso único. Mantuve el mismo mecanismo de comunicación basado en tuberías (pipes). Fabien creó Polyglot a partir de Fruit, pero no mantuvo una base de código única. Por esta razón, una gran parte del código de ambos programas es muy parecida. No obstante su gran parecido debido al origen común, el código no es idéntico, lo cual no permitía unificarlo de forma sencilla. Por lo tanto, la decisión fue mantener ambas bases de código intactas. Para evitar la colisión masiva de identificadores a la hora de enlazar los módulos, definí un espacio de nombres (namespace de C++) distinto para cada uno de los dos. El módulo de interfaz, escrito en C, lo mantuve en el espacio de nombres global.

En noviembre de 2010 ya estaba terminada la integración y sólo quedaba por incorporar el mayor número de comandos que fuese posible. Simon siempre ha insistido, con razón, en el gran interés que tiene mantener los comandos de la versión 5, ya que permitiría a un usuario de dicha versión reemplazarla por la nueva versión 6 sin enterarse.

Karl me ayudó a utilizar los programas de construcción de GNU para empaquetar el programa según los estándares y ha sido un mentor accesible, didáctico y profesional en todo momento. A finales de 2010 realicé los trámites para asignar a la FSF todas mis contribuciones a GNU Chess.

Cuando el programa ya iba tomando forma definitiva, Stuart propuso evaluar su fuerza con una batería de pruebas que consta de 188 posiciones. El resultado en mi Mac Book Pro, empleando 10 segundos por posición, fue de 155 posiciones acertadas, lo que equivale a un ELO aproximado de 2547. Stuart se mostró entusiasmado cuando él mismo comprobó los resultados en su Mac, un día que volvía de visitar a Ken en Apple, y se los comunicó a las personas más señaladas en la historia de GNU Chess. Hay que entender que era una buena noticia el hecho de haber conseguido utilizar Fruit como base para GNU Chess. La fuerza de Fruit como motor de ajedrez era de sobra conocida, y su mérito le corresponde enteramente a Fabien.

La versión de Fruit que se ha utilizado como base para GNU Chess v6 es la 2.1, la última licenciada bajo GPL. Posteriormente, Fruit siguió evolucionando y aumentando considerablemente su fuerza ajedrecística, pero las siguientes versiones ya no fueron libres.

En la Navidad de 2010 teníamos una versión alfa del programa, que inscribí en FICS como GNUChessSix, a fin de poner a prueba su funcionamiento a través de XBoard en un "entorno real". Desde entonces, juega partidas de vez en cuando desde mi Mac.

El 26 de enero de 2011, publicamos la versión alfa 5.9.91. Con los comentarios recibidos y algunas otras mejoras, entre las que cabe destacar la creación de un manual "info" para toda la documentación del programa, por fin publicamos y anunciamos convenientemente la versión 6.0.0 el día 27 de abril de 2011, la primera versión oficial de GNU Chess v6. Tres años después, mi sueño de participar en el proyecto había llegado más lejos de lo que imaginara.

En febrero de 2011, Karl me comunicó que Simon y Stuart me admitían de buen grado como co-maintainer del paquete, lo cual acogí con gran alegría y acepté inmediatamente. Era lo lógico, después de todo, pues el trabajo de preparación de la versión 6, aun siendo muy modesto, ha sido fundamentalmente trabajo mío, por lo que soy la persona indicada para encargarse del mantenimiento de esta nueva versión.

Hace tiempo que existen programas de ajedrez que, en hardware básico tienen nivel suficiente para ganar al campeón del mundo humano. Por esta razón, las máquinas de jugar al ajedrez no tienen tanto interés como en los tiempos de Deep Blue. Sin embargo, considero interesante que el sistema GNU siga disponiendo de un programa de ajedrez actualizado y a disposición de todos. La FSF garantiza que el programa siempre será libre.

Para mí es un orgullo ser miembro del equipo de GNU Chess y, a través de él, del propio proyecto GNU. Este granito de arena unido a otros muchos hace que programas como este de ajedrez estén a disposición de todo el mundo, no sólo para utilizarlos, sino también para estudiar cómo están hechos, modificarlos y mejorarlos. A mi modo de ver, la presencia y difusión de proyectos no lucrativos hace que el mundo sea un poco más humano.