Fortran, een afkorting voor "Formula Translation," is een high-level programmeertaal die bijzonder goed geschikt is voor wetenschappelijke en technische toepassingen. Het was een van de eerste programmeertalen die werd ontwikkeld voor elektronische computers en is sinds zijn ontstaan aanzienlijk geëvolueerd. Fortran maakt efficiënte manipulatie van array-gegevens mogelijk en ondersteunt complexe wiskundige berekeningen, waardoor het een taal van keuze is voor numerieke weersvoorspelling, computationele fysica en bio-informatica, onder andere gebieden.
Fortran werd in de jaren vijftig ontwikkeld door IBM als een taal die was ontworpen voor numerieke berekeningen en wetenschappelijk rekenen. De eerste versie, Fortran I, werd uitgebracht in 1957. Het kernidee was om een taal te creëren waarmee wetenschappers en ingenieurs programma's konden schrijven zonder de intricaties van de onderliggende hardware te hoeven kennen.
Verschillende versies van Fortran werden geïntroduceerd, waarbij elke versie nieuwe functies toevoegde en de bruikbaarheid verbeterde. Fortran II volgde kort daarna, met gestructureerde programmeerfuncties. In 1966 werd Fortran IV geïntroduceerd, dat een industriestandaard werd. Fortran 77 (uitgebracht in 1978) voegde functies toe zoals karakterdatatypes en verbeterde I/O-mogelijkheden.
Vanaf 1991 introduceerde Fortran 90 array-programmering, modulaire programmering, recursie en dynamische geheugenallocatie. Fortran 2003 en Fortran 2008 verbeterden de taal verder met functies zoals Objectgeoriënteerd Programmeren en verbeterde interoperabiliteit met de C-programmeertaal. De meest recente standaard, Fortran 2018, bracht verdere verbeteringen, waaronder verbeterde compatibiliteit en functionaliteit voor parallelle verwerking.
Fortran wordt nog steeds actief gebruikt in veel wetenschappelijke en technische disciplines, ondersteund door moderne compilers zoals GNU Fortran (gfortran) en Intel Fortran Compiler. Het heeft een grote legacy-codebasis, en veel wetenschappelijke bibliotheken zijn geschreven in Fortran, waardoor het een cruciale taal is in bepaalde domeinen.
Fortran is een sterk getypeerde taal die expliciete declaratie van variabele types vereist. Bijvoorbeeld:
INTEGER :: i
REAL :: x
CHARACTER(len=10) :: name
Fortran excelleert in het omgaan met arrays, waardoor bewerkingen op hele arrays met eenvoudige syntaxis mogelijk zijn.
REAL, DIMENSION(10) :: A
A = 2.0 * A ! Vermenigvuldigt elk element van array A met 2
Fortran biedt conventionele controle structuren zoals lussen en voorwaardelijke uitspraken.
DO i = 1, 10
IF (A(i) > 0) THEN
PRINT *, 'Positief'
END IF
END DO
Fortran staat de definitie van functies en subroutines toe voor modulaire programmering.
FUNCTION square(x)
REAL :: square
REAL, INTENT(IN) :: x
square = x * x
END FUNCTION square
Standaard heeft Fortran een regel waarbij variabelen met namen die beginnen met "I", "J", "K", "L", "M" of "N" impliciet INTEGER zijn. Dit kan worden overschreven voor duidelijkheid.
IMPLICIT NONE ! Schakelt impliciete typing uit
INTEGER :: I
REAL :: R
Fortran ondersteunt do-while lussen voor herhaalde uitvoering op basis van een voorwaarde.
i = 1
DO WHILE (i <= 10)
PRINT *, i
i = i + 1
END DO
Fortran heeft krachtige door de gebruiker gedefinieerde types, bekend als afgeleide types, die structuurachtige gegevensdefinities mogelijk maken.
TYPE :: Person
CHARACTER(len=20) :: name
INTEGER :: age
END TYPE Person
TYPE(Person) :: p1
Fortran ondersteunt modules voor het encapsuleren van gegevens en procedures, wat codehergebruik en organisatie bevordert.
MODULE myModule
CONTAINS
SUBROUTINE mySubroutine()
! Implementatie
END SUBROUTINE
END MODULE
Fortran ondersteunt pointers die dynamisch geheugenbeheer vergemakkelijken, vergelijkbaar met talen zoals C.
REAL, POINTER :: pA
ALLOCATE(pA(10)) ! Dynamisch een array toewijzen
Fortran heeft functies die interoperabiliteit met C creëren, waardoor gemengde-taalprogrammering mogelijk is.
INTERFACE
FUNCTION c_function(x) BIND(C, NAME="c_function")
INTEGER(C_INT) :: c_function(INTEGER)
END FUNCTION c_function
END INTERFACE
De populairste Fortran-compilers zijn onder andere:
Hoewel Fortran niet zo vaak wordt geassocieerd met moderne IDE's als sommige andere talen, ondersteunen verschillende IDE's het:
Het bouwen van een Fortran-project omvat doorgaans het maken van bronbestanden met een .f, .f90 of .f95 extensie en het compileren ervan met een Fortran-compiler. Een typische opdracht kan er als volgt uitzien:
gfortran -o my_program my_source.f90
Fortran wordt uitgebreid gebruikt in wetenschappelijk rekenen, numerieke weersvoorspelling, klimaatmodellering, computationele fysica, computationele chemie en bio-informatica. Het staat vooral bekend om zijn prestaties bij zware numerieke berekeningen en simulaties.
De belangrijkste concurrenten van Fortran op het gebied van wetenschappelijk en technisch programmeren zijn:
Fortran heeft verschillende bron-naar-bron vertaaltools die ontwikkelaars kunnen helpen om legacy-code om te zetten naar meer hedendaagse talen of om bestaande code te optimaliseren. Enkele tools zijn:
Deze tools vergemakkelijken de overgang van oudere Fortran-versies of volledig verschillende programmeerparadigma's, terwijl ze helpen de prestaties en functionaliteit te behouden.