Fortran

Fortran, tidligere kalt FORTRAN (FORmula TRANslation), blir ofte ansett som det første  programmeringssprå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.


== Historie ==
På 1950-tallet var utviklingen av kompilatorer en svært vanskelig oppgave. En gruppe ledet av John Backus brukte 18 år på å utvikle Fortran.Høsten 1953 foreslo Backus overfor sin ledelse i IBM å utvikle et praktisk alternativ til assemblerspråk for å programmere den nye stormaskinen IBM 704. Første utkast til spesifikasjon The IBM Mathematical Formula Translating System (IBMs matematisk formeloversettelsessystem) forelå sommeren 1954. Den første kompilatoren ble lansert april 1957. Behovet for instrukser 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 av Backus–Naur-formen. En lignende grammatikk ble foreslått i 1956. Mangelen på formaliserte definisjoner av syntaks, skapte problemer da tidligere utviklere av Fortran forlot IBM. Da Backus utviklet Algol-58, adopterte han syntaks-regler for Fortran og senere programmeringsspråk, som var basert på Pāṇinis sanskrit-grammatikk.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 den amerikanske 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 i 1966 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 innen meteorologi, 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++.


== Fortran i dag ==
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 ny proprietær programvare blir laget i Fortran, men i forskningsmiljøet er fortsatt Fortran en favoritt på grunn av det store fokuset på hastighet.


== Kodeeksempler i Fortran ==


=== Hello, World! ===
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.


=== Volumet av en sylinder ===
Dette programmet regner ut volumet til en sylinder 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.


== Referanser ==