Había visto un screenshot de un cielo poco nuboso con algunos cazas japoneses al acecho, que debían ser destruidos con fuego de batería antiaérea.
Esa imagen, aparecida en la contratapa de una Microhobby a finales de 1986, correspondía a un juego de ZX Spectrum ubicado durante la segunda guerra mundial sobre el océano Pacífico y del cuál sinceramente, no recuerdo su nombre. Sin embargo fue uno de mis puntos de inflexión, porque pasé de ser un simple usuario cargador de programas a un interesado en la programación.
“Quiero hacer algo como esto”, fue lo que me dije. Pero tenía dos desventajas. Primero, contaba con una CZ-1000 con expansión de memoria de 16kb y, segundo, no tenía conocimientos de programación de juegos. Ni de programación en ningún lenguaje.
Así que con 14 años empecé a conseguir y leer las K64 y Programación Popular que pude. Especialmente éstas últimas, porque eran más didácticas y además traían un curso de lenguaje Basic. Claro, como siempre fui muy consistente, resté importancia a este curso.
Después de un tiempo considerable de lectura y análisis de listados de juegos, aprendí que el assembler era cosa de mandinga y que Basic tenía sus limitaciones pero era más entendible. Es más: hasta había aprendido algunas cosas del Sinclair Basic como la estructura de decisión IF – THEN, que debía utilizar LET para operar con variables alfanuméricas, numéricas y efectuar algunas operaciones matemáticas. Y también que con GOTO podía dar saltos mortales dentro del código.
Por otro lado, aprendí que con PLOT x, y podía encender una mancha en una posición de la pantalla, mientras que UNPLOT X,Y la borraba. Si quería mover esa mancha con el teclado, debía leer la función INKEY$ para detectar la tecla presionada y actuar en consecuencia. Para quienes no conocen Sinclair Basic, la implementación del lenguaje estaba bastante ligada al sistema de input de estas máquinas inglesas. Por ejemplo, en una CZ-1000 o en una Spectrum, cuando el cursor tenía la letra K, al presionar la tecla G, aparecía la instrucción GOTO.
Con ese bagaje de conocimiento ya quería empezar a programar el juego. Ni pensaba que pudiese existir alguna etapa previa de análisis y diseño.
Pero un momento…en ese screenshot habían muchas nubes. Entonces, cómo haría para poner todas las necesarias? Tendría que repetir grupos de instrucciones PLOT x,y, tantas veces como nubes quisiera poner? Ya veía que esto se pondría tedioso. Y además intuía que estaba omitiendo algo.
De pronto se hizo la luz: olvidé una de las columnas vertebrales de la programación imperativa: las estructuras de repetición. Tendría que estudiar el bucle FOR – NEXT.
Volví a los estudios autodidactas. Pero pasó el tiempo y no lograba asimilarlo. No podía entender cómo funcionaba. Me superaba. Aprender en japonés, era más fácil que saber que hacía esto:
10 FOR X = 1 TO 10
20 PRINT X
30 NEXT X
Cómo podía hacer que una porción de código se repitiera? Se hizo la luz de nuevo. Recordé a la estructura IF-THEN y la instrucción GOTO, maldita por Edsger Djisktra y un tanto justificada por Donald Knuth. Entonces, lo que me parecía más difícil que japonés, se transformó en:
10 LET X = 1
15 IF X > 10 THEN GOTO 50
20 PRINT X
30 LET X = X + 1
40 GOTO 10
50 …
Maravilloso. Seguía sin saber cómo funcionaba FOR-NEXT, pero ahora tenía una forma de controlar las repeticiones de código que se parecía al chino mandarín. Pero a mi chino mandarín. El código es definitivamente más complejo que el equivalente con FOR-NEXT. Pero así entendía. Y de hecho, es también equivalente al ciclo de programación estructurada WHILE.
Y las nubes aparecieron. Pero las ganas de continuar con el desarrollo se hicieron humo.
Al año siguiente tenía quince años y una Commodore 64, seguía sin entender la estructura FOR-NEXT y me las arreglaba a mi manera. Por casualidad, o por suerte, en la escuela secundaria ya se había definido que el título del egresado sería de técnico en computación. Así, en la ENET Nro. 3 de San Martín (hoy EET Nro 5 Galileo Galilei), durante las clases de matemáticas, la por entonces temible y luego querida Rosa Ana Ferragina enseñaba lenguaje Basic. Fue ella quien muy didácticamente y con la claridad que caracterizaba sus clases, hizo que el FOR-NEXT fuera muy rápidamente digerido por mi rebuscada red de conexiones neuronales.

El desarrollo del juego para CZ-1000 quedó definitivamente abandonado, pero con todo lo aprendido, más detalles y trucos técnicos de C64, pude armar lo que considero mi primer sistema: un programa Basic de utilidades para administración de diskettes.
Años después en la misma escuela aprendí a programar en dBase, Pascal y C. Estos últimos dos lenguajes fueron enseñados magistralmente por el polifacético profesor José Luis Morchio. Pascal se convirtió en mi caballito de batalla por muchísimo tiempo, incluso en los primero años de la facultad. Pero todo esto formará parte de otras anécdotas.