Plan de Navegación

jueves, 16 de agosto de 2007

Historia de una historia

Todo empezó en mi clase de Lenguajes Formales, y con el MS-Word.

En la clase nos enseñaron a generar expresiones regulares, autómatas finitos determinísticos, gramáticas y lenguajes. Hablando claramente, a analizar cadenas de caracteres.

Lo que Word sabe hacer es algo parecido. Uno escribe algo, y en las herramientas existe la posibilidad de que Word genere un resumen de las ideas más importantes. ¿Cómo lo hace? Analizando cadenas de caracteres.

Fue así como yo me puse a pensar que tan factible sería crear un programa, una especie de compilador que produjera historias de Ciencia Ficción.

He sido aficionado a las historias de ciencia ficción desde hace algunos años, y nada me gusta más que una buena historia corta de este género. Ya sea escrita por alguno de los grandes clásicos, (Asimov, Bradbury, Lovecraft), o proveniente de alguna antología recopilada por alguien como Harlan Ellison o Gabriel Trujillo Muñoz.

El asunto es que yo tenía que entregar un proyecto de fin de semestre, en el cual programara un Analizador Sintáctico-Gramático-Lexicográfico. Entonces, se me ocurrió. ¿Qué tal hacer un programa que analice historias cortas de ciencia ficción, determine sus características comunes, construya sus expresiones regulares, y pueda generar un lenguaje basado en ellas; es decir, historias de ciencia ficción? Para mi no sería mala idea. La pregunta era: ¿cómo?

Empecé por documentarme. El libro de “Teoría de autómatas y lenguajes formales”, de Dean Kelley fue el que me ayudó en gran manera.

Lo primero fue definir el lenguaje. Obviamente un ser humano no puede hacer esto: implica leer todas las historias que se van a analizar, y ver que palabras son las que las conforman en su totalidad. Yo sí puedo leer todas las historias, pero no puedo ponerme a copiar todos sus términos para ver cuales son. Ahí fue donde me di cuenta que el siguiente paso era empezar a copiar todas las historias a un archivo de texto en formato ASCII, obviamente. Aquí no podía depender de los bonitos formatos de Word. Lo que necesitaba era la información en su estado más bruto, no por tonta sino por burda. Y el formato más simple es el código ASCII, (American Standard Code for Information Interchange).

Naturalmente, yo como analista, programador y líder de proyecto no iba a ponerme a capturar toda esa información, por lo que tuve que acudir a mi equipo de capturistas para que lo hiciera.

Aún así, yo tenía mucho trabajo por hacer. Tenía que encontrar, por el lado del Analizador sintáctico, los autómatas, las e-transiciones, las gramáticas, etc. Además, por el lado del sistema en sí, debía empezar a definir el lenguaje de desarrollo, los estudios de factibilidad, las licencias, etc.

No quisiera abrumar al lector aquí con los diagramas de los AFD obtenidos, ni con la forma infija de la notación polaca de las expresiones regulares, pero todo eso fue información que se tuvo que programar.

Para cuando todo estuvo listo, tanto el programa como el enorme archivo de texto, tan solo quedaba correr el programa.

Y lo corrí. Empezaron las funciones de transición a recorrer el diagrama de estados del AFD, a través de los símbolos que aceptaba el lenguaje. Por esa función pasaron historias como “Imperativo Categórico”, de Arthur Sellings, “Selección”, de Walter Ernsting, “37 centígrados”, de Lino Aldani, “La última guerra”, de Amado Nervo, “La pequeña guerra”, de Mauricio-José Schwarz, “Llamaradas para fechas vacías”, de Paco Ignacio Taibo II, “Flores para Algernon”, de Daniel Keyes, “El pequeño mundo de Lewis Stillman”, de William F. Nolan, “Las propiedades endocrónicas de la Tiotimolina resublimada”, “Razón”, “Circulo Vicioso” de Asimov, “Judas”, “Ángeles del carcinoma”, “Cantará el polvo tus alabanzas”, “El canto del crepúsculo”, extraídas directamente de “Visiones Peligrosas”, “En verdad os digo”, de Juan José Arreola, “La mañana de la condenación”,“Intenta cambiar el pasado” de Fritz Leiber, “El secreto del Azoth”, de Gerardo Horacio Porcayo, “El pedazo más grande”, “Realmente muerto”, “Un error de programación” de Bernardo Fernández, “Bestias de la Noche” de Ricardo Guzmán Wolffer, “Porque soy un pueblo celoso” de Lester del Rey, “El día final” de Richard Matheson, “La catástrofe”, de José Emilio Pacheco, y un largo etcétera.

El programa corrió bien. La gramática resultante es enorme como para ser puesta en este margen tan estrecho. Como un factor inesperado, algo que nunca sucedió en las pruebas de escritorio, dicha gramática entraba continuamente en ciclos recursivos. La paradoja, la intertextualidad y la autorreferencia parecían ser una constante dentro de este sistema literario. Yo sinceramente nunca imaginé la influencia que esto podría tener en los resultados finales.

Ahora solo faltaba generar una historia. Aplicar las producciones de la gramática obtenida. No podía esperar. ¡La más grande historia corta de ciencia ficción jamás escrita, estaba a un teclazo de distancia!

Al comenzar a salir la impresión, mis ojos se posaron sobre las primeras líneas. El impacto fue tal, que me fui de espaldas. El inicio era:

“Todo empezó en mi clase de Lenguajes Formales, y con el MS-Word.”

No hay comentarios:

Publicar un comentario