Czym jest Fortran i dlaczego warto go poznać
Fortran (Formula Translation) to najstarszy wciąż używany język programowania wysokiego poziomu. Pierwsza wersja powstała w 1957 roku — dla kontekstu, to rok, gdy ZSRR wystrzelił Sputnika, a rock and roll dopiero zaczynał podbijać świat. I mimo że minęło prawie 70 lat, Fortran wciąż działa w systemach, od których zależy nasza cywilizacja: prognozy pogody, symulacje klimatyczne, obliczenia fizyki jądrowej, aerodynamika samolotów i projektowanie leków.
Jeśli myślisz, że Fortran to “martwy język dla emerytów”, pomyśl jeszcze raz. Kod Fortran przetwarza więcej danych naukowych dziennie niż Python, R i Julia razem wzięte. Nie dlatego, że naukowcy go kochają — dlatego, że dekady inwestycji w biblioteki numeryczne (LAPACK, BLAS, FFTW) są napisane w Fortranie, i przepisanie tego wszystkiego kosztowałoby miliardy.
Fortran to też fascynujący przykład ewolucji języka. Od kart perforowanych do nowoczesnego Fortran 2023 z modułami, obiektami, współbieżnością i tablicami jako first-class citizens — ten język przeszedł transformację, której mało który “stary” język dokonał.
Krótka historia i ewolucja
Fortran został stworzony przez Johna Backusa i jego zespół w IBM w 1957 roku. Cel był prosty: pozwolić naukowcom i inżynierom pisać kod w notacji matematycznej, zamiast w assemblerze. Pierwszy Fortran (Fortran I) był rewolucyjny — udowodnił, że kompilator może generować kod tak szybki jak ręcznie pisany assembler. To było ogromne osiągnięcie i otworzyło drogę dla wszystkich kolejnych języków wysokiego poziomu.
Fortran IV (1962) i Fortran 66 (pierwszy standard ANSI) ugruntowały pozycję języka w nauce i przemyśle. Fortran 77 dodał struktury sterujące (IF/THEN/ELSE, DO), które dziś są oczywiste, ale wtedy były nowością. Fortran 90 był prawdziwą rewolucją: moduły, operacje na tablicach, alokacja dynamiczna, typy pochodne — język wskoczył w nowoczesność.
Od tego czasu każda wersja dodawała nowoczesne mechanizmy: Fortran 95 (czyste procedury), Fortran 2003 (OOP, interoperacyjność z C), Fortran 2008 (współbieżność z coarrays), Fortran 2018 (kolektywne operacje na tablicach) i Fortran 2023 (dalsze usprawnienia). Fortran nie stoi w miejscu — ewoluuje, choć wolniej niż “modne” języki.
Kluczowe cechy i filozofia
Fortran jest językiem imperatywnym z silnym naciskiem na obliczenia numeryczne. Jego najsilniejszą cechą są tablice — operacje na tablicach w Fortranie są tak naturalne i wydajne, że żaden inny język nie dorównuje mu w tej domenie. A = B + C * D działa na całych tablicach bez pętli, i kompilator optymalizuje to do granic możliwości sprzętu.
Typowanie jest statyczne i silne. Fortran ma typy numeryczne z precyzyjną kontrolą: REAL(8) dla podwójnej precyzji, INTEGER(4) dla 32-bitowych liczb całkowitych. Możesz określić dokładną precyzję i zakres każdej zmiennej — kluczowe dla obliczeń naukowych, gdzie błąd zaokrąglenia może zrujnować symulację.
Filozofia Fortran to “wydajność numeryczna ponad wszystko”. Język jest zoptymalizowany dla operacji na dużych tablicach liczb. Kompilatory Fortran (gfortran, ifort, nvfortran) generują kod maszynowy, który jest często szybszy niż C/C++ dla obliczeń numerycznych, bo kompilator może robić agresywniejsze optymalizacje (brak aliasowania wskaźników, gwarantowana contiguous memory dla tablic).
Współczesny Fortran wspiera programowanie obiektowe (klasy, dziedziczenie, polimorfizm), moduły (odpowiednik pakietów), i współbieżność przez coarrays (PGAS — Partitioned Global Address Space). To nie jest “stary Fortran z FORTRAN 77” — to nowoczesny język, który zachował swoją oryginalną misję: szybką translację formuł matematycznych na wydajny kod.
Gdzie Fortran sprawdza się najlepiej
Fortran dominuje w obliczeniach naukowych i inżynierskich. Prognozy pogody (European Centre for Medium-Range Weather Forecasts używa Fortran), symulacje klimatyczne (modele NCAR, NASA GISS), fizyka jądrowa (CERN, laboratoria narodowe USA), aerodynamika (NASA, Airbus, Boeing), chemia obliczeniowa (Gaussian, GAMESS) i finanse kwantytatywne — to wszystko Fortran.
Wielkie superkomputery — te maszyny za setki milionów dolarów — wciąż uruchamiają głównie kod Fortran. Dlaczego? Bo biblioteki numeryczne (LAPACK, BLAS, ScaLAPACK) są napisane w Fortranie, bo kompilatory Fortran generują najlepszy kod dla operacji na tablicach, i bo dekady inwestycji w kod Fortran nie da się łatwo zastąpić.
Fortran znajduje też zastosowania w przemyśle naftowym i gazowym (symulacje złóż), motoryzacyjnym (symulacje crash tests) i energetyce (symulacje reaktorów). Wszędzie tam, gdzie trzeba przetworzyć ogromne macierze liczb z maksymalną wydajnością — Fortran jest wciąż królem.
Jak wygląda kod w Fortran
program macierz_mnozenie
implicit none
integer, parameter :: n = 1000
real(8), dimension(n,n) :: A, B, C
integer :: i, j
real :: start_time, end_time
! Inicjalizacja macierzy
call random_number(A)
call random_number(B)
call cpu_time(start_time)
! Mnożenie macierzy — jedna linia, zero pętli
C = matmul(A, B)
call cpu_time(end_time)
print *, 'Czas mnożenia: ', end_time - start_time, ' sekund'
print *, 'C(1,1) = ', C(1,1)
end program macierz_mnozenie
Operacje na tablicach w Fortranie są naturalne — matmul to wbudowana funkcja, a całe mnożenie macierzy to jedna linia. Kompilator zoptymalizuje to do BLAS/LAPACK pod spodem.
module fizyka
implicit none
real(8), parameter :: g = 9.81d0
type :: czastka
real(8) :: masa, pozycja(3), predkosc(3)
contains
procedure :: aktualizuj
end type
contains
subroutine aktualizuj(self, dt)
class(czastka), intent(inout) :: self
real(8), intent(in) :: dt
self%predkosc(3) = self%predkosc(3) - g * dt
self%pozycja = self%pozycja + self%predkosc * dt
end subroutine
end module fizyka
Nowoczesny Fortran z modułami, typami pochodnymi i metodami — to nie jest FORTRAN 77 z kart perforowanych.
Ekosystem i narzędzia
Fortran ma solidny ekosystem kompilatorów: gfortran (GNU, darmowy), ifort/ifx (Intel, komercyjny z darmową wersją), nvfortran (NVIDIA, dla GPU) i NAG Fortran (komercyjny, certyfikowany). Gfortran jest wystarczający dla większości zastosowań; ifort/ifx daje lepszą wydajność na procesorach Intel.
Biblioteki numeryczne to korona Fortran: LAPACK (algebra liniowa), BLAS (podstawowe operacje na macierzach), FFTW (transformata Fouriera), ARPACK (wartości własne dużych macierzy), i setki innych. fpm (Fortran Package Manager) to nowoczesny menedżer pakietów, który ułatwia zarządzanie zależnościami — działa jak Cargo dla Rusta.
IDE? Fortran ma wsparcie w VS Code (Modern Fortran extension), Eclipse (Photran) i JetBrains (przez pluginy). Debugging działa przez GDB. Tooling nie jest na poziomie Pythona czy TypeScript, ale jest wystarczający do poważnej pracy naukowej.
Mocne i słabe strony
Mocne strony Fortran to wydajność numeryczna (często lepsza niż C/C++), operacje na tablicach (najlepsze w branży), ogromna baza bibliotek naukowych, stabilność wsteczna (kod z lat 70. wciąż się kompiluje) i dojrzałe kompilatory. Fortran to wybór bezpieczny — nie zniknie jutro, bo zbyt wiele systemów od niego zależy.
Słabe strony to przede wszystkim “stygmatyzacja” — Fortran jest postrzegany jako “stary” i “niemodny”, co utrudnia przyciąganie nowych developerów. Ekosystem ogólnego przeznaczenia jest słaby — nie napiszesz w Fortranie aplikacji webowej czy mobilnej. Składnia, mimo modernizacji, wciąż nosi ślady lat 50. (np. kolumny 1-5 na etykiety, kolumna 6 na kontynuację — w fixed-form). I wreszcie — Fortran nie ma “cool factor”, co w dzisiejszym świecie rekrutacji ma znaczenie.
Podsumowanie
Fortran to język dla naukowców, inżynierów i każdego, kto potrzebuje maksymalnej wydajności w obliczeniach numerycznych. Jeśli pracujesz w fizyce, chemii, meteorologii, aerodynamice czy finansach kwantytatywnych — Fortran jest (lub powinien być) w twoim toolbox. Nawet jeśli na co dzień piszesz w Pythonie, zrozumienie Fortran pozwoli ci korzystać z bibliotek numerycznych świadomie, nie tylko jako “czarnej skrzynki”.
Przyszłość Fortran jest stabilna. Standard Fortran 2023 jest finalizowany, kompilatory są aktywne, a zapotrzebowanie na obliczenia HPC (High Performance Computing) rośnie. Fortran nie zdobędzie mainstreamu, ale nie musi — jego nisza jest ogromna, strategiczna i niezniszczalna. Najstarszy język wciąż robi robotę, i nic nie wskazuje na to, żeby miał przestać.

