Desde los años cincuenta y a lo largo de varias décadas, la voz de William B. Williams comandó el show radiofónico neoyorquino Make Believe Ballroom. El locutor y DJ era una auténtica celebridad, enemigo del desmelenado rock and roll y colega de gente como Lena Horne, Nat King Cole y un Frank Sinatra a quien otorgó el famoso apodo de Jefe del Negocio. En las ondas, Williams se presentaba como Guillermo B. Guillermo o Wolfgang B. Wolfgang, y siempre iniciaba su programa dirigiéndose a millones de oyentes con la misma frase: Hello world! Años más tarde, otro tipo de programas, que requerían de menos micrófonos y más silicio, utilizarían el mismo saludo para certificar que la subespecie de ser humano conocida como informático era capaz de establecer un diálogo con las máquinas.
Prehistoria tecnológica
Hoy en día estamos acostumbrados a que la tecnología forme parte activa de nuestro tiempo de ocio: redes sociales para amontonar amigos falsos, streaming para quemar horas repasando el catálogo sin saber qué ver, Tinder para la pesca de arrastre o revistas culturales digitales con espléndidas ediciones en papel. Pero los inicios informáticos fueron tiempos más ariscos donde los seres humanos se las veían para conseguir comunicarse con las máquinas. En 1786, el militar e inventor alemán Johann Helfrich von Müller ideó la máquina diferencial, una aparatosa calculadora mecánica de funciones polinómicas que en aquella época no podía ensamblarse. A principios del siglo XIX, el matemático Charles Babbage perfeccionó esa máquina diferencial, pero fue incapaz de ensamblarla porque se le salía del presupuesto y, a la altura de 1837, decidió que molaría mucho más crear una máquina analítica, la tatarabuela de los ordenadores modernos. Un computador con el que el usuario debería comunicarse a través de tarjetas perforadas y que devolvería la información tirando de impresora, un equipo de dibujo y una campana, los tres pilares de la comunicación. Babbage falleció en 1871, antes de finalizar la construcción de su criatura, y la Asociación Británica para el Avance de la Ciencia, tras ojear los apuntes del inventor, calificó la máquina como una maravilla carísima que no estaba dispuesta a financiar.
Lo destacable es que Babbage ideó máquinas con las que era posible comunicarse de un modo primigenio para ordenarles cosillas, estableciendo las bases de la carrera técnica predilecta de quienes poseen interés en llegar vírgenes a la tercera edad: la informática. Los primeros ordenadores, como el Colossus de los años cuarenta, se programaron de manera física, a través de su circuitería o manipulando interruptores y enchufes en plan científico loco, pero pronto se ideó un lenguaje con el que lidiar con aquellos trastos: el código máquina. Un idioma estrictamente numérico, cifrado y, por tanto, ininteligible para los cerebros mortales, que funcionaba introduciendo cascadas de dígitos en la sesera de la máquina mediante tiras de papel, fichas agujereadas, cintas magnéticas o toqueteando palanquitas. Estos huraños lenguajes de código máquina se denominaron lenguajes de primera generación.
My generation
Pero los programadores poseían unos cerebros salados y efervescentes, a consecuencia de estar propulsados exclusivamente por snacks y refrescos, y no tardaron en deducir que sería mucho más sencillo idear un nuevo tipo de lenguaje para evitar pelearse con el imponente muro de cifras que suponía un programa en código máquina. Se concibió así una segunda generación de lenguajes, específicos para cada procesador y formados por instrucciones legibles para los humanos que, posteriormente, se ensamblaban en el idioma numérico de los ordenadores. Eran lenguas formadas por comandos extremadamente básicos pero funcionales que organizaron las entrañas de aparatos tan carismáticos como el ordenador Commodore 64 o la consola NES. Con estas nuevas jergas, los informáticos habían dado un paso de gigante en la relación hombre-máquina, pero, sedientos de poder, descubrieron que ese idioma se les quedaba corto para conjurar sus arcanas operaciones matemáticas. Y parieron una tercera generación, a la que calificaron con ínfulas como de «alto nivel», bajo cuyos preceptos se crearían gran parte de los lenguajes de programación más populares: COBOL, C, C++, Pascal, Python, Java o BASIC.
Posteriormente, la cuarta generación se dedicaría a perfeccionar la tercera, creando idiomas que caminaban más cerca del lenguaje humano y se utilizaban para tareas como la gestión de bases de datos, la optimización o el desarrollo web. La quinta generación se estrelló por culpa del tren del hype: la idea era crear lenguajes con los que la computadora pudiese resolver problemas sin necesidad de ser demasiado socorrida por un programador que cosiera los algoritmos a mano. En los ochenta, aquel enfoque parecía una evolución lógica que apuntaba al futuro, pero las inteligencias artificiales en las que se sustentaba resultaron más zoquetas y menos eficientes de lo debido, lo que provocó que la informática siguiera abrazando lenguajes de generaciones pretéritas.
Load “”
En la década ochentera, miles de españoles aficionados a la informática doméstica se enredaron en los lenguajes de programación de manera natural. Microordenadores de 8 bits, como Amstrad CPC, Commodore 64, MSX o el ZX Spectrum, invadieron las casas con la excusa de ser artefactos ideados para trabajar. Aunque en realidad la mayoría de sus usuarios los utilizaron para explorar cavernas colosales, visitar planetas lejanos, organizar liguillas futboleras o repartir hostias justicieras en barrios pixelados donde la calidad de vida era escasa, y los punkis agresivos, abundantes. Porque casi todos los poseedores de dichas máquinas las exprimieron casi exclusivamente como plataformas de videojuegos. Existía, eso sí, un nexo en común entre aquellos ordenadores: todos llevaban incluida en sus tripas una versión personalizada, un dialecto, del BASIC, un famoso lenguaje de programación de tercera generación. El BASIC (siglas de Beginners’ All-purpose Symbolic Instruction Code, que se traduce como «Pa que los torpes hagan de todo») hacía honor a su nombre siendo bastante simple, pues permitía a cualquier ameba escribir sus propios programas y que aquellos fuesen comprensibles a simple vista. Con el ZX Spectrum como el cachivache informático más vendido del país, la mayoría de los usuarios comenzaron a chapurrear BASIC sin saberlo: ordenar al computador ejecutar un juego, almacenado entre los pitidos de las vetustas casetes musicales, implicaba teclear la instrucción «LOAD “”», un comando que ordenaba cargar cualquier programa que se atreviera a entrar por la señal de audio.
Revistas como la popular MicroHobby, especializada en videojuegos de Spectrum, incluían entre sus artículos listados de programas que combinaban BASIC con el incomprensible código máquina. Toneladas de líneas que cualquiera, con las tardes muy libres y la vista de un elfo, podía teclear cuidadosamente en el ordenador para construir diferentes programas y entretenimientos. MicroHobby era un magazín devorado por un público muy joven, y eso supuso que muchos niños curiosos comenzasen a hablar BASIC a edades tempranas. El mismo Spectrum estaba diseñado para ejercer de profesor afable, sus propias teclas llevaban impresas las instrucciones del lenguaje (palabrejas como PRINT, STOP, GO TO, IF, INPUT o MERGE) a modo de atajos para que no hubiese que mover demasiado los dedos. Pero lo cierto es que no hacía falta acercarse al kiosco para ilustrarse en lenguajes informáticos, porque el manual de instrucciones de aquellos ordenadores domésticos ya venía cargado de pequeños programas en BASIC con los que trastear. Y entre ellos era habitual alguna variante del Hello world!, la primera lección a la hora de aprender el idioma de las máquinas, el equivalente al My taylor is rich en las clases de inglés para españoles y al «¿Dónde está la biblioteca?» en las clases de español para ingleses. Ese «¡Hola, mundo!» era algo tan sencillo como una serie de instrucciones que imprimían aquellas dos palabras en el monitor. En BASIC, un programa que rellenase la pantalla de una conga infinita de saludos al globo era tan sencillo como este par de líneas: «10 PRINT “Hello world”; 20 GO TO 10».
Hello world!
La primera persona que escribió un programa informático fue una mujer: la matemática Augusta Ada King, condesa de Lovelace. Y dicho primer programa no fue un «¡Hola, mundo!», porque eso es de noobs y ella gastaba nivelazo, sino el cálculo de una secuencia de números de Bernoulli. Lo más destacable es que Ada Lovelace ideó su algoritmo informático en 1843, antes de que nadie, excepto Charles Babbage, pudiese siquiera imaginar la existencia de los ordenadores. Porque la erudita señora redactó su programa en las absurdamente detalladas notas al pie de un artículo, traducido por ella misma, sobre la máquina analítica de Babbage, aquella que no había sido construida por entonces. Desde entonces, miles de lenguajes informáticos de diversos pelajes han sido alumbrados como vías para dialogar con las computadoras.
El primer programa Hello world! se escribió en BCPL, un lenguaje informático ideado allá por 1967. Y la primera vez que el saludete se utilizó como ejemplo fue en una guía setentera de iniciación a C, un lenguaje tan eficaz como para engendrar vástagos como C++ o C#, jergas útiles y extendidas que sería un coñazo desgranar aquí. COBOL nació a finales de los cincuenta con la corbata puesta, como un código orientando a los negocios y al emocionante mundo de la informática de gestión. Java apareció en los noventa con la visera de la gorra hacia atrás y de buen rollo, como un lenguaje bastante sociable, podía ejecutarse en cualquier sistema operativo, con un nombre y un logo, una taza humeante, en referencia al café Java, cultivado en Indonesia. Lo de los nombres de ciertas lenguas informáticas también tiene su gracia: el eficiente Pascal fue bautizado en honor a Blaise Pascal, el lenguaje Ada se llamaba así para honrar a la condesa de Lovelace, y el célebre Python hacía lo propio con el grupo cómico Monty Python. Este último era una genuflexión justificada, porque la filosofía principal de su código se basaba en ser divertido de usar, e incluso sus programas a modo de ejemplos oficiales guiñaban el ojo a los sketches del grupo cómico al utilizar eggs o spam como variables habituales.
Entretanto, al margen de los lenguajes más valiosos y renombrados, se encuentra un buen puñado de dialectos informáticos funcionales ideados para algo tan contradictorio como divertirse programando. Idiomas ingeniosos codificados de manera extraordinaria y loquísima que provocan tantas carcajadas como dolores de cabeza. Cosas como Rockstar, un lenguaje que permite «crear programas que al mismo tiempo son power baladas de hair metal» al forzar a que todo el código se presente como la letra de un temazo musical muy sentido. Rockstar se ideó a modo de coña para que los reclutadores de las grandes compañías dejasen de referirse a los empleados como «estrellas del rock de la programación». Y escribir siguiendo sus normas provoca que un algoritmo sencillo se convierta en: «Give back your heart / Desire is a lovestruck ladykiller / My world is nothing / Fire is ice / Hate is water».
El lenguaje Chef obliga a que los programas tengan aspecto de recetas de cocina, con su lista de ingredientes y todo, pero además solo considera que aquellos son válidos si, aparte de funcionar, presentan algo que realmente se pueda cocinar y «sea delicioso». ArnoldC es un dialecto de programación compuesto exclusivamente por one-liners de películas de Arnold Schwarzenegger, y, bajo sus normas, un «¡Hola, mundo!» tiene esta pinta: «IT’S SHOWTIME / TALK TO THE HAND “Hello World!” / YOU HAVE BEEN TERMINATED». El lenguaje de programación denominado Shakespeare supone palabras mayores: en él los programas se escriben como extensas obras de teatro, divididas en actos y escenas, donde los personajes ejercen de variables y se insultan mucho entre sí. Un sencillo Hello world! codificado en Shakespeare supone un par de páginas, cuatro personajes, dos actos y cinco escenas muy tensas.
Brainfuck se presentó como un lenguaje minimalista innecesariamente enrevesado. Con tan solo ocho comandos raros de cojones («>», «<», «+», «-», «.», «,», «[» y «]») y un puntero de instrucción, su único objetivo era joderle la vida a quienes se atrevieran con él. LOLCODE fue concebido en «lolspeak, el idioma de los lolcats» y era poco útil, pero resultaba cuqui, con sus textos en mayúsculas cargados de memes tontunos. Un Hello world! pasado por el LOLCODE luciría así: «HAI / CAN HAS STUDIO?/ VISIBLE “Hello world!” / KTHXBYE». Whitespace es un lenguaje funcional que supone al mismo tiempo un prodigio y una insensatez. Ideado como broma para el día de los Inocentes, su vocabulario está formado únicamente por caracteres en blanco (el espacio de la barra espaciadora, el espacio de la tecla Tab y el salto de línea), es decir, los mismos caracteres que ignora el resto de lenguajes informáticos. En Whitespace ocurre lo contrario, este idioma desecha cualquier cosa que no sea un hueco vacío y eso permite que se pueda camuflar un programa en un texto utilizando los espacios entre sus palabras, o que los más valientes escriban algoritmos utilizando solo caracteres en blanco, algo que supone contemplar exactamente eso: una hoja en apariencia vacía llena de instrucciones muy complejas y muy invisibles. TrumpScript es el lenguaje más políticamente disparatado posible. Se inspira en Donald Trump y entre sus inflexibles reglas figuran maravillas como solo permitir el uso de números enteros porque «Estados Unidos no hace nada a medias», que dichos números siempre sean superiores al millón porque las cosas pequeñas son intrascendentes para los estadounidenses, sustituir los valores true y false por fact y lie, emplear citas reales de Trump como mensajes de error, prohibir el uso de importaciones u obligar a toda variable a ser bautizada exclusivamente con los vocablos más populares de Estados Unidos, los nombres de políticos vivos o las palabras favoritas de Trump.
Otros idiomas de informáticos locos jugaban a utilizar argots absurdos: en Emo (siglas de Emoticon Memory Obfuscation), todos los comandos eran emoticonos; en Pikalang, todas las instrucciones eran sonidos emitidos por el pokémon Pikachu («pika», «pi», «pikachu», «pipi», «ka» o «pichu»); Ook se redactaba del mismo modo en el que hablaba el Bibliotecario orangután de las novelas de Mundodisco, utilizando variantes del sonido/gruñido/alarido «Ook»; Omgrofl estaba compuesto por acrónimos desenfadados de la internet angloparlante («lol», «omg», «wtf», «brb» o «stfu»); Piet se inspiraba en el pintor vanguardista neerlandés Piet Mondrian para construir sus programas como paredes de bloques de diferentes colores; y el lenguaje Chicken tan solo disponía de una palabra, chicken, repetida en diferentes cantidades. Ejecutar un Hello world! en Chicken implica escribir, literalmente, cientos de veces la palabra pollo sin volverse loco. Probablemente, el más hermoso de todos los lenguajes esotéricos sea Velato, al utilizar pistas de sonido MIDI como código fuente y determinar los comandos por el tono y el orden de las notas. En consecuencia, los programas en Velato se representan de manera escrita como partituras musicales. Pero lo mejor de todo es que siempre poseían una melodía que, a pesar de su naturaleza artificial e informática, parecía hermanada con el sonido de ese jazz que defendía William B. Williams en cada uno de sus programas de radio, tras saludar al universo entero con un Hello world!
Genial como aquellos a los que rindes homenaje, desconocía todos esos lenguajes locos de los que hablas y que demuestran que los informáticos tienen mucho tiempo libre y pocos ligues. Gracias por compartir esa sabiduría
Maravilloso.
Me ha recordado lo que dice un amigo mío, también del gremio:
– ¿ Has estado enamorado alguna vez?
– No, yo siempre he sido informático
Pingback: Enlaces Recomendados de la Semana (N°731) – NeoTeo