Hullkort med Fortrankode, fra København universitet i begynnelsen av 1970-tallet
Foto: Hans Andersen
Fortran, tidligere kaltFORTRAN (FORmulaTRANslation), blir ofte ansett som det førsteprogrammeringsspråket, siden det i prinsippet (og senere også i praksis) var portabelt. Fortran var uavhengig av datamaskinens maskinspråk, og kunne benyttes av ulike datamaskinarkitekturer.
Høsten1953 foreslo Backus overfor sin ledelse iIBM å utvikle et praktisk alternativ tilassemblerspråk for å programmere den nyestormaskinenIBM 704. Første utkast til spesifikasjonThe IBM Mathematical Formula Translating System (IBMs matematisk formeloversettelsessystem) forelå sommeren1954. Den førstekompilatoren ble lansert april1957. Behovet forinstrukser for å operere en datamaskin ble redusert med faktor 20, og språket ble raskt akseptert.
Erfaringene med utviklingen av Fortran bidro til en kontekstfri grammatikk som ble banebrytende for senere høynivåspråk i form avBackus–Naur-formen. En lignende grammatikk ble foreslått i1956.[2] Mangelen på formaliserte definisjoner av syntaks, skapte problemer da tidligere utviklere av Fortran forlotIBM. Da Backus utvikletAlgol-58, adopterte han syntaks-regler[3] for Fortran og senere programmeringsspråk, som var basert påPāṇinissanskrit-grammatikk.[4]
Fortran ble svært populært og ble snart brukt til en rekke formål. Fortrankompilatorer ble utviklet for mange ulike typer datamaskiner. Siden Fortrankompilatorene som ble utviklet ikke var fullstendig kompatible med hverandre kunne man ikke lenger flytte et program fra en maskin til en annen uten å omarbeide det først. Dette førte til en rekke Fortran-dialekter. Med tiden opprettet denamerikanske organisasjonen for standarder (ANSI) en komité for å standardisere Fortran for å sikre portabiliteten til et Fortranprogram, altså slik at man skulle kunne bruke en hvilken som helst datamaskin og kompilator uten å måtte omarbeide koden først. Denne komiteen skulle etter planen ha utarbeidet en ferdig standard i1966 men ble først ferdig noen år senere. Standarden ble allikevel kjent som FORTRAN 66. FORTRAN 66 blir også kalt FORTRAN IV. Merk at de første versjonene av Fortran ble skrevet med store bokstaver, dette gjelder ikke lenger. Senere revisjoner og standarder er FORTRAN 77, Fortran 90, Fortran 95 (kun en liten revisjon av Fortran 90), Fortran 2003 og Fortran 2008.
Fortran var og er fortsatt veldig populært i det vitenskapelige miljøet og blant ingeniører innenmeteorologi, styrkeberegning, styresystemer i tungindustri, kraftverk, og romfart, men i mindre grad i administrative system. Fortran var det dominerende programmeringsspråket i flere tiår etter at det ble utviklet og er fortsatt et av de vanligste programmeringsspråkene i bruk. I den senere tid har Fortran fått støtte for objektorientering og «hand-shaking» med C/C++.
Selv om Fortran 90 og senere versjoner har tilført mange egenskaper som en kan vente seg av et moderne programmeringsspråk, blir fortsatt Fortran regnet for å være et gammeldags språk. En grunn til dette kan være at det meste av koden som er i bruk i dag er kodet i FORTRAN 77, før språket ble modernisert. Historisk sett hadde man heller ikke så kraftige maskiner som nå, slik at det var viktigere at programmene var raske enn at de var lette å forstå for en menneskelig leser av koden. Svært lite nyproprietær programvare blir laget i Fortran, men i forskningsmiljøet er fortsatt Fortran en favoritt på grunn av det store fokuset på hastighet.
Et enkelt og vanlig eksempel på kodesnutter i programmeringsspråk er å skrive ut beskjeden «Hello, World!» til skjermen. Denne kodesnutten kan bli kjørt på enhver Fortran 90/95-kompilator.
Dette programmet regner utvolumet til ensylinder og kan bli kompilert og kjørt med enhver Fortran 90/95-kompilator. Teksten som følger utropstegn (!) er kommentarer og vil ikke bli tatt hensyn til av programmet.
programsylinder! Regn ut volumet til en sylinder.implicit none! Krever at samtlige variable blir deklarert (gitt en type)! I eldre versjoner av fortran ble variable deklarert implistt,! avhengig av den første bokstaven i variabelnavnetinteger::ierr! Denne variabelen er et heltallreal::radius,height,volume! mens denne variabelen er et flyttallreal,parameter::pi=3.14159! Denne variabelen er en konstant og kan ikke bli endret iløpet av programmetdo! Spør brukeren om radius og høyde og leser dem innwrite(*,*)"Tast inn radius og høyde, 'q' for å avslutte."read(*,*,iostat=ierr)radius,height! Dersom radius og høyde ikke kunne leses inn fra input avsluttes programmetif(ierr/=0)stop"ending program"! Regn ut volumet. ** betyr opphøyd ivolume=pi*height*radius**2! Vis innvariablene (radius, height) og resultatet (volume) på skjermenwrite(*,"(1x,'radius=',f6.2,5x,'height=',f6.2,5x,'volume=',f6.2)")radius,height,volumeend do end programsylinder
^John W. Backus, R. J. Beeper, Sheldon F. Best, Richard Goldberg, Lois M. Haibt, Harlan L. Herrick, Robert A. Nelson, David Sayre, Peter B. Sheridan, H. Stern, Irving Ziller, R. A. Hughes og Roy Nutt:The Fortran automatic coding system, Western Joint Computer Conference,1957, sidene 188–198
^N. Chomsky:Three models for the description of the language, IRE, Transanctions on Information theory, IT-2:3,1956, sidene 113–124
^P. Z. Ingerman:Panini-Backus form suggested, Communications of the Association for Computing Machinery 10:3,1967, side 137