Ver/Descargar el artículo

Anuncio
AUTORES CIENTÍFICO-TÉCNICOS Y ACADÉMICOS
La larga vida
de un lenguaje de
programación
Dr. Félix García Merayo
Profesor Titular de Universidad-UPM. Vicepresidente de ACTA
Desconozco cuál será el lenguaje de programación
del año 2000. Únicamente sé que se llamará FORTRAN.
Tony HOARE
DIOS es REAL a menos que se declare INTEGER.
à
Aniversario de un hito
Fortran Forum es una publicación periódica de la prestigiosa asociación ACM, Association for Computing Machinery, con sede en
Nueva York, a la que pertenecemos una gran parte de los especialistas en computación, en informática. Fortran Forum recoge artículos,
estudios y noticias que tienen que ver con el lenguaje de programación de alto nivel Fortran, Formula Translation.
El último número de esta revista, Volume 25, Number 3, December 2006, contiene en su primera página y bajo el título, Fifty Years
of Fortran, Cincuenta Años de Fortran, la siguiente noticia en inglés
que traducimos:
En 1954, un equipo de IBM liderado por John Backus comenzó a trabajar en el primer lenguaje de programación de alto
nivel, FORTRAN, lo que fue anunciado a la comunidad del
mundo de la computación en la conferencia Western Joint
Computer Conference que tuvo lugar en Los Ángeles, California, en febrero de 1957. A mediados de abril del mismo año
aparece el primer documento sobre el compilador FORTRAN,
compilador construido y adaptado para la máquina IBM 704.
El presente año 2007 marca, pues, el 50 aniversario de la aparición en el mercado del lenguaje FORTRAN, el más ampliamente uti-
69
ACTA
La larga vida de un lenguaje de programación
lizado y el que más años ha sobrevivido, a pesar de
sus detractores, casi todos ellos teóricos de una programación que no se adapta a las necesidades del
usuario responsable del desarrollo de aplicaciones
científicas y del campo de la ingeniería, detractores,
por otra parte, con escasos o nulos conocimientos de
la escritura de código funcional y práctico.
Una de las razones por las que Fortran ha sido tan
bien acogido por la comunidad de usuarios científicos
es por haber servido como frontera o balance entre
los lenguajes de alto y bajo nivel. Más adelante veremos alguna razón más.
El grupo The Fortran Specialist Group y la sociedad Computer Conservation Society han organizado
una reunión en Londres para conmemorar este
importante hito en la historia de la computación y de
la tecnología de la información. La reunión ha tenido
lugar el pasado miércoles 25 de enero en la sede en
Londres de la BCS, British Computer Society. Al final
de este artículo, y entre las páginas web que se citarán, se encuentra la relativa a esta reunión.
En la misma publicación aludida, Fortran Forum,
se nos recuerda la celebración para conmemorar el
25 aniversario del mismo acontecimiento, que en
aquella ocasión tuvo lugar en el marco del Pionner
Day, el 9 de junio de 1982, durante la celebración de
la National Computer Conference, en Houston,
Texas. Coincidiendo con el evento, la compañía IBM
organizó una exhibición con fotografías de los pioneros del proyecto, facsímiles de documentos, recuerdos, manuales FORTRAN, así como otras publicaciones relativas al lenguaje y sus aplicaciones. Se exhibió
un film de veinte minutos presentando a los protagonistas del diseño y desarrollo del proyecto.
El que estas líneas escribe, promotor de la enseñanza del lenguaje Fortran hoy se escribe con letras
minúsculas, en la universidad española allá por la
década de los sesenta, después de haber cosechado
una amplia experiencia en la escritura de programas
de aplicación para la ingeniería con ese lenguaje,
tuvo la ocasión de recoger muchos de los documentos citados, conservando, incluso, alguno de ellos. En
aquellos años trabajaba para la compañía IBM en
París y tenía la oportunidad de contactar y viajar a los
laboratorios de Santa Teresa, STL, donde se continuaba alimentando la hoguera del desarrollo de las
distintas versiones del lenguaje.
Precisamente, para recordar y celebrar este 50
aniversario, nos proponemos presentar una pequeña
historia del lenguaje, sus sucesivos desarrollos a lo
largo de estos cincuenta años, los grupos de trabajo
que han elaborado las distintas estandarizaciones, así
como otras noticias alrededor de su marketing y de
sus aplicaciones. Echaremos mano de nuestra experiencia, de la documentación que conservamos recogida a lo largo de estos últimos años. Nos cabe la
satisfacción de ser el primero y de los pocos autores
de libros de texto que se han escrito en español sobre
este lenguaje, desde el año 1971, alguno de los títulos con hasta cuatro ediciones; también hemos participado en congresos y conferencias, hemos realizado
algún trabajo de investigación y es variado el número de artículos que hemos preparado sobre este lenguaje.
La máquina IBM-704.
Cartel de IBM conmemorativo del 25 aniversario.
70
El lenguaje nace a consecuencia de una propuesta que J. Backus, líder del equipo creador, hace a
Cuthbert Hurd, director en IBM, para desarrollar un
sistema de programación automática para la IBM704, en diciembre de 1953. Las pocas personas asignadas al proyecto comenzaron a trabajar en un
pequeño despacho en el edificio Jay Torpe de la
Quinta Avenida, cercano al edificio principal de IBM
en Nueva York, 590 Madison Avenue. El equipo que
inició el diseño estuvo formado por estas tres perso-
La larga vida de
un lenguaje
de programación
nas: Backus, Ziller y Herrick. En este escrito se incluye una fotografía del IBM Watson Laboratory. En los
años a los que nos estamos refiriendo, el edificio pertenecía a una asociación de estudiantes y estaba
situado, como ahora, en el West Side de Manhattan.
Allí también trabajó J. Backus en su proyecto. El edificio había cambiado de ocupante y acogió el Laboratorio Científico de Cálculo Watson, de IBM.
ten la necesidad de justificar tal desarrollo empleando
varias páginas, las cuatro primeras, en exponer cómo
con tal sistema se elimina virtualmente la pesada
codificación y su posterior depuración, reduciendo
los tiempos de la salida de máquina, es decir, los
tiempos de proceso. En el documento, los autores llaman fórmula a lo que inmediatamente después, y
desde entonces, se ha denominado sentencia.
Después de éste, se redactaron, en el tiempo,
otros documentos orientados a la utilización del lenguaje en los ordenadores que IBM estaba produciendo y colocando en el mercado, como era el caso de la
máquina IBM 704, el titulado The FORTRAN Automatic Coding System for the IBM 704 EDPM. Se trataba de un manual de referencia para el programador. La fecha escrita en este manual es la del 15 de
octubre de 1956, casi dos años después del anterior,
y el número de formato, form number para IBM, el
32-7026.
Edificio del IBM Watson Laboratory,
612 West 116 Street, Nueva York.
à
Nacimiento del primer lenguaje
de alto nivel
El primer documento significativo, el primer informe, que existe sobre el lenguaje FORTRAN, es el que
lleva por título PRELIMINARY REPORT, Specifications for the IBM Mathematical Formula Translating
System, FORTRAN. Este documento está fechado el
10 de noviembre de 1954 y fue publicado por el
departamento de la compañía IBM en Estados Unidos, Programming Research Group, perteneciente a
la división Applied Science Division.
Este informe comenzaba su redacción así:
El sistema de Traducción de Fórmulas
Matemáticas de IBM o brevemente FORTRAN, comprenderá un amplio conjunto de
programas capaces de aceptar en el IBM-704
la formulación concisa de un problema basada
en la notación matemática y de producir automáticamente un programa 704 de alta velocidad encaminado a la solución del problema.
Resulta curioso observar cómo los autores, que no
se citan todavía en este documento preliminar, sien-
Documentos citados en el texto.
Señalar, además, que este segundo documento,
que constituía ya un auténtico manual, llevaba escritos, por vez primera, los nombres de los especialistas
que habían formado el comité encargado del estudio,
diseño y desarrollo del proyecto FORTRAN desde su
inicio. Por sus méritos en aquel momento y por el protagonismo alcanzado a lo largo de la historia de la
computación, los enumeramos a continuación: John
W. Backus, R. J. Beeber, Sheldon Best, Richard Goldberg, Harlan L. Herrick, L. B. Mitchell, Robert A. Nelson, David Sayre, Peter B. Sheridan, H. Stern e Irving
Ziller, todos ellos de IBM. También Robert A. Hughes
del Livermore Radiation Laboratory, Universidad de
California, y Roy Nutt, de la United Aircraft Corporation, East Hartford, Connetica. Ya hemos dicho que
John Backus figuraba como líder del proyecto del lenguaje de alto nivel que más uso iba a tener y más utilidad iba a reportar, en todo el mundo, para la solución con ordenador de problemas técnicos y
científicos.
71
ACTA
La larga vida de un lenguaje de programación
Obtuvo en 1977 el premio Turing por su contribución a los lenguajes de alto nivel, en general, y por sus
trabajos en FORTRAN, en particular. En 1993 la
National Academy of Engineering le concedió el premio Charles Stark Draper por su desarrollo del lenguaje FORTRAN…, el primer lenguaje de propósito
general y de alto nivel.
John Warner Backus.
En este homenaje al lenguaje, dedicaremos ahora
unas líneas al líder del proyecto FORTRAN y reconocido miembro de la comunidad científica mundial
con una vida profesional y dilatada, dedicada a la
computación. El estadounidense Backus nació el 3 de
diciembre de 1924 en Filadelfia, Pennsylvania. Entró
a trabajar en IBM como programador en 1950, jubilándose en 1991. Realizó sus estudios escolares en la
Hill School en Pottstown y fue un mal estudiante, tal
como él mismo reconoce, y posteriormente universitarios, química, inducido por su padre, en la Universidad de Virginia, finalizando éstos en 1943. Incluso
pasó por el ejército y aprendió medicina en un hospital de Atlantic City. En 1949 terminó sus estudios de
matemáticas en la Universidad de Columbia, Nueva
York, ingresando en IBM inmediatamente. Estas son
sus palabras sobre el invento del lenguaje FORTRAN:
No sabíamos lo que queríamos ni cómo lograrlo. El primer problema fue definir cómo sería
el lenguaje. Después cómo conseguir el análisis de las expresiones de entrada; esto constituyó un gran problema y lo que hicimos para
lograrlo parecería sorpresivamente complicado hoy día.
Irving Ziller.
Backus también es conocido por su contribución
al desarrollo de una notación estándar con la que
describir la sintaxis de los lenguajes formales: la forma
Backus Naur Form, BNF.
72
Lo que sí había ocurrido es que Backus ya había
oído hablar de programación y traductores. Veamos.
Backus se había dado cuenta de que un sistema práctico para la programación de la IBM-704, debería
tener un compilador, un programa capaz de procesar
el programa escrito en un cierto lenguaje orientado al
usuario, user-oriented language, y producir un programa ejecutable por la máquina, machine-executable program. El concepto de compilador no es de
Backus: ya había sido avanzado por la Dra. Grace M.
Hopper, de Remington Rand Inc., al investigar la utilización del ordenador UNIVAC en problemas científicos. El primer compilador de Hopper, el A-0, se
escribió en el invierno de 1951-1952 y ya estaba funcionando cuando presentó una comunicación ante
ACM, Association for Computing Machinery, en
mayo de 1952. De ahí que Backus llegara a la convicción de que era necesario construir un compilador
también para la 704.
Todo lo anterior queda corroborado en el artículo
titulado THE HISTORY OF FORTRAN I, II, AND III,
que Backus escribe en ACM SIGPLAN Notices, Vol.
13, No. 8, agosto 1978, y cuyo comienzo traducimos:
Antes de 1954 casi toda la programación se
hacía en lenguaje de máquina o en ensamblador. Los programadores consideraban, con toda
la razón, que su trabajo era complejo, era un
arte creativo y que requería una gran inventiva
para producir un programa eficiente. Mucho de
su esfuerzo estaba dedicado a vencer las dificultades creadas por los computadores de la época:
ausencia de registros índice, imposibilidad de
operaciones en coma flotante, conjuntos de instrucciones muy reducidos [....] Por ello, la principal preocupación de determinados sistemas de
“programación automática” era permitir la utilización de direcciones simbólicas y números
decimales (Ejemplo, MIDAC Input Translation
Program, Brown y Carr, 1954).
Reseñamos a continuación una relación de otros
informes o publicaciones aparecidos en el nacimiento
y lanzamiento del lenguaje FORTRAN. En 1957, IBM
Corp. y con el número de formato 32-0306-1, redacta un nuevo manual: Programmer’s Primer for FORTRAN Automatic Coding System for the IBM 704.
La larga vida de
un lenguaje
de programación
à
El primer informe presentado
en la conferencia WJCC
Hasta aquí hemos citado manuales de uso orientados principalmente al programador de aplicaciones.
En cuanto a la descripción completa del contenido
del sistema FORTRAN, componentes y objetivos, en
el mismo año 1957, el Departamento de Investigación de la Programación de IBM publica un informe
muy completo que presenta en la Western Joint Computer Conference, WJCC, y recogido en sus proceedings, Proc. WJCC, Volume 11, pages 188-198, así
como también en la publicación de Rosen en
McGraw-Hill, Programming Systems and Languages.
Por el interés histórico que encierra y para poder
comparar aquel incipiente pero agresivo proyecto de
lenguaje con las funcionalidades y métodos de operación de los lenguajes de nuestros días, vamos a transcribir algunos de sus primeros párrafos.
El proyecto FORTRAN comenzó en el verano de
1954. Su propósito era reducir de forma notable la
tarea de preparar problemas científicos para el gran
ordenador de IBM, el 704. Si se conseguía que esa
máquina codificara los problemas por sí misma y produjera programas tan buenos como los generados por
un codificador humano, pero sin errores, estaba claro
que los beneficios serían incalculables.
Y más adelante se entra en evaluaciones. Se sabía
que aproximadamente dos tercios del coste relativo a
la resolución de los problemas científicos y de ingeniería con grandes ordenadores correspondía a la
tarea de preparación del propio problema. Por otra
parte, más del 90% del tiempo empleado en un problema se consagra a su definición, escritura y pruebas
del programa que lo resuelve. En muchos casos el
desarrollo de un plan general para resolver un problema constituía un trabajo muy pequeño en comparación con la tarea de preparar y codificar los procedimientos de máquina encaminados a realizar el plan.
En aquellos años en los que se empleaban únicamente los métodos de escritura de programas más
cercanos a la máquina, es decir, la programación consistía sólo y exclusivamente en la producción directa
de programas objeto en el código que la estructura
hardware de la máquina entendía, cuando se habla
en este informe de codificación, debemos entender
escritura de un programa en código de máquina,
labor altamente tediosa, dependiente del hardware
utilizado y sometida, en un alto grado, a múltiples
errores.
Seguimos con el informe en el que ahora se mencionan los objetivos. La meta a alcanzar con el proyecto FORTRAN era lograr que el programador fuera
capaz de especificar un procedimiento numérico utilizando un lenguaje conciso semejante al de las matemáticas y obtener automáticamente a partir de él un
programa eficiente para el IBM-704 con el fin de ejecutar dicho procedimiento. Se esperaba que tal sistema podría reducir la codificación y las pruebas, al
menos, en un 20% del trabajo que en tales tareas se
venía realizando.
Después una descripción somera del sistema.
Desde comienzos del proyecto se han empleado dos
años y medio o, lo que es equivalente, 18 años/hombre. Actualmente, el sistema FORTRAN está completo y posee dos componentes: el lenguaje FORTRAN
con el que se escriben los programas y el traductor o
rutina ejecutiva para el 704 que tiene por misión traducir los programas escritos en el lenguaje FORTRAN
a programas en 704. Precisamente las principales secciones de este informe versan sobre el lenguaje y
sobre el traductor.
Y sigue el informe. La experiencia del grupo FORTRAN adquirida al utilizar el sistema confirma las experiencias originales relativas a la reducción del tiempo de
preparación, así como a la eficiencia de los programas
resultantes. Una historia corta sobre un caso relativo a
un trabajo realizado con un sistema, es raro que proporcione una buena medida de su utilidad, particularmente cuando el ejemplo está escogido por los propios autores del sistema. Sin embargo, a continuación se citan los
hechos relativos a un trabajo bastante simple pero regular: el programador asistió a un curso de FORTRAN de
un día de duración empleando posteriormente algún
tiempo adicional para la lectura del manual de referencia correspondiente. Después ya fue capaz de programar el trabajo en cuatro horas, escribiendo para ello 47
sentencias FORTRAN, las cuales se compilaron en una
máquina 704 en seis minutos, produciendo como resultado 1.000 instrucciones de máquina. Estudiada la salida por el programador, que no contaba en aquel entonces con ayudas como trace o la posibilidad de hacer
dumps de memoria, encontró un error en una de las
sentencias FORTRAN. Reescrita tal sentencia, recompilado el programa fuente, se obtuvo ya un resultado
correcto. El propio programador estimó que el trabajo
codificado a mano (en código de máquina) habría durado tres días, más un tiempo desconocido para la depuración. Y no obstante, el incremento de la velocidad de
ejecución no habría sido significativo.
Hasta aquí el comienzo del informe titulado The
FORTRAN Automatic Coding System.
73
ACTA
La larga vida de un lenguaje de programación
El citado informe continúa exponiendo, por una
parte, determinados detalles sobre el lenguaje FORTRAN y su sintaxis, disponible para la IBM-704 y, por
otra, se hace una descripción del traductor, es decir,
del compilador correspondiente.
En cuanto a las sentencias, se hacía una descripción de las mismas utilizando ejemplos variados,
como el clásico de la resolución de la ecuación de
segundo grado al hablar de las sentencias aritméticas
o el de la multiplicación de matrices para ilustrar el
uso de variables subindicadas dentro de los bucles
controlados por la sentencia DO. Lo mismo con las
sentencias de entrada y salida.
Hoja de 80 columnas de IBM para la escritura del
programa fuente.
El bloque de sentencias obtenidas mediante perforación del programa original se coloca en la lectora de
fichas de que dispone un 704 junto con el programa
traductor. Una vez presionado el botón LOAD, se
obtiene:
n Un listado de las sentencias originales que son
Parte de un programa FORTRAN para calcular
el producto de dos matrices.
En lo que se refiere al traductor FORTRAN, se nos
dice que estaba dividido en seis partes. Queremos
recoger el objetivo de
cada parte y la relación
entre ellas mediante el
empleo de un organigrama, palabra y concepto en desuso y ya
sólo para nostálgicos.
erróneas respecto de las especificaciones sintácticas del lenguaje, acompañadas de notas que
indican el tipo de error.
n Un bloque de tarjetas en binario que constituyen el programa del 704.
n Una cinta de papel con el programa en binario
bien para ser archivada o para ser cargada y ejecutada una vez completa la traducción.
n Otra cinta de papel con el programa simbólico
con el que se pueden realizar cambios o efectuar ensamblajes posteriores.
Alguna de estas salidas es opcional y puede no
estar disponible en el momento de esta publicación.
Cerramos los comentarios del informe
recogiendo algunas
notas contenidas en el
mismo, destinadas al
usuario. Son reveladoras de las rudimentarias herramientas
utilizadas en aquellas
arquitecturas y sistemas ya tan lejanos en
el tiempo y diferentes
de la tecnología moderna.
Organigrama bloque del primer
compilador de FORTRAN.
74
Tabla de las sentencias del primer FORTRAN.
La larga vida de
un lenguaje
de programación
En el primer manual de usuario de la IBM-704
leemos los siguientes detalles acerca de FORTRAN
que, por el interés que encierran, transcribimos:
La máquina fuente es la 704, sobre la que se traduce el programa fuente a programa objeto. La
máquina objeto es aquella sobre la que se procesa el
programa objeto.
La máquina fuente tiene que ser, al menos, como
un “pequeño” 704, es decir, un procesador 704 de
4096 palabras de memoria de núcleos, instrucciones
de coma flotante, instrucciones CPA (copy and add
logical), una unidad de tambor magnético, cuatro
unidades de cinta, perforadora de tarjetas conectada,
lectora de tarjetas conectada o periférica y una impresora conectada o periférica.
La máquina objeto puede ser de cualquier tamaño. Entre la información producida por FORTRAN, se
encuentra el total de localizaciones de memoria
requeridas por el programa objeto, de donde puede
deducirse fácilmente si el programa objeto es demasiado largo para una determinada máquina objeto.
Un último detalle curioso y adelantado a su tiempo que también se encuentra en el manual: Las instrucciones y las constantes del programa objeto
comienzan en la posición de memoria más baja y se
extienden hacia las posiciones superiores; los datos y
otras localizaciones de memoria requeridas para la
operativa del programa comienzan en la posición
777778 y se extienden hacia las superiores. Los
expertos en computación pueden observar y sacar
sus deducciones de ello que la posición octal mencionada equivale a la decimal, 32767=215-1.
Finalmente, para cada programa objeto FORTRAN se produce una descripción impresa de la distribución de las localizaciones de memoria.
Todo lo anterior nos sumerge en un mundo computacional que para su época ya tenía concomitancias con el presente acercándose al de nuestros días.
Fueron unos pioneros, con una visión docta y práctica al mismo tiempo, de la programación de aplicaciones. Su mérito es indudable y merece la pena
recordar sus planteamientos y las soluciones tan certeras que les dieron. Además, en aquel entonces no
existía metodología ni experiencia en sistemas: fueron
haciendo camino al andar.
En un principio los usuarios pusieron muchas
objeciones a este lenguaje y su operativa, alegando
como principal defensa que tal vez los programadores
de sus equipos fueran capaces de producir códigos
objeto de mejor calidad que los conseguidos por
Sheldon Best.
FORTRAN y su traductor. Estas alegaciones fueron
vanas y duraron muy poco tiempo y fue cuestión de
meses para llegar al convencimiento de que el
empleo de un lenguaje de alto nivel dejaría atrás
todos los demás métodos utilizados para la obtención
de código de máquina. Se hizo necesario, como ha
sucedido en otras etapas del desarrollo tecnológico,
subir al carro sin más dilación.
à
Sucesivos desarrollos
En el mes de junio de 1958 aparece una nueva
versión del lenguaje con el nombre FORTRAN II
debido al empuje dado, en primer lugar, por IBM y
después por UNIVAC y por Hopper. Las principales
adiciones para el IBM-704 eran: inclusión en el repertorio de las sentencias correspondientes para poder
contemplar e implementar los conceptos de subrutina
y función; zonas comunes de memoria a compartir
por varios programas o módulos de un mismo programa; sentencia de terminación de compilación
END; posibilidad de unión, lo que hoy llamaríamos
interface, con otros programas escritos en lenguaje
ensamblador. De nuevo participaron en su desarrollo,
Backus, Ziller y Nelson.
Como consecuencia de lo anterior, en el mismo
año 1958, aparecen compiladores para las máquinas
siguientes: IBM-709, IBM-650. Dos años más tarde,
1960, quedarían soportados los ordenadores para
aplicaciones técnicas y científicas, IBM-1620 e IBM7070, ordenador este último que había sido anunciado en septiembre del mismo año y que constituía el
primero de la generación del estado sólido.
En 1961 comienza a desarrollarse una nueva versión del lenguaje, FORTRAN III, cuyo líder fue Ziller,
que, como hemos dicho, ya había participado en el
diseño primero. Ziller tuvo una cierta ayuda de Nelson y Nutt. Esta versión únicamente fue utilizada
internamente dentro de la compañía y nunca vio la
75
ACTA
La larga vida de un lenguaje de programación
Ordenador científico IBM-1620, que hacía
uso de FORTRAN.
Ordenador científico IBM-1130, de la misma tecnología
que la serie IBM-360.
à
Necesidad de la estandarización
luz como producto. Una de sus características más
importantes era poder escribir en línea junto con las
instrucciones FORTRAN, otras instrucciones simbólicas. Pero esta técnica parece, y de hecho así sucedería, que podía poner en peligro la compatibilidad del
lenguaje entre máquinas distintas, como la 704 y la
709. Una cuarta versión, FORTRAN IV, aparece en
1962 para la máquina IBM-7030.
La importancia del nuevo lenguaje quedó patente para compañías ajenas a la firma inventora y desarrolladora. Por ello, fuera del ámbito interno de la
compañía IBM, en el mes de enero de 1961 había
aparecido FORTRAN I para una máquina UNIVAC
denominada SS-80, Solid State 80, y nuevas versiones para la Remington Rand LARC, para la PHILCO
2000, aunque esta vez con el nombre ALTAC y no
FORTRAN. Puede decirse que en el año 1963 todos
los fabricantes suministradores de ordenadores
poseían en sus catálogos este lenguaje y que existían
del orden de 40 compiladores distintos.
El empleo de aquel lenguaje FORTRAN se extendió rápidamente. Todas las marcas que operaban en
el mercado ofrecían a sus clientes el compilador
correspondiente, aunque las máquinas estuvieran
orientadas a las aplicaciones de gestión, como ocurrió
con el IBM-1401. Entre las destinadas fundamentalmente a las aplicaciones técnico científicas, han de
anotarse IBM-1620 y posteriormente IBM-1130. De
su mano comenzó su carrera en la informática el que
redacta.
Detenemos aquí la relación de los primeros compiladores. La contribución de los comités de estandarización para conseguir un lenguaje transportable de
una máquina a otra nos aconseja comentar sobre el
proceso que siguen esos comités para luego volver a
hablar de las versiones más modernas del lenguaje.
76
Es importante matizar lo que se entiende por un
estándar. H.R.J. Grosch lo definió ya en 1955 de esta
forma: la estandarización es un medio por el cual se
establecen métodos adecuados, conformes a criterios
aceptados y aprobados, con los que lograr unos objetivos técnicos. Se trata, pues, de aceptar un criterio
para medir un rendimiento, para hacer un diseño,
establecer una terminología, tamaño, etc., acordados
en el ámbito internacional, nacional o de la industria.
Entonces, un lenguaje estandarizado será aquél que
está conforme con los criterios establecidos y aprobados previamente.
El lenguaje FORTRAN ha sido uno de los primeros que se ha estandarizado, y ello se debió al Comité para el desarrollo de un FORTRAN estandarizado
americano, formalizado en el mes de mayo de 1962
conforme a ASA X3.4.3, comité que se ocuparía
exclusivamente del lenguaje FORTRAN. Las siglas
ASA corresponden a American Standars Association.
Este comité comenzó sus trabajos por la normalización de dos versiones del lenguaje: FORTRAN y
FORTRAN Básico, que coincidían prácticamente con
los FORTRAN IV y FORTRAN II, respectivamente. El
básico correspondía a unas especificaciones mínimas
que deberían cumplir y soportar los compiladores del
lenguaje que fueran apareciendo en el mercado. Con
esta primera estandarización se conseguía un FORTRAN independiente de la máquina donde se ejecutara, es decir, independiente de la arquitectura hardware y, además, orientado al procedimiento, ya que
el objetivo era resolver los problemas. Sobre esto leíamos, hace ya algunos años, en una publicación de
la época:
El programador analiza primero el problema,
define los procedimientos y redacta los organigramas correspondientes a los mismos. A con-
La larga vida de
un lenguaje
de programación
tinuación los programa, generalmente en
papel de codificación de 72 u 80 columnas. El
programa se verifica y se depura en el ordenador, aunque esa depuración sea cara si se hace
on-line, lo que puede ser prohibitivo para
muchas instalaciones.
Veamos cuál es actualmente el funcionamiento y
las etapas que se suceden en una estandarización. El
comité correspondiente al lenguaje Fortran es el X3J3
y el grupo técnico internacional para la estandarización es el ISO-IEC/JTC 1/SC 22/WG 5, es decir,
Grupo de Trabajo, WG, número 5, correspondiente al
Subcomité, SC, 22 del Comité Técnico Conjunto,
Joint Technical Committee, JTC número 1, que se
ocupa de la Tecnología de la Información y que pertenece tanto a la Organización Internacional para la
Estandarización, ISO, como a la Comisión Electrotécnica Internacional, IEC.
cumplimiento posterior es voluntario. La experiencia
ha demostrado a lo largo de los años que el consenso se cumple en un alto porcentaje: las compañías
productoras de software lanzan al mercado compiladores estandarizados.
¿Cómo se crea un estándar? En lo que hace relación a un estándar americano para el lenguaje Fortran, participan dos organizaciones: ANSI, American
National Standars Institute, y el comité X3J3. ANSI
establece los procedimientos, aprueba y publica los
estándares. A su vez, ANSI representa a Estados Unidos en cualquier proceso internacional ligado a estándares.
X3J3 es responsable del desarrollo de los estándares del lenguaje Fortran y, como comité técnico acreditado en ANSI, está formado por constructores,
usuarios y otros miembros que representan un interés
general. X3J3 es un subgrupo del Acredited Standars
Committee X3.
El control de los estándares en otros países está
garantizado por organizaciones paralelas a ANSI
como, por ejemplo, AFNOR en Francia, BSI en el
Reino Unido o DIN en Alemania. Tanto ANSI como
las demás actúan bajo el control de ISO que, en último término, está encargado del desarrollo de un
estándar internacional.
Richard Goldberg.
En las distintas etapas del proceso de estandarización se implican no sólo los miembros del comité citado, sino también otras muchas asociaciones de usuarios del lenguaje, tanto locales como internacionales.
Éstas constituyen una fuente de requerimientos y
experiencia cuyas peticiones de mejora de la sintaxis
y de la semántica elevan al X3J3. En el comité se
estudian, se valoran y se analizan los efectos que tales
peticiones pueden producir ante una nueva estandarización.
Las decisiones que se toman en los comités de
estandarización se logran por consenso y si éste no se
alcanza, el estándar no verá la luz. Por consiguiente,
el estándar es simplemente un reconocimiento del
consenso. Ha de añadirse que ningún miembro del
comité, ya sea a título individual o como representante de un colectivo, sociedad o compañía, estará obligado a adoptar el estándar que se produzca.
Resumiendo: un estándar es un acta de buenas
intenciones, reflejo de un consenso alcanzado y cuyo
Organizaciones que intervienen en una estandarización.
El proceso de estandarización del lenguaje Fortran
podría resumirse así: el grupo X3 hace una propuesta al X3J3 con la que este último, y en coordinación
con WG5, produce un borrador que es analizado y
aprobado o no. En el primer caso el borrador se
devolverá al X3 para votación y, caso de nueva aprobación, para revisión pública, revisión que puede
repetirse varias veces si existen cambios y éstos son
notables y profundos, lo que conllevaría nuevas intervenciones tanto de X3J3 como de X3. La etapa final
será la aprobación definitiva, como estándar americano, por parte de ANSI.
77
ACTA
La larga vida de un lenguaje de programación
La aprobación última de la propuesta corre a
cargo de ISO y de sus países miembros asociados. La
intervención de ISO se produce normalmente cuando
el borrador americano está consolidado por las etapas anteriores y no es necesario hacer nuevos cambios.
La producción de una nueva estandarización del
lenguaje Fortran sobre otra anterior existente ha
empleado, como media, del orden de doce años. No
obstante, este lenguaje sigue vivo y actualmente se va
notando una reducción del tiempo transcurrido entre
dos estándares consecutivos.
Hoy día, la organización de los comités para la
estandarización ha cambiado ligeramente, sobre todo
en lo que se refiere a los cometidos de cada uno de
ellos. Volvemos a traducir de Fortran Forum, donde
podemos encontrar esa información completamente
actualizada:
J3 es el comité técnico para el desarrollo de los
estándares del lenguaje Fortran y está acreditado por NCITS, National Council for Information Technology Standars. La información relativa a alcanzar el estado de miembro del J3 se
puede obtener del Chairman J3. El Grupo de
Trabajo número 5, oficialmente denominado
ISO/IEC JTC 1/SC22/WG5 tiene análoga
misión dentro del comité ISO, International
Standars Organitation. Los miembros y observadores del J3 pagarán una cuota anual por su
participación.
El secretariado de NCITS tiene su sede en Washington DC. El actual Chairman del J3 es Dan Nagle
y el coordinador del WG5, John Reid. Los encuentros
del J3 se producen cuatro veces por año, en febrero,
mayo, agosto y noviembre. El último tuvo lugar en
Las Vegas, el pasado noviembre de 2006. La próxima reunión conjunta del WG5 y del J3 tendrá lugar
en agosto de 2007.
à
Desarrollos modernos
Como hemos dicho más arriba, el lenguaje FORTRAN fue adoptado rápidamente por otros muchos
fabricantes distintos a IBM. Ellos también produjeron
compiladores para sus máquinas porque, aparte razones de imagen y marketing, consideraban que el lenguaje era el más apropiado para resolver aplicaciones
técnicas y científicas. Como consecuencia de esta
amplia difusión, se produjo un número muy elevado
de líneas de código escritas en ese lenguaje de alto
78
nivel, dando lugar a programas no siempre portables
de un ordenador a otro, debido a que cada marca
incluía sus propias extensiones al lenguaje base.
Para evitar estos problemas, en marzo de 1966,
FORTRAN fue sometido a su primera estandarización
por ASA, ya nos hemos referido a ello, fijando las
reglas del lenguaje y tratando de conseguir así programas independientes del ordenador donde se procesasen; aparentemente se conseguía que un programa
fuera portable. Así, apareció una nueva versión del
lenguaje conocida popularmente como FORTRAN IV
y posteriormente como FORTRAN 66.
Once años más tarde, en 1977, se completó una
nueva versión mucho más evolucionada que la anterior, aprobándose una nueva estandarización que originó FORTRAN 77, promovida esta vez por ANSI.
Dicha versión se aprobó en abril de 1978 y fue ratificada como estándar internacional en el año 1980.
Realmente fue una revisión calificada por los expertos
como menor sobre la anterior de 1966.
Esta nueva versión del lenguaje no solucionaba
todos los problemas de las anteriores; no contenía
determinadas características y funcionalidades ya
existentes en otros lenguajes de programación aparecidos en el mercado en aquellos momentos, como C,
C++ y Java; tampoco se adaptaba a las nuevas
arquitecturas de ordenadores del momento, como las
vectoriales y paralelas. Por ello, en el año 1991 aparece la versión estandarizada, considerada como una
revisión amplia, reconocida por ISO como la única y
con el nombre de Fortran 90, denominación en la
que, por primera vez, sólo la primera letra es mayúscula.
ANSI trabajó muy rápido en una nueva estandarización, Fortran 95, con el fin de adaptar el lenguaje
a técnicas más eficientes de desarrollo de programas,
así como a las arquitecturas de altas prestaciones.
Apareció en 1997 y, de nuevo, constituía una revisión
menor.
La última versión estandarizada del lenguaje llevará el nombre de Fortran 2003. Está a nivel de
borrador, draft, pero muy avanzado. Supone una
extensión muy ampliada sobre el estándar 95, por lo
que se trata de una revisión amplia de la versión anterior. Entre sus inclusiones, se encuentran: mejoras al
tipo derivado de datos; mejoras en control de la accesibilidad; soporte a la programación orientada a objetos; ampliación de tipo y polimorfismo; transferencia
asíncrona y mejoras de la entrada y salida.
Ya existen esfuerzos dedicados a una nueva versión del lenguaje para revisar el estándar 2003. Se
La larga vida de
un lenguaje
de programación
conoce como Fortran 2008. Será una revisión menor
que incluirá, entre otras facilidades, un modelo de
proceso paralelo y un tipo nuevo de datos, BIT data.
Para darnos cuenta del alcance de este lenguaje y
de su larga vida en la que ha permanecido y aún permanece con nosotros a pesar de sus detractores, que
los tiene, damos una relación de compañías y organizaciones que facilitan compiladores comerciales a los
usuarios: Absoft, Apogee, Compaq, Cray, Fortran
Company, Fujitsu, Gnu Fortran 95, G95, HP, IBM,
Intel, Lahey/Fujitsu, NAG, NA Software, NEC, PathScale, PGI, Salford Software, SGI, Sun. Los compiladores ofrecidos corresponden a Fortran 90 y 95 e,
incluso contienen ya alguna funcionalidad que incorpora Fortran 2003. Todos ellos para distintos entornos: Windows, Macintosh, Linux, AIX, UNIX. También ejecutables en las más diversas arquitecturas y
en conexión con otros productos relacionados como
PVM, HPF, OpenMP, etc.
à
El legado de Fortran
A lo largo de los años se ha puesto de manifiesto
que Fortran, hasta el momento, es un lenguaje relativamente pequeño y muy conveniente, tanto para programadores ocasionales como para aquellos que trabajan en equipo en la producción de aplicaciones de
alta gama. Por otra parte, es eficiente, ya que las sentencias que lo forman tienen una relación directa con
la máquina donde se ejecutan, de forma que los usuarios entienden lo que el lenguaje produce. Las nuevas
versiones quizá estén contribuyendo a que el lenguaje
pierda ese carácter que decíamos de lenguaje pequeño. Pero la batalla por el liderazgo, la necesidad de
facilitar al usuario herramientas modernas y de que
Fortran haga lo que hacen los demás lenguajes del
momento, fuerzan a los estándares a anunciar un lenguaje que cada vez es un poco más complicado.
Jean Sammet resaltaba en su historia de los lenguajes de programación, allá por el año 69, las características más importantes de Fortran: utilización en
cualquier plataforma hardware, su facilidad de aprendizaje, posibilidad de que el programador controle las
localizaciones de memoria así como la optimización
de los programas. Esas cualidades aún persisten.
Desde que Fortran fue anunciado hace cincuenta
años existe un amplio sector de usuarios que programan en él a diario, usuarios científicos y comunidades
de ingenieros. De ahí su enorme expansión como lenguaje de programación y, en consecuencia, que
posea un amplio inventario en cuanto a la gran can-
tidad de líneas de código de aplicación desarrollado
en tal soporte: se cifra en millones.
Hace algunos años publiqué un estudio comparativo del uso de Fortran frente a otros lenguajes, como
Basic, Pascal, C. El estudio había examinado catálogos de distintos proveedores de paquetes de aplicación técnico-científica, como DEC, IBM, incluso de
ordenadores personales. El resultado medio era que
el 67% de esos paquetes se habían escrito en Fortran.
Fortran es el primer y principal lenguaje para las
tareas de supercomputación más intensiva, tales
como modelado del tiempo y del clima, dinámica de
fluidos, química computacional, cromodinámica
cuántica, simulación de la dinámica solar a largo
plazo, modelización de yacimientos, simulación de la
dinámica del automóvil, proceso de imágenes y un
largo etcétera.
Y lo que es importante y no debemos pasar por
alto ni olvidar: cincuenta años más tarde de su aparición en el mercado, el rendimiento, el performance,
de los nuevos procesadores de nuestros ordenadores
se sigue midiendo en los benchmarks, haciendo uso
de rutinas escritas en el lenguaje Fortran. Ello significa un elocuente tributo al alto rendimiento de las operaciones en coma flotante que posee el lenguaje.
En cuanto a su portabilidad, ésta dejó de ser un
problema en cuanto se publicó la primera estandarización. Fortran puede compilarse y procesarse en
cualquier plataforma hardware y cualquiera que sea
el software de base utilizado.
La utilización de lenguajes de alto nivel como Fortran ha reducido los costes anejos a la programación
de aplicaciones técnico-científicas, así como los de
entrenamiento y formación de los usuarios.
Siempre han existido extensiones al lenguaje estándar suministradas por los proveedores, las cuales incluyen construcciones vectoriales y paralelas para las
arquitecturas de alto rendimiento que, por su amplia
utilización en los centros de cálculo intensivo, se han
convertido en quasi estándar. Algunas de esas construcciones ya han sido incluidas en el estándar 95.
Libros de texto FORTRAN en distintos idiomas
79
ACTA
La larga vida de un lenguaje de programación
Todos los detalles concernientes a Fortran pueden
encontrarse en los libros de texto escritos en muchos
idiomas desde hace muchos años. Nos congratulamos, como dijimos más arriba, de haber contribuido
a la expansión del lenguaje por todo el mundo del
castellano. Hemos escrito muchas líneas, esta vez, de
texto, tanto de teoría como de práctica del lenguaje,
además de historia del mismo.
Las primeras versiones del lenguaje se escribieron
con letras mayúsculas hasta la versión FORTRAN 77
inclusive. A partir de ese momento, el nombre del lenguaje es Fortran.
à
El programa del aniversario
No queremos finalizar este homenaje al lenguaje
de medio siglo sin escribir unas líneas que recojan,
aunque no sea más que a modo de resumen, el programa que se preparó en Londres el pasado 25 de
enero, de un día completo de duración. Es un poco
cerrar como abrimos.
n Bienvenida e introducción.
Roger Jonson, Chairman CCS.
n Los Orígenes de FORTRAN.
Celebraciones de 1982, incluyendo película del
aquel momento.
Peter Crouch, Chairman del Grupo de Especialistas Fortran.
Agradecimientos
No hubiera sido posible este artículo si no hubiera
tenido la posibilidad de formación y ejercicio de la profesión en diversas empresas e instituciones que desde
aquí quiero nombrar y a las que quiero agradecer: EPTISA, Estudios y Proyectos Técnicos Industriales S.A.,
donde di los primeros pasos en la computación; CIBECESA, Centro Ibérico de Cálculo Electrónico S.A., cuyo
equipo de proceso de datos dirigí varios años; DIGITAL
AG, de Zurich, donde adquirí una especialización en
ingeniería; IBM, tanto España, Madrid, como Europa,
París, donde tuve la oportunidad de ver, con una perspectiva amplia, todo lo concerniente a los lenguajes de
programación de alto nivel, en general, y a Fortran, en
particular; y a sus laboratorios, como el de Santa Teresa, en Estados Unidos, con el que mantuve una relación
estrecha, fructífera y duradera con muchos de sus especialistas; con la universidad española, en especial con la
Politécnica de Madrid, con la que he tenido la oportunidad de trabajar muchos años como docente e investigador y con la que siempre he mantenido una relación
mutua respetuosa, tanto con la institución como con sus
personas.
à
Referencias
Internet
n Primeras experiencias y utilización de Fortran
n Wikipendia, la enciclopedia libre.
n http://softwarecommunity.intel.com/ISN/Commu-
n Pausa en la estandarización: desde 1977 a 1990.
n http://ed-thelen.org/comp-hist/BRL61-0405.jpg
n http://www.columbia.edu/acis/history/612w116.html
Ron Bell, Miles Ellis, Bill Olle, David Hill y otros.
Miles Ellis, Lawrie Schonfelder.
n Implementación de los estándares: inclusión del
Fortran 2003.
Malcolm Cohen, NAG Ltd.
n Fortran hoy: aplicaciones actuales con Fortran.
Ron Bell, Michael Saunby.
n El futuro de Fortran: las versiones actual y futu-
ras de ISO.
David Muxworthy, John Reid.
n Cuestiones, discusión y cierre.
La reunión ha tenido un carácter muy popular y
el número de reservas para asistir ha llenado completamente el recinto de la celebración.
Un buen programador de FORTRAN puede
escribir código FORTRAN en cualquier lenguaje.
80
à
nity/en-us/Blogs/
n The Fortran Automatic Coding System for the
IBM 704 EDPM®, IBM, Octubre 1956.
n The IBM Watson Lab at Columbia University-A
History, Jean Ford Brennan.
n A History of Modern Computing, P.E. Ceruzzi,
The MIT Press, 2003.
n IBM’s Early Computers, C.J. Bashe y otros, The
MIT Press, 1989.
n Fortran Forum, ACM Press, SIGPLAN.
n Preliminary Report. Specifications for the IBM
Mathematical FORmula TRANslating System
FORTRAN, IBM Copyright, 1954, Santa Teresa
Lab.
A la hora de imprimir este artículo nos llega la noticia de la
muerte de uno de los más grandes informáticos de todos los
tiempos. La Compañía IBM, para la que trabajó casi toda su
vida profesional, ha comunidado que John Backus falleció el
pasado sábado 17 de marzo en Asland, Oregon, a los 82 años
de edad.
Descargar