Fortran
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 do aktualnej) a dawniej FORTRAN (do wersji 77 włącznie) (od ang. formula translation) – język programowania 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. Początkowe wersje Fortranu miały mocno ograniczone możliwości, ale dzięki łatwości opanowania Fortran stał się najpopularniejszym językiem do obliczeń numerycznych.
Specyfika
[edytuj | edytuj kod]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 bogate zasady tworzenia formatów zapisywanych i drukowanych danych.
Fortran dysponuje wielką liczbą bibliotek, które pozwalają rozwiązać praktycznie każde zadanie numeryczne. Najważniejsze przyczyny, z powodu których Fortran jest wykorzystywany i rozwijany do dziś, to szybkość obliczeń oraz wysoka wydajność kodu generowanego przez kompilatory Fortranu, wynikająca m.in. z jego długiej obecności na rynku programistycznym, znakomita skalowalność i przenośność oprogramowania (pomiędzy różnymi platformami sprzętowymi i systemami operacyjnymi), a także dostępność bibliotek dla programowania wieloprocesorowego i równoległego oraz bibliotek graficznych. Obliczenia aerodynamiczne, wytrzymałościowe i cieplne obecnie często prowadzone są 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). Obecnie 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.
Historia i standardy
[edytuj | edytuj kod]Pierwszy kompilator Fortranu stworzył zespół Johna Backusa, który w latach 1954–1957 pracował dla 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ł zbyt ubogi i implementacje musiały zawierać wiele rozszerzeń. W latach siedemdziesiątych 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 powszechnie kart perforowanych, ale zawierała elementy programowania strukturalnego. W Polsce bardzo popularna była odmiana Fortranu na maszyny ICL/Odra (FORTRAN 1900; kompilator taśmowy #XFAM oraz dyskowe #XFAT i #XFAE z konsolidatorem #XPCK), a także Watfor 77, Lahey 77 i MS Fortran na PC czy Fortran 80 dla 8-bitowych komputerów z systemem CP/M-80. W praktyce większość tych kompilatorów miała wiele rozszerzeń, które dopiero 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 całkowicie zmienioną składnię dostosowaną do współczesnych języków programowania, przykładowo 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 nowych standardów, Fortran 77 jest nadal w użyciu (głównie przez starszych programistów przyzwyczajonych do tej wersji), co uwzględniają producenci praktycznie wszystkich 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[3] .
Podstawy
[edytuj | edytuj kod]Operatory logiczne
[edytuj | edytuj kod]operator logiczny | nazwa |
---|---|
.NOT.
|
negacja |
.AND.
|
koniunkcja |
.OR.
|
alternatywa |
.EQV.
|
równoważność |
.NEQV.
|
zaprzeczenie równoważności |
Operatory porównania
[edytuj | edytuj kod]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)
|
Operatory arytmetyczne
[edytuj | edytuj kod]operator arytmetyczny | działanie |
---|---|
+
|
dodawanie |
-
|
odejmowanie |
*
|
mnożenie |
/
|
dzielenie |
**
|
potęgowanie |
Przykłady
[edytuj | edytuj kod]Najkrótszy program:
END
Hello world, kod dla F77:
PROGRAM HELLO
WRITE (*,*) 'hello, world'
END
- Deklaracje zmiennych i
Implicit none
Standard 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.
Kompilatory
[edytuj | edytuj kod]Kompilatory języka Fortran 90/95
[edytuj | edytuj kod]- Edi (Windows) – polskie zintegrowane środowisko programistyczne dla Windows. Bezpłatne pod warunkiem zarejestrowania
- Intel Visual Fortran Compiler (Linux, Windows, OS X) – w wersji pod Linuksa bezpłatny dla niekomercyjnych zastosowań
- CUDA Fortran(Portland Group) (Linux, Windows, MAC OS X) – płatny
- Silverfrost FTN95 (Windows) – bezpłatny
- GNU Fortran 95 – wolny, jeden z podprojektów GCC
- G95 Project (Linux, Windows, OS X) – darmowy
- PGI Visual Fortran (Linux, Windows, OS X) – płatny, zintegrowany z MS Visual studio
- Compaq Visual Fortran (Windows, Linux/Unix/OpenVMS Alpha, OpenVMS VAX) – płatny, przejęty przez firmę Intel i dalej rozwijany jako Intel Fortran Composer XE
- VAST/f90 (Linux) – darmowy kompilator dla użytkowników indywidualnych (a właściwie translator F77 do F90)
- Absoft Pro Fortran (Linux, Windows, Mac OS, PowerPC) – płatny
- Lahey/Fujitsu Fortran (Windows, Linux, SPARC Solaris) – komercyjny
- NAGWare f95 (Linux, Mac OS, SPARC Solaris, IRIX, SunOS, OSF/1, PA-RISC) – komercyjny
- NA Software FortranPlus (Linux, Windows) – płatny
- Salford FTN95 (Windows) – darmowy do zastosowań niekomercyjnych (od roku 2005)
- Open64 [1] – darmowy
Kompilatory języka Fortran 77
[edytuj | edytuj kod]- Salford FTN77 (Windows) – darmowy
- Open Watcom. openwatcom.org. [zarchiwizowane z tego adresu (2018-04-07)]. (Windows, OS/2) – open source
- g77 (GNU fortran 77) – wolny
Zobacz też
[edytuj | edytuj kod]- SAKO – „Polski Fortran”
Przypisy
[edytuj | edytuj kod]- ↑ Charles D. Norton , Viktor K. Decyk , Boleslaw K. Szymanski: On Parallel Object Oriented Programming in Fortran 90. 1997. [dostęp 2012-10-21]. (ang.).
- ↑ University of Liverpool: Modular Programming with Fortran 90. 1997. [dostęp 2016-11-05]. (ang.).
- ↑ Fortran 2023. 2023. [dostęp 2024-01-23]. (ang.).
Linki zewnętrzne
[edytuj | edytuj kod]- Photran – środowisko programistyczne
- Komitet techniczny J3 standaryzujący Fortran
- Kurs języka FORTRAN. chem.univ.gda.pl. [zarchiwizowane z tego adresu (2013-09-03)].
Bibliografia
[edytuj | edytuj kod]- Wojciech Sobieski, GNU Fortran z elementami wizualizacji danych, Wydawnictwo Uniwersytetu Warmińsko-Mazurskiego w Olsztynie, Olsztyn 2008
- Janusz Piechna, Programowanie w języku Fortran 90 i 95, Wydawnictwa Politechniki Warszawskiej, Warszawa 2000
- Krzysztof Rościszewski, Romuald Witt, Nauka Fortranu 90/95, Wydawnictwo UJ, Kraków 2003
- Anna Trykozko, Ćwiczenia z języka Fortran, Wydawnictwo MIKOM, Warszawa 1999
- Ryszard K. Kott , Krzysztof Walczak , Programowanie w języku Fortran 77, Warszawa: Wydawnictwa Naukowo-Techniczne, 1991, ISBN 83-204-1362-1, OCLC 749999902 .
- Joanna Jonkisz, Jan Makuch, Stanisław Starzak, Programowanie w językach Algol 60 i Fortran 1900, Wydawnictwo Politechniki Łódzkiej, Łódź 1982, Skrypty dla szkół wyższych, Politechnika Łódzka, Ośrodek Elektronicznej Techniki Obliczeniowej (Fortran IV dla komputera Odra 1305)
- Dariusz Chrobak, Fortran Praktyka Programowania, Wydawnictwo MIKOM, Warszawa 2003