stringtranslate.com

fortran

Fortran ( / ˈ f ɔːr t r æ n / ; anteriormente FORTRAN ) es un lenguaje de programación imperativo compilado de tercera generación que es especialmente adecuado para la computación numérica y la computación científica .

Fortran fue desarrollado originalmente por IBM . [2] Se compiló correctamente por primera vez en 1958. [3] Los programas informáticos Fortran se han escrito para respaldar aplicaciones científicas y de ingeniería, como predicción numérica del tiempo , análisis de elementos finitos , dinámica de fluidos computacional , geofísica , física computacional , cristalografía y química computacional . Es un lenguaje popular para la informática de alto rendimiento [4] y se utiliza para programas que comparan y clasifican las supercomputadoras más rápidas del mundo . [5] [6]

La instalación de la supercomputadora IBM Blue Gene/P en 2007 en las instalaciones de computación Argonne Leadership Angela Yang ubicadas en el Laboratorio Nacional Argonne , en Lemont , Illinois , EE. UU .

Fortran ha evolucionado a través de numerosas versiones y dialectos. En 1966, el Instituto Nacional Estadounidense de Estándares (ANSI) desarrolló un estándar para Fortran porque los nuevos compiladores cambiarían ligeramente la sintaxis. [7] No obstante, las versiones sucesivas han agregado soporte para cadenas (Fortran 77), programación estructurada , programación de matrices , programación modular , programación genérica (Fortran 90), computación paralela ( Fortran 95 ), programación orientada a objetos (Fortran 2003) y programación concurrente (Fortran 2008).

Árbol genealógico de FORTRAN y COBOL

Desde agosto de 2021, Fortran se encuentra entre los quince principales lenguajes en el índice TIOBE , una medida de la popularidad de los lenguajes de programación. [8]

Nombrar

El primer manual de FORTRAN lo describe como un sistema de traducción de fórmulas y el nombre está impreso en minúsculas , Fortran . [9] : p.2  [10] Otras fuentes sugieren que el nombre significa Traductor de fórmulas, [11] o Traducción de fórmulas . [12] Las primeras computadoras IBM no admitían letras minúsculas y los nombres de las versiones del idioma hasta FORTRAN 77 generalmente se escribían completamente en mayúsculas [13] (FORTRAN 77 fue la última versión en la que el conjunto de caracteres de Fortran incluía solo letras mayúsculas [14] ). Los estándares oficiales del idioma para Fortran se han referido al idioma como "Fortran" con mayúsculas iniciales desde Fortran 90.

Orígenes

John Backus (1924-2007) propuso el proyecto FORTRAN en diciembre de 1953 y recibió el premio AM Turing en 1977.

A finales de 1953, John W. Backus presentó una propuesta a sus superiores en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para programar su computadora central IBM 704 . [10] : 69  El histórico equipo FORTRAN de Backus estaba formado por los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt , Robert Nelson, Irving Ziller, Harold Stern, Lois Haibt y David Sayre . [15] Sus conceptos incluían una entrada más fácil de ecuaciones en una computadora, una idea desarrollada por J. Halcombe Laning y demostrada en el sistema de Laning y Zierler de 1952. [16]

El sistema de codificación automática Fortran para IBM 704 (15 de octubre de 1956), el primer manual de referencia del programador para Fortran [9]

En noviembre de 1954 se completó un borrador de especificación para el sistema de traducción de fórmulas matemáticas de IBM. [10] : 71  El primer manual para FORTRAN apareció en octubre de 1956, [9] [10] : 72  y el primer compilador de FORTRAN se entregó en abril de 1957. [ 10] : 75  Fortran produjo código lo suficientemente eficiente como para que los programadores en lenguaje ensamblador aceptaran un reemplazo del lenguaje de programación de alto nivel . [17]

John Backus dijo durante una entrevista de 1979 con Think , la revista para empleados de IBM: "Gran parte de mi trabajo proviene de ser vago. No me gustaba escribir programas, y por eso, cuando estaba trabajando en el IBM 701 , escribía programas para informática". trayectorias de misiles, comencé a trabajar en un sistema de programación para facilitar la escritura de programas". [18]

El lenguaje fue ampliamente adoptado por los científicos para escribir programas numéricos intensivos, lo que alentó a los escritores de compiladores a producir compiladores que pudieran generar código más rápido y eficiente. La inclusión de un tipo de datos de números complejos en el lenguaje hizo que Fortran fuera especialmente adecuado para aplicaciones técnicas como la ingeniería eléctrica. [19]

En 1960, había versiones de FORTRAN disponibles para las computadoras IBM 709 , 650 , 1620 y 7090 . Significativamente, la creciente popularidad de FORTRAN estimuló a los fabricantes de computadoras competidores a proporcionar compiladores FORTRAN para sus máquinas, de modo que en 1963 existían más de 40 compiladores FORTRAN.

FORTRAN fue proporcionado para la computadora IBM 1401 por un innovador compilador de 63 fases que se ejecutaba completamente en su memoria central de sólo 8000 caracteres (seis bits). El compilador podría ejecutarse desde una cinta o desde una baraja de 2200 tarjetas; no utilizó más almacenamiento en cinta o disco. Mantuvo el programa en la memoria y cargó superposiciones que gradualmente lo transformaron, en su lugar, en forma ejecutable, como lo describe Haines. [20] Este artículo fue reimpreso y editado en ambas ediciones de Anatomía de un compilador [21] y en el manual de IBM "Fortran Especificaciones y procedimientos operativos, IBM 1401". [22] La forma ejecutable no era enteramente lenguaje de máquina ; más bien, se interpretaron aritmética de punto flotante, subíndices, entrada/salida y referencias de funciones, precediendo al código P Pascal de UCSD por dos décadas. GOTRAN , estaba disponible una versión simplificada e interpretada de FORTRAN I (con sólo 12 declaraciones, no 32) para la operación "cargar y listo" (al menos para la primera computadora IBM 1620 ). [23] El Fortran moderno, y casi todas las versiones posteriores, están completamente compilados, como ocurre con otros lenguajes de alto rendimiento.

El desarrollo de Fortran fue paralelo a la evolución inicial de la tecnología de compiladores , y muchos avances en la teoría y el diseño de compiladores fueron motivados específicamente por la necesidad de generar código eficiente para programas de Fortran.

FORTRAN

La versión inicial de FORTRAN para IBM 704 [9] contenía 32 declaraciones , que incluían:

La IFdeclaración aritmética recordaba (pero no se podía implementar fácilmente mediante) una instrucción de comparación de tres vías (CAS: Comparar acumulador con almacenamiento) disponible en el 704. La declaración proporcionaba la única manera de comparar números: probando su diferencia, con un asistente. riesgo de desbordamiento. Esta deficiencia fue posteriormente superada por funciones "lógicas" introducidas en FORTRAN IV.

La FREQUENCYdeclaración se usó originalmente (y opcionalmente) para dar probabilidades de rama para los tres casos de rama de la IFdeclaración aritmética. El primer compilador de FORTRAN utilizó esta ponderación para realizar en tiempo de compilación una simulación Monte Carlo del código generado, cuyos resultados se utilizaron para optimizar la ubicación de bloques básicos en la memoria, una optimización muy sofisticada para su época. La técnica Monte Carlo está documentada en el artículo de Backus et al. sobre esta implementación original, The FORTRAN Automatic Coding System :

La unidad fundamental de programa es el bloque básico ; un bloque básico es un tramo de programa que tiene un punto de entrada y un punto de salida. El propósito de la sección 4 es preparar para la sección 5 una tabla de predecesores (tabla PRED) que enumera los bloques básicos y enumera para cada bloque básico cada uno de los bloques básicos que pueden ser su predecesor inmediato en el flujo, junto con la frecuencia absoluta de cada uno de estos enlaces de bloque básicos. Esta tabla se obtiene ejecutando el programa una vez en modo Monte-Carlo, en el que el resultado de las transferencias condicionales que surgen de declaraciones de tipo IF y GO TO calculados se determina mediante un generador de números aleatorios adecuadamente ponderados de acuerdo con cualquier declaración de FRECUENCIA que se haya proporcionado. . [15]

El primer compilador de FORTRAN proporcionó información de diagnóstico deteniendo el programa cuando se encontraba un error y generando un código de error en su consola. El programador podría buscar ese código en una tabla de mensajes de error en el manual del operador, proporcionándole una breve descripción del problema. [9] : p.19–20  [24] Posteriormente, se incorporó una subrutina de manejo de errores para manejar errores del usuario como la división por cero, desarrollada por la NASA, [25] , informando a los usuarios qué línea de código contenía el error.

Diseño fijo y tarjetas perforadas.

Código FORTRAN en una tarjeta perforada , que muestra los usos especializados de las columnas 1 a 5, 6 y 73 a 80
Una reproducción de un formulario de codificación FORTRAN, impreso en papel y destinado a ser utilizado por programadores para preparar programas para perforar tarjetas por parte de operadores de teclado . Ahora obsoleto.

Antes del desarrollo de archivos de disco, editores de texto y terminales, los programas se ingresaban con mayor frecuencia en un teclado perforado en tarjetas perforadas de 80 columnas , una línea por tarjeta. La baraja de cartas resultante se introduciría en un lector de tarjetas para su compilación. Los códigos de tarjetas perforadas no incluían letras minúsculas ni muchos caracteres especiales, y se ofrecieron versiones especiales de la perforadora IBM 026 que imprimirían correctamente los caracteres especiales reutilizados utilizados en FORTRAN.

Como reflejo de la práctica de entrada con tarjetas perforadas, los programas Fortran se escribieron originalmente en un formato de columnas fijas, con las primeras 72 columnas leídas en doce palabras de 36 bits.

Una letra "C" en la columna 1 provocó que el compilador tratara toda la tarjeta como un comentario y el compilador la ignorara. De lo contrario, las columnas de la tarjeta se dividieron en cuatro campos:

Por lo tanto, las columnas 73 a 80 podrían usarse para información de identificación, como marcar un número de secuencia o texto, que podría usarse para reordenar las tarjetas si se cayera una pila de tarjetas; aunque en la práctica esto estaba reservado para programas de producción estables. Se podría utilizar un IBM 519 para copiar una plataforma de programa y agregar números de secuencia. Algunos de los primeros compiladores, por ejemplo, los IBM 650, tenían restricciones adicionales debido a limitaciones en sus lectores de tarjetas. [27] Las pulsaciones de teclas se podían programar para pasar a la columna 7 y saltar después de la columna 72. Los compiladores posteriores relajaron la mayoría de las restricciones de formato fijo y el requisito se eliminó en el estándar Fortran 90.

Dentro del campo de declaración, los espacios en blanco se ignoraron fuera de un literal de texto. Esto permitió omitir espacios entre tokens por brevedad o incluir espacios dentro de los identificadores para mayor claridad. Por ejemplo, AVG OF Xera un identificador válido, equivalente a AVGOFX, y era una declaración válida, equivalente a porque el cero en la columna 6 se trata como si fuera un espacio (!), mientras que , en cambio, era la asignación de 1,101 a una variable llamada . Tenga en cuenta la ligera diferencia visual entre una coma y un punto.101010DO101I=1,10110101 DO 101 I = 1, 101101010DO101I=1.10110101 DO101I = 1.101DO101I

Las cadenas Hollerith , originalmente permitidas sólo en declaraciones FORMAT y DATA, tenían como prefijo un recuento de caracteres y la letra H (por ejemplo, 26HTHIS IS ALPHANUMERIC DATA.), lo que permitía conservar espacios en blanco dentro de la cadena de caracteres. Los errores de cálculo eran un problema.

Evolución

FORTRANII

FORTRAN II de IBM apareció en 1958. La principal mejora fue admitir la programación de procedimientos al permitir subrutinas y funciones escritas por el usuario que devolvían valores con parámetros pasados ​​por referencia . La declaración COMMON proporcionó una forma para que las subrutinas accedieran a variables comunes (o globales ). Se introdujeron seis nuevas declaraciones: [28]

Durante los años siguientes, FORTRAN II agregó soporte para los tipos de datos DOUBLE PRECISIONy COMPLEX.

Los primeros compiladores de FORTRAN no admitían recursividad en las subrutinas. Las primeras arquitecturas informáticas no soportaban el concepto de pila, y cuando admitían directamente llamadas a subrutinas, la ubicación de retorno a menudo se almacenaba en una ubicación fija adyacente al código de subrutina (por ejemplo, IBM 1130 ) o a un registro de máquina específico ( IBM 360 y siguientes). ), que solo permite la recursividad si el software mantiene una pila y la dirección de retorno se almacena en la pila antes de realizar la llamada y se restaura después de que regresa la llamada. Aunque no se especifica en FORTRAN 77, muchos compiladores F77 admitían la recursividad como opción, y los mainframes Burroughs , diseñados con la recursividad incorporada, lo hacían de forma predeterminada. Se convirtió en un estándar en Fortran 90 mediante la nueva palabra clave RECURSIVE. [29]

Programa FORTRAN II sencillo

Este programa, para la fórmula de Heron , lee datos en un carrete de cinta que contiene tres números enteros de 5 dígitos A, B y C como entrada. No hay declaraciones de "tipo" disponibles: las variables cuyo nombre comienza con I, J, K, L, M o N son de "punto fijo" (es decir, enteros); en caso contrario, son de punto flotante. Dado que en este ejemplo se deben procesar números enteros, los nombres de las variables comienzan con la letra "I". El nombre de una variable debe comenzar con una letra y puede continuar tanto con letras como con dígitos, hasta un límite de seis caracteres en FORTRAN II. Si A, B y C no pueden representar los lados de un triángulo en geometría plana, entonces la ejecución del programa finalizará con un código de error de "STOP 1". De lo contrario, se imprimirá una línea de salida que muestra los valores de entrada para A, B y C, seguida del ÁREA calculada del triángulo como un número de punto flotante que ocupa diez espacios a lo largo de la línea de salida y muestra 2 dígitos después del punto decimal. , el .2 en F10.2 de la declaración FORMAT con etiqueta 601.

C ÁREA DE UN TRIÁNGULO CON FUNCIÓN DE RAÍZ CUADRADA ESTÁNDAR ENTRADA C - UNIDAD DE LECTOR DE CINTA 5, ENTRADA DE ENTEROS SALIDA C - UNIDAD DE IMPRESORA DE LÍNEA 6, SALIDA REAL C ERROR DE ENTRADA PANTALLA ERROR CÓDIGO DE SALIDA 1 EN LISTA DE CONTROL DE TRABAJOS LEER CINTA DE ENTRADA 5 , 501 , IA , IB , IC  501 FORMATO ( 3 I5 ) C IA, IB E IC NO PUEDEN SER NEGATIVOS O CERO C ADEMÁS, LA SUMA DE DOS LADOS DE UN TRIÁNGULO C DEBE SER MAYOR QUE EL TERCER LADO, POR LO QUE COMPROBAREMOS QUE ESO, TAMBIÉN SI ( IA ) 777 , 777 , 701  701 SI ( IB ) 777 , 777 , 702  702 SI ( IC ) 777 , 777 , 703  703 SI ( IA + IB - IC ) 777 , 777 , 704  704 SI ( IA + IC - IB ) 777 , 777 , 705  705 IF ( IB + IC - IA ) 777 , 777 , 799  777 STOP 1 C UTILIZANDO LA FÓRMULA DE HERON CALCULAMOS EL ÁREA C DEL TRIÁNGULO  799 S = FLOATF ( IA + IB + IC ) / 2.0 ÁREA = SQRTF ( S * ( S - FLOATF ( IA )) * ( S - FLOATF ( IB )) * + ( S - FLOATF ( IC ))) ESCRIBIR CINTA DE SALIDA 6 , 601 , IA , IB , IC , FORMATO DE ÁREA  601 ( 4 H A = , I5 , 5 H B                                                                                    = , I5 , 5 H C = , I5 , 8 H ÁREA = , F10 . 2 , + 13 H UNIDADES CUADRADOS ) PARADA FINAL             

FORTRANIII

IBM también desarrolló un FORTRAN III en 1958 que permitía el código ensamblador en línea , entre otras características; sin embargo, esta versión nunca se lanzó como producto. Al igual que el FORTRAN 704 y el FORTRAN II, el FORTRAN III incluía características dependientes de la máquina que hacían que el código escrito en él no fuera portátil de una máquina a otra. [10] : 76  Las primeras versiones de FORTRAN proporcionadas por otros proveedores padecían la misma desventaja.

FORTRAN IV

IBM inició el desarrollo de FORTRAN IV a partir de 1961, como resultado de las demandas de los clientes. FORTRAN IV eliminó las características dependientes de la máquina de FORTRAN II (como READ INPUT TAPE), al tiempo que agregó nuevas características como un LOGICALtipo de datos , expresiones booleanas lógicas y la declaración IF lógica como alternativa a la declaración IF aritmética. FORTRAN IV finalmente se lanzó en 1962, primero para la computadora IBM 7030 ("Stretch"), seguida de versiones para IBM 7090 , IBM 7094 y más tarde para IBM 1401 en 1966. [30]

En 1965, se suponía que FORTRAN IV cumplía con el estándar desarrollado por el Grupo de Trabajo FORTRAN X3.4.3 de la Asociación Estadounidense de Estándares . [31]

Entre 1966 y 1968, IBM ofreció varios compiladores de FORTRAN IV para su System/360 , cada uno de ellos nombrado con letras que indicaban la cantidad mínima de memoria que necesitaba el compilador para ejecutarse. [32] Las letras (F, G, H) coincidían con los códigos utilizados con los números de modelo System/360 para indicar el tamaño de la memoria, siendo cada incremento de letra un factor de dos mayor: [33] : p. 5 

Digital Equipment Corporation mantuvo DECSYSTEM-10 Fortran IV (F40) para PDP-10 de 1967 a 1975. [34] También había compiladores disponibles para la serie UNIVAC 1100 y los sistemas Control Data de las series 6000 y 7000 . [35]

Aproximadamente en este momento, FORTRAN IV había comenzado a convertirse en una importante herramienta educativa y se crearon implementaciones como WATFOR y WATFIV de la Universidad de Waterloo para simplificar los complejos procesos de compilación y vinculación de compiladores anteriores.

Descripción general de la programación y los compiladores de FORTRAN IV

En el entorno de programación FORTRAN IV de la época, excepto el utilizado en los sistemas Control Data Corporation (CDC), solo se colocaba una instrucción por línea. La versión CDC permitía múltiples instrucciones por línea si estaban separadas por un carácter $ (dólar). La hoja FORTRAN se dividió en cuatro zonas:

Se podrían asignar números de orden del 1 al 99.999 en las columnas 1 a 5 para identificar instrucciones específicas, normalmente en el caso de bucles o saltos de secuencia. Se ignoraron los espacios en blanco dentro de estas columnas. La columna 1 también podría contener una "C", lo que indica que todo el contenido de las columnas 1 a 80 era un comentario, reproducido palabra por palabra durante la compilación sin dar lugar a ninguna instrucción real. Se las conocía como "tarjetas de comentarios".

La "columna de continuación" (Columna 6) podría contener un dígito entre 1 y 9 (excluido el 0) para indicar que la fórmula o declaración iniciada en una tarjeta anterior continuó en la actual. Se pueden utilizar hasta 19 tarjetas de continuación y los dígitos de estas tarjetas pueden estar en cualquier orden.

En el campo variable (Columnas 7 a 72) se escribían las instrucciones simbólicas del programa, con la opción de espaciar instrucciones utilizando espacios en blanco, los cuales eran ignorados por el compilador. Para evitar confusión entre la letra O y el número cero, el número CERO se representó con un solo 0, y la letra O con una O barrada (Ø).

La zona de identificación, ignorada por el compilador, se utilizó para comentarios breves o para numerar tarjetas de programa. Esto era especialmente útil si se alteraba accidentalmente el orden natural de las cartas.

Dos compiladores de la época, IBM "G" y UNIVAC, permitían escribir comentarios en la misma línea que las instrucciones, separados por un carácter especial: "master space": V (perforaciones 7 y 8) para UNIVAC y perforaciones 12/11 /0/7/8/9 (FF hexadecimal) para IBM. Estos comentarios no debían insertarse en medio de las tarjetas de continuación. [34] [35]

FORTRAN 66

Quizás el desarrollo más significativo en la historia temprana de FORTRAN fue la decisión de la Asociación Estadounidense de Estándares (ahora Instituto Nacional Estadounidense de Estándares (ANSI)) de formar un comité patrocinado por la Asociación de Fabricantes de Equipos Empresariales (BEMA) para desarrollar un Fortran estándar estadounidense . Los dos estándares resultantes, aprobados en marzo de 1966, definieron dos lenguajes, FORTRAN (basado en FORTRAN IV, que había servido como estándar de facto) y FORTRAN Básico (basado en FORTRAN II, pero despojado de sus características dependientes de la máquina). El FORTRAN definido por el primer estándar, oficialmente denominado X3.9-1966, pasó a ser conocido como FORTRAN 66 (aunque muchos continuaron llamándolo FORTRAN IV, el lenguaje en el que se basó en gran medida el estándar). FORTRAN 66 se convirtió efectivamente en la primera versión estándar de la industria de FORTRAN. FORTRAN 66 incluido:

FORTRAN 77

Programa FORTRAN-77 con salida de compilador, escrito en un CDC 175 en la Universidad RWTH Aachen , Alemania, en 1987
4.3 BSD para Digital Equipment Corporation (DEC) VAX , que muestra el manual para el compilador FORTRAN 77 (f77)

Después del lanzamiento del estándar FORTRAN 66, los proveedores de compiladores introdujeron varias extensiones al estándar Fortran , lo que llevó al comité ANSI X3J3 en 1969 a comenzar a trabajar en la revisión del estándar de 1966, bajo el patrocinio de CBEMA , la Asociación de Fabricantes de Equipos Comerciales de Computadoras (anteriormente BEMA). Los borradores finales de esta norma revisada circularon en 1977, lo que llevó a la aprobación formal de la nueva norma FORTRAN en abril de 1978. La nueva norma, llamada FORTRAN 77 y oficialmente denominada X3.9-1978, agregó una serie de características importantes para abordar muchas de las Deficiencias de FORTRAN 66:

En esta revisión del estándar, se eliminaron o modificaron una serie de características de una manera que podrían invalidar programas que anteriormente cumplían con el estándar. (La eliminación era la única alternativa permitida a X3J3 en ese momento, ya que el concepto de " obsoleto " aún no estaba disponible para los estándares ANSI). Mientras que la mayoría de los 24 elementos en la lista de conflictos (consulte el Apéndice A2 de X3.9-1978) Abordaron lagunas jurídicas o casos patológicos permitidos por el estándar anterior pero que rara vez se usaban, se eliminaron deliberadamente una pequeña cantidad de capacidades específicas, tales como:

Transición al estándar ANSI Fortran

El desarrollo de un estándar revisado para suceder a FORTRAN 77 se retrasaría repetidamente a medida que el proceso de estandarización luchaba por mantenerse al día con los rápidos cambios en las prácticas de informática y programación. Mientras tanto, como "FORTRAN estándar" durante casi quince años, FORTRAN 77 se convertiría en el dialecto históricamente más importante.

Una extensión práctica importante de FORTRAN 77 fue el lanzamiento de MIL-STD-1753 en 1978. [36] Esta especificación, desarrollada por el Departamento de Defensa de EE. UU. , estandarizó una serie de características implementadas por la mayoría de los compiladores de FORTRAN 77 pero no incluidas en ANSI. Estándar FORTRAN 77. Estas características eventualmente se incorporarían al estándar Fortran 90.

El estándar IEEE 1003.9 POSIX , lanzado en 1991, proporcionó un medio sencillo para que los programadores de FORTRAN 77 emitieran llamadas al sistema POSIX. [37] Se definieron más de 100 llamadas en el documento, lo que permite el acceso a control de procesos compatible con POSIX, manejo de señales, control de sistemas de archivos, control de dispositivos, señalización de procedimientos y transmisión de E/S de manera portátil.

Fortran 90

El muy retrasado sucesor de FORTRAN 77, conocido informalmente como Fortran 90 (y antes de eso, Fortran 8X ), finalmente se lanzó como estándar ISO/IEC 1539:1991 en 1991 y como estándar ANSI en 1992. Además de cambiar el estándar oficial Ortografía de FORTRAN a Fortran, esta revisión importante agregó muchas características nuevas para reflejar los cambios significativos en la práctica de programación que habían evolucionado desde el estándar de 1978:

Obsolescencia y eliminaciones

A diferencia de la revisión anterior, Fortran 90 no eliminó ninguna característica. [38] Cualquier programa FORTRAN 77 que cumpliera con el estándar también cumpliera con el estándar según Fortran 90, y cualquiera de los estándares debería haber sido utilizable para definir su comportamiento.

Un pequeño conjunto de funciones se identificaron como "obsoletas" y se esperaba que se eliminaran en un estándar futuro. Todas las funcionalidades de estas funciones de las primeras versiones se pueden realizar mediante funciones más nuevas de Fortran. Algunos se conservan para simplificar la migración de programas antiguos, pero muchos se eliminaron en Fortran 95.

"¡Hola Mundo!" ejemplo

programa helloworld print * , "¡Hola mundo!" fin del programa hola mundo   

Fortran 95

Fortran 95 , publicado oficialmente como ISO/IEC 1539-1:1997, fue una revisión menor, principalmente para resolver algunos problemas pendientes del estándar Fortran 90. Sin embargo, Fortran 95 también agregó una serie de extensiones, en particular de la especificación Fortran de alto rendimiento :

Se ampliaron varias funciones intrínsecas (por ejemplo, dimse agregó un argumento a las maxlocintrínsecas).

Varias características que en Fortran 90 se consideraban "obsoletas" se eliminaron de Fortran 95:

Un complemento importante de Fortran 95 fue el informe técnico ISO TR-15581: Enhanced Data Type Facilities , conocido informalmente como Allocatable TR. Esta especificación definía el uso mejorado de ALLOCATABLEmatrices, antes de la disponibilidad de compiladores Fortran totalmente compatibles con Fortran 2003. Dichos usos incluyen ALLOCATABLEmatrices como componentes de tipo derivado, en listas de argumentos ficticios de procedimientos y como valores de retorno de funciones. ( ALLOCATABLELas matrices son preferibles a las POINTERbasadas en - porque ALLOCATABLEFortran 95 garantiza que las matrices se desasignarán automáticamente cuando salgan del alcance, lo que elimina la posibilidad de pérdida de memoria . Además, los elementos de las matrices asignables son contiguos y el alias no es un problema para optimización de referencias de matrices, lo que permite a los compiladores generar código más rápido que en el caso de los punteros. [39] )

Otro complemento importante de Fortran 95 fue el informe técnico ISO TR-15580: Manejo de excepciones de punto flotante , conocido informalmente como IEEE TR. Esta especificación define el soporte para la aritmética de punto flotante IEEE y el manejo de excepciones de punto flotante .

Compilación condicional y cadenas de longitud variable.

Además del "lenguaje base" obligatorio (definido en ISO/IEC 1539-1: 1997), el lenguaje Fortran 95 también incluye dos módulos opcionales:

que, en conjunto, componen la Norma Internacional de varias partes (ISO/IEC 1539).

Según los desarrolladores de estándares, "las partes opcionales describen características autónomas que han sido solicitadas por un grupo sustancial de usuarios y/o implementadores, pero que no se consideran de suficiente generalidad como para ser requeridas en todos los estándares. Compiladores de Fortran." Sin embargo, si un Fortran que cumple con la norma proporciona tales opciones, entonces "deben proporcionarse de acuerdo con la descripción de esas instalaciones en la Parte correspondiente de la Norma".

Fortran moderno

El lenguaje definido por los estándares del siglo XXI, en particular debido a su incorporación de soporte de programación orientada a objetos y posteriormente Coarray Fortran , a menudo se denomina "Fortan moderno", y el término se utiliza cada vez más en la literatura. [40]

Fortrán 2003

Fortran 2003, publicado oficialmente como ISO/IEC 1539-1:2004, es una revisión importante que introduce muchas características nuevas. [41] Un resumen completo de las nuevas características de Fortran 2003 está disponible en el sitio web oficial del Grupo de Trabajo de Fortran ( ISO/IEC JTC1/SC22 /WG5). [42]

Según ese artículo, las principales mejoras para esta revisión incluyen:

Un complemento importante de Fortran 2003 fue el informe técnico ISO TR-19767: Instalaciones de módulos mejoradas en Fortran. Este informe proporcionó submódulos que hacen que los módulos Fortran sean más similares a los módulos Modula-2 . Son similares a las subunidades infantiles privadas de Ada . Esto permite que la especificación y la implementación de un módulo se expresen en unidades de programa separadas, lo que mejora el empaquetado de bibliotecas grandes, permite la preservación de secretos comerciales mientras se publican interfaces definitivas y evita cascadas de compilación.

Fortrán 2008

ISO/IEC 1539-1:2010, conocida informalmente como Fortran 2008, fue aprobada en septiembre de 2010. [43] [44] Al igual que con Fortran 95, esta es una actualización menor, que incorpora aclaraciones y correcciones a Fortran 2003, además de introducir algunas capacidades nuevas. Las nuevas capacidades incluyen:

El Borrador Final de la Norma Internacional (FDIS) está disponible como documento N1830. [45]

Un suplemento de Fortran 2008 es la Especificación Técnica (TS) 29113 de la Organización Internacional de Normalización (ISO) sobre mayor interoperabilidad de Fortran con C , [46] [47] que se presentó a ISO en mayo de 2012 para su aprobación. La especificación agrega soporte para acceder al descriptor de matriz desde C y permite ignorar el tipo y rango de los argumentos.

Fortrán 2018

La última revisión del lenguaje (Fortran 2018) se denominaba anteriormente Fortran 2015. [48] Es una revisión importante y se publicó el 28 de noviembre de 2018. [49]

Fortran 2018 incorpora dos Especificaciones Técnicas publicadas anteriormente:

Los cambios adicionales y las nuevas características incluyen compatibilidad con ISO/IEC/IEEE 60559:2011 (la versión del estándar de punto flotante IEEE anterior a la última revisión menor IEEE 754–2019), entrada/salida hexadecimal, mejoras IMPLICIT NONE y otros cambios. [52] [53] [54] [55]

Fortrán 2023

Fortran 2023 (ISO/IEC 1539-1:2023) se publicó en noviembre de 2023 y se puede adquirir en ISO. [56]

Características del idioma

En el artículo relacionado, Funciones del lenguaje Fortran 95 se incluye una descripción completa de las características del lenguaje Fortran 95 . Las versiones lingüísticas definidas por estándares posteriores a menudo se denominan colectivamente "Fortran moderno" y se describen en la literatura.

Ciencia e Ingenieria

Simulación magnetohidrodinámica relativista general de Fortran de la acreción de agujeros negros utilizando el código BHAC con malla adaptativa cartesiana
Flujo alrededor de un cilindro calculado en Fortran con OpenCL (Universidad de Bristol, Reino Unido)
Velocidad y temperatura de la superficie del mar en los océanos, calculadas con el código NEMO Fortran (Nucleus for European Modelling of the Ocean, https://www.nemo-ocean.eu) en el Centro de Supercomputación de Barcelona (2020)

Aunque un artículo de 1968 escrito por los autores de BASIC ya describía FORTRAN como "anticuado", [57] se han escrito programas en Fortran durante muchas décadas y existe una gran cantidad de software Fortran en uso diario en todas las comunidades científicas y de ingeniería. . [58] Jay Pasachoff escribió en 1984 que "los estudiantes de física y astronomía simplemente tienen que aprender FORTRAN. Existe tanto en FORTRAN que parece poco probable que los científicos cambien a Pascal , Modula-2 o lo que sea". [59] En 1993, Cecil E. Leith llamó a FORTRAN la "lengua materna de la informática científica", y añadió que su sustitución por cualquier otro idioma posible "puede seguir siendo una esperanza desesperada". [60]

Es el lenguaje principal para algunas de las tareas de supercomputación más intensivas , como en astronomía , modelado climático , química computacional, economía computacional , dinámica de fluidos computacional , física computacional , análisis de datos, [61] modelado hidrológico , álgebra lineal numérica y bibliotecas numéricas ( LAPACK , IMSL y NAG ), optimización , simulación satelital, ingeniería estructural y predicción meteorológica . [62] Muchos de los puntos de referencia de punto flotante para medir el rendimiento de los nuevos procesadores de computadora, como los componentes de punto flotante de los puntos de referencia SPEC (por ejemplo, CFP2006, CFP2017) están escritos en Fortran. Los algoritmos matemáticos están bien documentados en Numerical Recipes .

Aparte de esto, los códigos más modernos en ciencia computacional generalmente utilizan grandes bibliotecas de programas, como METIS para partición de gráficos, PETSc o Trilinos para capacidades de álgebra lineal, deal.II o FEniCS para soporte de mallas y elementos finitos, y otras bibliotecas genéricas. Desde principios de la década de 2000, muchas de las bibliotecas de soporte más utilizadas también se han implementado en C y, más recientemente, en C++ . Por otro lado, lenguajes de alto nivel como Wolfram Language , MATLAB , Python y R se han vuelto populares en áreas particulares de la ciencia computacional. En consecuencia, una fracción cada vez mayor de programas científicos también se escribe en lenguajes de programación de alto nivel. Por esta razón, se agregaron funciones para la interoperación con C a Fortran 2003 y se mejoraron mediante la especificación técnica ISO/IEC 29113, que se incorporó a Fortran 2018 para permitir una interoperación más flexible con otros lenguajes de programación.

El software para las sondas Voyager 1 y Voyager 2 de la NASA se escribió originalmente en FORTRAN 5 y luego se transfirió a FORTRAN 77. Al 25 de septiembre de 2013 , parte del software todavía está escrito en Fortran y parte se ha portado a C. [63]

Portabilidad

La portabilidad fue un problema en los primeros días porque no había ningún estándar acordado (ni siquiera el manual de referencia de IBM) y las empresas de informática competían por diferenciar sus ofertas de las demás proporcionando características incompatibles. Los estándares han mejorado la portabilidad. El estándar de 1966 proporcionó una sintaxis y una semántica de referencia, pero los proveedores continuaron proporcionando extensiones incompatibles. Aunque los programadores cuidadosos se estaban dando cuenta de que el uso de extensiones incompatibles causaba costosos problemas de portabilidad y, por lo tanto, usaban programas como The PFORT Verifier, [64] [65] no fue hasta después del estándar de 1977, cuando la Oficina Nacional de Estándares ( ahora NIST ) publicó FIPS PUB 69 , que los procesadores comprados por el gobierno de EE. UU. debían diagnosticar extensiones del estándar. En lugar de ofrecer dos procesadores, prácticamente todos los compiladores tenían al menos una opción para diagnosticar extensiones. [66] [67]

Las extensiones incompatibles no fueron el único problema de portabilidad. Para los cálculos numéricos es importante tener en cuenta las características de la aritmética. Esto fue abordado por Fox et al. en el contexto de la norma de 1966 por la biblioteca PORT . [65] Las ideas allí contenidas se utilizaron ampliamente y finalmente se incorporaron a la norma de 1990 a través de funciones de investigación intrínsecas. La adopción generalizada (ahora casi universal) del estándar IEEE 754 para aritmética binaria de punto flotante ha eliminado esencialmente este problema.

El acceso al entorno informático (por ejemplo, la línea de comandos del programa, las variables de entorno, la explicación textual de las condiciones de error) siguió siendo un problema hasta que fue abordado por el estándar de 2003.

Grandes colecciones de software de biblioteca que podrían describirse como vagamente relacionadas con la ingeniería y los cálculos científicos, como las bibliotecas de gráficos, se han escrito en C y, por lo tanto, el acceso a ellas presentaba un problema de portabilidad. Esto se ha solucionado mediante la incorporación de la interoperabilidad de C en el estándar de 2003.

Ahora es posible (y relativamente fácil) escribir un programa completamente portátil en Fortran, incluso sin recurrir a un preprocesador .

Variantes obsoletas

Hasta que se desarrolló el estándar Fortran 66, cada compilador admitía su propia variante de Fortran. Algunos eran más divergentes que otros de la corriente principal.

El primer compilador de Fortran estableció un alto estándar de eficiencia para el código compilado. Este objetivo dificultaba la creación de un compilador, por lo que normalmente lo hacían los fabricantes de computadoras para respaldar las ventas de hardware. Esto dejó un nicho importante: compiladores que eran rápidos y proporcionaban buenos diagnósticos para el programador (a menudo un estudiante). Los ejemplos incluyen Watfor, Watfiv, PUFFT y, en menor escala, FORGO, Wits Fortran y Kingston Fortran 2.

Fortran 5 fue comercializado por Data General Corp desde principios de los años 1970 hasta principios de los 1980, para la línea de computadoras Nova , Eclipse y MV . Tenía un compilador optimizador que era bastante bueno para las minicomputadoras de su época. El lenguaje se parece más a FORTRAN 66.

FORTRAN V fue distribuido por Control Data Corporation en 1968 para la serie CDC 6600 . El lenguaje se basó en FORTRAN IV. [68]

Univac también ofreció un compilador para la serie 1100 conocido como FORTRAN V. Un derivado de Univac Fortran V fue Athena FORTRAN.

Variantes específicas producidas por los proveedores de computadoras científicas de alto rendimiento (por ejemplo, Burroughs , Control Data Corporation (CDC), Cray , Honeywell , IBM , Texas Instruments y UNIVAC ) agregaron extensiones a Fortran para aprovechar características especiales del hardware, como la instrucción. caché , canalizaciones de CPU y matrices vectoriales. Por ejemplo, uno de los compiladores FORTRAN de IBM ( H Extended IUP ) tenía un nivel de optimización que reordenaba las instrucciones del código de máquina para mantener ocupadas varias unidades aritméticas internas simultáneamente. Otro ejemplo es CFD , una variante especial de FORTRAN diseñada específicamente para la supercomputadora ILLIAC IV , que se ejecuta en el Centro de Investigación Ames de la NASA . IBM Research Labs también desarrolló un lenguaje extendido basado en FORTRAN llamado VECTRAN para procesar vectores y matrices.

Fortran orientado a objetos era una extensión de Fortran orientada a objetos, en la que los elementos de datos se pueden agrupar en objetos, que se pueden crear instancias y ejecutar en paralelo. Estaba disponible para Sun, Iris, iPSC y nCUBE, pero ya no es compatible.

Estas extensiones específicas de máquinas han desaparecido con el tiempo o se han incorporado elementos a los estándares principales. La principal extensión restante es OpenMP , que es una extensión multiplataforma para programación de memoria compartida. Una nueva extensión, Coarray Fortran, está destinada a admitir la programación paralela.

FOR TRANSIT era el nombre de una versión reducida del lenguaje FORTRAN IBM 704, que se implementó para el IBM 650, utilizando un programa de traducción desarrollado en Carnegie a finales de los años cincuenta. [69] El siguiente comentario aparece en el Manual de referencia de IBM ( FOR TRANSIT Automatic Coding System C28-4038, Copyright 1957, 1959 de IBM):

El sistema FORTRAN fue diseñado para una máquina más compleja que la 650 y, en consecuencia, algunas de las 32 declaraciones que se encuentran en el Manual de referencia del programador de FORTRAN no son aceptables para el sistema FOR TRANSIT. Además, se han agregado ciertas restricciones al idioma FORTRAN. Sin embargo, ninguna de estas restricciones hace que un programa fuente escrito para FOR TRANSIT sea incompatible con el sistema FORTRAN para el 704.

Las declaraciones permitidas fueron:

Se pueden utilizar hasta diez subrutinas en un programa.

Las declaraciones FOR TRÁNSITO se limitaron únicamente a las columnas 7 a 56. Se utilizaron tarjetas perforadas para la entrada y salida en el IBM 650. Se requirieron tres pasadas para traducir el código fuente al lenguaje "IT", luego para compilar las declaraciones de TI en lenguaje ensamblador SOAP y, finalmente, para producir el programa objeto, que luego podría cargarse en la máquina para ejecutar el programa (usando tarjetas perforadas para la entrada de datos y enviando los resultados en tarjetas perforadas).

Existían dos versiones para los 650 con un tambor de memoria de 2000 palabras: FOR TRANSIT I (S) y FOR TRANSIT II, ​​esta última para máquinas equipadas con registros indexadores y aritmética decimal (biquinaria ) automática de punto flotante . El Apéndice A del manual incluía diagramas de cableado para el panel de control perforador/lector de tarjetas IBM 533 .

Lenguajes basados ​​en Fortran

Antes de FORTRAN 77, se usaban comúnmente varios preprocesadores para proporcionar un lenguaje más amigable, con la ventaja de que el código preprocesado podía compilarse en cualquier máquina con un compilador FORTRAN estándar. Estos preprocesadores normalmente admitirían programación estructurada , nombres de variables de más de seis caracteres, tipos de datos adicionales, compilación condicional e incluso capacidades de macro . Los preprocesadores populares incluían EFL , FLECS, iftran , MORTRAN , SFtran, S-Fortran, Ratfor y Ratfiv . Ratfor y Ratfiv, por ejemplo, implementaron un lenguaje similar a C , generando código preprocesado en el estándar FORTRAN 66. A pesar de los avances en el lenguaje Fortran, los preprocesadores continúan utilizándose para la compilación condicional y la sustitución de macros.

Una de las primeras versiones de FORTRAN, introducida en los años 60, se usaba popularmente en colegios y universidades. Desarrollado, respaldado y distribuido por la Universidad de Waterloo , WATFOR se basó en gran medida en FORTRAN IV. Un estudiante que use WATFOR podría enviar su trabajo FORTRAN por lotes y, si no hubiera errores de sintaxis, el programa pasaría directamente a la ejecución. Esta simplificación permitió a los estudiantes concentrarse en la sintaxis y la semántica de su programa, o en el flujo lógico de ejecución, en lugar de lidiar con el lenguaje de control de trabajos (JCL) de envío, los procesos sucesivos de compilación/edición/ejecución u otras complejidades del mainframe. /entorno de minicomputadora. Una desventaja de este entorno simplificado era que WATFOR no era una buena opción para los programadores que necesitaban capacidades ampliadas de su(s) procesador(es) host; por ejemplo, WATFOR normalmente tenía acceso muy limitado a dispositivos de E/S. WATFIV y sus versiones posteriores sucedieron a WATFOR .

programa ; s = 0 yo = 1 , norte ; s = s + 1 ; detenerme ; _ s = 's' Detener      

(programación de línea)

LRLTRAN fue desarrollado en el Lawrence Radiation Laboratory para brindar soporte para aritmética vectorial y almacenamiento dinámico, entre otras extensiones para respaldar la programación de sistemas. La distribución incluía el sistema operativo LTSS.

El estándar Fortran-95 incluye una Parte 3 opcional que define una capacidad de compilación condicional opcional . Esta capacidad a menudo se denomina "CoCo".

Muchos compiladores de Fortran han integrado subconjuntos del preprocesador de C en sus sistemas.

SIMSCRIPT es un preprocesador Fortran de aplicación específica para modelar y simular grandes sistemas discretos.

El lenguaje de programación F fue diseñado para ser un subconjunto limpio de Fortran 95 que intentaba eliminar las características redundantes, no estructuradas y obsoletas de Fortran, como la EQUIVALENCEdeclaración. F conserva las características de matriz agregadas en Fortran 90 y elimina las declaraciones de control que quedaron obsoletas debido a las construcciones de programación estructuradas agregadas tanto a FORTRAN 77 como a Fortran 90. Sus creadores describen a F como "un lenguaje de programación de matrices compilado, estructurado y especialmente adecuado". a la educación y a la informática científica". [70] Essential Lahey Fortran 90 (ELF90) era un subconjunto similar.

Lahey y Fujitsu se asociaron para crear Fortran para Microsoft .NET Framework . [71] Silverfrost FTN95 también es capaz de crear código .NET. [72]

Ejemplos de código

El siguiente programa ilustra la asignación de memoria dinámica y las operaciones basadas en matrices, dos características introducidas con Fortran 90. Particularmente notable es la ausencia de DObucles y declaraciones IF/ THENal manipular la matriz; Las operaciones matemáticas se aplican a la matriz en su conjunto. También es evidente el uso de nombres de variables descriptivos y formato de código general que se ajustan al estilo de programación contemporáneo. Este ejemplo calcula un promedio de los datos ingresados ​​de forma interactiva.

promedio del programa ! ¡Lea algunos números y tome el promedio ! Tal como está escrito, si no hay puntos de datos, se devuelve un promedio de cero . Si bien este puede no ser el comportamiento deseado, mantiene este ejemplo simple.   implícito ninguno real , dimensión (:), asignable :: puntos entero :: número_de_puntos real :: puntos_promedio , promedio_positivo , promedio_negativo puntos_promedio = 0.0 promedio_positivo = 0.0 promedio_negativo = 0.0 escribir ( * , * ) "Ingrese el número de puntos para promediar:" leer ( * , * ) número de puntos                            asignar ( puntos ( número_de_puntos ))  escribir ( * , * ) "Ingrese los puntos para promediar:" leer ( * , * ) puntos      ! Tome el promedio sumando puntos y dividiéndolo por número_de_puntos si ( número_de_puntos > 0 ) promedio_puntos = suma ( puntos ) / número_de_puntos          ! Ahora forme el promedio sobre puntos positivos y negativos solo si ( cuenta ( puntos > 0. ) > 0 ) promedio_positivo = suma ( puntos , puntos > 0. ) / cuenta ( puntos > 0. ) si ( cuenta ( puntos < 0. ) > 0 ) promedio_negativo = suma ( puntos , puntos < 0. ) / recuento ( puntos < 0 .)                                 ! Imprimir el resultado en la terminal stdout unidad 6 escribir ( * , '(a,g12.4)' ) 'Promedio = ' , promedio_puntos escribir ( * , '(a,g12.4)' ) 'Promedio de puntos positivos = ' , promedio_positivo escribir ( * , '(a,g12.4)' ) ' Promedio de puntos negativos = ' , desasignación_promedio_negativo ( puntos ) ! promedio de memoria libre al final del programa               

Humor

Durante la misma reunión del comité de estándares de FORTRAN en la que se eligió el nombre "FORTRAN 77", se incorporó a la distribución oficial una propuesta técnica satírica que llevaba el título "Letra O considerada dañina ". Esta propuesta pretendía abordar la confusión que a veces surge entre la letra "O" y el número cero, eliminando la letra de los nombres de variables permitidos. Sin embargo, el método propuesto fue eliminar completamente la letra del conjunto de caracteres (conservando así 48 como número de caracteres léxicos, que los dos puntos habían aumentado a 49). Esto se consideró beneficioso porque promovería la programación estructurada, al hacer imposible utilizar la famosa GO TOdeclaración como antes. ( FORMATTambién se eliminarían las declaraciones problemáticas .) Se señaló que esto "podría invalidar algunos programas existentes", pero que la mayoría de ellos "probablemente no eran conformes de todos modos". [73] [ ¿ fuente poco confiable? ] [74]

Cuando X3J3 debatió si el recuento mínimo de disparos para un bucle DO debería ser cero o uno en Fortran 77, Loren Meissner sugirió un recuento mínimo de disparos de dos, razonando (irónicamente) que si fuera menos de dos, entonces habría No habrá motivo para un bucle.

Cuando se agregaban matrices de longitud supuesta, hubo una disputa sobre el carácter apropiado para separar los límites superior e inferior. En un comentario que examina estos argumentos, Walt Brainerd escribió un artículo titulado "Astronomía vs. Gastroenterología" porque algunos defensores habían sugerido usar la estrella o el asterisco ("*"), mientras que otros favorecían los dos puntos (":"). [ cita necesaria ]

Los nombres de variables que comienzan con las letras I – N tienen un tipo predeterminado de número entero, mientras que las variables que comienzan con cualquier otra letra tienen el valor predeterminado real, aunque los programadores pueden anular los valores predeterminados con una declaración explícita. [75] Esto llevó al chiste: "En FORTRAN, DIOS es REAL (a menos que se declare INTEGER)".

Ver también

Referencias

  1. ^ "Especificaciones de la capilla (agradecimientos)" (PDF) . Cray Inc. 1 de octubre de 2015. Archivado (PDF) desde el original el 5 de febrero de 2016 . Consultado el 14 de enero de 2016 .
  2. ^ John Backus. «La historia de FORTRAN I, II y III» (PDF) . Preservación de software.org. Archivado (PDF) desde el original el 26 de julio de 2007 . Consultado el 19 de noviembre de 2014 .
  3. ^ Wilson, Leslie B. (2001). Lenguajes de programación comparativos, tercera edición . Addison-Wesley. pag. 16.ISBN _ 0-201-71012-9. El manual de Fortran I se publicó en 1956, pero no fue hasta 1958 que los compiladores exitosos ejecutaron programas correctamente.
  4. ^ Eugene Loh (18 de junio de 2010). "El lenguaje de programación HPC ideal". Cola . 8 (6).
  5. ^ "HPL: una implementación portátil del punto de referencia Linpack de alto rendimiento para computadoras con memoria distribuida" . Consultado el 21 de febrero de 2015 .
  6. ^ "P13. ¿Cuáles son los puntos de referencia?". Descripción general: CPU 2017 . ESPECIFICACIONES . Consultado el 13 de noviembre de 2019 .
  7. ^ Wilson, Leslie B. (2001). Lenguajes de programación comparativos, tercera edición . Addison-Wesley. pag. 18.ISBN _ 0-201-71012-9. Otro problema era que no había un estándar para Fortran y, por lo tanto, versiones ligeramente diferentes... probablemente fallarían cuando se usaran con un compilador diferente.
  8. ^ TIOBE Software BV (septiembre de 2022). "Índice TIOBE". TIOBE.com . TIOBE . Consultado el 23 de septiembre de 2022 .
  9. ^ abcdeBackus , John Warner ; Beeber, RJ; Mejor, Sheldon F.; Goldberg, Richard ; Herrick, Harlan L.; Hughes, RA; Mitchell, LB; Nelson, Robert A.; Nutt, Roy ; Sayre, David ; Sheridan, Peter B.; Popa, Harold; Ziller, Irving (15 de octubre de 1956). Sayre, David (ed.). El sistema de codificación automática FORTRAN para IBM 704 EDPM: manual de referencia del programador (PDF) . Nueva York, EE. UU.: División de Ciencias Aplicadas y Departamento de Investigación de Programación, International Business Machines Corporation . págs.2, 19-20. Archivado (PDF) desde el original el 4 de julio de 2022 . Consultado el 4 de julio de 2022 .(2+51+1 páginas)
  10. ^ abcdef Backus, John (octubre-diciembre de 1998). "La Historia de Fortran I, II y III" (PDF) . Anales IEEE de la historia de la informática . 20 (4): 68–78. doi : 10.1109/85.728232. Archivado (PDF) desde el original el 3 de marzo de 2016 . Consultado el 17 de junio de 2020 .[1][2]
  11. ^ "FORTRAN: el lenguaje de programación pionero". IBM . 7 de marzo de 2012 . Consultado el 19 de julio de 2017 .
  12. ^ "FORTRAN". Enciclopedia Británica . 14 de junio de 2021 . Consultado el 19 de julio de 2021 .
  13. ^ Chapman, Stephen J. (2018). Fortran para científicos e ingenieros (Cuarta ed.). Nueva York : Educación McGraw-Hill . pag. 13.ISBN _ 978-0-07-338589-1.
  14. ^ El "conjunto de caracteres Fortran" definido por el estándar FORTRAN 77 era el conjunto de caracteres mínimo que los compiladores compatibles con el estándar debían admitir; en la práctica, muchos compiladores de FORTRAN 77 admitían el conjunto de caracteres ASCII completo .
  15. ^ ab JW Backus ; RJ Beeber; S. Mejor; R. Goldberg; LM Haibt ; HL Herrick; RA Nelson; D. Sayre ; PB Sheridan; H. popa; L. Ziller; RA Hughes; R. Nutt (febrero de 1957). El sistema de codificación automática FORTRAN (PDF) . Conferencia conjunta occidental sobre informática. págs. 188-198. doi :10.1145/1455567.1455599.
  16. ^ Mindell, David (2008). Apolo digital . Cambridge, MA: MIT Press. pag. 99.ISBN _ 978-0-262-13497-2. JSTOR  j.ctt5hhn02. OCLC  228031739.
  17. ^ Padua, David (enero-febrero de 2000). "El compilador Fortran I" (PDF) . Computación en ciencia e ingeniería . 2 (1): 70–75. Código Bib : 2000CSE.....2a..70P. doi :10.1109/5992.814661. Archivado desde el original (PDF) el 17 de junio de 2020. El compilador Fortran I fue el primer proyecto importante en optimización de código. Abordó problemas de crucial importancia cuya solución general fue un importante foco de investigación en tecnología de compiladores durante varias décadas. Muchas técnicas clásicas para el análisis y optimización de compiladores pueden rastrear sus orígenes e inspiración hasta el compilador Fortran I.
  18. ^ Brian Bergstein (20 de mayo de 2007). "Muere el creador de Fortran, John Backus". MSNBC . Consultado el 29 de octubre de 2018 .
  19. ^ "FORTRAN: el primer lenguaje de programación para cálculos numéricos". Blog de ciencia ficción . 15 de octubre de 2019.
  20. ^ Haines, LH (1965). "Compilación en serie y compilador FORTRAN 1401". Revista de sistemas IBM . 4 (1): 73–80. doi :10.1147/sj.41.0073.
  21. ^ Lee, John AN (1967). Anatomía de un compilador . Van Nostrand Reinhold.
  22. ^ Especificaciones y procedimientos operativos de Fortran, IBM 1401 (PDF) . IBM. C24-1455-2. Archivado (PDF) desde el original el 23 de septiembre de 2017.
  23. ^ "Asunto: GOTRAN EN EL PAQUETE DE ALMACENAMIENTO EN DISCO IBM 1316 (N.º de serie K7402)". Archivado desde el original el 21 de febrero de 2006 . Consultado el 3 de marzo de 2006 .
  24. ^ El sistema de codificación automática FORTRAN para IBM 704 EDPM: manual del operador preliminar (PDF) . Departamento de Investigación de Programación, International Business Machines Corporation. 8 de abril de 1957. págs. 6–37. Archivado (PDF) desde el original el 26 de febrero de 2014.
  25. ^ Armstead, Betty Jo (21 de enero de 2015). "Mis años en la NASA" (PDF) . Museo de Naturaleza y Ciencia de Denver . Archivado desde el original (PDF) el 24 de diciembre de 2019 . Consultado el 15 de junio de 2019 .
  26. ^ Manual de referencia, sistema de procesamiento de datos IBM 7090 (PDF) . 1961. A22-6528-3. Archivado (PDF) desde el original el 1 de diciembre de 2008.
  27. ^ Manual de información general de Fortran II (PDF) . 1963. Archivado (PDF) desde el original el 26 de abril de 2005 . Consultado el 19 de noviembre de 2014 .
  28. ^ Manual de referencia, FORTRAN II para el sistema de procesamiento de datos IBM 704 (PDF) . 1958. C28-6000-2. Archivado (PDF) desde el original el 30 de octubre de 2005.
  29. ^ "Ibibilio.org". Ibiblio.org . Consultado el 15 de septiembre de 2014 .
  30. ^ Especificaciones del lenguaje, especificaciones del programa y procedimientos operativos de Fortran IV, IBM 1401, 1440 y 1460 (PDF) . IBM. Abril de 1966. C24-3322-2. Archivado (PDF) desde el original el 23 de septiembre de 2017.
  31. ^ McCracken, Daniel D. (1965). "Prefacio" . Una guía para la programación de FORTRAN IV . Nueva York: Wiley. pag. ISBN _ 978-0-471-58281-6.
  32. ^ "Lista de implementaciones de FORTRAN 1957 - 1967". Anales del IEEE. 2017 . Consultado el 17 de octubre de 2017 .
  33. ^ Características funcionales de IBM System/360 modelo 50 (PDF) . IBM. 1967. A22-6898-1. Archivado (PDF) desde el original el 29 de octubre de 2021.
  34. ^ ab Digital Equipment Corp. "Manual de referencia para programadores DECSYSTEM-10 FORTRAN IV (F40)" (PDF) . Github . Corporación de equipos digitales . Consultado el 15 de abril de 2022 .
  35. ^ ab "FORTRAN IV | WorldCat.org". search.worldcat.org . Consultado el 10 de diciembre de 2023 .
  36. ^ Mil-std-1753. Suplemento del Departamento de Defensa a X3.9-1978. Imprenta del Gobierno de los Estados Unidos . Archivado desde el original el 9 de noviembre de 2007 . Consultado el 13 de diciembre de 2007 .{{cite book}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  37. ^ IEEE 1003.9-1992 - Estándar IEEE para tecnología de la información - Interfaces de lenguaje POSIX (R) FORTRAN 77 - Parte 1: Enlace para la interfaz de programa de aplicación (API) del sistema. IEEE . Consultado el 24 de noviembre de 2018 .
  38. ^ Apéndice B.1
  39. ^ "Referencia de Fortran 95". Gnu.Org . Consultado el 10 de mayo de 2014 .
  40. ^ Lionel, Steve (30 de diciembre de 2013). "Doctor Fortran en" Es un mundo moderno de Fortran"". "Grupo de discusión del foro Intel (era DEC) Fortran ". Intel . Consultado el 11 de abril de 2022 .
  41. ^ "Fortran 2003: último borrador de trabajo". Gnu.Org . Consultado el 10 de mayo de 2014 .
  42. ^ "WG5 completa el procesamiento de Fortran 2003 y TR". nag.co.uk. _ 14 de mayo de 2004. Archivado desde el original el 5 de agosto de 2004 . Consultado el 3 de abril de 2023 .. También se puede descargar como archivo PDF en "Las nuevas características de Fortran 2003" (PDF) . Archivado (PDF) desde el original el 15 de enero de 2018 . Consultado el 3 de abril de 2023 .
  43. ^ "N1836, Resumen de votaciones/Tabla de respuestas sobre ISO/IEC FDIS 1539-1, Tecnología de la información - Lenguajes de programación - Fortran - Parte 1: Lenguaje base" (PDF) . Archivado (PDF) desde el original el 15 de enero de 2018.
  44. ^ "Fortran 2008 - Último borrador de trabajo" (PDF) . Gnu.Org. Archivado (PDF) desde el original el 12 de mayo de 2014 . Consultado el 10 de mayo de 2014 .
  45. ^ N1830, Tecnología de la información - Lenguajes de programación - Fortran - Parte 1: Lenguaje base [3] [ enlace muerto ]
  46. ^ ISO/IEC TS 29113:2012 - Tecnología de la información - Mayor interoperabilidad de Fortran con C.
  47. ^ "Borrador de la Especificación Técnica (TS) 29113" (PDF) . wg5-fortran.org . Archivado (PDF) desde el original el 15 de enero de 2018.
  48. ^ "Doctor Fortran en" Dieciocho son los nuevos Quince"". Software.intel.com . Consultado el 20 de noviembre de 2017 .
  49. ^ "Fortran 2018". YO ASI . Consultado el 30 de noviembre de 2018 .
  50. ^ "Mayor interoperabilidad con C" (PDF) . YO ASI. Archivado (PDF) desde el original el 1 de diciembre de 2017 . Consultado el 20 de noviembre de 2017 .
  51. ^ "Funciones paralelas adicionales en Fortran". YO ASI . Consultado el 20 de noviembre de 2017 .
  52. ^ "Las nuevas funciones de Fortran 2015". YO ASI . Consultado el 23 de junio de 2017 .
  53. ^ "Doctor Fortran en" Una puerta se cierra"". Software.intel.com . Consultado el 21 de septiembre de 2015 .
  54. ^ "El doctor Fortran se vuelve holandés: Fortran 2015". Software.intel.com . Consultado el 19 de noviembre de 2014 .
  55. ^ Documento de interpretación de Fortran 2018 (PDF) . 9 de octubre de 2018.
  56. ^ "Fortran 2023". wg5-fortran.org . Consultado el 30 de noviembre de 2023 .
  57. ^ Kemeny, John G.; Kurtz, Thomas E. (11 de octubre de 1968). "Tiempo compartido en Dartmouth". Ciencia . 162 (3850): 223–228. Código Bib : 1968 Ciencia... 162.. 223K. doi : 10.1126/ciencia.162.3850.223. PMID  5675464.
  58. ^ Phillips, Lee (8 de mayo de 2014). "El futuro de la informática científica: ¿Puede algún lenguaje de codificación superar a un gigante de la década de 1950?". Ars Técnica . Consultado el 8 de mayo de 2014 .
  59. ^ Pasachoff, Jay M. (abril de 1984). "Científicos: FORTRAN frente a Modula-2". BYTE (letra). pag. 404 . Consultado el 6 de febrero de 2015 .
  60. ^ Galperin, Boris (1993). "26". Simulación de grandes remolinos de ingeniería compleja y flujos geofísicos . Londres: Cambridgey. pag. 573.ISBN _ 978-0-521-43009-8.
  61. ^ Brandt, Siegmund (1970). Métodos estadísticos y computacionales en análisis de datos . Compañía editorial de Holanda Septentrional. págs. Prefacio. ISBN 0-7204-2033-4.
  62. ^ Curcic, Milán (24 de noviembre de 2020). Fortran moderno: creación de aplicaciones paralelas eficientes. Simón y Schuster. ISBN 978-1-61729-528-7.
  63. ^ "Interstellar 8-Track: cómo sigue funcionando la tecnología antigua de la Voyager". CABLEADO . Consultado el 23 de diciembre de 2017 .
  64. ^ Gaffney, PW; Wooten, JW (1 de mayo de 1980). Métodos para asegurar la estandarización del software FORTRAN (Informe). Laboratorio Nacional de Oak Ridge. OSTI  5361454. PFORT... Biblioteca...
  65. ^ ab PA Fox (1977). "Puerto: una biblioteca de subrutinas matemáticas portátil". Una biblioteca portátil de subrutinas matemáticas . Apuntes de conferencias sobre informática. vol. 57, págs. 165-177. doi :10.1007/3-540-08446-0_42. ISBN 978-3-540-08446-4. PUERTO... escrito en (PFORT) .. ANS Fortran
  66. ^ Whitten, Douglas E.; Demaine, Paul AD (1975). "Un Fortran independiente de la máquina y la configuración: Portable Fortran {PFortran}". Transacciones IEEE sobre ingeniería de software . Instituto de Ingenieros Eléctricos y Electrónicos (IEEE). SE-1 (1): 111–124. doi :10.1109/tse.1975.6312825. ISSN  0098-5589. S2CID  16485156.
  67. ^ "Problemas de portabilidad". .. analiza .. portabilidad de .. Fortran
  68. ^ Healy, MJR (1968). "Hacia FORTRAN VI". Fortran científico avanzado por CDC . CENTROS PARA EL CONTROL Y LA PREVENCIÓN DE ENFERMEDADES. págs. 169-172. Archivado desde el original el 5 de julio de 2009 . Consultado el 10 de abril de 2009 .
  69. ^ Perlis, AJ; Smith, JW; Van Zoeren, traductor interno de recursos humanos (TI) Un compilador para IBM 650 (PDF) . Centro de Computación, Instituto Carnegie de Tecnología. Archivado (PDF) desde el original el 2 de octubre de 2012.
  70. ^ "Página de inicio del lenguaje de programación F". Fortran.com. Archivado desde el original el 9 de enero de 2015 . Consultado el 19 de noviembre de 2014 .
  71. ^ "Fortran para el sistema de lenguaje .NET". Archivado desde el original el 18 de octubre de 2014.
  72. ^ "FTN95: Fortran 95 para Windows". Silverfrost.com . Consultado el 19 de noviembre de 2014 .
  73. ^ Distribución posterior a la reunión de X3J3 para la reunión celebrada en el Laboratorio Nacional Brookhaven en noviembre de 1976.
  74. ^ "La destrucción de O". Computadora Semanal . 3 de marzo de 1977.
  75. ^ Reglas para escribir datos (referencia del idioma FORTRAN 77) . Consultado el 29 de septiembre de 2016 .

Otras lecturas

Estándares lingüísticos
Normas relacionadas
Otro material de referencia
Libros
Artículos

enlaces externos