Fortran
Fortran (o FORTRAN) és el primer llenguatge de programació d'alt nivell, desenvolupat a la dècada dels 50 i que encara s'usa 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[1]
El primer compilador de FORTRAN per a l'IBM 704 el va desenvolupar de 1954 a 1957 un equip d'IBM dirigit per John W. Backus.[2] L'objectiu principal era 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 la comunitat científica el 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) l'han modernitzat 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òria[modifica]

Als anys cinquanta ja hi havia llenguatges de programació que eren utilitzats per a grans processos de dades. Al 1953, John W. Backus va idear una proposta basada en crear un llenguatge de programació més “simple” i 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, l'IBM 704.
Es van unir a l'equip de Jhon W. Backus els programadors Sheldon F. Best, Richard Goldberg, Lois Haibit, Harlan Herrick, Robert Nelson, Roy Nutt, David Sayre, Peter Sheridan i Irving Ziller.[4]
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 a l'ordinador IBM 704.[5][6]
No obstant, el Fortran va ser exclusiu per a ordinadors IBM fins al 1961, moment en què va passar a ser públic per poder-lo utilitzar altres fabricants i ampliar la base més enllà d'IBM.[7] A partir d'aquí, s'han creat noves versions del llenguatge per adaptar-les a les noves tecnologies. Les dues últimes, a data de novembre 2020, van ser publicades el 2008 i 2018.[8]
Funcionament[modifica]
El llenguatge Fortran és un llenguatge basat en càlculs numèrics dissenyats al seu inici per a ser utilitzats en ordinadors IBM i dirigit a científics i enginyers.
Es diu que és un llenguatge d'alt nivell ja què es caracteritza per la seva potència de càlcul matemàtic, però a la vegada està limitat en la seva aplicació: edició d'informes, gestió d'arxius o tractament de cadenes de caràcters.[9]
Va ser dissenyat per a l'ús amb targeta perforada de 80 columnes, de manera que l'ordre de les instruccions havia de ser seqüencial (la programació dels algoritmes era lineal). Degut a l'evolució de les tecnologies informàtiques, el Fortran també va haver d'evolucionar introduint noves funcions i estructures de control. També va afegir seccions per poder fer operacions matemàtiques amb matrius i millores útils per al compilador (permet traduir programes sencers per a diferents màquines).[10]
Versions[modifica]
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 2018, inicialment anomenat Fortran 2015. És l'última versió existent a 11.2020.
Fortran 90[modifica]
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.[11]
- 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]
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:[12]
- "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]
És una revisió amb moltes característiques noves. Existeix un sumari d'aquestes en la plana web oficial del Fortran Working Group (WG5)[13]
Fortran 2008[modifica]
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.[14][15] Tal com el Fortran 95, aquesta és una modificació menor, que incorpora aclariments i correccions a Fortran 2003.
Fortran 2018[modifica]
La darrera revisió del llenguatge (Fortran 2018) es coneixia anteriorment com Fortran 2015.[16]
Fortran 2018 incorpora dues especificacions tècniques publicades prèviament:
- ISO / IEC TS 29113: 2012 Més interoperabilitat amb C [17]
- ISO / IEC TS 18508: 2015 Funcions paral·leles addicionals a Fortran [18]
Altres canvis i noves funcions inclouen compatibilitat amb ISO / IEC / IEEE 60559: 2011 (la versió de l ’ IEEE floating point standard abans de l’última revisió menor IEEE 754-2019), entrada / sortida hexadecimal, IMPLICIT NONE millores i altres canvis.[19][20][21][22]
Programa d'exemple (Fortran 90 o 95)[modifica]
Hola món[modifica]
Aquest programa escriu "Hola món" al dispositiu de sortida predeterminat (habitualment, la consola),
program hola
write(*,*)'Hola món!'
end program hola
Assignació de memòria[modifica]
El següent programa mostra l'ús de l'assignació dinàmica de memòria i operacions basades en vectors, dues funcionalitats noves afegides en la versió Fortran 90. En particular, cal remarcar l'absència de llaços DO
i dels connectors IF
/THEN
a l'hora de manipular els vectors matemàticament com un tot.
program mitjana
! Llegeix uns quants nombres i en calcula la seva mitjana.
! Tal i com està escrit, si no hi ha punts d'entrada, la mitjana que retorna és zero.
! Tot i que potser aquest no és el 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 dels que desitgeu calcular-ne la mitjana:"
read (*,*) number_of_points
allocate (points(number_of_points))
write (*,*) "Entreu els punts dels que en voleu calcular la mitjana:"
read (*,*) points
! Calculant la mitjana 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 mitjana 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)') 'Mitjana = ', average_points
write (*,'(a,g12.4)') 'Mitjana dels valors positius = ', positive_average
write (*,'(a,g12.4)') 'Mitjana dels valors negatius = ', negative_average
end program mitjana
Referències[modifica]
- ↑ «Fortran». Gran Enciclopèdia Catalana. Barcelona: Grup Enciclopèdia Catalana.
- ↑ John Backus. «The history of FORTRAN I, II and III» (en anglès).
- ↑ Eugene Loh «The Ideal HPC Programming Language» (en anglès). Queue. Association of Computing Machines, 8, 6, 18-06-2010.
- ↑ McJones, Paul. «History of FORTRAN and FORTRAN II». Software Preservation Group, 18-06-2021. [Consulta: 12 octubre 2021].
- ↑ Backus, J. «The history of Fortran I, II, and III». IEEE Annals of the History of Computing, 20, 4, Oct.-Dec./1998, pàg. 68–78. DOI: 10.1109/85.728232.
- ↑ «The FORTRAN Automatic Coding System for the IBM 704 EDPM : Programmer's Reference Manual» (pdf). Applied Science Division and Programming Research Department, International Business Machines Corporation.
- ↑ McCracken, Daniel D. A guide to Fortran IV programming. Second edition. Nova York: John Wiley & Sons, 1972. ISBN 0-471-58281-6.
- ↑ Llaca, Manuel. «Fortran, el primer lenguaje de programación de alto nivel y el inicio de los compiladores» (en castellà). [Consulta: 23 novembre 2019].
- ↑ 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].
- ↑ López, José María. «La historia de Fortran y los lenguajes de programación actuales» (en espanyol europeu), 03-08-2019. [Consulta: 25 novembre 2019].
- ↑ «American National Standard – Programming Language Fortran Extended». Arxivat de l'original el 01/05/2002.
- ↑ «Fortranplus | Fortran information» (en anglès). [Consulta: 12 octubre 2021].
- ↑ Fortran Working Group (WG5).Sumari de noves característiques de fortran 2003 pdf[Enllaç no actiu]
- ↑ 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)
- ↑ «Fortran 2008 - Last Working Draft». Gnu.Org. [Consulta: 10 maig 2014].
- ↑ «Technical Library» (en anglès). [Consulta: 12 octubre 2021].
- ↑ «Més interoperabilitat amb C». ISO. [Consulta: 20 novembre 2017].
- ↑ «Funcions paral·leles addicionals a Fortran». ISO. [Consulta: 20 novembre 2017].
- ↑ «The New Funcions de Fortran 2015». ISO. [Consulta: 23 juny 2017].
- ↑ «/ 04 / doctor-fortran-in-one-door-closes Doctor Fortran a "One Door Closes"». Software.intel.com. [Consulta: 21 setembre 2015].
- ↑ «El doctor Fortran va holandès : Fortran 2015». Software.intel.com. [Consulta: 19 novembre 2014].
- ↑ «Information technology — Programming languages Fortran — Part 1: Base language» (pdf). [Consulta: 12 octubre 2021].
Enllaços externs[modifica]
![]() |
A Wikimedia Commons hi ha contingut multimèdia relatiu a: Fortran |
- USER NOTES ON FORTRAN PROGRAMMING (UNFP)
- Unit 7.1 FORTRAN 77 Arxivat 2004-06-23 a Wayback Machine. (part d'un llibre de text)
- Unit 7.2 FORTRAN 90 Arxivat 2004-06-26 a Wayback Machine. (part d'un llibre de text)
- Univ. de Cambridge -- Introducció al Fortran modern, per lliçons amb presentacions PDF (anglès)