Menú
CEROS Y UNOS

Fortran, o ¡vivan los vagos!

Suelo decir a quien quiera escucharme cuando hablo de estos temas –no suelen ser muchos– que una de las principales virtudes de un buen programador es la vaguería. Pero me refiero a una vaguería especial, esa que te hace aborrecer las tareas repetitivas pero quedarte trabajando hasta las tantas en algo que resulta creativo.

Suelo decir a quien quiera escucharme cuando hablo de estos temas –no suelen ser muchos– que una de las principales virtudes de un buen programador es la vaguería. Pero me refiero a una vaguería especial, esa que te hace aborrecer las tareas repetitivas pero quedarte trabajando hasta las tantas en algo que resulta creativo.
Debemos el primer lenguaje de programación a un señor bien afectado por esa vaguería buena.

El británico Maurice Wilkes, responsable de la construcción de Edsac –la segunda computadora capaz de almacenar los programas en memoria–, pronto se dio cuenta de las dificultades que entrañaba programar un ordenador. Pese a que se había pasado de la necesidad de cambiar cables e interruptores a poder alimentar a las criaturejas con tarjetas perforadas que contenían las instrucciones pertinentes, éstas estaban escritas en binario; y, la verdad, nuestra capacidad de manejar largas series de ceros y unos con éxito es más bien limitadilla. Así pues, creó lo que luego se llamaría lenguaje ensamblador, una serie de instrucciones en texto que luego había que traducir a mano a código binario, pero que permitían programar en papel antes de que el programa fallara estrepitosamente en el ordenador. Así,
T123S
significaba colocar en la posición de memoria 123 el contenido del registro A, y en binario se traducía por
00101000011110110
Wilkes se dio cuenta de que la traducción a binario, trabajo tedioso y propenso a errores, podía hacerlo el propio ordenador, ya que, al fin y al cabo, las letras las representaba internamente como números. Le encargó a un joven matemático de veintiún años llamado David Wheeler la tarea, y éste logró programar un traductor (que luego sería llamado ensamblador), de sólo 30 líneas de código, capaz de leer el programa en texto, traducirlo, ponerlo en memoria y ejecutarlo. Una obra maestra de la ingeniería.

Eso sólo fue el primer paso. Como les sucedería a todos los que construyeron las primeras computadoras, enseguida comprobaron lo difícil que era programar y la de errores que tenían las rutinas, que era como se llamaba entonces a los programas. Curiosamente, nadie había previsto esa dificultad hasta que se dieron de bruces con ella. Así que, para reducir el número de fallos, Wheeler fue encargado de construir una librería de subrutinas que ejecutasen tareas comunes a los programas, como calcular una raíz cuadrada, y que estuvieran libres de fallos y se pudieran reutilizar. A estas cosas se le denominaría, en un alarde de optimismo, programación automática.

John Backus, el vago

Un empleado de IBM de veintinueve años encontraba el proceso de programar las primeras computadoras de la compañía, del modelo 701, bastante aburrido. "Buena parte de mi trabajo ha sido producto de ser vago. No me gusta programar, de modo que, cuando estaba trabajando en el IBM 701 con una aplicación que calculaba trayectorias de misiles, comencé a pensar en un sistema que hiciera más fácil programar", recordaría años después el amigo Backus. Así que a finales de 1953 propuso a sus superiores diseñar un lenguaje informático que facilitara la vida a los programadores. Aceptaron con cierta reticencia, y nuestro héroe se puso a trabajar con un pequeño número de ayudantes.

Tanto el interés como la desconfianza estaban justificados. La creación de un lenguaje informático de alto nivel, como se diría después, supondría un gran ahorro tanto en tiempo de trabajo de los programadores –y sus correspondientes sueldos– como en el entonces carísimo tiempo que los ordenadores tardaban en ejecutar programas con errores... que después debían depurarse. Por otro lado, los intentos que habían tenido lugar hasta ese momento de hacer algo parecido se habían encontrado todos con el mismo escollo: los programas resultantes eran muy lentos, demasiado lentos para ser prácticos, y muchos creían que esa barrera no se podría superar. Así que para IBM resultaba interesante tener abierta esa puerta; pero no tenían tanta confianza como para darle al proyecto mucha prioridad.

Backus sacrificó desde el principio el diseño del lenguaje a la eficiencia de la traducción a código máquina, ese de los unos y los ceros. Era la única vía que podría llevarle, eventualmente, al éxito. Ni a él ni a nadie de su equipo se le ocurrió que, más de cincuenta años más tarde, todavía habría gente usándolo. Después de terminar el diseño del lenguaje en 1954, al año siguiente comenzaron con el traductor, y las fechas límite empezaron a echárseles encima. El primer manual de su lenguaje Fortran (por FORmula TRANslator, traductor de fórmulas) apareció con fecha de octubre de 1956. No estaría terminado hasta abril del año siguiente.

Dos años y medio había durado el proyecto del vago.

Los primeros usuarios de Fortran fueron los programadores de una central nuclear de Maryland. Crearon un primer programa de prueba e intentaron ejecutarlo... para encontrarse con que la impresora sólo les devolvió un mensaje: "El paréntesis derecho no está seguido de una coma". Como no podía ser de otro modo, el primer programa produjo el primer error de sintaxis. Tras corregirlo, el programa estuvo ofreciendo resultados correctos durante los siguientes 22 minutos.

Fortran causó sensación. Backus había triunfado en su objetivo más importante: los programas eran en un 90% tan eficientes como los hechos a mano, una pérdida mínima que quedaba más que subsanada por la reducción del número de errores cometidos y del trabajo que llevaba un programa de semanas a horas o, como mucho, un par de días. La mayor parte de los compradores del IBM 704, la computadora que incluyó Fortran, decidió usarlo, y pronto su equipo, que se había visto forzado a dormir de día y a trabajar de noche para poder emplear las computadoras de IBM que otros usaban a horas decentes, se amplió y comenzó a trabajar en una nueva versión del lenguaje, que saldría en 1959.

Que con Fortran todo fuera más fácil y rápido no significa que estuviera exento de problemas. De hecho, uno de los casos más famosos de desastres provocados por pequeños errores de programación fue protagonizado por este lenguaje. La primera sonda Mariner fue lanzada en julio de 1962, y, tras perder el cohete el contacto con la Tierra, la computadora de a bordo se hizo cargo. Pero el programador olvidó poner una coma y el cohete se desvió en exceso: hubo que hacerlo explotar.

En cualquier caso, tropiezos como éste no impidieron que Fortran se convirtiera poco menos que en la lingua franca informática de científicos e ingenieros. Su última revisión data de 2003, y se sigue empleando asiduamente: sin ir más lejos, en las supercomputadoras más potentes, que entre otras cosas utilizan aplicaciones programadas en él para comparar su rendimiento con las demás máquinas.

Para que luego digan que los vagos no pueden triunfar en la vida.


CEROS Y UNOS: De los autómatas jugones a la primera computadora como Dios manda – Los orígenes censores de IBM  Wikipedia: del porno al conocimiento  Con el Altair 8080 llegó el escándalo: Bill Gates Univac y la victoria de Eisenhower  Xerox, el fracaso que copiaron Apple y Microsoft  Steve Jobs: cría cuervos, que te sacarán de Apple – Nintendo y el empleado novato que inventó a Mario  La máquina favorita de Mark Twain  Ethernet, la reina de las redes tontas  Google, el buscador que nació en William Gates  ¿Robaron el ABC de los ordenadores? – El paranoico que llevó el silicio a Silicon Valley  Sabre, el programa que lleva 50 años funcionando.

Temas

0
comentarios