Logo de Torre de Babel
Portada Libros Artículos Perfil Scholar

Lenguajes de programación: de A-0 a FLOW-MATIC

Los primeros ordenadores que merecían esta consideración, por el hecho de ser máquinas programables de propósito más o menos general y no simples calculadoras o máquinas de clasificación automática, aparecieron en la década de los 40 del siglo pasado. Konrad Zuse finalizó la construcción del Z3 (considerado el primer ordenador programable) en 1941, el ABC (Atanasoff Berry Computer se puso en funcionamiento en 1942, el Mark I en 1942 y el ENIAC en 1946.

A principios de los 50 el número de ordenadores existentes casi podía contarse con los dedos de las manos y muchos de ellos eran piezas únicas, por lo que no es de extrañar que cada uno contase con un equipo especializado de técnicos encargados de su mantenimiento y explotación. La programación de estas máquinas requería modificar físicamente el cableado (incluso desoldando y volviendo a soldar elementos) o, en el mejor de los casos, la introducción de largas secuencias de códigos binarios representando las instrucciones a ejecutar. No existían lenguajes de programación como tales.

Tuvo que llegar una persona con conocimientos no especializados en computación, Grace Hopper tenía formación militar y en matemáticas, para que percibiese la necesidad de contar con una herramienta de traducción que facilitase la creación de programas a los científicos, sin necesidad de que éstos se convirtiesen en programadores que, por entonces, eran las personas que conocían hasta el más mínimo detalle interno de la máquina sobre la que habían de trabajar. En 1949 Grace Hopper se incorporó a la empresa Eckert-Mauchly Computer Corporation, fabricantes del ENIAC y del EDVAC y que en ese momento estaban diseñando el UNIVAC I, primer ordenador estadounidense creado con perspectivas comerciales, no para investigación o uso militar.

Hopper contaba con la experiencia previa de haber programado una aplicación de contabilidad para el Mark I, tarea que le hizo darse cuenta de que era necesario contar con algún tipo de herramienta que facilitase la generación de nuevos programas. Las ideas fundamentales al respecto las plasmó en un artículo titulado The education of a computer, apenas 8 páginas con abundacia de diagramas en las que Hopper expone los pasos que es necesario seguir para alcanzar su meta: que los matemáticos puedan crear programas para resolver problemas sin necesidad de convertirse en programadores.

Tomando como base estas ideas Hopper creó el primer compilador de la historia, definiendo el término compilador en un memorando interno titulado Compiling Routines al que se hace referencia en el archivo histórico de documentos de Hopper (buscar en la página el apartado SERIES 6: COMPILING ROUTINES). En dicho documento Hopper indica que el compilador es una "rutina de construcción de programa, que produce un programa específico para un problema en particular".

Asociado a ese compilador surgió el lenguaje o sistema A-0. La inicial A procede de Arithmetic language, mientras que el 0 indica sencillamente la versión. En este lenguaje los programas se escribían de una manera muy sencilla para la época. Cada sentencia se componía de dos partes: el código de la rutina a ejecutar, cada rutina correspondía a un cálculo matemático, y los argumentos de entrada necesarios. Lo que hacía el sistema A-0 era leer el programa, recopilar las rutinas indicadas (de ahí la denominación compilador) y construir un nuevo programa compuesto de las rutinas y los parámetros necesarios y que podía ser ejecutado por el ordenador UNIVAC.

Cada una de las rutinas disponibles en el sistema tenía asignado un idenficador único, un número que A-0 usaba para buscarlas en la cinta donde estaban almacenadas, extraer su código e incorporarlo al programa a generar. En este sentido A-0 se parecería más a lo que hoy conocemos como enlazador o linker que a un compilador, denominación usada actualmente para el programa que traduce las sentencias en un lenguaje de alto nivel a otro de bajo nivel. No obstante, A-0 traducía las secuencias de códigos de rutinas y parámetros aunque de una manera muy básica, sustituyendo cada número por el código máquina de la rutina correspondiente recuperado de una biblioteca ya existente.

Tomando como base A-0 se construyeron otros lenguajes, entre ellos ARITH-MATIC, MATH-MATIC y FLOW-MATIC. Este último, surgido en 1955, fue ampliamente utilizado para el desarrollo de aplicaciones de tratamiento de datos y su sintaxis, como se aprecia en la imagen inferior, era muy descriptiva.

A-0 y FLOW-MATIC son únicamente dos de las aportaciones de Grace Murray Hopper al campo de la computación y, en particular, de los lenguajes y herramientas de programación. Seguramente su trabajo más importante, y el más conocido sin duda, fue el lenguaje COBOL. Pero esa ya es otra historia.


Publicado el 4/11/2010

Curso de shaders

Torre de Babel - Francisco Charte Ojeda - Desde 1997 en la Web