Fortran – programmeringsspråk för vetenskapliga och numeriska beräkningar
Fortran är ett programmeringsspråk som skapades på 1950-talet. Det används fortfarande idag. Det är ett procedurspråk som huvudsakligen används för vetenskapliga beräkningar och numerisk analys. Fortran namngavs ursprungligen FORTRAN (för "FORmula TRANslation") och har från början ett starkt fokus på numerisk effektivitet och matris-/vektorräkning, vilket gör det särskilt lämpat för högprestandaberäkningar.
Historia
Den första FORTRAN-kompilatorn skapades 1954-57 av ett team på IBM under ledning av John W. Backus. Denna kompilator var den första kompilatorn för något högnivåspråk. Författarna var oroliga för att ingen skulle använda språket om program som skrevs i det inte kunde köras lika snabbt som program som skrevs i assembler. Därför gjorde de den till en optimerande kompilator.
På grund av den stora användningen av forskare som utförde numeriskt arbete växte språket på ett sätt som uppmuntrade författare av kompilatorer att ta fram kompilatorer som genererade högkvalitativ (snabb) kod. Det finns många leverantörer av kompilatorer med hög prestanda. Mycket arbete och forskning inom kompilatorteori och design orsakades av behovet av att generera bra kod för Fortranprogram.
Standarder och språkets utveckling
Flera revideringar av språket har kommit ut, bland annat det mycket välkända FORTRAN IV (samma som FORTRAN 66), FORTRAN 77 och Fortran 90. Den senaste formella standarden för språket publicerades 1997 och är känd som Fortran 95. Sedan dess har dock flera nya standarder publicerats: Fortran 2003 (med objektorienterade inslag och förbättrad C-interoperabilitet), Fortran 2008 (bl.a. coarrays för parallellprogrammering) och Fortran 2018 (senaste större ISO-standarden). De senare standarderna har fortsatt att modernisera språket samtidigt som bakåtkompatibilitet ofta bibehålls.
Till en början var språket beroende av exakt formatering av källkoden och stor användning av nummer för instruktioner och "gå till"-instruktioner, skrivna som goto i Fortran. Med tiden infördes mer läsbar, fri formatering (från Fortran 90) och strukturerade kontrollflöden som minskade behovet av omfattande goto-användning.
Språkegenskaper och nyckelfunktioner
- Effektiva array- och matrisoperationer med inbyggd syntax för vektoriserade beräkningar.
- Stort urval av numeriska intrinsics (trigonometri, linjär algebra, statistiska funktioner).
- Moduler och namnrymder (introduced i Fortran 90) för bättre struktur och återanvändbarhet.
- Stöd för dynamiska minnesallokering (allocatable), pekare och användardefinierade typer (derived types).
- Objektorienterade konstruktioner (typen "type", arv och polymorfism) introducerade i Fortran 2003.
- Parallella konstruktioner: OpenMP-stöd i kompilatorer och coarrays i Fortran 2008 för enklare parallellprogrammering.
- ISO_C_BINDING (i senare standarder) för enkel interoperabilitet med C-kod och därigenom integration i större system.
I varje version infördes "moderna" programmeringskoncept, t.ex. källkodskommentarer och utskrift av text, IF-THEN-ELSE (i FORTRAN 77), rekursion (i Fortran 90) och parallella konstruktioner, samtidigt som man försökte behålla Fortrans "smala" profil och höga prestanda.
Användningsområden och ekosystem
Fortran används fortfarande brett inom områden som klimat- och vädermodellering, beräkningsfluiddynamik (CFD), elektromagnetik, numerisk analys, finansmatematik, och signalbehandling. Storparten av de klassiska numeriska biblioteket—t.ex. BLAS och LAPACK—är skrivna i eller optimerade för Fortran, vilket gör språket attraktivt för beräkningsintensiva tillämpningar.
Det finns flera kommersiella och fria kompilatorer av hög kvalitet: exempel är Intel Fortran (ifort/ifx), GNU Fortran (gfortran), NAG, IBM, Cray och kompilatorer från GPU/accelerator-leverantörer. Dessa leverantörer optimerar kontinuerligt kodgenereringen för moderna CPU-arkitekturer och ofta för parallella system.
Verktyg, interoperabilitet och moderna arbetsflöden
Moderna Fortran-projekt använder byggsystem och verktyg som Make, CMake, och alltmer Fortran Package Manager (fpm) för att hantera beroenden och paket. Tack vare ISO_C_BINDING är det vanligt att kombinera Fortran med C/C++ i större system, vilket gör det enkelt att återanvända bibliotek och infrastrukturer skrivna i andra språk. För parallellisering används ofta OpenMP för delad-minneparallellism och MPI för distribuerade beräkningar; coarrays erbjuder ett språkstöd för parallellism i modern Fortran.
Exempel
En enkel modern Fortran‑programfil som skriver ut text ser ut så här:
program hello print *, 'Hello, world!' end program hello
Framtid och sammanfattning
Fortran fortsätter att utvecklas genom ISO-standarder och en aktiv användarbas inom vetenskap och ingenjörsvetenskap. Språket kombinerar traditionell prestanda för numeriska beräkningar med moderna språkfunktioner som gör kod mer modulär, säker och kompatibel med andra språk. För den som arbetar med beräkningsintensiva problem är Fortran fortfarande ett av de mest effektiva och väletablerade verktygen.
Betydelse och stavning av namnet
Namnet "Fortran" är en förkortning för "Formula Translation". Språket var tidigare känt som FORTRAN (och äldre varianter av det kallas fortfarande FORTRAN). Sedan Fortran 90 har man övergivit versaleringen. I de publicerade formella standarderna används "Fortran".
Standarder
De två standarderna nedan gäller för nuvarande Fortran-implementationer.
- ANSI X3.198-1992 (R1997). Titel: Programmeringsspråk "Fortran" Utökat. Informellt känt som Fortran 90. Denna standard publicerades av ANSI och blev aldrig en internationell standard (ISO).
- ISO/IEC 1539-1:1997. Titel: Informationsteknologi - Programmeringsspråk - Fortran - Del 1: Grundspråk. Informellt känt som Fortran 95. Denna standard består av ytterligare två delar. Del 1 har formellt antagits av ANSI.