No. 84 / Noviembre 2015


 

Code_poetry;// the structure behind
David Rojas


Source code is for humans to read, and only incidentally for machines to run.

Donald Knuth


Donald Knuth es quizá el teórico computacional vivo más importante (muerto tenemos a Alan Turing -dios-todo-poderoso) y la primera vez que uno se topa con que semejante autoridad ha dicho una frase así, surge el desconcierto, el escepticismo, la resistencia. Al poco, sin embargo, cae uno en cuenta de que, en efecto, la idea de que los programas sean concebidos para ser leídos por humanos y solo incidentalmente por computadoras, refleja el hecho de que pensar los lenguajes de programación como “aquello que sirve para controlar a las computadoras” empobrece, y habría que entenderlos más como un artefacto para abstraer y estructurar el pensamiento. Los lenguajes de programación sirven para comunicarse, plantean una sintaxis y semántica particulares y, como con todo tipo de comunicación, es posible desarrollar un uso sofisticado de ellos.

Paganinis

Cuando una idea se plasma en versos con métrica regular y ritmo, o en una prosa limpia y precisa, consideramos que estamos ante un uso elegante del lenguaje escrito. Cuando un programa exhibe claramente su propósito, es breve, legible y se ejecuta rápidamente, consideramos que estamos ante un uso elegante de un lenguaje de programación. El uso elegante de un lenguaje, cualquiera que este sea, es un arte.

Una forma del arte surge con la sofisticación en el uso de los instrumentos, de acuerdo, al fin, con el que fueron concebidos, y la escritura de código fuente para propósitos informáticos es una disciplina que alcanza niveles de sofisticación tan altos, que dan pie a pensar en el arte dentro de la programación (véase http://artworksjournal.com/the-poetry-of-code/). El desarrollo de software tiene héroes y artistas que, en el mejor de los casos, son muy poco visibles -e.g. Miguel de Icaza- y, en el peor,  son anónimos, -piénsese en el proletariado intelectual que vende su talento a compañías como Microsoft o Google.

Es esta la idea más inmediata que se puede tener del arte a partir de la programación y, aunque no es la intención ahondar en esa versión, nos permitiremos un único comentario. Tan apreciada es la elegancia en el mundo de la programación que, dentro del argot de los desarrolladores, existe el término syntactic sugar. La azúcar sintáctica son funciones y operadores innecesarios que se agregan a un lenguaje de programación para hacer más legible el código, para hacerlo más elegante, es aquello que hace al código más dulce ante el ojo humano. Poder escribir i++; en lugar de i = i + 1, en el lenguaje C, es un ejemplo de azúcar sintáctica.


Kandinskys

Al objeto reloj uno suele pensarlo como una carátula con números y manecillas. Esta carátula, sin embargo, es solo la interfaz, y si uno remueve cuidadosamente esta capa, se revela una maquinaria que opera con reglas definidas, nuestra concepción del tiempo. Aun cuando la carátula sea el recuerdo a la mano del objeto, es la maquinaria detrás, el verdadero reloj. Aun cuando el código fuente sea el recuerdo a la mano de la disciplina, es la maquinaria detrás -la estructuración lógica del pensamiento- el verdadero arte de la programación.
 

alter_84_01.jpg


Programar representa la abstracción lógica de las ideas, pero esta estructuración puede servir para propósitos no informáticos. Esta abstracción, junto con la sintaxis que plantean los lenguajes de programación, puede servir para propósitos lúdicos.

La programación puede ser un arte en sí pero, además de eso, la forma en que estructuramos el pensamiento en la lógica informática sugiere posibilidades estéticas. Es importante distinguir entre la poesía que puede ser generada al ejecutar un código (la poesía generativa que se sirve de los medios informáticos es un ejemplo) y la poesía que puede ser generada en la concepción de un código, en la construcción de la abstracción. La primera representa la continuidad del uso tradicional de la programación, la segunda representa la resignificación de la programación. El siguiente ejemplo ilustrará mejor.

alter_84_02.jpg


College, college es un programa escrito en el lenguaje Java que, al ser compilado, muestra en la consola todas las oraciones que están escritas entre comillas, y nada más. El resultado no es nada nuevo ni sorprendente. El código, por el contrario, muestra una agrupación de los versos en los cuatro años que durará la universidad, cada grupo de versos tiene un tono diferenciado y los cuatro bloques se encuentran agrupados dentro del concepto Otoño. El código representa las ideas de un estudiante al iniciar cada uno de los años de la universidad. La interpretación del poema es incompleta si se analiza solamente el resultado que la computadora daría al ejecutar el código, el código aporta y contextualiza. La concepción del código, la abstracción lógica, es parte del poema.

La poesía en código, en ocasiones, no pretende ser ejecutada sino leída. Aprovechando las capas de abstracción que utilizan la lógica computacional se estructura una literatura en capas. Ejemplos de este caso es el proyecto code {poems} (http://code-poems.com/).
La construcción de un poema que funcione a partir de una abstracción lógica no requiere obligatoriamente que esta sea desplegada con la sintaxis de un lenguaje de programación. Puede construirse con la hibridación del lenguaje natural y ciertos guiños a las operaciones matemáticas y computacionales.

alter_84_03.jpg


En All A Men, la forma en que Fayyaz se refiere a los hombres A, en el primer verso, insinúa un manejo de éstos como variables en un arreglo. En el tercer verso define a la raíz del heroísmo de los hombres A, como mansedumbre y nervios. Los resultados, aunque listados en un estilo tradicional, son en realidad conceptos operables, pues #3 es construido como la suma del miedo a la noche, más los resultados #1 y #2. Ciertas escenas las construye dentro de corchetes como la suma de elementos.

Duchamps

Si regresamos a la metáfora del reloj podemos notar que surge otra posibilidad al resignificar la carátula, al recontextualizar sus elementos y mantener, aun así, un pie en el campo semántico original.

Es posible construir códigos que aprovechen los elementos sintácticos de los lenguajes de programación para construir una lectura del texto, cercana a lo tradicional. Las palabras que dentro del lenguaje representan instrucciones informáticas son utilizadas para dar sentido a una lectura continua. Es necesario, por supuesto, obviar ciertos signos de puntuación que tienen sentido en lo informático pero no en lo poético.

Los siguientes ejemplos de Osvaldo Grigas en lenguaje Java y Droggl en lenguaje C++ (diseñados para el SourceCodePoetry http://www.sourcecodepoetry.com/) poseen la elegancia de tener una lectura directa y, además de ser ejecutables en la computadora, son textos que poseen semántica computacional y semántica humana, son interpretables por dos instancias totalmente distintas de la razón. El resultado informático en este caso es irrelevante y el hecho de que el código compile es un reto autoimpuesto al más puro estilo geek: Porque podemos.

 

alter_84_04.jpg

 

 alter_84_05.jpg


Existe también la posibilidad de desarrollar un archivo que al ser ejecutado produzca poesía, el código contenga guiños de poesía dentro de sí y el código mismo sea poesía. Tal es el caso del código Say 23 de Leslie Wu, con que ganó el CodePoetrySlam en Stanford (http://stanford.edu/~mkagen/codepoetryslam/), en el que revisita al salmo 23. El texto plano incluye lenguaje ruby, inglés y japonés. El código descarga el salmo, reacomoda las palabras del texto y les asigna frecuencias de audio; la computadora recita después el salmo reconstruído. Por si fuera poco, lo realiza en solo siete líneas de código. El que un código tan breve que realice tantas acciones implica un dominio considerable del arte de la programación, el que tenga líneas con doble codificación para que liberen ideas en lenguaje natural, implica una resignificación del código más allá de lo informático y que, además al ser compilado, muestre una obra de arte, justifica que Say 23 de Leslie Wu sea considerado codepoetry bajo cualquier definición que hallamos ensayado en lo anterior, e incluso integra a todas ellas.
 

alter_84_06.jpg

 





 

Quedan, por supuesto, posibilidades adicionales por explorar: la estética visual de los códigos informáticos y la exploración de la inserción de metadatos con lenguajes de etiquetado como HTML tendrían que ser visitados en algún momento si no es que, muy posiblemente, ha ocurrido ya. Aun cuando la poesía en código tiene un pasado subterráneo no precisamente corto, dentro del gremio de los programadores, y que las posibilidades estéticas que plantea son terreno fértil para buena cantidad de exploraciones, todo su potencial desmerece la poca visibilidad con que cuenta.