Fortran
Fortran (ili FORTRAN) ime je za proceduralni, imperativni programski jezik koji je bio razvijen tijekom 50-ih godina dvadesetog stoljeća, i koristi se većinom u znanstvene svrhe. Ime FORTRAN dobiveno je od skraćivanjem engleske složenice Formula Translation.
Povijest razvoja i inačice
Povijest razvoja
Prvi FORTRAN jezični prevoditelj (ili kompilator) razvila je tvrtka IBM za računalo IBM 704 između 1954. i 1957. godine. Razvojnu grupu predvodio je John W. Backus. Kao jezični prevoditelj FORTRAN je nastao u povojima računarstva tj. kada su osnovna svojstva računala bile veoma skromne (mala glavna memorija, spora centralna jedinica) tako da je razvojni tim imao skučeni prostor za razvoj i implementaciju.
Predvoditelj razvojne grupe John W. Backus je također bio i jedan od glavnih inženjera i dizajnera računala IBM 704, računala na kojem je razvijena prva inačica FORTRANA. Uz Backusa u razvojnoj grupi su sudjelovali su sljedeći programeri :
- Sheldon F. Best
- Harlan Herrick
- Peter Sheridan
- Roy Nutt
- Robert Nelson
- Irving Ziller
- Richard Goldberg
- Lois Haibt
- David Sayre
Razvojni tim FORTRANA nije razvio princip programa-prevoditelja te prevođenje složenog programskog jezika u objektni kod, ali oni su prva grupa koja je razvila uspješan složeni programski jezik.
Inačice
- FORTRAN I (1954-1957)
- FORTRAN II (1958)
- FORTRAN III (1958)
- FORTRAN IV (1961)
- FORTRAN 66 (1966)
- FORTRAN 77 (1977)(ANSI standard)
- FORTRAN 90 (1990)(ANSI standard)
- FORTRAN 95 (1995)(ANSI standard)
- FORTRAN 2000 (2000)
- FORTRAN 2003 (2003)
- FORTRAN 2008 (2008)
Posebitosti
Fortran je jedan od najstarijih visokorazinskih programskih jezika, a tijekom desetljeća razvio je skup osobitosti koje ga čine jedinstvenim u znanstvenom i tehničkom računarstvu. Njegove posebnosti proizlaze iz povijesnog razvoja, stroge sintakse, optimizacije za numeričke izračune i dugogodišnje uporabe u inženjerskim disciplinama.
- Optimiziran za numeričke izračune i znanstvene aplikacije - Fortran je od samog početka dizajniran za matematičke operacije, što ga čini iznimno brzim u radu s matricama, vektorima i kompleksnim numeričkim algoritmima. Kompajleri Fortrana tradicionalno generiraju vrlo učinkovit strojni kod, posebno za operacije s pomičnim zarezom.
Jednostavna i stroga sintaksa
Sintaksa Fortrana je jednostavna, ali stroga. Povijesno je bio vezan uz formatirane linije (npr. FORTRAN 77), dok modernije inačice (Fortran 90+) uvode slobodni format, modularnost i čitljiviji kod. Stroga sintaksa smanjuje mogućnost pogrešaka i olakšava optimizaciju.
Duga kompatibilnost unatrag
Jedna od najvećih posebnosti Fortrana jest iznimna kompatibilnost unatrag. Programi napisani prije 40 ili 50 godina često se mogu kompajlirati i pokrenuti na modernim sustavima bez većih izmjena. Ovo je ključno za znanstvene institucije koje održavaju stare, ali pouzdane numeričke modele.
Učinkovito rukovanje poljima (arrayima)
Fortran ima napredne mogućnosti rada s poljima, uključujući:
- automatsko vektoriziranje,
- rad s višedimenzijskim poljima,
- ugrađene operacije nad cijelim poljima bez eksplicitnih petlji.
Ovo ga čini idealnim za simulacije, fiziku, kemiju, meteorologiju i numeričku analizu.
Modularnost i proširivost (Fortran 90+)
Moderni Fortran uvodi module, generičke funkcije, rekurziju, dinamičku alokaciju memorije i druge značajke koje ga čine usporedivim s modernim jezicima, ali uz zadržavanje numeričke učinkovitosti.
Stabilnost i pouzdanost u dugotrajnim projektima
Zbog svoje jednostavnosti, stabilnosti i dugogodišnje uporabe, Fortran je i danas temelj mnogih znanstvenih biblioteka (BLAS, LAPACK, IMSL).Mnoge superračunalne simulacije i dalje se oslanjaju na Fortran zbog njegove predvidljivosti i brzine.
Nedostaci
Iako je Fortran jedan od najvažnijih jezika u povijesti računarstva, posebno u znanstvenim i tehničkim disciplinama, ima i niz nedostataka koji proizlaze iz njegove starosti, povijesnog razvoja i ograničenja u modernim programerskim praksama.
- Ograničena podrška za suvremene paradigme - Fortran nije izvorno dizajniran za objektno orijentirano programiranje, funkcionalne paradigme ili moderne apstrakcije. Iako novije inačice (2003, 2008, 2018) uvode određene OOP elemente, njihova implementacija je ograničena i često neudobna u usporedbi s jezicima poput C++, Jave ili Pythona.
- Manjak standardiziranih biblioteka - Za razliku od modernih jezika koji imaju bogate standardne biblioteke (npr. Python, Java), Fortran se oslanja na vanjske znanstvene biblioteke. Nedostatak univerzalnih modula za rad s datotekama, mrežom, grafikom ili GUI‑jem čini ga nepraktičnim za opće programske zadatke.
- Složenost održavanja starog koda - Velika količina postojećeg Fortran koda napisana je u starim inačicama (FORTRAN 66, FORTRAN 77) koje koriste zastarjeli formatirani stil, goto naredbe i nečitljive strukture. Održavanje takvog koda zahtijeva specijalizirano znanje i često predstavlja izazov novim programerima.
- Slaba čitljivost u velikim projektima - Iako je sintaksa jednostavna, Fortran kod može postati teško čitljiv u kompleksnim numeričkim projektima zbog: velikog broja globalnih varijabli, nedostatka modernih mehanizama enkapsulacije, opsežnih polja i matrica koje se teško prate.
- Ograničena upotreba izvan znanstvenog područja - Fortran je gotovo isključivo prisutan u znanstvenim, inženjerskim i simulacijskim aplikacijama. U industriji, web‑u, mobilnom razvoju, igrama i poslovnim sustavima praktički se ne koristi, što smanjuje dostupnost programera i alata.
- Manja podrška u modernim razvojnim okruženjima - Iako postoje kvalitetni kompajleri (Intel, GNU, PGI), Fortran ima slabiju integraciju u suvremene IDE‑ove, sustave za upravljanje paketima i razvojne platforme. To otežava rad u timovima i integraciju s drugim tehnologijama.
Programski primjer
! This program calculates the area of a tank,
! excluding the bottom.
! The variables are assigned as follows:
!
! R = RADIUS
! H = HEIGHT
! PI = 3.14159
! A = AREA
!
! They are declared with the REAL statement below.
REAL R, H, PI, A
! The OPEN command associates the data file, "PANDAT.DAT",
! in folder "DATA" with logical device 5. If there is an
! error, statement 900 is executed.
OPEN (5, FILE = 'C:\DATA\PANDAT.DAT', ACCESS = 'SEQUENTIAL', &
STATUS = 'OLD', ERR = 900)
! This following section accumulates the sum of
! the input variables.
! The first command reads the data record and
! stores it in memory.
DO
READ (5, FMT = 1, END = 99) R, H
! The next command describes the form and location
! of the data to be read.
1 FORMAT (F4.2,F4.2)
! The next statements assign values to the variables.
PI = 3.14159
A = PI * R**2 + 2 * PI * R * H
! The next section writes the sums to the screen.
! The first command, PRINT, denotes which FORMAT
! statement is to be used, and the variables to be printed.
PRINT 11, H, R, A
! The following FORMAT statement describes how the
! data field is to be written. Notice the semicolon in column 6
! which is used to denote continuation of the previous line.
11 FORMAT (1X,'RADIUS= ',F6.2,10X,'HEIGHT= ',F6.1,10X,'AREA= ', &
& F8.1)
! The following statement completes the loop.
END DO
! The next section prints if the input data is invalid.
900 PRINT 21
21 FORMAT (1X,'INVALID DATA')
! Now we close the file and end program execution.
99 CLOSE (5)
STOP
END
Reference
- IBM Archives – History of FORTRAN
- John W. Backus – The FORTRAN Automatic Coding System
- ANSI/ISO standardi za Fortran 77, 90, 95, 2003, 2008
- BLAS i LAPACK dokumentacija
- University of California – Fortran Language Overview