Cuando el dragón ya no esté
En estos días he estado leyendo la historia de un humanista italiano que emprendió un viaje en busca de manuscritos antiguos. Entre sus descubrimientos encontró un poema filosófico de Lucrecio que presenta una idea radical del mundo. No es raro que los informáticos del futuro tengan que emprender un viaje similar para entender su presente con los restos del pasado: es ahí donde se enfrentarán a un dragón.
Stephen Greenblatt hace un trabajo espléndido en su libro, El Giro, en narrar la historia de Poggio Bracciolini; un humanista italiano que, durante el siglo XV, emprendió un viaje en busca de manuscritos perdidos que pudieran contener un gran valor, aunque, no era una búsqueda carente de riesgos. En ese tiempo, Europa estaba dominada por el cristianismo —plena edad media—, y con fuertes restricciones en lo que se podía leer y, por supuesto, escribir; buscar obras que presentaran una visión distinta de su mundo podría llevarlo a ser acusado de herejía. Era un mundo peligroso. Había que moverse con cuidado. En donde tu vida podía correr riesgos en cualquier momento.
Uno de los manuscritos que encontró fue el De rerum natura (Sobre la naturaleza de las cosas) de Tito Lucrecio Caro, un filosofó y poeta romano, que vivió entre el año 99 y 55 a. C.; el mundo que describe Lucrecio en dicha obra es una tierra carente de dioses y supersticiones y donde el universo se rige con base en leyes físicas. Era un atomista (seguidor de Demócrito) y defensor de las ideas del epicureísmo. Como podrá advertirlo, un texto de estas características era muy «peligroso», inclusive, muchos años después de haberse escrito.
Viajemos por un instante al futuro: 2100 —¿O un poco más allá?—. Acaso la informática que conocemos ya no exista y sea tan común hablar de software como escribir en lenguaje natural. Está ahí y al mismo tiempo no está. Un mundo donde la informática está de manera implícita en todos lados, por tanto, es irrelevante definirla como un área independiente.
Como cualquier área del conocimiento van a tener problemas en comprender su presente haciendo todavía más duro intentar predecir su futuro. También existirán los historiadores de la computación que investigarán los orígenes y trayectorias de su área hasta sus días; y cuáles fueron las obras magnas que dieron forma a su presente, será, unas de sus principales tareas.
Entre las estanterías con polvo de alguna universidad y el rastreo digital emergerá un libro que considero un clásico en la historia —reciente pero meteórica— de la computación: Compilers: Principles, Techniques, and Tools, escrito por Alfred Aho, Monica S. Lam, Ravi Sethi y Jeffrey D. Ullman.1
Publicado en 1986, esta obra, importantísima, no lo es tan solo por su repercusión académica sino porque fue un libro de cabecera de las primeras generaciones de informáticos; describe cómo se diseñan los lenguajes de programación. En esa época era el momento de construir los cimientos del desarrollo de software: eso significa la construcción de lenguajes de programación. Y para esta labor no se pueden omitir los compiladores: el artefacto encargado de pasar de una especificación de un lenguaje de programación a su realidad: la implementación.
Yo podría definir la sintaxis y semántica de un lenguaje de programación en un papel: ese sería mi lenguaje. Luego viene su implementación: un compilador. Hoy en día quizá un intérprete. Dependiendo de las características del lenguaje y qué problema busca resolver, uno puede elegir uno de otro.
Hoy la enseñanza de compiladores y, en general, del diseño de lenguajes de programación no es tan popular. Sin embargo, nunca ha habido tantas herramientas que ayuden a introducirse en el tema de manera más amigable. Piense por ejemplo en ANTLR, LLVM, y los innumerables generadores de parser que hay en los lenguajes que desee.
Entender como funciona un lenguaje de programación es entender la computación. Al igual que un filólogo que puede comprender mejor sus textos (o de otros) gracias a su dominio de su lengua: aquí deviene lo mismo.
A veces me siento que he nacido en una época tardía, ajena, frágil, en cuanto a los fundamentos pero, sobre todo, indiferente a su pasado y excesivamente entusiasmada de su futuro.
La labor de los que nos gustan estas cosas es seguir caminando detrás de una ironía cargada de ímpetu, cubierta de sarcasmo, y con una cierta dosis de inocencia y deseo de compartir sobre lo que pudo ser y no será.
Por sus enormes contribuciones al área de los compiladores y a la educación, Aho y Ullman, recibieron el premio Turing en 2020. Un premio más que merecido. Les recomiendo ver su charla de recepción: