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: Programmers 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 IBMs 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.