De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

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

Fortran ( / f ɔr t r æ n / , anteriormente FORTRAN , derivado de Fórmula traducción [2] ) es una de propósito general, compilado imperativo lenguaje de programación que es especialmente adecuado para cálculo numérico y computación científica .

Desarrollado originalmente por IBM [3] en la década de 1950 para aplicaciones científicas y de ingeniería, FORTRAN llegó a dominar posteriormente la informática científica. Se ha utilizado durante más de seis décadas en áreas computacionalmente intensivas como la predicción numérica del tiempo , el análisis de elementos finitos , la dinámica de fluidos computacional , la geofísica , la física computacional , la cristalografía y la química computacional . Es un lenguaje popular para la informática de alto rendimiento [4] y se utiliza para programas que evalúan y clasifican las supercomputadoras más rápidas del mundo . [5][6]

Fortran ha tenido varias versiones, cada una de las cuales agrega extensiones y conserva en gran medida la compatibilidad con versiones anteriores. Versiones sucesivas han añadido soporte para la programación estructurada y procesamiento de datos basados en caracteres (FORTRAN 77), la programación de array , la programación modular y programación genérica (Fortran 90), de alto rendimiento Fortran (Fortran 95), programación orientada a objetos (Fortran 2003), programación concurrente (Fortran 2008) y capacidades nativas de computación paralela (Coarray Fortran 2008/2018).

El diseño de Fortran fue la base de muchos otros lenguajes de programación. Entre los más conocidos está BASIC , que se basa en FORTRAN II con una serie de limpiezas de sintaxis , estructuras lógicas notablemente mejores, [7] y otros cambios para trabajar más fácilmente en un entorno interactivo. [8]

En abril de 2021, Fortran se clasificó 20 º en el índice TIOBE , una medida de la popularidad de los lenguajes de programación, subiendo 14 posiciones de la clasificación de 34 su ésimo en enero de 2020. [9]

Nombrar [ editar ]

Los nombres de versiones anteriores del idioma a través de FORTRAN 77 se escribieron convencionalmente en mayúsculas [10] (FORTRAN 77 fue la última versión en la que el juego de caracteres Fortran incluía solo letras mayúsculas [11] ). Los estándares de idioma oficial para Fortran se han referido al idioma como "Fortran" con mayúsculas iniciales (en lugar de "FORTRAN" en mayúsculas) desde Fortran 90.

Historia [ editar ]

Una computadora central IBM 704

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 . [12] : 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 . [13] 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 elSistema Laning y Zierler de 1952. [14] Algunos de estos programadores eran jugadores de ajedrez y fueron elegidos para trabajar en IBM debido a sus mentes lógicas. [ cita requerida ]

En noviembre de 1954 se completó un borrador de especificación para el Sistema de traducción de fórmulas matemáticas de IBM . [12] : 71 El primer manual de FORTRAN apareció en octubre de 1956, [12] : 72 con el primer compilador de FORTRAN entregado en abril de 1957. [12] : 75 Este fue el primer compilador optimizado , porque los clientes eran reacios a usar un lenguaje de programación de alto nivel a menos que su compilador pudiera generar código con un rendimiento cercano al del lenguaje ensamblador codificado a mano. [15]

Si bien la comunidad se mostró escéptica de que este nuevo método pudiera superar la codificación manual, redujo el número de declaraciones de programación necesarias para operar una máquina en un factor de 20 y rápidamente ganó aceptación. John Backus dijo durante una entrevista en 1979 con Think , la revista para empleados de IBM, "Gran parte de mi trabajo proviene de ser vago. No me gustaba escribir programas, así que, cuando trabajaba 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 ". [dieciséis]

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. [17]

En 1960, las versiones de FORTRAN estaban disponibles para las computadoras IBM 709 , 650 , 1620 y 7090 . Significativamente, la creciente popularidad de FORTRAN estimuló a los fabricantes de computadoras de la competencia a proporcionar compiladores FORTRAN para sus máquinas, de modo que en 1963 existían más de 40 compiladores FORTRAN. Por estas razones, se considera que FORTRAN es el primer lenguaje de programación multiplataforma ampliamente utilizado .

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 los programas de Fortran.

FORTRAN [ editar ]

La versión inicial de FORTRAN para IBM 704 contenía 32 declaraciones , que incluyen:

  • DIMENSIONy EQUIVALENCEdeclaraciones
  • Declaraciones de asignación
  • Declaración aritmética de IF tres vías , que pasa el control a una de las tres ubicaciones en el programa dependiendo de si el resultado de la declaración aritmética fue negativo, cero o positivo
  • IFdeclaraciones de excepciones de comprobación ( ACCUMULATOR OVERFLOW, QUOTIENT OVERFLOWy DIVIDE CHECK); y IFdeclaraciones para manipular interruptores sensoriales y luces sensoriales
  • GO TO, Calculado GO TO, ASSIGNy asignadoGO TO
  • DO bucles
  • Con formato I / O: FORMAT, READ, READ INPUT TAPE, WRITE, WRITE OUTPUT TAPE, PRINT, yPUNCH
  • Sin formato I / O: READ TAPE, READ DRUM, WRITE TAPE, yWRITE DRUM
  • Otros I / O: END FILE, REWINDyBACKSPACE
  • PAUSE, STOPyCONTINUE
  • FREQUENCYdeclaración (para proporcionar sugerencias de optimización al compilador).

La IFdeclaración aritmética recordaba (pero no se podía implementar fácilmente) 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 forma de comparar números: probando su diferencia, con un asistente. riesgo de desbordamiento. Esta deficiencia fue posteriormente superada por las instalaciones "lógicas" introducidas en FORTRAN IV.

La FREQUENCYdeclaración se usó originalmente (y opcionalmente) para dar probabilidades de ramificación para los tres casos de ramificación de la instrucción IF 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 los bloques básicos en la memoria, una optimización muy sofisticada para su época. La técnica de 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 del 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 bloques básicos. Esta tabla se obtiene ejecutando el programa una vez al estilo Monte-Carlo, en el que el resultado de las transferencias condicionales que surgen de las declaraciones de tipo IF y los GO TO calculados se determina mediante un generador de números aleatorios adecuadamente ponderado de acuerdo con las declaraciones de FRECUENCIA que se hayan proporcionado . [13]

Muchos años después, la FREQUENCYdeclaración no tuvo ningún efecto en el código y fue tratada como una declaración de comentario, ya que los compiladores ya no hacían este tipo de simulación en tiempo de compilación. Un destino similar ha ocurrido consejos compilador en varios otros lenguajes de programación, por ejemplo, la registerpalabra clave en C . [ cita requerida ]

El primer compilador de FORTRAN reportó información de diagnóstico al detener el programa cuando se encontró un error y generar 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ándoles una breve descripción del problema. [18] [19] Más tarde, se incorporó una subrutina de manejo de errores para manejar errores de usuario como la división por cero, desarrollada por la NASA, [20] , informando a los usuarios de qué línea de código contenía el error.

Diseño fijo y tarjetas perforadas [ editar ]

Código FORTRAN en una tarjeta perforada , que muestra los usos especializados de las columnas 1 a 5, 6 y 73 a 80

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

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

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

  • 1 a 5 eran el campo de etiqueta: una secuencia de dígitos aquí se tomó como una etiqueta para usar en DO o instrucciones de control como GO TO e IF, o para identificar una instrucción FORMAT a la que se hace referencia en una instrucción WRITE o READ. Los ceros iniciales se ignoran y 0 no es un número de etiqueta válido.
  • 6 era un campo de continuación: un carácter que no fuera un espacio en blanco o un cero aquí hizo que la tarjeta se tomara como una continuación de la declaración de la tarjeta anterior. Por lo general, las cartas de continuación estaban numeradas 1, 2, etc. y, por lo tanto, la carta de inicio podría tener cero en su columna de continuación, que no es una continuación de la carta anterior.
  • 7 a 72 sirvió como campo de declaración.
  • 73 a 80 fueron ignorados (el lector de tarjetas del IBM 704 solo usó 72 columnas). [21]

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 tarjetas si se cayera una pila de tarjetas; aunque en la práctica esto se reservaba para programas de producción estables. Se podría usar 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. [22] Las pulsaciones de teclas se pueden programar para tabular en la columna 7 y omitir 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 caracteres de espacio en blanco (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 de Hollerith , originalmente permitidas solo en las declaraciones FORMAT y DATA, tenían como prefijo un recuento de caracteres y la letra H (p. Ej., 26HTHIS IS ALPHANUMERIC DATA.), Lo que permitía retener espacios en blanco dentro de la cadena de caracteres. Los errores de conteo eran un problema.

FORTRAN II [ editar ]

El 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 accedan a variables comunes (o globales ). Se introdujeron seis declaraciones nuevas: [23]

  • SUBROUTINE, FUNCTIONyEND
  • CALL y RETURN
  • COMMON

Durante los próximos años, FORTRAN II también agregaría soporte para los tipos de datos DOUBLE PRECISIONy COMPLEX.

Los primeros compiladores de FORTRAN no admitían recursividad en subrutinas. Las primeras arquitecturas informáticas no admitían el concepto de pila, y cuando sí admitían directamente llamadas de subrutina, 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 un registro de máquina específico ( IBM 360 et seq. ), que solo permite la recursividad si el software mantiene una pila y la dirección de retorno se almacena en la pila antes de que se realice la llamada y se restablezca después de que la llamada regrese. Aunque no se especifica en FORTRAN 77, muchos compiladores de F77 admitían la recursividad como una opción, y los mainframes de Burroughs, diseñado con recursividad incorporada, lo hizo de forma predeterminada. Se convirtió en un estándar en Fortran 90 a través de la nueva palabra clave RECURSIVE. [24]

Programa simple de FORTRAN II [ editar ]

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), de lo contrario, 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 terminará con un código de error de "STOP 1". De lo contrario, se imprimirá una línea de salida mostrando los valores de entrada para A, B y C,seguido del AREA 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 que muestra 2 dígitos después del punto decimal, el .2 en F10.2 de la instrucción FORMAT con etiqueta 601.

C área de un triángulo con un estándar de SQUARE ROOT FUNCIÓN C INPUT - CINTA READER UNIDAD 5, entero de entrada C OUTPUT - LINE IMPRESORA UNIDAD 6, el producto real C de entrada de error DISPLAY ERROR salida de código 1 en trabajo de control LISTADO LEER ENTRADA CINTA 5 , 501 , IA , IB , IC  501 FORMAT ( 3 I5 ) C IA, IB E IC PUEDEN NO 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 VERIFICAMOS 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  SI  ( IB + IC - IA)  777 ,  777 ,  799  777  PARADA 1 C utilizando GARZA DE FÓRMULA calculamos el C área del triángulo  799  S  =  FLOATF  ( IA  +  IB  +  IC )  /  2,0 AREA = SQRTF ( S * ( S - FLOATF ( IA )) * ( S - FLOATF ( IB )) * + ( S - FLOATF ( IC                  ))) WRITE SALIDA CINTA 6 , 601 , IA , IB , IC , AREA  601 FORMATO ( 4 H A = , I5 , 5 H B = , I5 , 5 H C = , I5 , 8 H AREA = , F10 . 2 , + 13 H UNIDADES CUADRADAS ) FINAL DE PARADA                           

FORTRAN III [ editar ]

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 operadores de teclado . Ahora obsoleto.

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 704 FORTRAN y el FORTRAN II, FORTRAN III incluía características dependientes de la máquina que hacían que el código escrito en él fuera imposible de transportar de una máquina a otra. [12] : 76 Las primeras versiones de FORTRAN proporcionadas por otros proveedores adolecían de la misma desventaja.

IBM 1401 FORTRAN [ editar ]

FORTRAN se proporcionó para la computadora IBM 1401 mediante un innovador compilador de 63 fases que se ejecutó completamente en su memoria central de solo 8000 caracteres (seis bits). El compilador se puede ejecutar desde una cinta o desde una baraja de 2200 cartas; no usó 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 describió Haines. [25] Este artículo fue reimpreso, editado, en ambas ediciones de Anatomy of a Compiler [26] y en el manual de IBM "Especificaciones de Fortran y Procedimientos Operativos, IBM 1401". [27] La forma ejecutable no era completamente lenguaje de máquina.; más bien, se interpretaron aritmética de punto flotante, sub-secuencias de comandos, entrada / salida y referencias de funciones, precediendo al código P de UCSD Pascal por dos décadas.

IBM más tarde proporcionó un compilador FORTRAN IV para la serie de computadoras 1400. [28]

FORTRAN IV [ editar ]

IBM comenzó 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 instrucción IF lógica como una alternativa a la instrucción IF aritmética. FORTRAN IV fue finalmente lanzado en 1962, primero para la computadora IBM 7030 ("Stretch"), seguido de versiones para IBM 7090 , IBM 7094 y más tarde para IBM 1401 en 1966.

Para 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 . [29]

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

  • 1966: FORTRAN IV F para DOS / 360 (64K bytes)
  • 1966: FORTRAN IV G para OS / 360 (128K bytes)
  • 1968: FORTRAN IV H para OS / 360 (256 K bytes)

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 enlace de compiladores anteriores.

FORTRAN 66 [ editar ]

Quizás el desarrollo más significativo en la historia temprana de FORTRAN fue la decisión de la American Standards Association (ahora American National Standards Institute (ANSI)) de formar un comité patrocinado por BEMA, la Business Equipment Manufacturers Association, para desarrollar un American Standard Fortran . Los dos estándares resultantes, aprobados en marzo de 1966, definieron dos idiomas, FORTRAN (basado en FORTRAN IV, que había servido como estándar de facto) y Basic FORTRAN (basado en FORTRAN II, pero despojado de sus características dependientes de la máquina). El FORTRAN definido por el primer estándar, denominado oficialmente X3.9-1966, se conoció como FORTRAN 66(aunque muchos continuaron llamándolo FORTRAN IV, el lenguaje en el que se basaba 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 incluyó:

  • Del programa, principales SUBROUTINE, FUNCTIONy BLOCK DATAlas unidades de programa
  • INTEGER, REAL, DOUBLE PRECISION, COMPLEX, Y LOGICAL tipos de datos
  • COMMON, DIMENSIONy EQUIVALENCEdeclaraciones
  • DATA declaración para especificar valores iniciales
  • EXTERNALFunciones intrínsecas y (p. Ej., Biblioteca)
  • Sentencia de asignación
  • GO TO, calculados GO TO, asignados GO TOy ASSIGNextractos
  • Declaraciones lógicas IFy aritméticas (de tres vías)IF
  • DO declaración de bucle
  • READ, WRITE, BACKSPACE, REWIND, Y ENDFILEdeclaraciones de E / S secuencial
  • FORMAT declaración y formato asignado
  • CALL, RETURN, PAUSE, Y STOPdeclaraciones
  • Constantes de Hollerith en DATAy FORMATdeclaraciones, y como argumentos para procedimientos
  • Identificadores de hasta seis caracteres de longitud
  • Líneas de comentario
  • END línea

FORTRAN 77 [ editar ]

Programa FORTRAN-77 con salida del compilador, escrito en un CDC 175 en la Universidad RWTH Aachen , Alemania, en 1987
4.3 BSD para el VAX de Digital Equipment Corporation (DEC) , que muestra el manual del 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é X3J3 de ANSI 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, denominada FORTRAN 77 y oficialmente denominada X3.9-1978, agregó una serie de características importantes para abordar muchas de las defectos de FORTRAN 66:

  • Bloque IFy END IFsentencias, con cláusulas ELSEy opcionales ELSE IF, para proporcionar un soporte de lenguaje mejorado para la programación estructurada
  • DO extensiones de bucle, incluidas expresiones de parámetros, incrementos negativos y recuentos de viajes cero
  • OPEN, CLOSEy INQUIREdeclaraciones para mejorar la capacidad de E / S
  • E / S de archivos de acceso directo
  • IMPLICIT declaración, para anular las convenciones implícitas de que las variables no declaradas son INTEGER si su nombre comienza con I, J, K, L, M o N (y REAL en caso contrario)
  • CHARACTER tipo de datos, reemplazando las cadenas de Hollerith con instalaciones enormemente ampliadas para la entrada y salida de caracteres y el procesamiento de datos basados ​​en caracteres
  • PARAMETER declaración para especificar constantes
  • SAVE declaración para variables locales persistentes
  • Nombres genéricos para funciones intrínsecas (por ejemplo, SQRTtambién acepta argumentos de otros tipos, como COMPLEXo REAL*16).
  • Un conjunto de intrínsecos ( LGE, LGT, LLE, LLT) para la comparación léxica de cadenas, basado en la secuencia de clasificación ASCII . (Estas funciones de ASCII fueron exigidas por el Departamento de Defensa de EE. UU. , En su voto de aprobación condicional. [ Cita requerida ] )

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

  • Constantes de Hollerith y datos de Hollerith , comoGREET = 12HHELLO THERE!
  • Lectura en un descriptor de edición H (campo Hollerith) en una especificación FORMAT
  • Sobreindexación de límites de matriz por subíndices
      DIMENSIÓN A ( 10 , 5 ) Y = A ( 11 , 1 )   
  • Transferencia de control fuera y de regreso al rango de un bucle DO (también conocido como "Rango extendido")

Variantes: Minnesota FORTRAN [ editar ]

Las computadoras de Control Data Corporation tenían otra versión de FORTRAN 77, llamada Minnesota FORTRAN (MNF), diseñada especialmente para uso de estudiantes, con variaciones en las construcciones de salida, usos especiales de declaraciones COMMON y DATA, niveles de código de optimización para compilación, listados detallados de errores, advertencia extensa mensajes y funciones de depuración. [32] MNF fue desarrollado por personas (Liddiard & Mundstock) en la Universidad de Minnesota . [33] MNF estaba disponible básicamente de forma gratuita.

Transición al estándar ANSI Fortran [ editar ]

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 la práctica de la computación y la programación. Mientras tanto, como "Standard FORTRAN" 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. [34] 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.

  • DO WHILE, EXIT, CYCLE, Y END DOdeclaraciones
  • INCLUDE declaración
  • IMPLICIT NONEvariante de la IMPLICITdeclaración
  • Funciones intrínsecas de manipulación de bits , basadas en funciones similares incluidas en Industrial Real-Time Fortran (ANSI / ISA S61.1 (1976))

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

Fortran 90 [ editar ]

El sucesor muy retrasado 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 ortografía de FORTRAN a Fortran, esta importante revisión 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:

  • Entrada de fuente de forma libre , también con palabras clave Fortran en minúsculas
  • Identificadores de hasta 31 caracteres de longitud (en el estándar anterior, solo tenía seis caracteres).
  • Comentarios en línea
  • Capacidad para operar en arreglos (o secciones de arreglos) como un todo, lo que simplifica enormemente los cálculos matemáticos y de ingeniería.
    • sentencias de asignación de matrices completas, parciales y enmascaradas y expresiones de matriz, como X(1:N)=R(1:N)*COS(A(1:N))
    • WHERE declaración para la asignación de matriz selectiva
    • constantes y expresiones con valores de matriz,
    • funciones definidas por el usuario con valores de matriz y constructores de matriz.
  • RECURSIVE procedimientos
  • Módulos , para agrupar procedimientos y datos relacionados y ponerlos a disposición de otras unidades del programa, incluida la capacidad de limitar la accesibilidad a partes específicas del módulo.
  • Un mecanismo de paso de argumentos muy mejorado, que permite comprobar las interfaces en el momento de la compilación.
  • Interfaces escritas por el usuario para procedimientos genéricos
  • Sobrecarga del operador
  • Tipos de datos derivados (estructurados)
  • Nueva sintaxis de declaración de tipo de datos, para especificar el tipo de datos y otros atributos de las variables.
  • Asignación dinámica de memoria mediante el ALLOCATABLEatributo y las declaraciones ALLOCATEyDEALLOCATE
  • POINTERatributo, asignación de puntero y NULLIFYdeclaración para facilitar la creación y manipulación de estructuras de datos dinámicas
  • Construcciones de bucle estructurado, con una END DOdeclaración para la terminación del bucle EXITy CYCLEdeclaraciones para terminar las DOiteraciones normales del bucle de forma ordenada
  • SELECT. . . CASEconstruir para selección multidireccional
  • Especificación portátil de precisión numérica bajo el control del usuario.
  • Procedimientos intrínsecos nuevos y mejorados.

Obsolescencia y eliminaciones [ editar ]

A diferencia de la revisión anterior, Fortran 90 no eliminó ninguna característica. [36] Cualquier programa de FORTRAN 77 que cumpla con los estándares también cumple con los estándares de Fortran 90, y cualquiera de los estándares debería ser utilizable para definir su comportamiento.

Un pequeño conjunto de características se identificó como "obsoleto" y se esperaba que se eliminaran en una norma futura. Todas las funcionalidades de estas características de la versión inicial se realizan mediante las nuevas características de Fortran 95. Algunos se conservan para simplificar la migración de programas antiguos, pero es posible que eventualmente se eliminen.

"¡Hola Mundo!" ejemplo [ editar ]

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

Fortran 95 [ editar ]

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, especialmente de la especificación High Performance Fortran :

  • FORALLy WHEREconstrucciones anidadas para ayudar a la vectorización
  • Procedimientos PUREy definidos por el usuarioELEMENTAL
  • Inicialización predeterminada de componentes de tipo derivado, incluida la inicialización de puntero
  • Se amplió la capacidad de usar expresiones de inicialización para objetos de datos.
  • Inicialización de punteros a NULL()
  • Claramente definido que las ALLOCATABLEmatrices se desasignan automáticamente cuando salen de su alcance.

Se ampliaron varias funciones intrínsecas (por ejemplo, dimse añadió un argumento a la maxlocintrínseca).

Varias características señaladas en Fortran 90 como "obsoletas" se eliminaron de Fortran 95:

  • DOdeclaraciones que utilizan variables de índice REALyDOUBLE PRECISION
  • Bifurcación a una END IFdeclaración desde fuera de su bloque
  • PAUSE declaración
  • ASSIGNy GO TOdeclaración asignada , y especificadores de formato asignados
  • H Descriptor de edición de Hollerith.

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

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 definió 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 [ editar ]

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

  • Cadenas de caracteres de longitud variable (ISO / IEC 1539-2: 2000)
  • Compilación condicional (ISO / IEC 1539-3: 1998)

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

De acuerdo con los desarrolladores de estándares, "las partes opcionales describen características autónomas que han sido solicitadas por un cuerpo sustancial de usuarios y / o implementadores, pero que no se consideran de suficiente generalidad para que sean requeridas en todos los estándares. Compiladores de Fortran ". No obstante, si un Fortran conforme a la norma ofrece tales opciones, entonces "deben proporcionarse de acuerdo con la descripción de esas instalaciones en la Parte correspondiente de la Norma".

Fortran 2003 [ editar ]

Fortran 2003, publicado oficialmente como ISO / IEC 1539-1: 2004, es una revisión importante que introduce muchas características nuevas. [39] 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). [40]

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

  • Mejoras de tipos derivados: tipos derivados parametrizados, control mejorado de accesibilidad, constructores de estructuras mejorados y finalizadores
  • Soporte de programación orientada a objetos : extensión y herencia de tipos , polimorfismo , asignación dinámica de tipos y procedimientos ligados a tipos, que brindan soporte completo para tipos de datos abstractos
  • Mejoras en la manipulación de datos: componentes asignables (que incorporan TR 15581), parámetros de tipo diferido, VOLATILEatributo , especificación de tipo explícita en constructores de matrices y declaraciones de asignación, mejoras de puntero, expresiones de inicialización extendidas y procedimientos intrínsecos mejorados
  • Mejoras de entrada / salida: transferencia asincrónica , acceso de flujo, operaciones de transferencia especificadas por el usuario para tipos derivados, control de redondeo especificado por el usuario durante las conversiones de formato, constantes con nombre para unidades preconectadas, FLUSHdeclaración, regularización de palabras clave y acceso a mensajes de error
  • Punteros de procedimiento
  • Soporte para aritmética de punto flotante IEEE y manejo de excepciones de punto flotante (incorporando TR 15580)
  • Interoperabilidad con el lenguaje de programación C
  • Soporte para uso internacional: acceso a caracteres ISO 10646 de 4 bytes y elección de decimal o coma en entrada / salida con formato numérico
  • Integración mejorada con el sistema operativo del host: acceso a argumentos de línea de comandos, variables de entorno y mensajes de error del procesador

Un complemento importante de Fortran 2003 fue el informe técnico ISO TR-19767: Instalaciones modulares 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 secundarias privadas de Ada . Esto permite que la especificación e implementación de un módulo se exprese 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 las cascadas de compilación.

Fortran 2008 [ editar ]

ISO / IEC 1539-1: 2010, conocido informalmente como Fortran 2008, fue aprobado en septiembre de 2010. [41] [42] 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 nuevas capacidades. Las nuevas capacidades incluyen:

  • Submódulos: facilidades de estructuración adicionales para módulos; reemplaza ISO / IEC TR 19767: 2005
  • Coarray Fortran: un modelo de ejecución paralela
  • La construcción DO CONCURRENT : para iteraciones de bucle sin interdependencias
  • El atributo CONTIGUOUS: para especificar restricciones de diseño de almacenamiento
  • La construcción BLOCK: puede contener declaraciones de objetos con alcance de construcción
  • Componentes asignables recursivos: como alternativa a los punteros recursivos en tipos derivados

El borrador final del estándar internacional (FDIS) está disponible como documento N1830. [43]

Un suplemento de Fortran 2008 es la Especificación Técnica (TS) 29113 de la Organización Internacional de Normalización (ISO) sobre Interoperabilidad adicional de Fortran con C , [44] [45] 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 argumentos.

Fortran 2018 [ editar ]

La última revisión del lenguaje (Fortran 2018) se denominó anteriormente Fortran 2015. [46] Es una revisión significativa y se publicó el 28 de noviembre de 2018. [47]

Fortran 2018 incorpora dos Especificaciones Técnicas publicadas anteriormente:

  • ISO / IEC TS 29113: 2012 Mayor interoperabilidad con C [48]
  • ISO / IEC TS 18508: 2015 Características paralelas adicionales en Fortran [49]

Los cambios adicionales y las nuevas características incluyen soporte para ISO / IEC / IEEE 60559: 2011 (la versión del estándar de punto flotante IEEE antes de la última revisión menor IEEE 754-2019), entrada / salida hexadecimal, mejoras IMPLÍCITAS NINGUNAS y otros cambios. [50] [51] [52] [53]

Funciones de idioma [ editar ]

Una descripción completa de las características del idioma Fortran desde Fortran 95 se cubre en el artículo relacionado, Características del idioma Fortran 95 .

Ciencia e ingeniería [ editar ]

Aunque un artículo de 1968 de los autores de BASIC ya describía a FORTRAN como "anticuado", [54] Fortran ha estado en uso durante varias décadas y existe una gran cantidad de software Fortran en uso diario en las comunidades científicas y de ingeniería. . [55] 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 se cambien a Pascal, Modula-2 o lo que sea". [56] En 1993, Cecil E. Leith llamó a FORTRAN la "lengua materna de la informática científica", y agregó que su reemplazo por cualquier otro idioma posible "puede seguir siendo una esperanza desesperada". [57]

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, 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 . [ cita requerida ] 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 de SPEC (por ejemplo, CFP2006 , CFP2017 ) están escritos en Fortran. Los algoritmos matemáticos están bien documentados en Recetas numéricas .

Aparte de esto, los códigos más modernos en la ciencia computacional generalmente usan grandes bibliotecas de programas, como METIS para la partición de gráficos, PETSc o Trilinos para las capacidades de álgebra lineal, DUNE o FEniCS para el 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 ampliamente utilizadas también se han implementado en C y, más recientemente, en C ++ . Por otro lado, lenguajes de alto nivel como MATLAB , Python y Rse han vuelto populares en áreas particulares de la ciencia computacional. En consecuencia, una fracción cada vez mayor de los programas científicos también se escribe en esos lenguajes de programación de alto nivel. Por esta razón, las facilidades para la interacción con C se agregaron a Fortran 2003 y se mejoraron con 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 de la NASA Voyager 1 y Voyager 2 se escribió originalmente en FORTRAN 5 y luego se transfirió a FORTRAN 77. A partir del 25 de septiembre de 2013 , parte del software todavía está escrito en Fortran y parte se ha migrado a C. [58]

Portabilidad [ editar ]

La portabilidad fue un problema en los primeros días porque no había un estándar acordado, ni siquiera el manual de referencia de IBM, y las compañías de computadoras compitieron para diferenciar sus ofertas de otras al proporcionar 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, estaban usando programas como The PFORT Verifier, [59] [60] 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 adquiridos por el gobierno de los EE. UU. estaban obligados a diagnosticar extensiones del estándar. En lugar de ofrecer dos procesadores, esencialmente todos los compiladores eventualmente tuvieron al menos una opción para diagnosticar extensiones. [61] [62]

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 del estándar de 1966 de la biblioteca PORT . [60] Las ideas contenidas en él se utilizaron ampliamente y, finalmente, se incorporaron al estándar de 1990 mediante funciones de investigación intrínsecas. La adopción generalizada (ahora casi universal) del estándar IEEE 754 para la aritmética de coma flotante binaria ha eliminado esencialmente este problema.

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

Se han escrito en C 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 gráficas, y por lo tanto el acceso a ellas presentaba un problema de portabilidad. Esto se ha abordado 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 [ editar ]

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 generalmente los fabricantes de computadoras lo hacían 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 [ editar ]

Fortran 5 fue comercializado por Data General Corp a fines de la década de 1970 y principios de la de 1980, para las líneas de computadoras Nova , Eclipse y MV . Tenía un compilador de optimización que era bastante bueno para los miniordenadores de su época. El lenguaje se parece más a FORTRAN 66.

FORTRAN V [ editar ]

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

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

Fortran 6 [ editar ]

Fortran 6 o Visual Fortran 2001 fueron licenciados a Compaq por Microsoft . Tienen licencia de Compaq Visual Fortran y han proporcionado la interfaz de entorno Visual Studio 5 para Compaq v6 hasta v6.1. [64]

Variantes específicas [ editar ]

Los proveedores de computadoras científicas de alto rendimiento ( p. Ej., Burroughs , Control Data Corporation (CDC), Cray , Honeywell , IBM , Texas Instruments y UNIVAC ) agregaron extensiones a Fortran para aprovechar características especiales de hardware como caché de instrucciones , canalizaciones de CPU , y matrices de vectores. 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 simultáneamente varias unidades aritméticas internas. Otro ejemplo es CFD, Una variante especial del FORTRAN diseñado específicamente para el ILLIAC IV superordenador, funcionando a la NASA 's Centro de Investigación Ames . 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 orientada a objetos de Fortran, en la que los elementos de datos se pueden agrupar en objetos, que se pueden instanciar y ejecutar en paralelo. Estaba disponible para Sun, Iris, iPSC y nCUBE, pero ya no es compatible.

Estas extensiones específicas de la máquina 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 la programación de memoria compartida. Una nueva extensión, Coarray Fortran, está destinada a admitir la programación paralela.

PARA TRÁNSITO para el IBM 650 [ editar ]

FOR TRANSIT era el nombre de una versión reducida del lenguaje FORTRAN de IBM 704, que se implementó para el IBM 650, utilizando un programa de traducción desarrollado en Carnegie a fines de la década de 1950. [65] 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:

  • Declaraciones de asignación aritmética, por ejemplo, a = b
  • GO to n
  • GO TO (n1, n2, ..., nm), i
  • IF (a) n1, n2, n3
  • PAUSE
  • STOP
  • DO n i = m1, m2
  • CONTINUE
  • END
  • READ n, list
  • PUNCH n, list
  • DIMENSION V, V, V, ...
  • EQUIVALENCE (a,b,c), (d,c), ...

Se pueden utilizar hasta diez subrutinas en un programa.

Las declaraciones FOR TRANSIT se limitaron a las columnas 7 a 56, únicamente. 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 "TI", 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 (utilizando tarjetas perforadas para la entrada de datos y dando salida a 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 de indexación y aritmética decimal de coma flotante automática ( bi-quinaria ). El Apéndice A del manual incluía diagramas de cableado para el panel de control de perforado / lector de tarjetas IBM 533 .

Idiomas basados ​​en Fortran [ editar ]

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 se podía compilar en cualquier máquina con un compilador FORTRAN estándar. Estos preprocesadores suelen admitir 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 incluyen FLECS , iftran , MORTRAN , SFtran , S-Fortran , Ratfor y Ratfiv . Ratfor y Ratfiv, por ejemplo, implementaron un C-como lenguaje, que genera código preprocesado en FORTRAN 66 estándar. 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 utilizó popularmente en colegios y universidades. Desarrollado, apoyado y distribuido por la Universidad de Waterloo , WATFOR se basó principalmente en FORTRAN IV. Un estudiante que usa 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 semántica de su programa, o en el flujo de la lógica de ejecución, en lugar de lidiar con la presentación . Lenguaje de control de trabajos.(JCL), los procesos sucesivos de compilación / edición de enlaces / ejecución u otras complejidades del entorno de mainframe / minicomputadora. Un aspecto negativo de este entorno simplificado era que WATFOR no era una buena opción para los programadores que necesitaban las capacidades ampliadas de su (s) procesador (es) host, por ejemplo, WATFOR normalmente tenía un acceso muy limitado a los dispositivos de E / S. WATFOR fue sucedido por WATFIV y sus versiones posteriores.

programa ;  s = 0  i = 1 , n ;  s = s + 1 ;  detener i ;  s = 's'  Detener

(programación de línea)

LRLTRAN fue desarrollado en el Laboratorio de Radiación de Lawrence para proporcionar soporte para almacenamiento dinámico y aritmético vectorial, entre otras extensiones para apoyar 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 se denomina a menudo "CoCo".

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

SIMSCRIPT es un preprocesador Fortran específico de la aplicación 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 intentó eliminar las características redundantes, no estructuradas y obsoletas de Fortran, como la EQUIVALENCEdeclaración. F conserva las características de la matriz agregadas en Fortran 90 y elimina las declaraciones de control que se hicieron obsoletas por las construcciones de programación estructuradas agregadas tanto a FORTRAN 77 como a Fortran 90. F es descrito por sus creadores como "un lenguaje de programación de matriz compilado y estructurado especialmente adecuado a la educación y la informática científica ". [66]

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

Ejemplos de código [ editar ]

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

promedio del programa ! ¡Lea algunos números y tome el promedio  ! Como está escrito, si no hay puntos de datos, se devuelve un promedio de cero  . Si bien esto puede no ser un comportamiento deseado, este ejemplo es simple. ninguno implícito verdadero ,  dimensión (:),  asignables  ::  puntos  número entero  ::  NUMBER_OF_POINTS = 0  reales  ::  average_points = 0. ,  positive_average = 0. ,  negative_average = 0. write  ( * , * )  "Ingrese el número de puntos para promediar:"  read  ( * , * )  number_of_points asignar  ( puntos ( número_de_puntos )) escribe  ( * , * )  "Ingresa los puntos para promediar:"  lee  ( * , * )  puntos ! Tome el promedio sumando puntos y dividiendo por número_de_puntos  si  ( número_de_puntos  >  0 )  promedios_puntos  =  suma ( puntos )  /  número_de_puntos ! Ahora formar promedio de puntos positivos y negativos solamente  si  ( recuento ( puntos  >  0. )  >  0 )  entonces positive_average = suma ( puntos , puntos > 0. ) / recuento ( puntos > 0. ) final si            if  ( count ( puntos  <  0. )  >  0 )  then negative_average = sum ( puntos , puntos < 0. ) / count ( puntos < 0. ) end if            desasignar  ( puntos ) ! Resultado de la impresión al terminal  de escritura  ( * , '(a, g12.4)' )  '= Media' ,  average_points  escritura  ( * , '(a, g12.4)' )  'Promedio de puntos positivos =' ,  positive_average  escritura  ( * , '(a, g12.4)' )  'promedio de puntos negativos =' ,  negative_averagepromedio final del programa

Humor [ editar ]

Durante la misma reunión del comité de normas de FORTRAN en la que se eligió el nombre "FORTRAN 77", se incorporó una propuesta técnica satírica a la distribución oficial con el título "Letra O considerada perjudicial ". Esta propuesta pretendía abordar la confusión que a veces surge entre la letra "O" y el número cero, al eliminar la letra de los nombres de variables permitidos. Sin embargo, el método propuesto fue eliminar la letra del conjunto de caracteres por completo (conservando así 48 como el 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 notoria GO TOdeclaración como antes. (MolestoFORMATlas declaraciones también serían eliminadas.) Se señaló que esto "podría invalidar algunos programas existentes" pero que la mayoría de estos "probablemente no eran conformes, de todos modos". [69] [70]

Cuando X3J3 debatió si el recuento mínimo de viajes para un bucle DO debería ser cero o uno en Fortran 77, Loren Meissner sugirió un recuento mínimo de viajes de dos, razonando (irónicamente) que si era menos de dos, entonces habría ¡No hay razón para un bucle!

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

En FORTRAN 77 (y la mayoría de las versiones anteriores), los nombres de variables que comienzan con las letras I – N tenían un tipo predeterminado de entero, mientras que las variables que comienzan con cualquier otra letra tomaban por defecto el valor real, aunque los programadores podían anular los valores predeterminados con una declaración explícita. [71] Esto llevó a la broma: "En Fortran, DIOS es REAL (a menos que se declare INTEGER)".

Ver también [ editar ]

  • f2c
  • PARA MAC
  • Lista de compiladores de Fortran
  • Lista de bibliotecas numéricas de Fortran
  • Lista de lenguajes de programación
  • Representación matricial
  • Orden de fila principal
  • Código de espagueti

Referencias [ editar ]

  1. ^ "Especificaciones de la capilla (Agradecimientos)" (PDF) . Cray Inc. 1 de octubre de 2015 . Consultado el 14 de enero de 2016 .
  2. ^ "FORTRAN" . Diccionario de la herencia americana del idioma inglés (5 ed.). El diccionario gratuito. 2011 . Consultado el 8 de febrero de 2016 .
  3. ^ John Backus. "La historia de FORTRAN I, II y III" (PDF) . Softwarepreservation.org . Consultado el 19 de noviembre de 2014 .
  4. ^ Eugene Loh (18 de junio de 2010). "El lenguaje de programación ideal de HPC" . Cola . 8 (6).
  5. ^ "HPL - una implementación portátil del punto de referencia Linpack de alto rendimiento para equipos de memoria distribuida" . Consultado el 21 de febrero de 2015 .
  6. ^ "P13. ¿Cuáles son los puntos de referencia?" . Descripción general: CPU 2017 . SPEC . Consultado el 13 de noviembre de 2019 .
  7. ^ "Cincuenta años de BASIC" . Tiempo . 29 de abril de 2014.
  8. ^ Szczepaniak, John (1 de mayo de 2014). "Una historia básica de BASIC en su 50 aniversario" . Gamasutra .
  9. ^ TIOBE Software BV (abril de 2021). "Índice TIOBE de abril de 2021" . TIOBE.com . TIOBE . Consultado el 11 de abril de 2021 .
  10. ^ Chapman, Stephen J. (2018). Fortran para científicos e ingenieros (Cuarta ed.). Nueva York : McGraw-Hill Education . pag. 13. ISBN 978-0-07-338589-1.
  11. ^ El "conjunto de caracteres de 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 completo decaracteres ASCII .
  12. ↑ a b c d e Backus, John (octubre-diciembre de 1998). "La historia de Fortran I, II y III" (PDF) . IEEE Annals of the History of Computing . 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]
  13. ↑ a b J. W. Backus ; RJ Beeber; S. Best; R. Goldberg; LM Haibt ; HL Herrick; RA Nelson; D. Sayre ; PB Sheridan; H. Stern; L. Ziller; RA Hughes; R. Nutt (febrero de 1957). El sistema de codificación automática FORTRAN (PDF) . Conferencia de Computación Conjunta Occidental. págs. 188–198. doi : 10.1145 / 1455567.1455599 .
  14. ^ Mindell, David, Digital Apollo, MIT Press, Cambridge MA, 2008, p.99
  15. ^ Padua, David (enero-febrero de 2000). "El compilador de Fortran I" (PDF) . Computación en Ciencias e Ingeniería (CiSE) . los algoritmos superiores. Universidad de Illinois : IEEE : 70–75. 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 importancia crucial cuya solución general fue un foco de investigación importante en la tecnología de compiladores durante varias décadas. Muchas técnicas clásicas para el análisis y la optimización de compiladores pueden rastrear sus orígenes e inspiración en el compilador de Fortran I.
  16. ^ Brian Bergstein (20 de mayo de 2007). "Muere el creador de Fortran, John Backus" . MSNBC . Consultado el 29 de octubre de 2018 .
  17. ^ http://scihi.org/fortran-programming/
  18. ^ División de Ciencias Aplicadas y Departamento de Investigación de Programación, International Business Machines Corporation (15 de octubre de 1956). El sistema de codificación automática FORTRAN para IBM 704 EDPM: Manual de referencia del programador (PDF) . págs. 19-20.
  19. ^ Departamento de investigación de programación, International Business Machines Corporation (8 de abril de 1957). El sistema de codificación automática FORTRAN para el IBM 704 EDPM: Manual del operador preliminar (PDF) . págs. 6-37.
  20. ^ Betty Jo Armstead (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 .
  21. ^ Manual de referencia, Sistema de procesamiento de datos IBM 7090 , 1961, IBM A22-6528-3.
  22. ^ "Manual de usuario de Fortran II" (PDF) . Bitsavers.org . Consultado el 19 de noviembre de 2014 .
  23. ^ Manual de referencia, FORTRAN II para el sistema de procesamiento de datos IBM 704 (PDF) . 1958. C28-6000-2.
  24. ^ "Ibibilio.org" . Ibiblio.org . Consultado el 15 de septiembre de 2014 .
  25. ^ Haines, LH (1965). "Compilación en serie y el compilador 1401 FORTRAN" . Revista de sistemas de IBM . 4 (1): 73–80. doi : 10.1147 / sj.41.0073 .
  26. ^ Lee, John AN (1967). Anatomía de un compilador . Van Nostrand Reinhold.
  27. ^ Especificaciones de Fortran y procedimientos operativos, IBM 1401 (PDF) . IBM. C24-1455-2.
  28. ^ Especificaciones del lenguaje Fortran IV, especificaciones del programa y procedimientos operativos, IBM 1401, 1440 y 1460 (PDF) . IBM. Abril de 1966. C24-3322-2.
  29. ^ McCracken, Daniel D. (1965). "Prefacio" . Una guía para la programación de FORTRAN IV . Nueva York: Wiley. pag. v. ISBN 978-0-471-58281-6.
  30. ^ "Lista de implementaciones de FORTRAN 1957-1967" . Anales de IEEE. 2017 . Consultado el 17 de octubre de 2017 .
  31. ^ Características funcionales del IBM System / 360 Model 50 (PDF) . IBM. 1967. A22-6898-1.
  32. ^ "Compiladores y cargadores de FORTRAN" . Chilton-programming.org.uk . Consultado el 19 de noviembre de 2014 .
  33. ^ Frisch, Michael (diciembre de 1972). "Observaciones sobre algoritmos". Comunicaciones de la ACM . 15 (12): 1074. doi : 10.1145 / 361598.361914 . S2CID 6571977 . 
  34. ^ Mil-std-1753. Suplemento del DoD a X3.9-1978 . Oficina de Imprenta del Gobierno de los Estados Unidos . Archivado desde el original el 9 de noviembre de 2007 . Consultado el 13 de diciembre de 2007 .
  35. ^ 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 del sistema (API) . IEEE . Consultado el 24 de noviembre de 2018 .
  36. ^ Apéndice B.1
  37. ^ "Declaraciones de declaraciones para tipos de caracteres" . Manual de referencia del lenguaje Compaq Fortran . Texas, Huston, EE.UU .: Compaq Computer Corporation. 1999. Archivado desde el original el 18 de septiembre de 2018 . Consultado el 17 de septiembre de 2018 . El formulario CHARACTER * (*) es una característica obsoleta en Fortran 95.
  38. ^ "Referencia de Fortran 95" . Gnu.Org . Consultado el 10 de mayo de 2014 .
  39. ^ "Fortran 2003 - último borrador de trabajo" . Gnu.Org . Consultado el 10 de mayo de 2014 .
  40. ^ Grupo de trabajo de Fortran (WG5) . También se puede descargar como archivo PDF , FTP.nag.co.uk
  41. ^ "N1836, Resumen de votación / Tabla de respuestas en ISO / IEC FDIS 1539-1, Tecnología de la información - Lenguajes de programación - Fortran - Parte 1: Lenguaje base" (PDF) .
  42. ^ "Fortran 2008 - último borrador de trabajo" (PDF) . Gnu.Org . Consultado el 10 de mayo de 2014 .
  43. ^ N1830, Tecnología de la información - Lenguajes de programación - Fortran - Parte 1: Lenguaje base [3] [ enlace muerto ]
  44. ^ Página ISO a ISO / IEC DTS 29113, Interoperabilidad adicional de Fortran con C
  45. ^ "Borrador de la especificación técnica (TS) 29113" (PDF) . wg5-fortran.org .
  46. ^ "Doctor Fortran en" Dieciocho es el nuevo Quince " " . Software.intel.com . Consultado el 20 de noviembre de 2017 .
  47. ^ "Fortran 2018" . ISO . Consultado el 30 de noviembre de 2018 .
  48. ^ "Mayor interoperabilidad con C" (PDF) . ISO . Consultado el 20 de noviembre de 2017 .
  49. ^ "Funciones paralelas adicionales en Fortran" . ISO . Consultado el 20 de noviembre de 2017 .
  50. ^ "Las nuevas características de Fortran 2015" . ISO . Consultado el 23 de junio de 2017 .
  51. ^ "Doctor Fortran en" Una puerta se cierra " " . Software.intel.com . Consultado el 21 de septiembre de 2015 .
  52. ^ "Doctor Fortran se vuelve holandés: Fortran 2015" . Software.intel.com . Consultado el 19 de noviembre de 2014 .
  53. ^ Documento de interpretación de Fortran 2018 , 9 de octubre de 2018
  54. ^ Kemeny, John G .; Kurtz, Thomas E. (11 de octubre de 1968). "Tiempo compartido de Dartmouth" . Ciencia . 162 (3850): 223–228. Código Bibliográfico : 1968Sci ... 162..223K . doi : 10.1126 / science.162.3850.223 . PMID 5675464 . 
  55. ^ Phillips, Lee. "El futuro de la informática científica: ¿Puede algún lenguaje de codificación superar a un gigante de los años 50?" . Ars Technica . Consultado el 8 de mayo de 2014 .
  56. ^ Pasachoff, Jay M. (abril de 1984). "Científicos: FORTRAN vs. Modula-2" . BYTE (letra). pag. 404 . Consultado el 6 de febrero de 2015 .
  57. ^ Galperin, Boris (1993). "26". Simulación de remolinos grandes de ingeniería compleja y flujos geofísicos . Londres: Cambridgey. pag. 573. ISBN 978-0-521-43009-8.
  58. ^ "Interestelar de 8 pistas: cómo la tecnología Vintage de la Voyager sigue funcionando" . CON CABLE . Consultado el 23 de diciembre de 2017 .
  59. ^ "Métodos para asegurar la estandarización del software FORTRAN". OSTI 5361454 . PUERTO ... Biblioteca ...  Cite journal requiere |journal=( ayuda )
  60. ↑ a b P. A. Fox (1977). "Puerto: una biblioteca portátil de subrutinas matemáticas". Una biblioteca portátil de subrutinas matemáticas . Apuntes de conferencias en informática. 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
  61. ^ DE Whitten (1975). "Una máquina y configuración Fortran independiente: Portable Fortran". doi : 10.1109 / TSE.1975.6312825 . S2CID 16485156 .  Cite journal requiere |journal=( ayuda )
  62. ^ "Problemas de portabilidad" . .. analiza .. la portabilidad de .. Fortran
  63. ^ 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 .
  64. ^ "notas de la versión de terceros para Fortran v6.1" . Cs-software.com. 15 de marzo de 2011 . Consultado el 19 de noviembre de 2014 .
  65. ^ "Traductor interno (TI) un compilador para el IBM 650", por AJ Perlis, JW Smith y HR Van Zoeren, Centro de Computación, Instituto Carnegie de Tecnología
  66. ^ "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 .
  67. ^ "Fortran para el sistema de lenguaje .NET" . Archivado desde el original el 18 de octubre de 2014.
  68. ^ "FTN95: Fortran 95 para Windows" . Silverfrost.com . Consultado el 19 de noviembre de 2014 .
  69. ^ Distribución posterior a la reunión de X3J3 para la reunión celebrada en el Laboratorio Nacional de Brookhaven en noviembre de 1976. [ ¿fuente no confiable? ]
  70. ^ "La obliteración de O", Computer Weekly, 3 de marzo de 1977.
  71. ^ "Reglas para la escritura de datos (Referencia del lenguaje FORTRAN 77)" . docs.oracle.com . Consultado el 29 de septiembre de 2016 .

Lectura adicional [ editar ]

Estándares del idioma
  • Ansi x3.9-1966. Estándar de EE. UU. FORTRAN (PDF) . Instituto Americano de Estándares Nacionales. Archivado desde el original (PDF) el 15 de mayo de 2011 . Consultado el 5 de mayo de 2010 . Conocido informalmente como FORTRAN 66.
  • Ansi x3.9-1978. Estándar nacional estadounidense - Lenguaje de programación FORTRAN . Instituto Americano de Estándares Nacionales. Archivado desde el original el 29 de octubre de 2013 . Consultado el 11 de diciembre de 2007 .También conocida como ISO 1539-1980, informalmente conocida como FORTRAN 77.
  • ANSI X3.198-1992 (R1997) / ISO / IEC 1539: 1991. Estándar Nacional Estadounidense - Lenguaje de programación Fortran Extended . Instituto Nacional Americano de Normas / ISO / IEC. Archivado desde el original el 1 de mayo de 2002. Conocido informalmente como Fortran 90.
  • ISO / IEC 1539-1: 1997. Tecnología de la información - Lenguajes de programación - Fortran - Parte 1: Lenguaje base (PDF) . Archivado desde el original (PDF) el 18 de agosto de 2011 . Consultado el 13 de diciembre de 2007 .Conocido informalmente como Fortran 95. Hay dos partes más en este estándar. La Parte 1 ha sido adoptada formalmente por ANSI.
  • ISO / IEC 1539-1: 2004. Tecnología de la información - Lenguajes de programación - Fortran - Parte 1: Lenguaje base (PDF) . Conocido informalmente como Fortran 2003.
  • ISO / IEC 1539-1: 2010 (Borrador final de norma internacional). Tecnología de la información - Lenguajes de programación - Fortran - Parte 1: Lenguaje base (PDF) .[ enlace muerto permanente ] Conocido informalmente como Fortran 2008.
Estándares relacionados
  • Kneis, Wilfried (octubre de 1981). "Proyecto de norma industrial en tiempo real FORTRAN" . Avisos ACM SIGPLAN . 16 (7): 45–60. doi : 10.1145 / 947864.947868 . ISSN  0362-1340 . S2CID  8662381 .
  • ISO 8651-1: 1988 Sistemas de procesamiento de información - Gráficos por computadora - Vinculaciones de lenguaje del sistema de kernel gráfico (GKS) - Parte 1: FORTRAN . Ginebra, Suiza: ISO . 1988.
Otro material de referencia
  • Estándar ECMA en FORTRAN (PDF) . Asociación europea de fabricantes de ordenadores. Abril de 1965 . Consultado el 17 de noviembre de 2014 .
  • FORTRAN 77 4.0 Manual de referencia (PDF) . Sun Microsystems, Inc. 1995 . Consultado el 17 de noviembre de 2014 .
  • "Formulario de codificación FORTRAN" (PDF) . IBM . Archivado desde el original (PDF) el 8 de junio de 2015 . Consultado el 17 de noviembre de 2014 .
  • IBM System / 360 y System / 370 Fortran IV Language (PDF) . Máquinas de negocios internacionales . Mayo de 1974. Archivado desde el original (PDF) el 6 de abril de 2011 . Consultado el 17 de noviembre de 2014 .
  • Goerz, Michael (2014). "Tarjeta de referencia moderna de Fortran" (PDF) . Consultado el 14 de diciembre de 2014 .
Libros
  • Adams, Jeanne C .; Brainerd, Walter S .; Hendrickson, Richard A .; Maine, Richard E .; Martin, Jeanne T .; Smith, Brian T. (2009). The Fortran 2003 Handbook (1ª ed.). Springer . ISBN 978-1-84628-378-9.
  • Ruetsch, Gregory; Fatica, Massimiliano (2013). CUDA Fortran para científicos e ingenieros (1ª ed.). Elsevier . pag. 338. ISBN 9780124169708.
  • Akin, Ed: "Programación orientada a objetos a través de Fortran 90/95", Cambridge Univ Press, ISBN 978-0521524087 , (febrero de 2003). 
  • Brainerd, Walter S., Goldberg, Charles H., Adams, Jeanne C .: "Guía del programador de Fortran 90" (3ª edición), Springer, (1996).
  • Brainerd, Walter S .: "Guía de programación de Fortran 2008" (2ª edición), Springer, ISBN 978-1447167587 , (septiembre de 2015). 
  • Chapman, Stephen J. (2018). Fortran para científicos e ingenieros (Cuarta ed.). Nueva York : McGraw-Hill Education . págs. xxiv + 1024. ISBN 978-0-07-338589-1.Comprobar |isbn=valor: carácter no válido ( ayuda ) .
  • Chivers, Ian; Sleightholme, Jane (2018). Introducción a la programación con Fortran (4ª ed.). Saltador. ISBN 978-3-319-75501-4.
  • Clerman, Norman S., Spector, Walter: "Modern Fortran: Style and Usage", Cambridge University Press, ISBN 978-0521514538 , (febrero de 2012). 
  • Ellis, TMR; Phillips, Ivor R .; Lahey, Thomas M. (1994). Programación Fortran 90 (1ª ed.). Addison Wesley. ISBN 978-0-201-54446-6.
  • Etter, DM (1990). FORTRAN 77 estructurado para ingenieros y científicos (3ª ed.). The Benjamin / Cummings Publishing Company, Inc. ISBN 978-0-8053-0051-2.
  • Kerrigan, JF (1993). Migrando a Fortran 90 (1ª ed.). O'Reilly & Associates, Inc. ISBN 1-56592-049-X.
  • Kupferschmid, Michael (2002). Fortran clásico: programación para aplicaciones científicas y de ingeniería . Marcel Dekker (CRC Press). ISBN 978-0-8247-0802-3.
  • Lorenzo, Mark Jones: "Abstracting Away the Machine: The History of the FORTRAN Programming Language (FORmula TRANslation)", publicado de forma independiente, ISBN 978-1082395949 , (agosto de 2019). 
  • Loukides, Mike (1990). Unix para programadores FORTRAN . Sebastopol, CA 95472: O'Reilly & Associates, Inc. ISBN 0-937175-51-X.Mantenimiento de CS1: ubicación ( enlace )
  • McCracken, Daniel D. (1961). Una guía para la programación de FORTRAN . Nueva York: Wiley. LCCN  61016618 .
  • Metcalf, Michael; Reid, John; Cohen, Malcolm: "Modern Fortran Explained: Incorporating Fortran 2018" (5.a edición), Oxford Univ. Press, ISBN 978-0198811886 , (noviembre de 2018). 
  • Nyhoff, Larry; Sanford Leestma (1995). FORTRAN 77 para ingenieros y científicos con una introducción a Fortran 90 (4ª ed.). Prentice Hall . ISBN 978-0-13-363003-9.
  • Page, Clive G. (1988). Guía del programador profesional de Fortran77 (7 de junio de 2005 ed.). Londres: Pitman. ISBN 978-0-273-02856-7. Consultado el 4 de mayo de 2010 .
  • Prensa, William H. (1996). Recetas numéricas en Fortran 90: el arte de la computación científica paralela . Cambridge, Reino Unido: Cambridge University Press. ISBN 978-0-521-57439-6.
  • Sleighthome, Jane; Chivers, Ian David (1990). Fortran 77 interactivo: un enfoque práctico . Computadoras y sus aplicaciones (2ª ed.). Chichester: E. Horwood. ISBN 978-0-13-466764-5. Archivado desde el original el 12 de marzo de 2014 . Consultado el 12 de marzo de 2014 .
Artículos
  • Allen, FE (septiembre de 1981). "Una historia de la tecnología de procesadores de lenguaje en IBM". IBM Journal of Research and Development . 25 (5): 535–548. doi : 10.1147 / rd.255.0535 . S2CID  14149353 .
  • JW Backus ; RJ Beeber; S. Best; R. Goldberg; LM Haibt ; HL Herrick; RA Nelson; D. Sayre ; PB Sheridan; H. Stern; L. Ziller; RA Hughes; R. Nutt (febrero de 1957). El sistema de codificación automática FORTRAN (PDF) . Conferencia de Computación Conjunta Occidental. págs. 188–198. doi : 10.1145 / 1455567.1455599 .
  • Chivers, Ian D .; Sleightholme, Jane (2013). "Soporte del compilador para los estándares Fortran 2003 y 2008" . ACM SIGPLAN Foro Fortran . 28 (1): 26-28. doi : 10.1145 / 1520752.1520755 . ISSN  1061-7264 . S2CID  26200779 . Archivado desde el original el 16 de mayo de 2008.
  • Metcalf, Michael (2011). "Las siete edades de Fortran" . Revista de Ciencias y Tecnología de la Computación . 11 (1): 1–8.
  • Pigott, Diarmuid (2006). "FORTRAN - Backus et al compilador de alto nivel (lenguaje de computadora)" . La enciclopedia de lenguajes informáticos . Universidad de Murdoch . Archivado desde el original el 8 de octubre de 2009 . Consultado el 5 de mayo de 2010 .
  • Roberts, Mark L .; Griffiths, Peter D. (1985). "Consideraciones de diseño para IBM Personal Computer Professional FORTRAN, un compilador de optimización" (PDF) . Revista de sistemas de IBM . 24 (1): 49–60. doi : 10.1147 / sj.241.0049 .

Enlaces externos [ editar ]

  • ISO / IEC JTC1 / SC22 / WG5: el hogar oficial de los estándares de Fortran
  • Documentos de estándares de Fortran: estándares de GFortran
  • fortran-lang.org: el nuevo hogar de Fortran en Internet (2020).
  • Historia de FORTRAN y Fortran II - Museo de Historia de la Computación
  • Valmer Norrod, et al .: Un curso de autoaprendizaje sobre programación FORTRAN — Volumen I — libro de texto , Computer Science Corporation El Segundo, California (abril de 1970). NASA (N70-25287).
  • Valmer Norrod, Sheldom Blecher y Martha Horton: Un curso de autoaprendizaje sobre programación FORTRAN — Volumen II — libro de trabajo , NASA CR-1478 (abril de 1970), NASA (N70-25288).