Fortran

De Viquipèdia
Dreceres ràpides: navegació, cerca
Fortran
Fortran acs cover.jpeg
Aparegut l'any: 1957[1]
Desenvolupador: John Backus i IBM[1]
Darrera versió estable: Fortran 2008 (ISO/IEC 1539-1:2010)
Tipus de dades: estàtic, manifest i nominal
Majors implementacions múltiples, per exemple Absoft, Cray, GFortran, G95, IBM, Intel, Lahey/Fujitsu, Numerical Algorithms Group, Open Watcom, PathScale, PGI, Silverfrost, Oracle, XL Fortran,
Influenciat per: Speedcoding
Ha influenciat: ALGOL 58, BASIC, C, PL/I, PACT I, MUMPS, Ratfor
Sistema operatiu: multiplataforma
Extensió dels fitxers: .f, .for, .f90, .f95

Fortran (o FORTRAN) és el primer Llenguatge de programació d'alt nivell, desenvolupat a la dècada dels 50 i encara usat actualment. El nom ve de FORmula TRANslation ("traducció de fórmules" en anglès). Les primeres versions usaven el nom FORTRAN, però l'estàndard actual es refereix al llenguatge com a Fortran[2]

El primer compilador de FORTRAN per a l'IBM 704 va ser desenvolupat de 1954 a 1957 per un equip d'IBM dirigit per John W. Backus.[1] L'objectiu principal va ser desenvolupar un llenguatge d'alt nivell, que permetés escriure programes independents de la màquina, però que tingués una velocitat d'execució semblant a la del llenguatge d'assemblador. El llenguatge va ser un èxit rotund, i a la comunitat científica es va adoptar de seguida. Com que el llenguatge s'ha fet servir sempre per a programes numèricament intensius, els compiladors de Fortran solen produir executables molt eficients. Tot i això, a finals dels anys 80, el llenguatge (Fortran 77) havia quedat força endarrerit respecte a altres com C. Les noves revisions (Fortran 90 i 95) han modernitzat el llenguatge eliminant-ne algunes de les característiques més obsoletes i afegint suport per a programació orientada a objectes, paral·lelisme, etc. Actualment, Fortran s'utilitza gairebé només per a càlcul científic i anàlisi numèrica. [3]

Versions de Fortran[modifica | modifica el codi]

El llenguatge Fortran ha anat evolucionant amb els anys, i se n'han publicat successius estàndards oficials.

  • FORTRAN IV (o FORTRAN 66)
  • FORTRAN 77
  • Fortran 90: ANSI X3.198-1992 (R1997). Títol: Programming Language "Fortran" Extended.
  • Fortran 95: ISO/IEC 1539-1:1997. Titol: Information technology - Programming languages - Fortran - Part 1: Base language
  • Fortran 2003 ISO/IEC 1539-1:2004 Títol: Information technology - Programming languages - Fortran - Part 1: Base language
  • Fortran 2008 ISO/IEC 1539-1:2010
  • Fortran 2015, en preparació

Fortran 90[modifica | modifica el codi]

Fortran 90 suposa un gran canvi en la història de fortran. Afegeix moltes característiques que reflecteixen els canvis en la programació des del 1978.

  • El codi es pot escriure en format lliure, i la facilitat d'escriure en minúscules
  • Els identificadors poden tenir fins a 31 caràcters
  • Es poden fer comentaris en una línia
  • Es poden fer operacions de matrius
  • Subprogrames recursius
  • Mòduls, permet reunir subprogrames i dades, permet limitar l'accés a algunes parts del codi
  • Millora de la gestió dels arguments dels subprogrames, i permet comprovar les interfícies en temps de compilació
  • Sobrecàrrega d'operadors
  • Estructures de dades
  • Millora en declarar les variables. Es permet donar més informació de la variable
  • Gestió de la memòria dinàmica. Es permet reservar/alliberar memòria en temps d'execució
  • Es pot declarar una variable com a punter
  • Bucles estructurats. Acabats amb "end do", i amb les ordres "exit" i "cycle" per poder canviar la lògica del bucle
  • "Select Case"
  • Control de l'usuari de la precisió
  • Noves funcions intrínseques

Fortran 95[modifica | modifica el codi]

El fortran 95 és una petita revisió de fortran 90. No pretén fer cap canvi radical, sinó corregir alguns problemes del fortran 90 i afegir unes quantes extensions basades en el High Performance Fortran

  • "Forall" i "Where" que ajuden a la vectorització
  • L'usuari pot definir els subprogrames com a "pure" i "elemental"
  • Inicialització de punters i estructures

Una de les grans addicions a l'estàndard és el ISO Technical Report: TR-15581: Enhanced Data Type Facilities, normalment conegut com a Allocatable TR. Aquest millora les capacitats de la reserva de memòria. Es poden definir matrius "alocatables" a dintre de les estructures de dades, reservar la memòria en subprogrames i reservar la memòria com a retorn d'una funció.

Una altra addició és el suport de l'aritmètica de coma flotant, definit en l'estàndard ISO Technical Report: TR-15580: Floating-point exception handling

Fortran 2003[modifica | modifica el codi]

És una revisió amb moltes característiques noves. Existeix un sumari d'aquestes en la plana web oficial del Fortran Working Group (WG5)[4]

Fortran 2008[modifica | modifica el codi]

Aquest és l'últim estàndard, ISO/IEC 1539-1:2010, conegut de manera informal com Fortran 2008, va ser aprovat el setembre de 2010 .[5][6] Tal com el Fortran 95, aquesta és una modificació menor, que incorpora aclariments i correccions a Fortran 2003.

Fortran 2015[modifica | modifica el codi]

La següent versió del llenguatge (Fortran 2015) serà una revisió menor de l'estandard Fortran 2008. Actualment, està planejat d'incorporar noves funcionalitats per a millorar la interoperacionalitat entre Fortran i C i facilitar la computació paral·lela.[7]

Programa d'exemple (Fortran 90 o 95)[modifica | modifica el codi]

Hola món[modifica | modifica el codi]

Aquest programa escriu "Hola món" al dispositiu de sortida per defecte (habitualment, la consola),

program hola
  write(*,*)'Hola món!'
end program hola

Assignació de memòria[modifica | modifica el codi]

El següent programa mostra l'ús de l'assignació de memòria dinàmicament i operacions basades en vectors, dues noves funcionalitats afegides en la versió Fortran 90. En particular, cal remarcar l'absència de llaços DO i dels connectors IF/THEN alhora de manipular els vectors matemàticament com un tot.

  program mitja
 
  ! Llegeix uns quants nombres i els hi calcula la seva mitja. 
  ! Tal com està escrit, si no hi ha punts d'entrada, la mitja que retorna és zero.
  ! Tot i que potser aquest no és un comportament desitjat, ajuda a mantenir l'exemple senzill.
 
  implicit none
 
  real, dimension(:), allocatable :: points
  integer                         :: number_of_points
  real                            :: average_points=0., positive_average=0., negative_average=0.
 
  write (*,*) "Entreu el nombre de punts que desitgeu calcular la mitja:"
  read  (*,*) number_of_points
 
  allocate (points(number_of_points))
 
  write (*,*) "Entreu els punts que voleu calcular la mitja:"
  read  (*,*) points
 
  ! Calculant la mitja sumant els punts i dividint-los pel número total de punts 
  if (number_of_points > 0) average_points = sum(points) / number_of_points
 
  ! Ara calcularem la mitja dels valors positius i negatius per separat
  if (count(points > 0.) > 0) then
     positive_average = sum(points, points > 0.) / count(points > 0.)
  end if
 
  if (count(points < 0.) > 0) then
     negative_average = sum(points, points < 0.) / count(points < 0.)
  end if
 
  deallocate (points)
 
  ! Mostra el resultat al terminal
  write (*,'(a,g12.4)') 'Mitja = ', average_points
  write (*,'(a,g12.4)') 'Mitja dels valors positius = ', positive_average
  write (*,'(a,g12.4)') 'Mitja dels valors negatius = ', negative_average
 
  end program mitja

Referències[modifica | modifica el codi]

  1. 1,0 1,1 1,2 John Backus. «The history of FORTRAN I, II and III».
  2. «Fortran». L'Enciclopèdia.cat. Barcelona: Grup Enciclopèdia Catalana.
  3. Eugene Loh. «The Ideal HPC Programming Language». Queue. Association of Computing Machines, vol. 8, 6, 18 June 2010.
  4. Fortran Working Group (WG5).Sumari de noves característiques de fortran 2003 pdf
  5. N1836, Summary of Voting/Table of Replies on ISO/IEC FDIS 1539-1, Information technology - Programming languages - Fortran - Part 1: Base language ftp://ftp.nag.co.uk/sc22wg5/N1801-N1850/N1836.pdfPDF ( 101 KiB)
  6. «Fortran 2008 - Last Working Draft». Gnu.Org. [Consulta: 10 May 2014].
  7. «Doctor Fortran Goes Dutch: Fortran 2015».

Enllaços externs[modifica | modifica el codi]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Fortran Modifica l'enllaç a Wikidata