Un argentino ayudó a nacer al lenguaje Basic

Si mencionás la palabra Basic en una reunión de programadores, al menos la mitad torcerá el gesto en un mohín de disgusto. Habrá otros, sin embargo, que sonreirán con nostalgia. Aunque sé de las limitaciones de este lenguaje, sin duda pueden anotarme entre estos últimos.
La primera vez que descubrí que programar podía resolver problemas de la vida cotidiana fue en algún momento de 1975. Tenía 14 o 15 años y el problema era mi escasa habilidad (o mi resistencia natural, vaya uno a saber) para memorizar fórmulas y ecuaciones.
En esos días llegó a casa una HP-65, venerable calculadora programable que, por añadidura, permitía guardar las aplicaciones en unas pequeñas bandas magnéticas. Todo era cuestión de que me sentara a escribir un programa que, cargado con los datos del ejercicio, me dijera, al menos, que el resultado era correcto. Así fue como aprendí a programar, con lápiz, papel y el manual de la HP-65.
Los profesores ya habían advertido que las calculadoras programables podían resolver ejercicios de física y matemática, así que nos obligaban a apagarlas antes del examen. Eso borraba cualquier programa cargado en la máquina.
Pero mi HP era un as en la manga. Luego de ese rito medieval en el que nos hacían alzar las calculadoras para verificar que estuvieran apagadas, volvía a cargar mediante la banda magnética el programa que había escrito para ese examen, y listo.
Por supuesto, mi máquina se volvió inmensamente popular. Ahora que lo pienso, una de mis primeras actividades en tecnología fue la distribución de aplicaciones móviles clandestinas. Vaya. No le digan a nadie, por favor.
Pues bien, el lenguaje de programación de la HP-65 era del tipo Basic, algo relativamente común en las calculadoras de aquella época. Fue, pues, mi primera lengua informática. Por eso, aunque enumeren hasta mañana los defectos y malas prácticas del Basic, lo sigo queriendo. Y sigo sintiéndome agradecido: su suave curva de aprendizaje me permitió integrar a una edad muy temprana una destreza que resultaría fundamental en el mundo que se venía: programar.
Sí, hay lenguajes mucho más poderosos, pero Basic no nació para ser poderoso. Su misión –cumplida de sobra– fue la de permitirle programar a todo el mundo, simplificar una tarea que ya se perfilaba como ciclópea y, por entonces, lentísima. Sus siglas, no porque sí, son por Beginner's All-purpose Symbolic Instruction Code; en español, Código Simbólico de Instrucciones de propósito general para Principiantes.
El jueves último se cumplieron 50 años desde que se ejecutaron por primera vez dos programas escritos en Basic, el lenguaje creado por John Kemeny y Thomas Kurtz en la Universidad de Dartmouth.
El día después
De los dos inventores del Basic, sólo Thomas Kurtz vive. John Kemeny falleció en 1992, a los 66 años.
En la semana me puse en contacto con Kurtz para preguntarle por aquella noche que vio nacer el lenguaje en el que cientos de miles de programadores harían sus primeros palotes. Me iba a llevar varias sorpresas.

Kurtz, que hoy tiene 86 años, me escribió: "El 1° de mayo de 1964 a eso de las 4 de la mañana dos alumnos de la universidad de Dartmouth, Mike Busch y John McGeachie, lograron ejecutar por primera vez dos programas escritos en Basic. Lo hicieron en el Dartmouth Time Sharing System que estaban programando. Yo no estaba ahí en ese momento, pero recibí la noticia a la mañana siguiente. Puede que John Kemeny haya estado allí esa noche, pero los recuerdos se han desvanecido.
"Este fue un evento determinante en la vida computacional de la Universidad de Dartmouth, y en especial para el lenguaje de programación Basic."
El Dartmouth Time Sharing System (DTSS) fue uno de los primeros sistemas informáticos de tiempo compartido. Conceptos como multitarea y multiusuario, que hoy son comunes hasta en las computadoras más humildes, empezarían a popularizarse esa noche de mayo de 1964, junto con el Basic.
Antes de los sistemas de tiempo compartido, los programadores dejaban una pila de tarjetas perforadas o un rollo de cinta, también perforada, y un operador ejecutaba en algún momento el programa (la espera podía ser muy larga), obtenía el resultado en papel y se lo entregaba al desarrollador. Era lento y penoso. Si había un error, la ejecución se detenía y había que corregir y volver a empezar. Es decir, si había otro error diez líneas más abajo te enterabas sólo en la segunda vuelta, con una nueva cancelación, y así.
La idea de que varios operadores usaran una computadora al mismo tiempo y obtuvieran respuestas casi instantáneas había surgido en 1957, y durante los años siguientes se pusieron en marcha varios proyectos. Uno de los más longevos fue el de la Universidad de Dartmouth. El original, llamado Phase I, fue apagado en 1968 o en 1969. El segundo, Phase II, se basó en máquinas más potentes y además aparecieron las pantallas. Ese sistema funcionó hasta 1999.
"A propósito –me escribió Kurtz–, John McGeachie tenía una conexión con la Argentina. Creo que uno de sus padres era de tu país, y lo visita regularmente".
Fue una noche más
Le escribí entonces a McGeachie, que me respondió enseguida y me dijo que tanto su madre como él nacieron en la Argentina. Así que, con toda justicia, puede decirse que la noche en que el lenguaje Basic nació había allí un compatriota poniendo el hombro. Su padre era escocés y su madre era hija de ingleses, nacida en la Argentina. Nos fuimos luego al chat y seguimos conversando allí. Este es un resumen de lo que hablamos.

–¿Hasta qué edad viviste en la Argentina?
–Hasta los 18, cuando me fui a Dartmouth, en Hanover, New Hampshire, Estados Unidos.
–¿Visitás la Argentina todavía?
–Sí, voy de vez en cuando.
–Y supongo que recordás bien el idioma, ¿no?
–Sí..., ¡pero he descubierto que cuando la conversación se torna técnica me falla totalmente el castellano!
–No hay problema, seguimos en inglés. Hablame de esa noche en la que vos y Busch ejecutaron los dos primeros programas escritos en Basic.
–Busch había escrito el sistema operativo para una de las 2 computadoras General Electric de la Universidad, y yo escribí el otro. Busch hizo el de la DN-30 [N de la R: por Datanet-30], que era muy bueno para comunicaciones, pero carecía de instrucciones para restar, multiplicar y dividir. Yo escribí el sistema operativo para la GE-235; ese sistema tenía toda clase de capacidades aritméticas, incluidas las operaciones de coma flotante. Así que una de las máquinas hablaba con los usuarios y la otra corría sus programas.
"Pasábamos mucho tiempo de noche en el centro de cómputos de Dartmouth, adonde habían llegado hacía poco las máquinas. Con nosotros siempre estaba John Kemeny, que escribió el compilador de Basic. Cuando terminábamos de trabajar, nos íbamos a dormir, ¡pero Kemeny se iba a dar clases!
–Un gran trabajador.
–Sí, Kemeny era fenomenal.
–Lamentablemente falleció joven, en 1992.
–Sí, muy triste. Su hija estuvo ayer en las celebraciones por el aniversario de Basic. En fin, la noche que finalmente logramos hacer andar el DTSS –las siglas del sistema formado por estas dos computadoras– fue como muchas otras noches, excepto que probó más allá de toda duda que lo que estábamos haciendo realmente funcionaba.
–¿Qué edad tenías, 23?
–No, creo que más joven. Dejame pensar, sí, 21 años. Era un estudiante junior de tercer año.
–Suele mencionarse la noche del 1° de mayo de 1964 como la fecha en que empezó a operar el DTSS también. ¿Eso es así?
–En un sentido, sí, en el sentido de que los próximos pasos eran, primero, permitirle a la gente probarlo; creo que al principio anduvo por un tiempo limitado, porque todavía lo estábamos depurando y arreglando los problemas en los que se metían los usuarios. Y segundo, teníamos que pasar de 3 teletipos a 11 durante el verano y luego a 20 para septiembre de 1964. Esa era realmente la fecha de entrega. Pero sí, empezó a operar de forma limitada esa noche.
–¿Esos sistemas operativos fueron escritos en Basic?
–No. Los sistemas operativos y el lenguaje Basic fueron escritos en Ensamblador. Durante el verano añadimos el lenguaje Algol, también escrito en Ensamblador, y eventualmente, Fortran. Los usuarios escribían sus programas en Basic y más tarde, en 1964-65, podían también hacerlo en Fortran y Algol.
–Y todo en Ensamblador. Debe haber sido muy difícil.
–Sí, claro que sí, pero en esa época todo se hacía en Ensamblador. No había C, no había Java, ¡nada!
–Faltaban casi 10 años para C.
–Sí, desde la perspectiva actual fue duro, pero en el momento no podíamos saberlo. No había alternativas. Es un poco como los primeros que andaban en un Ford T. Hoy nos desmayaríamos si tuviéramos que manejar uno de esos autos, pero ellos pensaban que era maravilloso. Y mucho mejor que andar a caballo.
–¿Basic fue diseñado para que las personas no técnicas pudieran escribir programas?
–Así es, esa fue la idea detrás del lenguaje. Si hubiéramos tratado de enseñarle Algol o Fortran a estudiantes sin inclinación matemática, habría tomado más de una semana, y habrían abandonado. Basic, en cambio, podía enseñarse rápidamente.
–¿Pensás que se le debe enseñar a programar a los alumnos?
–Sí, creo que sí, pero el valor en aprender a programar proviene de la experiencia misma, es algo que usualmente recordás bien. Y el escribir programas te fuerza a comprender. No sólo la matemática o la aritmética, sino todo el proceso. Tuvimos una sesión muy interesante al final del día en la que un futurista de Intel dijo esencialmente: "Necesitamos enseñarle a la gente a escribir código, de otra forma sólo van a aprender a usar la herramienta, pero ese es un conocimiento superficial".
–¿Participaste en la escritura de Basic?
–No, Kemeny hizo la primera versión. Después se tomó un sabático y uno de mis compañeros de clase, Keith Bellairs, de mi misma edad, se hizo cargo el proyecto.
–Veo que estudiaste en Córdoba. ¿Naciste en esa provincia?
–No, nací en Buenos Aires, pero fui a la escuela en las sierras chicas, Los Cocos, Cruz Grande, La Cumbre.
–¿Recordás lo que aquellos dos primeros programas de Basic hacían?
–Ni idea. Pero calculo que eran algo realmente simple, porque lo que queríamos demostrar era que podías tipear un programa, hacerlo correr y obtener una respuesta. No necesitaban ser complicados. En retrospectiva, deberíamos haber salvado una tonelada de esas viejas cosas, pero a esa edad y a esa hora de la noche, ¿quién piensa en el futuro?
Un lugar mejor
También hablé con Harry McCracken, periodista y editor de tecnología de la revista Time, que escribió un artículo impecable sobre el aniversario de Basic . Él también incursionó en la programación gracias a este lenguaje.

De su extenso texto una frase me llamó la atención. "El mundo era un lugar mejor cuando casi todas las personas que usaban una computadora hacía al menos sus primeros palotes en Basic," escribió.
Le pregunté el porqué de esta opinión. Me dijo: "Cuando Basic estaba en todas las PC, programar era accesible de formas que hoy se han perdido. Los manuales, libros y revistas daban por supuesto que casi todos los que usaban una computadora querrían empezar a escribir software para ella, y estaban diseñadas para que esa tarea fuese lo más sencilla posible. Prácticamente tenías que complicarte la vida para no aprender un poco de Basic.
"Cuando estaba en la escuela secundaria, pasaba mucho tiempo con los videojuegos, pero invertía al menos la misma cantidad de tiempo escribiendo videojuegos. Y programar un videojuego es una actividad creativa de formas que jugar ese mismo videojuego nunca podría serlo".
Respecto de por qué es importante que los chicos aprendan a leer y escribir código, McCracken me dijo: "Además de alentar la creatividad, creo que es valioso para todas las personas el saber un poco de programación, de la misma forma en que es bueno saber cómo funciona un automóvil. No me formé como programador, pero sé más acerca de cómo hacer periodismo en la Web porque soy una persona más técnica de lo habría sido si nunca hubiera escrito código. Las computadoras están en todas las actividades profesionales ahora, así que esto aplica a muchas otras personas."
McCracken defiende el Basic con uñas y dientes. Respecto del papel que jugó en las vidas de los que, no siendo estudiantes de sistemas, hicimos nuestras primeras incursiones en esta destreza crítica, me dijo:
"No es que hoy sea imposible para los jóvenes aprender a programar. Hay muchas opciones. Pero ninguna es tan útil y accesible como lo fue Basic en su tiempo, y todas suponen un mayor esfuerzo. Hace falta buscarlas. E incluso las más sencillas no simplifican el crear algo valioso tanto como el Basic".
He leído interminables y a todas luces bizantinos debates acerca de si Basic está vivo todavía o no. Para mí, y sé que para muchos otros, eso es lo de menos. Se trata de un viejo amigo que nos abrió los ojos tempranamente y nos hizo comprender que las computadoras no se manejan con el mouse, sino con la mente.
***
Posdata hipergeek
Según la documentación de Dartmouth , el primer programa que se ejecutó la noche del 1° de mayo de 1964 fue, como me anticipó McGeachie, muy simple: PRINT 2 + 2
O sea, 4. El código fuente habría tenido más o menos este aspecto:
10 PRINT 2 +2
20 END
Googleando un poco encontré otra versión, quizás del segundo programa. Su código dice:
10 LET X = (7+8) / 3
20 PRINT X
30 END
Las líneas estaban numeradas 10, 20 y 30, una práctica común en los lenguajes de la época, cuando los editores de texto permitían ver sólo un renglón por vez; iban de 10 en 10 porque de esa forma podías insertar nuevas líneas más tarde sin tener que numerar todo otra vez.
En total, el primer programa escrito en Basic sólo asignaba a la variable X el valor que surge de la expresión (7+8) / 3 mediante la instrucción LET.
Luego, por medio de PRINT, imprimía ese valor en papel. Hoy usamos pantallas para mostrar los datos, pero las máquinas de esa época no contaban con semejante lujo; sin embargo, en algunos lenguajes se sigue usando la palabra reservada print o alguna derivada, como printf, en C, para mostrar resultados en la salida estándar de datos, que ahora es el monitor.
El último paso, END, le decía a la computadora que ya se habían ingresado todas las instrucciones.
Pueden descargar un simulador del DTSS para Windows, escrito por Kurtz, aquí.
De hecho, es posible recrear la experiencia de aquella noche escribiendo las instrucciones y ejecutando el programa en el simulador. Para eso, hay que poner estos comandos, seguidos de Enter.
NEW
Ahora, darle un nombre al programa. Por ejemplo:
PRUEBA
La pantalla dirá READY. Es el momento de copiar las instrucciones (los números de línea son obligatorios).
Por último, SAVE. Ahora, bastará escribir:
RUN
Y verán en pantalla el resultado.
El simulador de Kurtz viene con manuales del sistema y del Basic y el Algol originales en PDF.



