Cuento de la Buena Pipa

Filosofía, programación y cultura.

Hace 2 años descubrí un lenguaje de programación que me atrapó. Mientras esperaba mi acceso a la beta de Jai (el lenguaje de programación de Jonathan Blow) que ahora tengo, descubrí Odin, un lenguaje de programación para sistemas, inspirado en C, Go y Jai, que es low-level, pero a su vez tiene facil acceso a cosas que usamos todos los días, como Array Programming.

Empecé a usarlo muy seguido y en los últimos dos años es el lenguaje que más escribo, así que quería devolverle algo a la comunidad de Odin y no sabía que hacer. Al mismo tiempo, las últimas actualizaciones de Emacs me estan molestando, en el trabajo me obligaron a usar Mac (yikes) y además mi nueva laptop usa Wayland, y tuve que pasar por varias compilaciones de Emacs hasta que logré que funcione nativo. Además, tarda entre 0.5 a 0.8 segundos en iniciar…

Ahí es cuando caí —en realidad a principio de este año— que quería crear mi propio editor. Y como lo iba a hacer con Odin y el software es poesía, decidí llamarlo Bragi, el Dios de la poesía.

El proyecto lo empecé en Enero y llegué a un estado funcional, pero con muchos problemas. Al mes, SDL sacó su nueva versión, SDL3, y yo empecé otro proyecto.

Pero hace dos semanas atrás, el 11 de Agosto, estaba leyendo un paper sobre estructura de datos para secuencias de textos y decidí intentar implementar una simple Piece Table. Funcionó de inmediato y, si bien es muy simple y necesita más trabajo, es funcional.

Entonces, con esa nueva base, comencé a reescribir Bragi de 0, y utilizando la nueva librería de SDL3. Y así es como cree Bragi, el editor que funciona como Emacs, pero que tiene las cosas que a Emacs le faltan y a mi me gustaría tener. Hoy tiene 6000 líneas de código y en este momento lo estoy usando para programar el mismo editor. Por ahora, solo reconoce Odin.

“El software moderno es un desastre”.

Esta frase es muy interesante por varios motivos, pero siendo el desarrollo del mismo una actividad relativamente jóven, es una gran oportunidad para detenernos y preguntarnos ¿por qué es así?

Y no es justo sólo preguntarse el por qué de aquella frase, también deberíamos pensar y analizar el cómo llegamos aquí y por qué, si la tecnología y el hardware avanza cada día, el software queda relegado.

El software como poesía

He aquí el título, “Poética del Software”. Poética viene del griego ποιέω que significa hacer, fabricar, producir, crear y otros sinónimos de la acción humana del hacer. Hacemos software y por eso el software es poesía1.

Pero el software no es sólo poesía por el hacer, también es poesía por sus características. Los antiguos griegos decían que la poesía era bella y la Belleza tenía dos características primarias, συμμετρία y αρμονια. Simetría y armonía. La primera era todo lo bello a la vista, como la poesía escrita; mientras que la última se dedicaba a todo lo bello para el oído, como la poesía recitada.

El software es poesía, también, porque la poesía ha sido una herramienta importante para el ser humano en su búsqueda por conocer las cuestiones que nos afligen. Parménides de Elea, por ejemplo, uno de los filósofos presocráticos más importantes de la antigua Grecia y uno de los que promovió la pregunta sobre “el ser”, hacía filosofía a través de sus poemas. Y nosotros, hoy en día, buscamos solucionar problemas con el software. Buscamos solucionar problemas de la vida cotidiana, problemas en la comunicación y hasta intentamos buscar soluciones a problemas que podrían venir en nuestro futuro.

Poesía y arte

A su vez, la poesía es arte, por lo tanto, el software es arte. Arte viene del latín ars y a su vez del griego τέχνη, su significado en ambos idiomas es también el de técnica. Para los filósofos antiguos el “arte” era todo lo producido por el ser humano y en el Renacimiento también se le llamaba arte a la destreza que un ser humano debía tener para poder realizar una actividad. El desarrollo de software requiere de una destreza y es también una técnica, eso hace que el software sea arte y programadores, los artistas.

El problema de la Belleza

Entonces, si el software es poética y arte, ¿es posible que exista software “feo”?

Naturalmente a lo largo de nuestra historia hemos establecido filtros con respecto al arte y la poesía. Sin dudas podemos hablar de subjetividad respecto a la Estética o Belleza de un arte u otro, pero tenemos ciertos cánones definidos en la objetividad que nos permiten clasificarlas. Si vemos al software como una forma de arte, podríamos entonces pensar en cuáles son sus cánones de Belleza, y así poder clasificarlo.

De hecho, lo mencionado anteriormente como características primarias de Belleza2, hoy es considerado un reduccionismo de este concepto.

En la modernidad nos podemos enfocar en lo subjetivo de este concepto. Kant definía a lo bello como la representación que produce un placer inmediato. Posteriormente, en el idealismo romántico, la Belleza era lo grandioso y sobreacogedor. Entonces, según desde la escuela filosófica a la que se lo mire, la Belleza puede tener muchos significados. De hecho, pueden ser cosas como lo grato, lo deseado, lo deseable o lo armónico.

Volviendo al software, podemos ver características bien marcadas de lo que constituye a la Belleza. En el caso de la experiencia de usuario, está claro que software difícil de comprender o de utilizar es considerado software “feo”. Nosotros, los programadores, tenemos esta visión incorrecta de que el código debe ser legible, que debe ser como “leer un libro”, y de hecho se han escrito muchos libros al respecto. Pero, en realidad, el problema yace en las concesiones que damos con tal de conseguir esta legibilidad en el código.

Conclusión

La Belleza es subjetiva. Y está claro que, creer que hay respuestas objetivas para estos tipos de problemas es un error filosófico. Pero de los errores se aprende.

Tomando en cuenta las características que constituyen a un software “feo” según lo demostrado previamente, deberíamos poner el foco en el rendimiento (o “performance”) del software. Las carreras especializadas, como Ingeniería en Sistemas, tienen ramas específicas para analizar estos problemas.

Si nos enfocamos en el performance del software, podríamos llegar a un punto en donde utilizaríamos todos los beneficios que el hardware tiene en la actualidad, ya que esta debe ser una relación recíproca de progreso y desarrollo.


Si tú eres del mismo tipo de hombre que yo soy, te interrogaré con gusto; si no, lo dejaré. ¿Qué clase de hombre soy yo? Soy de aquellos que aceptan gustosamente que se les refute, si no dicen la verdad, y de los que refutan con gusto a su interlocutor, si yerra; pero que prefieren ser refutados a refutar a otros, pues pienso que lo primero es un bien mayor, por cuanto vale más librarse del peor de los males que librar a otros; porque creo que no existe mal tan grave como una opinión errónea sobre el tema que ahora discutimos.” — Platón

Enter your email to subscribe to updates.