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. Títol: 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 l'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-06-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 maig 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