Ir al contenido

Fortran

De Wikipedia, la enciclopedia libre
Fortran
IBM y John Backus
https://fortran-lang.org
Informaci�n general
Extensiones comunes f, for y f90
Apareci� en 1957
Dise�ado por John Backus
Influido por Speedcoding
Licencia Licencia MIT

Fortran (previamente FORTRAN,[1]​ contracci�n del ingl�s The IBM Mathematical Formula Translating System) es un lenguaje de programaci�n de alto nivel de prop�sito general,[2]procedural[3]​ e imperativo, que est� especialmente adaptado al c�lculo num�rico y a la computaci�n cient�fica. Desarrollado originalmente por IBM en 1957 para el equipo IBM 704, y usado para aplicaciones cient�ficas y de ingenier�a, el FORTRAN vino a dominar esta �rea de la programaci�n desde el principio y ha estado en uso continuo por m�s de medio siglo en �reas de c�mputo intensivo tales como la predicci�n num�rica del tiempo, an�lisis de elementos finitos, din�mica de fluidos computacional (CFD), f�sica computacional y qu�mica computacional. Es uno de los lenguajes m�s populares en el �rea de la computaci�n de alto rendimiento y es el lenguaje usado para programas que eval�an el desempe�o (benchmark) y el ranking de los supercomputadores m�s r�pidos del mundo.[4]

El FORTRAN abarca un linaje de versiones, cada una de las cuales evolucion� para a�adir extensiones al lenguaje mientras que usualmente reten�a compatibilidad con las versiones previas. Versiones sucesivas han a�adido soporte para procesamiento de datos basados en caracteres (FORTRAN 77), programaci�n de matrices, programaci�n modular y programaci�n orientada a objetos (Fortran 90/95), y programaci�n gen�rica (Fortran 2003).

Historia

[editar]
C�digo FORTRAN en una tarjeta perforada, mostrando el uso especializado de las columnas 1-5, 6 y 73-80.

A finales de 1953, John W. Backus someti� una propuesta a sus superiores en IBM para desarrollar una alternativa m�s pr�ctica al lenguaje ensamblador para programar el computador central IBM 704..[5]: 69  El hist�rico equipo FORTRAN de Backus consisti� en los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David Sayre.[6]

A mediados de 1954 fue terminada una especificaci�n del borrador para el IBM Mathematical Formula Translating System. El primer manual de FORTRAN apareci� en octubre de 1956, porque los clientes eran reacios a usar un lenguaje de programaci�n de alto nivel a menos que su compilador pudiera generar c�digo cuyo desempe�o fuera comparable al de un c�digo hecho a mano en lenguaje ensamblador.

Mientras que la comunidad era esc�ptica sobre este nuevo lenguaje, este redujo en 20 veces el n�mero de sentencias de programaci�n necesarias para operar una m�quina, y r�pidamente gan� aceptaci�n. Durante una entrevista en 1979 con Think, la revista de los empleados de IBM, el creador John Backus, dijo: �Mucho de mi trabajo surgi� por ser perezoso. No me gustaba escribir programas y por eso, cuando estaba trabajando en el IBM 701 escribiendo programas para computar trayectorias de misiles, comenc� a trabajar en un sistema de programaci�n para hacer m�s f�cil escribir programas�.[7]

El lenguaje fue ampliamente adoptado por los cient�ficos para escribir programas num�ricamente intensivos, que incentiv� a los escritores de compiladores a producir compiladores que pudieran generar un c�digo m�s r�pido y m�s eficiente. La inclusi�n en el lenguaje de un tipo de datos de n�meros complejos ampli� la gama de aplicaciones para las cuales el lenguaje se adaptaba especialmente e hizo al FORTRAN especialmente adecuado para aplicaciones t�cnicas tales como la ingenier�a el�ctrica.

Hacia 1960, las versiones de FORTRAN estaban disponibles para los computadores IBM 709, 650, 1620, y 7090. La cada vez mayor popularidad del FORTRAN estimul� significativamente a fabricantes de computadores de la competencia a proporcionar compiladores FORTRAN para sus m�quinas, as� que all� por 1963 exist�an m�s de 40 compiladores FORTRAN. Por estas razones, el FORTRAN es considerado el primer lenguaje de programaci�n ampliamente usado soportado a trav�s de una variedad de arquitecturas de computador.

El desarrollo del FORTRAN fue paralelo a la temprana evoluci�n de la tecnolog�a del compilador. De hecho, 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 en FORTRAN.

Origen del nombre

[editar]

El primer manual de FORTRAN lo describe como un Sistema Traductor de F�rmulas (Formula Translating System), y mostraba el nombre en versalita, FORTRAN.[8][5]​ Otras fuentes sugieren que el nombre significa Traductor de F�rmulas (Formula Translator),[9]​ o Traducci�n de F�rmulas (Formula Translation.[10]​ Los primeros ordenadores IBM no soportaban min�sculas y los nombres de las versiones del lenguaje hasta FORTRAN 77 se escrib�an normalmente en may�sculas[11]​ (FORTRAN 77 fue la �ltima versi�n en la que el juego de caracteres de Fortran inclu�a s�lo may�sculas[12]​). Desde Fortran 90, las normas oficiales del lenguaje Fortran lo denominan �Fortran� con may�scula inicial.

Versiones

[editar]

Algunas otras versiones subsiguientes fueron:

  • FORTRAN I
  • FORTRAN II
  • FORTRAN IV
  • FORTRAN 66
  • FORTRAN 77
  • Fortran 90
  • Fortran 95
  • Fortran 2003
  • Fortran 2008
  • Fortran 2018

Principales caracter�sticas

[editar]

El lenguaje fue dise�ado teniendo en cuenta que los programas ser�an escritos en tarjetas perforadas de 80 columnas. As� por ejemplo, las l�neas deb�an ser numeradas y la �nica alteraci�n posible en el orden de ejecuci�n era producida con la instrucci�n goto. Estas caracter�sticas han evolucionado de versi�n en versi�n. Las actuales contienen subprogramas, recursi�n y una variada gama de estructuras de control.

Ventajas e inconvenientes de su sintaxis

[editar]

Como fue una primera tentativa de creaci�n de un lenguaje de programaci�n de alto nivel, tiene una sintaxis considerada arcaica por muchos programadores que aprenden lenguajes m�s modernos. Es dif�cil escribir un bucle �for�, y errores en la escritura de un solo car�cter pueden llevar a errores durante el tiempo de ejecuci�n en vez de errores de compilaci�n, en el caso de que no se usen las construcciones m�s frecuentes. Algunas de las primeras versiones no pose�an facilidades que son consideradas muy �tiles, tal como la asignaci�n din�mica de memoria.

Se debe tener en cuenta que la sintaxis de Fortran fue orientada para el uso en trabajos num�ricos y cient�ficos. Muchas de sus deficiencias han sido abordadas en revisiones recientes del lenguaje. Por ejemplo, Fortran 95 posee comandos mucho m�s breves para efectuar operaciones matem�ticas con matrices y dispone de tipos. Esto no solo mejora mucho la lectura del programa sino que adem�s aporta informaci�n �til al compilador.

Por estas razones Fortran prácticamente no se usa fuera de los campos científicos y del análisis numérico, pero permanece como el lenguaje preferido para desarrollar aplicaciones de computación numérica de alto rendimiento.

Especificaciones

[editar]

Existen dos versiones normalizadas del lenguaje.

  • ANSI X3.198-1992 (R1997). Título: Programming Language “Fortran” Extended. Conocida como Fortran 90. Se trata de un estándar publicado por ANSI.
  • ISO/IEC 1539-1:1997. Title: Information technology - Programming languages - Fortran - Part 1: Base language. Conocida como Fortran 95. también adoptada por ANSI.

A continuación se muestra el código fuente en lenguaje Fortran de un programa que permite realizar un ajuste o regresión lineal de una serie de datos:

REGRESION LINEAL.FORTRANS
APLICACION
     DIMENSION TIEMPO(1000),PROD(1000)
        OPEN(1,FILE='HISTORIA.txt')
        I=0
 10     READ(1,*,END=80)T,P
        I=I+1
        TIEMPO(.l.)=T
        PROD(I)=P
        GO TO 10
 80     NDATOS=I
        CALL AJULIN(TIEMPO,PROD,NDATOS,A,B)
        WRITE(*,90)A,B
 90     FORMAT('LA ECUACION ES:Y=',F10.2,'+',F10.2,'X')
 20     FORMAT(20F10.0)
        END

        SUBROUTINE AJULIN(X,Y,N,A,B)
         DIMENSION X(1),Y(1)
          SUMX=0.
          SUMY=0.
          SUMX2=0.
          SUMY2=0
          SUMXY=0
        DO 20 I=1,N
         SUMX=SUMX+X(.l.)
         SUMY=SUMY+Y(.l.)
         SUMX2=SUMX2+(X(I)*X(.l.))
         SUMY2=SUMY2+Y(I)**2
         SUMXY=SUMXY+(X(I)*Y(I))
 20    CONTINUE
        PROD=SUMX*SUMY
        B=(SUMXY-PROD/N)/(SUMX2-SUMX**2/N)
        A=(SUMY/N-B*SUMX/N)
       RETURN
       END

Básicamente, en el programa se lee desde un archivo ASCII cierta cantidad de pares ordenados, se convoca a una rutina que calcula la recta de ajuste correspondiente, usando el método de mínimos cuadrados, para luego retornar aportando los coeficientes o parámetros de la recta en cuestión.

Portabilidad

[editar]

La portabilidad era un problema en los primeros tiempos porque no había un estándar acordado -ni siquiera el manual de referencia de IBM- y las empresas informáticas competían por diferenciar sus ofertas de las de los demás ofreciendo características incompatibles. Los estándares han mejorado la portabilidad. El estándar de 1966 proporcionaba una sintaxis y una semántica de referencia, pero los vendedores seguían proporcionando extensiones incompatibles. Aunque los programadores cuidadosos se daban cuenta de que el uso de extensiones incompatibles causaba costosos problemas de portabilidad, y por ello utilizaban programas como The PFORT Verifier,[13][14]​ no fue hasta después de la norma de 1977, cuando la Oficina Nacional de Estándares (ahora NIST) publicó FIPS PUB 69, que los procesadores comprados por el Gobierno de Estados Unidos debían diagnosticar las extensiones de la norma. En lugar de ofrecer dos procesadores, esencialmente cada compilador finalmente tenía al menos una opción para diagnosticar extensiones.[15][16]

Las extensiones incompatibles no eran 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 por la biblioteca PORT.[14]​ Las ideas en ella se utilizaron ampliamente, y finalmente se incorporaron en el estándar de 1990 por medio de funciones intrínsecas de consulta. La adopción generalizada (ahora casi universal) del estándar IEEE 754 para la 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 la norma 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 con la incorporación de la interoperabilidad de C en la norma de 2003.

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

Referencias

[editar]
  1. Antes de 1977 el nombre del lenguaje se escribía de forma convencional con todas las letras en mayúscula. En el año 1977 el uso de letras minúsculas en las palabras clave dejó de formar parte del estándar. El uso distinto de mayúsculas y minúsculas en el nombre se eliminó a partir de Fortran 90. En la actualidad, los manuales y estándares oficiales del lenguaje se refieren a él como «Fortran» (así escrito, con la primera letra en mayúscula y el resto en minúsculas). Debido a que el uso de mayúsculas en la palabra FORTRAN (o su ausencia) nunca fue 100 % consistente en el uso real a lo largo del tiempo, y dado que muchas personas tienen creencias apasionadas sobre el tema, este artículo, en lugar de intentar ser normativo al respecto, adoptará la convención de usar «FORTRAN» todo en mayúsculas para referirse a las versiones del lenguaje hasta el año 1977, y dejar el nombre «Fortran» (en su forma moderna) para referirse a las versiones del lenguaje desde el año 1990 en adelante. Esta convención es la que se refleja en el nombre del lenguaje que se usa en los estándares ANSI X3.9-1966 (FORTRAN 66) y ANSI X3.9-1978 (FORTRAN 77), así como en los estándares ANSI X3.198-1992 (Fortran 90), ISO/IEC 1539-1:1997 (Fortran 95) e ISO/IEC 1539-1:2004 (Fortran 2003).
  2. Desde FORTRAN 77, que introdujo el tipo de datos CHARACTER.
  3. Desde FORTRAN II (1958).
  4. http://www.top500.org/project/linpack
  5. a b Backus, John (October–December 1998). «The History of Fortran I, II, and III». IEEE Annals of the History of Computing (en inglés) 20 (4): 68-78. doi:10.1109/85.728232. Archivado desde el original el 3 de marzo de 2016. Consultado el 17 de junio de 2020.  [1][2]
  6. http://www.softwarepreservation.org/projects/FORTRAN/index.html#By_FORTRAN_project_members
  7. Fortran creator John Backus dies - Gadgets - MSNBC.com
  8. Backus, John Warner; Beeber, R. J.; Best, Sheldon F.; Goldberg, Richard; Herrick, Harlan L.; Hughes, R. A.; Mitchell, L. B.; Nelson, Robert A.; Nutt, Roy; Sayre, David; Sheridan, Peter B.; Stern, Harold; Ziller, Irving (15 de octubre de 1956). Sayre, David, ed. The FORTRAN Automatic Coding System for the IBM 704 EDPM: Programmer's Reference Manual. New York, USA: Applied Science Division and Programming Research Department, International Business Machines Corporation. pp. 2, 19-20. Archivado desde el original el 4 de julio de 2022. Consultado el 4 de julio de 2022.  (2+51+1 pages)
  9. «FORTRAN: The Pioneering Programming Language». IBM. 7 de marzo de 2012. Consultado el 19 de julio de 2017. 
  10. «FORTRAN». Encyclopedia Britannica. 14 de junio de 2021. Consultado el 19 de julio de 2021. 
  11. Chapman, Stephen J. (2018). Fortran for Scientists and Engineers (Fourth edición). New York: McGraw-Hill Education. p. 13. ISBN 978-0-07-338589-1. 
  12. El «juego de caracteres Fortran» definido por el estándar FORTRAN 77 era el juego de caracteres mínimo que los compiladores compatibles con el estándar debían soportar. En la práctica, muchos compiladores FORTRAN 77 soportaban el juego de caracteres completo ASCII.
  13. Gaffney, P W; Wooten, J W (1 de mayo de 1980), Methods to ensure the standardization of FORTRAN software, Oak Ridge National Laboratory, OSTI 5361454, «PFORT ... Library ...» .
  14. a b P. A. Fox (1977). «Port - Una biblioteca portátil de subrutinas matemáticas». Una biblioteca portátil de subrutinas matemáticas. Notas de clase en Ciencias de la Computación 57. pp. 165-177. ISBN 978-3-540-08446-4. doi:10.1007/3-540-08446-0_42. «PORT ... escrito en (PFORT) .. ANS Fortran». 
  15. Whitten, Douglas E.; Demaine, Paul A. D. (1975). «Un Fortran independiente de la máquina y la configuración: Portable Fortran {PFortran}». IEEE Transactions on Software Engineering (Institute of Electrical and Electronics Engineers (IEEE)). SE-1 (1): 111-124. ISSN 0098-5589. S2CID 16485156. doi:10.1109/tse.1975.6312825. 
  16. «Cuestiones de portabilidad». «.. discute la portabilidad de .. Fortran». 

Enlaces externos

[editar]

Recursos de programación

[editar]