Obre el menú principal

Fortran

llenguatge de programació
(S'ha redirigit des de: FORTRAN)

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]

Infotaula de llenguatge de programacióFortran
Fortran acs cover.jpeg
Tipus llenguatge de programació, llenguatge de programació estructurada, llenguatge de programació imperatiu, llenguatge de programació procedural, llenguatge de programació orientat a objectes, generic programming language Tradueix i array programming language Tradueix
Data de creació 1957[1]
Disseny John W. Backus
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
Etiqueta d'Stack Exchange Etiqueta
Modifica les dades a Wikidata

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]

HistòriaModifica

Als anys cinquanta ja hi havien llenguatges de programació que eren utilitzat per a grans processos de dades. Al 1953, Jhon W. Backus va idear una proposta basada en crear un llenguatge de programació més “simple” y més “accessible”.

El llenguatge d’alt nivell (llenguatge que incorpora un llenguatge completament humà i intel·ligible) proposat per Backus buscava poder fer programacions més fàcils, directes i intel·ligibles per a l’ordinador d’IBM, IBM 704.

Juntament a Jhon W. Backus es van unir al equip els programadors Sheldon F. Best, Richard Goldberg, Lois Haibit, Harlan Herrick, Robert Nelson, Roy Nutt, David Sayre, Peter Sheridan i Irving Ziller.

Finalment, al 1954, l’equip va presentar  la primera especificació de Fortran (IBM Mathematical FORmula TRANslating System) i al 1956 van presentar la primera alternativa de llenguatge de programació per al ordinador IBM 704.

No obstant, el llenguatge de Fortran va ser exclusiu per a ordinadors IBM fins al 1961 que va passar a ser públic per a poder ser utilitzat per a altres fabricants. A partir d’aquí s’han anat creant noves versions del llenguatge per adaptar-les a les noves tecnologies (les dues ultimes van ser al 2003 i al 2008).[4]

Com funciona?Modifica

El llenguatge Fortran es un llenguatge basat en càlculs numèrics dissenyats al seu inici per a ser utilitzats en ordinadors IBM i dirigit per als científics i enginyers.

Es diu que es un llenguatge d’alt nivell ja que es caracteritza per la seva potencia dels càlculs matemàtics però a la vegada està limitat en la seva aplicació: edició d’informes, gestió d’arxiu o tractament de cadenes de caràcters.[5]

Va ser dissenyat per a l’ús amb targeta perforada de 80 columnes el que fa que l’ordre de les instruccions havien de ser seqüencials (la programació dels algoritmes era lineal). Degut a l’evolució de les tecnologies, el Fortran també va haver d’evolucionar introduint noves funcions i estructures de control. També va afegir seccions per a poder fer operacions matemàtiques amb matrius i millores útils per al Compilador (permet traduir programes sencers per a diferents màquines).[6]

Versions de FortranModifica

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 90Modifica

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 95Modifica

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 2003Modifica

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

Fortran 2008Modifica

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 .[8][9] Tal com el Fortran 95, aquesta és una modificació menor, que incorpora aclariments i correccions a Fortran 2003.

Fortran 2015Modifica

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

Programa d'exemple (Fortran 90 o 95)Modifica

Hola mónModifica

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òriaModifica

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 nombre 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ènciesModifica

  1. 1,0 1,1 1,2 John Backus. «The history of FORTRAN I, II and III» (en anglès).
  2. «Fortran». L'Enciclopèdia.cat. Barcelona: Grup Enciclopèdia Catalana.
  3. Eugene Loh «The Ideal HPC Programming Language» (en anglès). Queue. Association of Computing Machines, 8, 6, 18-06-2010.
  4. Llaca, Manuel. «Fortran, el primer lenguaje de programación de alto nivel y el inicio de los compiladores» (en spanish). [Consulta: 23 novembre 2019].
  5. IV, FORTRANLenguaje de programación de alto nivelCreadorJohn W. BackusFecha de Creación1956VersionesFortran; Fortran 77; Fortran 90. «Fortran - EcuRed» (en castellà). [Consulta: 25 novembre 2019].
  6. López, José María. «La historia de Fortran y los lenguajes de programación actuales» (en es-es), 03-08-2019. [Consulta: 25 novembre 2019].
  7. Fortran Working Group (WG5).Sumari de noves característiques de fortran 2003 pdf
  8. 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)
  9. «Fortran 2008 - Last Working Draft». Gnu.Org. [Consulta: 10 maig 2014].
  10. «Doctor Fortran Goes Dutch: Fortran 2015».

Enllaços externsModifica