Logo języka | |
| Pojawienie się |
1957 |
|---|---|
| Paradygmat | |
| Typowanie | |
| Pochodne |
Fortran 2008 (ISO/IEC 1539-1:2010) (2010) |
| Twórca |
John Backus (IBM) |
| Platforma sprzętowa | |
| Platforma systemowa |
Linux, UNIX, Windows |
| Strona internetowa | |
Fortran (od wersji 90) a dawniej FORTRAN (do wersji 77 włącznie) (od ang. formula translation) – język programowania komputerów, pierwotnie zaprojektowany do zapisu programów obliczeniowych. Był niegdyś językiem proceduralnym, obecnie jest nadal rozwijanym językiem ogólnego przeznaczenia. Umożliwia programowanie strukturalne, obiektowe[1] (Fortran 90/95), modularne[2] i równoległe (Fortran 2008). Jego zastosowaniami są, między innymi, obliczenia naukowo-inżynierskie, numeryczne, symulacja komputerowa itp. Fortran stał się najpopularniejszym językiem do przeprowadzania obliczeń numerycznych.
Z pierwszych wersji języka pochodzi zasada braku rozróżniania małych i wielkich liter w słowach kluczowych języka oraz używanych zmiennych, a także zasady tworzenia formatów zapisywanych i drukowanych danych.
Fortran dysponuje dużą liczbą oprogramowanych bibliotek do obliczeń numerycznych i graficznych. Język jest nadal wykorzystywany i rozwijany, Generowany przez kompilatory kod zapewnia wydajne obliczenia, możliwe jest skalowanie i przenośność oprogramowania pomiędzy różnymi platformami sprzętowymi i systemami operacyjnymi. Dostępne są biblioteki dla programowania wieloprocesorowego i równoległego. Obliczenia aerodynamiczne, wytrzymałościowe i cieplne są prowadzone z użyciem tego języka.
Do niedawna te zalety były okupione brakiem dobrych metod wizualizacji czy niskopoziomowej komunikacji z systemem operacyjnym, gdyż te zagadnienia są pominięte w kolejnych standardach języka (aż do Fortranu 95 włącznie). Producenci kompilatorów (zwłaszcza niezależni), wzbogacają je o możliwość stosowania grafiki celem umożliwienia wizualizacji wyników obliczeń (wykresy, wizualizacja tablic wielowymiarowych) poprzez dostarczanie odpowiednich bibliotek.

Pierwszy kompilator Fortranu stworzył zespół Johna Backusa, który w latach 1954–1957 pracował dla firmy IBM. Kompilator ten był pierwszym w historii kompilatorem języka wysokiego poziomu. Został starannie zoptymalizowany, ponieważ autorzy obawiali się, że nikt nie będzie go używał, jeśli szybkość programów nie będzie porównywalna z szybkością programów napisanych w asemblerze.
Pierwsza standaryzacja nastąpiła w 1960 roku, kiedy opisano pierwszy standard języka znany jako Fortran IV. Kolejnym standardem był Fortran 66. Standard ten był stosunkowo ubogi i jego implementacje zawierały wiele rozszerzeń. W latach siedemdziesiątych XX wieku American National Standard Institute (ANSI) opracowała kolejny standard nazwany Fortran 77, który w roku 1980 stał się standardem międzynarodowym. Jego struktura przystosowana jest do używanych wówczas kart perforowanych, ale zawierała elementy programowania strukturalnego. W Polsce popularna była odmiana FORTRANu na maszyny cyfrowe ICL/Odra (FORTRAN 1900; kompilator taśmowy #XFAM oraz dyskowe #XFAT i #XFAE z konsolidatorem #XPCK). Bardzo dobrą diagnostykę błędów, pojawiających się podczas uruchamiania programów, zapewniał kompilator Minnesota FORTRAN, stosowano także wersję FORTRAN EXTENDED dla komputerów CDC Cyber 70[3], zainstalowanych w ośrodkach Cyfronet w Instytucie Badań Jądrowych w Świerku i Cyfronet Kraków. Wykorzystywano także wersje Watfor 77, Lahey 77 i MS Fortran na PC czy Fortran 80 dla 8-bitowych komputerów z systemem CP/M-80. W praktyce kompilatory wprowadzały rozszerzenia składni, które po latach weszły do kolejnego standardu (struktury rekordowe, alokowalne tablice, więcej instrukcji pozwalających na programowanie strukturalne itp.). Następcą Fortranu 77 stał się Fortran 90. Standard ma zmienioną składnię, dostosowaną do współczesnych języków programowania. Fortran 90 nie wymusza już na użytkowniku stosowania etykiet i instrukcji skoku. Kolejnym standardem jest Fortran 95, zmiany w stosunku do poprzedniej wersji są niewielkie. Pomimo wprowadzenia nowszych standardów, wersje Fortran 77 są nadal w użyciu, co uwzględniają producenci kompilatorów – na przykład kompilator Compaq Visual Fortran (wcześniej Digital Visual Fortran) kompiluje programy napisane w standardach 66/77/90/95. Najnowszy standard języka nosi nazwę Fortran 2023 i został opublikowany w listopadzie 2023 roku[4].
| operator logiczny | nazwa |
|---|---|
.NOT.
|
negacja |
.AND.
|
koniunkcja |
.OR.
|
alternatywa |
.EQV.
|
równoważność |
.NEQV.
|
zaprzeczenie równoważności |
| operator relacji | opis |
|---|---|
.LT.
|
ang. less than – inaczej <
|
.LE.
|
ang. less equal – inaczej <=
|
.GT.
|
ang. greater than – inaczej >
|
.GE.
|
ang. greater equal – inaczej >=
|
.EQ.
|
ang. equal – inaczej == (lub = w Pascalu)
|
.NE.
|
ang. not equal – inaczej != (lub <> w Pascalu)
|
| operator arytmetyczny | działanie |
|---|---|
+
|
dodawanie |
-
|
odejmowanie |
*
|
mnożenie |
/
|
dzielenie |
**
|
potęgowanie |
Najkrótszy program:
END
Hello world, kod dla F77:
PROGRAM HELLO
WRITE (*,*) 'hello, world'
END
Implicit noneStandard nie wymusza stosowania deklaracji zmiennych, wówczas niezadeklarowane zmienne o nazwach rozpoczynających się od liter A-H i O-Z (nie są rozróżniane małe i duże litery) mają typ real (rzeczywisty, zmiennoprzecinkowy o precyzji zależnej od implementacji i opcji) a zmienne rozpoczynające się od I-N są typu integer (liczby całkowite o zakresie zależnym od implementacji i opcji); jest to równoważne deklaracjom „implicit real (A-H,O-Z)” i „implicit integer (I-N)”.
Dyrektywa kompilatora implicit none zastosowana na początku programu zapobiega wykorzystaniu niezadeklarowanych zmiennych. Przykładowy poprawny kod programu liczącego sumę dwóch liczb rzeczywistych (podwójnej precyzji – real(8)), w języku F95:
IMPLICIT NONE
REAL(8) :: a,b
READ *,a,b
PRINT *,'wynik',a+b
END
w przypadku kodu:
IMPLICIT NONE
REAL(8) :: a
READ *,a,b
PRINT *,'wynik',a+b
END
kompilator wyświetla błąd o niezadeklarowaniu zmiennej „b” wykorzystywanej w programie.
Fakt domyślnej deklaracji zmiennych niejednokrotnie powodował kłopoty programistów, nie mogących odnaleźć źródła nieoczekiwanych kaprysów pozornie poprawnych programów, np. nagłówek pętli wykonywanej 25 razy dla zmiennej I:
DO 100 I=1,25
napisany z kropką zamiast przecinka:
DO 100 I=1.25
nie czyni tej instrukcji niepoprawną, ponieważ kompilator uzna ten zapis za domyślną deklarację zmiennej DO100I typu rzeczywistego (nazwa zaczyna się od litery D) i przypisze jej wartość 1.25, co zmieni zamierzony przez programistę przepływ sterowania.