Fortran programmeerimiskeel: ajalugu, omadused ja standardid
Fortran on programmeerimiskeel, mis loodi esmakordselt 1950. aastatel ja mida kasutatakse tänapäevalgi laialdaselt teaduslikes ja inseneri‑rakendustes. See on peamiselt protseduuriline ja sünteesitud keel, loodud arvutuslike ja numbriliste ülesannete lahendamiseks ning tunnetatavalt hästi sobiv massiivsete arvutuste, lineaaralgebra ja teadusliku simulatsiooni jaoks. Fortran on olnud olulisel kohal kõrgjõudluse arvutuse (HPC) valdkonnas tänu selgele süntaksile numbriliste objektide ja massiivide töötlemiseks ning kompilaatorite võimele tekitada väga optimeeritud masinkoodi.
Esimese FORTRANi kompilaatori lõi 1954-57 IBMi meeskond John W. Backuse juhtimisel. See kompilaator oli ajalooliselt esimene praktiline kompilaator mis tahes kõrgtasemelisele keelele ning selle üks keskseid eesmärke oli tekitada väga tõhusalt töötav kood — autorid olid mures, et keel ei saaks laialt kasutusele, kui genereeritud programmid ei jookseks ligilähedaseltki nii kiiresti kui käsitsi kirjutatud assembleri kood. Seetõttu sisaldas FORTRANi esimene kompilaator eestvedavat optimeerimist ja paljusid uurimisalgatusi kompilaatorite valdkonnas said alguse just Fortrani tõttu.
Kuna teadlased ja insenerid panustasid Fortrani laialdaselt numbriliste uuringute tegemisse, kasvas huvi luua kompilaatoritest parachute'iga (st kõrge kvaliteedi ja jõudlusega) tööriistu. Kompilaatorite arendajad keskendusid tugevale optimeerimisele (nt silmuste transformatsioonid, vektoreerimine, inlining), nii et ilmus palju professionaalseid ja uurimuspõhiseid kompilaatoreid. Palju teadustööd ning teoreetilisi tulemusi kompilaatorite disaini ja analüüsi alal olid otseselt suunatud selleks, et genereerida Fortrani programmidele võimalikult head koodi; tänu sellele on Fortranil jätkuvalt head jõudlusvõimalused kaasaegsetes HPC‑keskkondades.
Keelest on ilmunud mitu versiooni ja standardit. Tuntumad varasemad versioonid on FORTRAN IV (sagedasti seostatav ka FORTRAN 66 standardiga), FORTRAN 77 ning seejärel suurem ümberkujundus Fortran 90, mis lisas palju kaasaegseid programmeerimisvõimekusi. Varasemad standardid ja tõlgendused andsid põhjuse laialdasele taaskasutusele ja vastupidavatele teaduslikele koodibaasidele. Viis sellele järgnevat ametlikku arenguharu: algne Fortran (1950ndad), FORTRAN 66, FORTRAN 77, Fortran 90/95 jne; ametlik uuendusena on mainitud ka, et varasem uuendus ilmus 1997. aastal (Fortran 95). Hilisemad standardid on arenenud edasi: Fortran 2003, Fortran 2008 ja Fortran 2018, mis lisasid näiteks objekti‑orienteeritud vahendeid, töösuhtluse laiendusi ja kaasaegseid paralleliseerimisvõimalusi.
Algusaegadel oli Fortran tundlik lähtekoodi täpse vorminduse suhtes: fikseeritud vorm (fixed form) määras süntaksi kolonnipõhised reeglid (nt 1–5 kommentaari/identifitseerimiseks, 6. veerg jätkamiseks, 7–72 koodiks). Vana kood kasutas palju "go to" lauseid (kirjutatuna sageli GOTO), mis tekitasid keerukaid kontrollvooge. Hilisemates versioonides toodi sisse vaba vormi (free form) ja struktureeritud kontrollkonstruktsioonid, et parandada loetavust, hooldatavust ja modernseid programmeerimistavasid.
Peamised omadused
- Jõudlus: Fortran on optimeeritud numbriliste ja maatriksarvutuste jaoks — kompilaatorid suudavad efektiivselt teha vektoreerimist, silmuste optimeerimist ja muid transformatsioone.
- Massiivid ja vektoroperatsioonid: keel toetab rikkalikult massiivioperaatoreid ning sisseehitatud funktsioone (nt SUM, DOT_PRODUCT, MATMUL), mistõttu on vektori‑ ja maatriksipõhised algoritmid selgelt ja kompaktseks kirjutatavad.
- Modulaarsus ja tüübihaldus: uuemates standardites on moodulid (MODULE), tuletatud tüübid (derived types), liidesed ja generilised protseduurid, mis võimaldavad paremat kodeerimistava.
- Mäluhaldus: allocatable‑muutujad, pointerid ja automaatne mäluhaldus kaasaegsetes standardites.
- Parallelism: mitmeid võimalusi paralleelseks programmeerimiseks — OpenMP, MPI ja keeleliselt integreeritud coarrays (sisse toodud Fortran 2008) on tavalised tööriistad.
- Tagasiühilduvus: suur osa vanast FORTRAN‑koodist on töötav tänapäeva kompilaatoritega, mis on oluline vanade teaduslike rakenduste ja mudelite säilitamiseks.
Standardid ja areng
Fortrani standardite areng on järjepidevalt lisanud uusi keelevõimekusi, püüdes samal ajal säilitada keele jõudluse eeliseid. Olulised sammud:
- FORTRAN 66/77 — fikseeritud vorm ja varasemad standardid; FORTRAN 77 lisas näiteks struktureeritud IF ja parema standardiseerimise.
- Fortran 90 — vaba vorm, modulaarne programmeerimine, rekursioon (rekursioon) ja jõuline massiivide tugi; muutis Fortrani märkimisväärselt kaasaegsemaks.
- Fortran 95 — väiksemad täiustused Fortran 90 baasil, mitmed optimeerimisvõimalused ja standardiseeritud erakordsed aspektid.
- Fortran 2003 — objektorienteeritud võimalused, paremad C‑keele liidesed ja uut tüüpi funktsionaalsus.
- Fortran 2008 — näiteks coarray‑programmimise toe lisamine ja teisi paralleelsuse laiendusi.
- Fortran 2018 — täiendavad parandused, standardiseerimise täiendused ja kaasaegsete arendustavade tugevdamine.
Kasutusvaldkonnad ja tööriistad
Fortran on laialt kasutusel:
- ilmastiku ja kliimamudelite arenduses
- füüsika‑ ja keemiasimulatsioonides
- põllumajandus‑ ja majandusmudelites, kus on vaja suuri numbrilisi simulatsioone
- edukates mehaanika, aerodünaamika ja vedelikudünaamika (CFD) rakendustes
- ülikoolide ja uurimisinstituutide HPC‑keskkondades, kus vanad, hästi testitud koodibaasid vajavad säilitamist ja edasiarendamist.
Levinud kompilaatorid ja tööriistad: GNU Fortran (gfortran), Intel Fortran (ifort/ifx), NAG Fortran, IBM XL, PGI/NVIDIA kompilaatorid jpt. Neid kasutatakse nii sülearvutite kui ka superarvutite keskkondades. Paralleelprogrammeerimiseks kasutatakse sageli MPI‑d ja OpenMP‑d ning kaasaegsed Fortrani standardid toetavad keelepõhist paralleelsust.
Süntaksi ja stiili märkus
Vanemates programmis kasutati ranget kujutust (fixed form) ja sageli palju GOTO‑lauseid, samas kui uuemas koodis eelistatakse selget struktuuri: DO/END DO, IF … THEN … ELSE … END IF, funktsioonid ja alamprogrammid, moodulid ning tüübisüsteem. Vaba vorm (free form) ning kommentaarid (!) parandavad koodi loetavust.
Lihtne näide (Fortran 90+)
program tervitus implicit none print *, "Tere, Fortran!" end program tervitus
See näide illustreerib lihtsat vaba vormi programmi Fortran 90 ja uuemates versioonides. Tegelikes teaduslikes rakendustes kasutatakse tunduvalt keerukamaid struktuure, mooduleid, massiive ja paralleelset järjekorda.
Kokkuvõtlikult on Fortran keeleline valik eelkõige siis, kui on vaja kõrget algoritmilist jõudlust numbriliste arvutuste juures ja/või töötada olemasolevate suuremate teaduslike koodibaasidega. Kuigi tehnoloogiad arenevad, on Fortranil jätkuvalt tugev koht teadusarvutuse maastikul tänu oma optimeerimisvõimekusele ning laialdasele toetusele HPC‑vahendite poolt.
Nime tähendus ja õigekiri
Nimi "Fortran" on lühend sõnast "Formula Translation". Varem oli see keel tuntud kui FORTRAN (ja vanemad variandid on seda ikka veel). Alates Fortran 90-st on suurtähestamisest loobutud. Avaldatud formaalsed standardid kasutavad "Fortran".
Standardid
Kaks allpool esitatud standardit on praeguste Fortrani rakenduste jaoks.
- ANSI X3.198-1992 (R1997). Pealkiri: Täiendatud programmeerimiskeel "Fortran". Mitteametlikult tuntud kui Fortran 90. Selle standardi avaldas ANSI ja sellest ei saanud kunagi rahvusvahelist standardit (ISO).
- ISO/IEC 1539-1:1997. Pealkiri: Programmeerimiskeeled. Fortran. Osa 1: Baaskeel. Mitteametlikult tuntud kui Fortran 95. Sellel standardil on veel 2 osa. Osa 1 on ametlikult vastu võetud ANSI poolt.