FORTRAN

Goi-mailako lehenengo programazio-lengoaia, batez ere aplikazio zientifikoetarako erabiltzen dena. Hasiera batean, formula matematikoak adierazteko diseinatu zen

FORTRAN lehen goi-mailako programazio-lengoaia izan zen, IBM enpresak diseinatu zuen eta 1954. urtean plazaratu zen. FORTRAN akronimoa FORmula TRANslation (formulen itzulpena) bi hitzetatik dator eta izenak berak lengoaiaren xedea adierazten du, hots, formula eta espresio matematikoak programatzeko egina baitago FORTRAN lengoaia.

 FORTRAN
Jatorria
Sorrera-urtea1957
Azken bertsioaFortran 2023
Ezaugarriak
Programazio paradigmaprogramazio egituratu, Objektuetara bideratutako programazioa, procedural programming (en) Itzuli, generic programming (en) Itzuli, Programazio inperatibo eta array programming (en) Itzuli
Egile-eskubideakcopyrightduna
LizentziaMIT lizentzia
Deskribapena
Honen eragina jaso duSpeedcoding (en) Itzuli
Ekoizpena
DiseinatzaileaJohn Backus
GaratzaileaIBM eta John Backus

fortran-lang.org
Twitter: fortranlang GitHub: fortran-lang Edit the value on Wikidata
Iturri-kodeahttps://github.com/fortran-lang

1954. urtetik geroztik zenbakizko kalkulu zientifikoa, nagusiki, FORTRAN lengoaia erabiliz egin zen, esate baterako eguraldiaren iragarpena, aireontzien diseinua, satelite eta espazio-ontzien ibilbideen kalkuluak eta abar luze bat. Gaur egun ere, zientzialari askok Fortran lengoaiaren bertsio modernoak erabiltzen dituzte.

Ezaugarriak eta bilakaera

aldatu

Goi mailako lengoaia egituratu eta inperatiboa da. Letra larriak eta xeheak ez dira bereizten. Tokenak dira lengoaiaren oinarrizko elementuak eta sei motakoak izan daitezke.

Etiketa 123
Konstantea 123.456789_long
Gako-hitza ALLOCATABLE
Eragiketa .add.
Izena solve_equation (31 karakteretaraino, _ sinboloa barne)
Banatzailea / ( ) (/ /) [ ] , = =>  :  ::  ;  %
 
IBM konputagailu bat (1957)
 
Txartel zulatu hau 1973an erabili zen Stuttgarteko Unibertsitatean (Alemania), Fortran programak IBM konputagailu batean sartzeko. Goian ezkerreko aldean dago txartelean kodetuta dagoen programa-lerroaren testua.
 
FORTRAN programak eskuz idazteko hasieran erabiltzen ziren orri berezietako bat.

Sententziak, nagusiki aginduak, tokenez osatuta daude. Ondoren funtzio baten definizioarekin:

FUNCTION string_concat(s1, s2)                   ! Oharra 
   TYPE (string), INTENT(IN) :: s1, s2
   TYPE (string) string_concat
   string_concat%string_data = s1%string_data(1:s1%length) // &
      s2%string_data(1:s2%length)                ! aurrekoaren jarraipena
   string_concat%length = s1%length + s2%length
END FUNCTION string_concat

Hasierako ezaugarri eta eragiketa nagusiak hauek izan ziren Fortran IIko garaian:

  • DIMENSION eta EQUIVALENCE motako sententziak
  • Esleipena
  • Hiru adarreko IF eragiketa, hiru jauzi posible zehazteko aukerarekin, emaitza negatiboa, zero, edo positiboa izatearen ondorioz
  • IF bidezko salbuespen testa (ACCUMULATOR OVERFLOW, QUOTIENT OVERFLOW, eta DIVIDE CHECK)
  • GO TO jauzietarako
  • DO motako iterazioak
  • S/I formatuduna: FORMAT, READ, READ INPUT TAPE, WRITE, WRITE OUTPUT TAPE, PRINT, eta PUNCH
  • S/I formaturik gabe: READ TAPE, READ DRUM, WRITE TAPE, eta WRITE DRUM
  • Bestelako S/Ia: END FILE, REWIND, eta BACKSPACE
  • SUBROUTINE, FUNCTION, eta END funtzioak definitzeko
  • CALL eta RETURN funtzioak deitzeko eta itzultzeko.
  • COMMON partekatutako memoriarako
  • FREQUENCY espresioa konpilazioa optimizatzeko

Ezaugarri horiekin gehienekin estandarizatu (ANSI erakundea) zen Fortran 66 bertsiorako.

 
Algol eta Fortran lengoaien bilakaera (Borkowski)

Lengoaiaren ezaugarri eta eragiketa berriak gehitu ziren Fortran 77 sortzeko. Horietako garrantzitsuenak hauek izan ziren:

  • IF eta END IF sententziak, non aukeran ELSE eta ELSE IF ere ager daitezkeen.
  • OPEN, CLOSE, eta INQUIRE eragiketak sarrera/irteerako
  • CHARACTER datu-mota
  • PARAMETER konstanteak definitzeko
  • SAVE aldagai lokal iraunkorretarako
  • String-en arteko konparaketa egiteko eragiketa berriak (LGE, LGT, LLE, LLT)

Fortran 90rekin ezaugarri interesgarri berriak gehitu ziren: izen luzeagoak, SELECT . . . CASE bide anitzeko baldintzak, bektoreak osorik maneiatu ahal izatea, funtzio errekurtsiboak, moduluak prozedurak multzokatzeko, eragiketen gainkarga (overloading) eta memoria dinamikoaren kudeaketa beste batzuen artean. Fortran 95n prestazio handiko kalkuluari begirako ezaugarriak gehitu ziren baina ez zen aldaketa handirik egon.

2003tik Fortran modernoaz mintzatzen da objektuetara bideratutako programazioa barneratu baitzen Fortran 2003 delakoan. Ondoren etorri ziren Fortran 2008 (aldaketa txikiekin, gehienbat zuzentzeari eta argitzeari begira) eta Fortran 2018, zeinean programazio paraleloa barneratzen den.

Fortran modernoa

aldatu

Fortran 90ean eta geroko bertsioetan, iturburu-kodea nahikolibrea den formatu batean idatzita dago: ez dago berariazko zutaberik, lerroek gehienez ere 132 karaktere dituzte (baina "&" karakterearekin jarrai dezakete), eta iruzkinak harridura-marka batekin hasten dira . Fitxategi-izenaren luzapen arruntena .f90,da, baita programak estandar berriagoko funtzioak erabiltzen baditu ere, hala nola Fortran 2018.

program gradu2radian
    ! =================================================
    ! gradu -> radianak bihurketa-taula inprimatzen du
    ! =================================================
    use, intrinsic :: iso_fortran_env, only: wp=>real128

    implicit none
    ! Aldagaien erazagupena
    integer  :: deg
    real(wp) :: radians(0:90)
    ! Konstanteen erazagupena
    real(wp), parameter :: pi = 4.0_wp * atan(1.0_wp)
    real(wp), parameter :: coeff = (2.0_wp * pi) / 360.0_wp
    character(*), parameter :: ligne_horizontale = "(49('-'))"

    ! Taula beteetzea :
    radians = [ (coeff * deg, deg=0,90) ]

    ! Taularen burukoa
    write (*, ligne_horizontale)
    write (*, "('| Degrés |', 15(' '), 'Radians', 16(' '), '|')")
    write (*, ligne_horizontale)
    ! Taularen gorputza
    do deg = 0, 90
        write (*, "('|   ', I2,'   |  ', F34.32,'  |')") deg, radians(deg)
    end do
    ! Taulaaren bukaerakoa
    write (*, ligne_horizontale)
end program gradu2radian
 
Zilindro baten inguruan dabilen aire-fluxuaren simulazioa (FORTRANekin eginda, 2020)

Lehen "goi-mailako programazio-lengoaia"

aldatu

Fortran lengoaia mugarri bat izan zen Informatikaren historian, ordura arte programazio-lana oso neketsua zenbehe mailako xehetasun ugari zehaztu behar zuen programatzaileak programaren testuan bertan. FORTRANek erraztasun handiak ekarri zituenez, harrezkero lengoaiak bi kategoriatanbanatzen hasi ziren: behe-mailako lengoaiak eta goi-mailako lengoaiak. Honako hauek ziren diferentziak:

Behe-mailako programazio-lengoaiak

aldatu
 
Makina-lengoaiako instrukzioak kolore gorriz.

Programazio-lengoaia hauen instrukzioak euskarri fisikoan dute kontrola edo eragina, eta ondorioz ordenagailuaren egitura fisikoarekin zeharo lotuta daude. Beste konputagailu mota batean ez da izango erabilgarri. Behe hitzak ez dio lengoaiaren potentziari edo kalitateari erreferentzia egiten, lengoaia- eta hardware-abstrakzio murriztuari baizik.

Goi-mailako programazio-lengoaiak

aldatu
 
Goi-mailako programazio-lengoaia baten adibidea, Fortran-ez.

Programazio-lengoaia hauek programatzaileari aukera ematen diote instrukzioak hitz edo adierazpen sintaktikoen bidez idazteko. Maila honetako adibide batzuk hauek izan daitezke: Ada,[1] BASIC, C,[2][3] C++, C#, COBOL, Common Lisp,[4] Fortran, , Haskell, Java, JavaScript, Mathematica, Pascal, Perl,[5] PHP, Prolog, Python,[6] R, Ruby, Visual Basic.

  •  
    Konpiladore baten erabilera aurreratu bat,
    Ezaugarriak:
    • Datuak eta aginduak karaktere alfanumerikoen bidez aipa daitezke, hau da, ez kode bitarrean.
    • Datuak hartzeko aldagaiak defini daitezke.
    • Agindu eta datu ahaltsuagoak eta landuagoak erabil daitezke, hau da, ez oinarrizko eragiketa xumeak soilik.
    • Bateragarria da, hainbat ordenagailu mota desberdinetan erabili daitezke.
    • Programen erroreak zuzenketa errazagoa da. Denbora asko aurrezten da horregatik aurrezten da beste behe-mailako programazio-lengoaiekiko.
    • Oharrak txerta daitezke programa hobetu ulertzeko.

Laburbilduz, behe-mailako programazio-lengoaiak makinaren prozesamendu-lengoaiaz hurbilago daude eta goi-mailako programazio-lengoaiak, aldiz, programatzailearen lengoaiaz hurbilago daude. Beraz, goi-mailako programazio-lengoaia batean programatzea askoz errazagoa da.

Gehienetan, goi-mailako lengoaia bat erabiltzen denean, programaren idazketa bera bi urratsetan egiten da eta bi erreminta erabiliz. Alde batetik, kodea idazten laguntzen duen editore bat erabiltzen da. Eta bestalde, beste erreminta bat (konpiladorea) kode hori makina-lengoaiara itzultzeko, mikroprozesadorea agindu horiek prozesatu ahal ditzan.

Fortran gaur egun

aldatu

Superkonputazioko ataza askotarako lengoaia nagusia da gaur egun ere, hala nola astronomia, modelatze klimatikoa, kimika konputazionala, ekonomia konputazionala, fluidoen dinamika, fisika konputazionala, datuen analisia, modelatze hidrologikoa, aljebra lineal numerikoa eta zenbaki-liburutegiak (LAPACK, IMSL eta NAG), optimizazioa, sateliteen simulazioa, egituren ingeniaritza eta iragarpen meteorologikoa. Prozesadore informatiko berrien errendimendua neurtzeko erreferentzien artean dago, hala nola SPECeko koma higikorreko proba-bankuetan (benchmark).

Hala ere, kalkulu zientifikoetarako erabiltzen diren liburutegiak 2000tik aurrera C edo C++ lengoaiaz idazten dira, eta goi-mailako lengoaia berriagoak ari dira FORTRANen eremuan sartzen: MATLAB, Python, eta R. Horri begira C lengoaiarekiko interoperabilitatea barneratu zen Fortran 2003an eta Fortran 2018n beste programazio-lengoaiekiko.

NASAko Voyager 1 eta Voyager 2 zundetarako softwarea FORTRAN 5en idatzi zen hasieran, eta, ondoren, FORTRAN 77ra eraman zen. 2013ko irailaren 25etik aurrera, softwarearen zati bat Fortranen idatzita dago oraindik, baina zati batzuk C-ra garraiatu ziren.

Zenbait programazio-lengoaia:

aldatu

Erreferentziak

aldatu
  1. Watt, David Anthony.. ([1996]). ADA lengoaia eta metodologia. Servicio Editorial de la Universidad del País Vasco = Euskal Herriko Unibertsitateko Argitalpen Zerbitzua ISBN 8475858651. PMC 434213410. (Noiz kontsultatua: 2019-09-06).
  2. Alegria, Iñaki.. ([1995]). C programazio-lengoaia. Elhuyar Kultur Elkartea ISBN 8487114032. PMC 431789020. (Noiz kontsultatua: 2019-09-06).
  3. Informatikaren oinarriak C lengoaian ebatzitako problemak : industria ingeniaritza teknikoko eta industria graduko ikasleei zuzendua. Servicio Editorial de la Universidad del País Vasco = Euskal Herriko Unibertsitateko Argitalpen Zerbitzua 2010 ISBN 9788498604641. PMC 776669615. (Noiz kontsultatua: 2019-09-06).
  4. Bastarrika, Juan Ramon; Sarasola, Kepa. (1991). LISP: programazio-lengoaia. Udako Euskal Unibertsitatea ISBN 8486967325. PMC 907327642. (Noiz kontsultatua: 2019-09-06).
  5. Astigarraga Pagoaga, Aitzol.; Sarasola, Kepa. (2009). TAPE: testu-analisirako PERL erremintak. Udako Euskal Unibertsitatea ISBN 9788484382331. PMC 863215889. (Noiz kontsultatua: 2019-09-06).
  6. Alegria Loinaz, Iñaki; Perez de Viñaspre, Olatz; Sarasola, Kepa. (2016). Python programazio-lengoaia.. UEU eta UPV/EHU ISBN 9788490824405. PMC 1019651201. (Noiz kontsultatua: 2019-09-06).

Bibliografia

aldatu
  • Chapman, Stephen J. Fortran for Scientists and Engineers (en anglès). 4a. Nova York: McGraw-Hill, 2018. ISBN 978-0-07-338589-1.
  • Markus, Arjen. Modern Fortran in Practice (en anglès). Cambridge: Cambridge University Press, 2012. ISBN 978-1-107-01790-0.
  • Chivers, Ian; Sleightholme, Jane. Introduction to Programming with Fortran (en anglès). 4a ed.. Springer, 2018. ISBN 978-3-319-75501-4.
  • Lorenzo, Mark Jones. Abstracting Away the Machine: The History of the FORTRAN Programming Language (FORmula TRANslation). Independently published, 2019. ISBN 978-1082395949.
  • Metcalf, Michael «The Seven Ages of Fortran» (en anglès). Journal of Computer Science & Technology, 11, 1, 2011, pàg. 1–8.

Ikus, gainera

aldatu

Kanpo estekak

aldatu