Debía ser alrededor de 1983-84, Navidades. Hay que ponerse en situación, en aquella época no era ni mucho menos tan común como ahora el uso de aparatos electrónicos. Ahora cualquier niño de 4 años enseña a su abuelo a usar el smartphone, y desde antes incluso andan aporreando el tablet para algún extraño juego educativo. Pero yo sí era uno de los afortunados que había tenido algún contacto con cacharrillos electrónicos. Como por ejemplo con un
Pong que había tenido mi padre:
las míticas
Game & Watch con las que nos pillábamos unos vicios de cuidado entre los hermanos y primos:
o la no demasiado conocida
Philips Videopac:
Sin embargo, esas Navidades algo especial iba a suceder. Uno de esos acontecimientos que no ocurren más de una o dos veces en cada vida pero que la cambian para siempre, que activan resortes que siempre han estado ahí, tan sólo esperando un empujoncito, y que sin él podrían incluso quedarse latentes de forma indefinida, quizá sin llegar a manifestarse jamás. Pero el empujón llegó, ese año recibí de regalo...
mi primer ordenador. Y en ese momento...
¡¡¡ HABÍA NACIDO UN MONSTRUO !!!
(vale, un baby-monstruillo... ¡¡¡joer, ya os avisé de que era un chavalín!!!)
Toca otra vez ponerse en situación. Por si con las fotos anteriores no os había quedado claro, debo decir que por aquel entonces un ordenador no era exactamente lo que ahora nos viene a la cabeza al oír esa palabra. Nada de discos duros. Nada de ratón. Teclado sí... bueno, es que el ordenador ERA un teclado, aparentemente. Sólo 48 kilobytes de RAM. Se conectaba directamente a la televisión, lo que ocasionaba unos tremendos problemas familiares hasta que tus padres sabiamente decidían darte una televisión vieja para que te callaras (televisión que a menudo era en "glorioso blanco y negro"). De cosas como "Internet" o simplemente "red" ni hablamos, aún quedaba tela para eso. Y lo mejor de todo: los datos no se cargaban con un pen drive, ni con un disco duro USB, ni con un DVD ó Blue-ray, no. ¡se cargaban con
cassettes!. Aunque por supuesto todo esto ya lo sabes, porque si aún estás leyendo esto, ejem, es que sin duda eres alguien con amplios conocimientos sobre informática (o un carrozón de cuidado).
Sí, amigos, con todos vosotros... ¡el
ZX Spectrum!
Al principio el joven Andrew hizo lo que todo buen niño haría: jugar (bueno, a decir verdad el joven Andrew jugó al principio, al menos principio y al final, y no ha parado de jugar con la vida desde entonces, aunque ya de "joven" Andrew tiene más bien poco). Pero sí es verdad que en los ratos libres ya entonces iba "coqueteando" con el
manual del BASIC del Spectrum, con idea de hacer algo pero sin acabar de decidirme. Debía tener yo unos 11 años cuando en el colegio les dio por ser innovadores y un año se decidieron a darnos un curso de Informática. Sí, sí, ya por entonces se llamaba Informática. En ese curso lo que nos enseñaron fue precisamente el BASIC del Spectrum. No recuerdo demasiado sobre aquella época, pero sí me acuerdo de que el profesor (o profesora, vete a saber) era bastante malo. Lo que sí me permitió la clase es picarme la curiosidad, que al fin y al cabo era lo más importante.
El caso es que junto a otro chico que al año siguiente se fue del colegio y que la verdad, ya no recuerdo cómo se llamaba... ¡hice mi primer programa! Se trataba de un juego del estilo del Arkanoid llamado:
Baloon Man.
Sí, el juego es tan espectacular como aparenta. La verdad es que programar en el BASIC del Spectrum era todo un reto. Tenía algunas ventajas, como que las palabras clave estaban asignadas directamente a las teclas, por lo que con un par de pulsaciones escribías cualquier palabra clave. Sin embargo, era más bien tedioso a la hora de manejar conjuntos de constantes. Eso de crear un array e inicializarlo en el momento tenía su aquel, con el uso de unas míticas instrucciones READ, DATA, RESTORE. Pero lo cierto es que tenía muchas de las instrucciones del lenguaje estructurado, aderezadas con otras no tan estructuradas como el inevitable GOTO. Lo peor, en cualquier caso, es que ese BASIC no estaba nada preparado para hacer juegos. Los gráficos se tenían que crear como "caracteres especiales" (GDU se llamaban), y estaban muy limitados.
Pero lo que hacía imposible programar cualquier juego con movimiento estaba muy claro: ¡era insufriblemente lento!. Eso no me paró para hacer otros pocos juegos más durante los siguientes años: Tragaperras, El Halcón Callejero, El Trueno Azul y Súper Racer (a algún tipo curioso le dio por poner todos estos juegos disponibles en
World of Spectrum y hasta pedirme permiso, todavía estoy anonadado por ello).
Como a todo el programador casero de la época, el BASIC se me quedó pequeño. El siguiente paso dentro del mundo del Spectrum era el
código máquina.
Rastro arriba, Rastro abajo, conseguí comprar todas las revistas
Micro-Hobby antiguas que contenían de forma coleccionable un completo curso de código máquina. Uf, esto ya tenía tela. Además, yo no tenía un ensamblador, así que mi método de programación era: 1) Programar en papel, 2) Convertir las instrucciones y los datos en números, pasando muy a menudo normalmente por números binarios y forzando muchas veces el uso de operaciones binarias como OR, AND y XOR, 3) Picar los numerillos del programa en el Spectrum, numerajo a numerajo, mediante DATA.
Con el tiempo, llegué a manejar las potencias de dos y los números binarios en general con una velocidad inusitada. De hecho todavía soy capaz de pasar con bastante rapidez de binario a decimal y viceversa, y de partir un número de 16 bits en sus dos partes de 8 bits, pasando por binario y recodificando.
El caso es que tampoco llegué a hacer grandes cosas con el código máquina. Comencé con una rutina para hacer un "efecto espejo" en los gráficos y ahorrar memoria. Y más tarde hice un conjunto más gordo de rutinas para mover sprites por pantalla y animarlos con varios frames. O sea, programé mi primera
librería.
Lamentablemente, aunque llegué a hacer demos con gráficos animados de verdad nunca llegué a concluir mi proyecto. Había acabado una
aventura conversacional (otro día hablaré sobre ellas), en la que había utilizado la rutina código máquina de espejo, y mi nuevo proyecto pretendía ser una mezcla de aventura gráfica y conversacional, con gráficos enormes y mucho mucho código máquina. Pero rondaba ya el año 91, los PCs ya eran ordenadores serios, y ya existían juegos impresionantes, y aventuras gráficas potentísimas como el
Monkey Island. El Spectrum estaba agonizando. Había llegado tarde.
Ahora, muchos años después, programo en
Java. He reemplazado el cuaderno en el que escribía las instrucciones de código máquina por un potente IDE en el que casi no tengo que escribir porque el auto-completar se ocupa de casi todo. Mientras que antes un error en el paso de un número a binario o viceversa daba lugar a un error muy difícil de localizar, ahora cuando me equivoco en algo de sintaxis me lo marca en seguida y hasta me lo puede arreglar él mismo muchas veces. Y mientras que antes un error en la ejecución a menudo llevaba a que el ordenador se quedara colgado y hubiera que rebobinar el cassete hasta el punto en el que estabas antes y volver a cargarlo todo, ahora tengo un potente debugger en el que puedo ejecutar paso a paso y ver el estado en el que están todas las variables en cada momento, y todavía si algo falla me muestra automáticamente el mensaje de error y la traza de ejecución indicándome dónde ha dado el error exactamente. He reemplazado la programación de librerías por el uso de unas que ha hecho un tipo en su casa y que ya te lo dan todo hecho (¡decenas en cada proyecto!). He reemplazado el dibujo de gráficos en hoja de papel de cuadros, codificación de binario a decimal e introducción mediante DATAs, por una búsqueda en Internet para usar una imagen multi-color que otro tipo (o quizá el mismo de antes) ha hecho en su casa. He reemplazado el coleccionable de código máquina de la Micro Hobby por una búsqueda rápida en Internet para buscar cómo se hace cualquier cosa. Y así muchas otras cuestiones.
Comodidad infinita, reutilización en vías de ser sistemática, subida cada vez mayor del nivel de abstracción... y aún se puede mejorar. Todavía se puede programar con más comodidad, todavía se puede hacer reutilización de forma más sistemática, y todavía se puede subir el nivel de abstracción. Y esto es lo que más me apasiona de la programación.
Eso sí, cuando miro atrás y veo las movidas que había que hacer antes para programar cualquier chorradilla y lo accesible y cómodo que está ahora, no puedo evitar pensar ¡bah!, programar ahora...
¡es para nenazas!