Fortran | ||
---|---|---|
IBM og John Backus https://fortran-lang.org | ||
Generell informasjon | ||
Vanlige utvidelser | f, for og f90 | |
Dukket opp i | 1957 | |
Designet av | John Backus | |
påvirket av | hastighetskoding | |
Fortran (tidligere FORTRAN , [ 1 ] sammentrekning av engelsk The IBM Mathematical Formula Translate System ) er et generelt [ 2 ] prosedyremessig [ 3 ] , imperativt programmeringsspråk på høyt nivå , som er spesielt tilpasset numerisk beregning og vitenskapelig databehandling . Opprinnelig utviklet av IBM i 1957 for IBM 704-datamaskinen , og brukt til vitenskapelige og tekniske applikasjoner, kom FORTRAN til å dominere dette området av programmering tidlig og har vært i kontinuerlig bruk i mer enn et halvt århundre i beregningsintensive områder. som numerisk værprediksjon , endelig elementanalyse , beregningsvæskedynamikk (CFD), beregningsfysikk og beregningsbasert kjemi . Det er et av de mest populære språkene innen høyytelses databehandling og er språket som brukes for programmer som evaluerer ytelsen ( benchmark ) og rangeringen av de raskeste superdatamaskinene i verden . [ 4 ]
FORTRAN omfatter en rekke versjoner, som hver utviklet seg for å legge til utvidelser til språket mens de vanligvis beholdt kompatibiliteten med tidligere versjoner. Påfølgende versjoner har lagt til støtte for tegnbasert databehandling (FORTRAN 77), array -programmering , modulær programmering og objektorientert programmering (Fortran 90/95), og generisk programmering (Fortran 2003).
På slutten av 1953 sendte John W. Backus et forslag til sine overordnede i IBM om å utvikle et mer praktisk alternativ til assemblerspråk for programmering av IBM 704 stormaskin . Backus' historiske FORTRAN-team besto av programmererne Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt og David Sayre. [ 5 ]
I midten av 1954 ble et utkast til spesifikasjon for IBM Mathematical Formula Translating System fullført . Den første FORTRAN-manualen dukket opp i oktober 1956 , fordi kundene var motvillige til å bruke et programmeringsspråk på høyt nivå med mindre kompilatoren kunne generere kode hvis ytelse var sammenlignbar med den til håndskrevet assembly-språkkode.
Mens samfunnet var skeptisk til dette nye språket, reduserte det antallet programmeringsutsagn som var nødvendig for å betjene en maskin med 20 ganger, og fikk raskt aksept. Under et intervju fra 1979 med Think, IBMs ansattemagasin, sa skaperen John Backus: "Mye av arbeidet mitt kom fra å være lat. Jeg likte ikke å skrive programmer, og så da jeg jobbet med IBM 701-skriveprogrammene for å regnemissiler baner begynte jeg å jobbe med et programmeringssystem for å gjøre det lettere å skrive programmer. [ 6 ]
Språket ble bredt tatt i bruk av forskere for å skrive numerisk intensive programmer, noe som oppmuntret kompilatorforfattere til å produsere kompilatorer som kunne generere raskere og mer effektiv kode. Inkluderingen av en datatype og kompleks tallaritmetikk i språket utvidet spekteret av applikasjoner som språket var spesielt egnet for og gjorde FORTRAN spesielt godt egnet for tekniske applikasjoner som elektroteknikk.
I 1960 var versjoner av FORTRAN tilgjengelig for IBM 709 , 650 , 1620 og 7090 datamaskiner . Den økende populariteten til FORTRAN stimulerte betydelig konkurrerende datamaskinprodusenter til å tilby FORTRAN-kompilatorer for maskinene sine, slik at det i 1963 eksisterte mer enn 40 FORTRAN-kompilatorer. Av disse grunner regnes FORTRAN som det første mye brukte programmeringsspråket som støttes på tvers av en rekke dataarkitekturer.
Utviklingen av FORTRAN gikk parallelt med den tidlige utviklingen av kompilatorteknologi. Faktisk ble mange fremskritt innen kompilatorteori og design motivert spesifikt av behovet for å generere effektiv kode for FORTRAN-programmer.
Noen andre påfølgende versjoner var:
Språket ble designet med tanke på at programmer skulle skrives på hullkort med 80 kolonner. Dermed måtte for eksempel linjene nummereres og den eneste mulige endringen i rekkefølgen for utførelse ble produsert med goto -instruksen . Disse funksjonene har utviklet seg fra versjon til versjon. De nåværende inneholder underprogrammer, rekursjon og en rekke kontrollstrukturer .
Siden det var et første forsøk på å lage et programmeringsspråk på høyt nivå, har det en syntaks som anses som arkaisk av mange programmerere som lærer mer moderne språk. Det er vanskelig å skrive en "for"-løkke, og feil ved å skrive et enkelt tegn kan føre til kjøretidsfeil i stedet for kompilatorfeil, hvis de vanligste konstruksjonene ikke brukes. Noen tidlige versjoner hadde ikke funksjoner som anses som veldig nyttige, for eksempel dynamisk minnetildeling.
Det skal bemerkes at Fortran-syntaksen var ment for bruk i numerisk og vitenskapelig arbeid. Mange av dens mangler har blitt tatt opp i nyere språkrevisjoner. Fortran 95 har for eksempel mye kortere kommandoer for å utføre matrisematematikk, og den har typer. Dette forbedrer ikke bare lesbarheten til programmet betydelig, men gir også nyttig informasjon til kompilatoren.
Av disse grunnene brukes Fortran knapt utenfor vitenskapelige felt og numerisk analyse, men det er fortsatt det foretrukne språket for utvikling av høyytelses numeriske databehandlingsapplikasjoner.
Det er to standardiserte versjoner av språket.
Nedenfor er kildekoden på Fortran-språket til et program som gjør det mulig å utføre en lineær tilpasning eller regresjon av en serie data:
LINEÆR REGRESJON . FORTRANS APPLIKASJONSDIMENSJON TID ( 1000 ), PROD ( 1000 ) ÅPEN ( 1 , FIL = 'HISTORY.txt ' ) I = 0 10 READ ( 1 , * , END = 80 ) T , P I = I + 1 GANG ( . l .) = T PROD ( I ) = P GÅ TIL 10 80 NDATA = JEG RINGER ADJULIN ( TID , PROD , NDATA , A , B ) SKRIV ( * , 90 ) A , B 90 FORMAT ( 'LIGNING ER:Y =' , F10 .2 , ' +' , F10 .2 , ' X ' ) 20 FORMAT ( 20 F10 . 0 ) SLUTT SUMRUTINE AJULIN ( X , Y , N , A , B ) DIMENSJON X ( 1 ), Y ( 1 ) SUMX = 0. SUMY = 0. SUMX2 = 0. SUMY2 = 0 SUMXY = 0 GJØR 20 I = 1 , N SUMX = SUMX + X (. l .) SUMY = SUMY + Y (. l .) SUMX2 = SUMX2 + ( X ( I ) * X (. l .)) SUMY2 = SUMY2 + Y ( I ) ** 2 SUMXY = SUMXY + ( X ( I ) * Y ( I )) 20 FORTSETT PROD = SUMX * SUMY B = ( SUMXY - PROD / N ) / ( SUMX2 - SUMX ** 2 / N ) A = ( SUMY / N - B * SUMX / N ) ) RETUR SLUTTI utgangspunktet, i programmet leses et visst antall ordnede par fra en ASCII -fil , en rutine kalles som beregner den tilsvarende tilpasningslinjen, ved å bruke metoden for minste kvadrater , og returnerer deretter med koeffisientene eller parameterne til den aktuelle linjen. .