NPRF017 – Programování ve Fortranu
Sylabus: http://www.mff.cuni.cz
Fortran je programovací jazyk vhodný pro řešení numerických problémů (Formula Translator). Je nejstarším klasickým programovacím jazykem (1957), jeho podobu udává několik norem: zastaralý Fortran 66/77, novodobý 90/95, objektový 2003/2008 a moderní 2018. Kromě obvyklých programovacích stylů, jako imperativní, strukturované a procedurální programování, poskytuje vynikající možnosti pro práci s poli, objektové programování a moderní paralelizační syntaxi (Coarray Fortran). Podobně jako pro C/C++, které je v oboru jeho konkurentem (spíše bratrem, díky jejich standardizované interoperabilitě), na výběr je několik vesměs volně dostupných překladačů (gfortran z GNU Compiler Collection, ifort a ifx z Intel oneAPI, nvfortran z Nvidia HPC SDK, flang od AMD aj.) pro Linux i Windows. Fortran a C jsou běžně k dispozici ve výpočetních centrech a velké knihovny numerických metod (NAG, IMSL, MKL, ACML, LAPACK) i paralelizační systémy (OpenMP, MPI) mají rozhraní pro oba jazyky. Překladače provázejí různá vývojová prostředí (Visual Studio, NetBeans, Geany, Code::Blocks), v současnosti se jeví jako prvotřídní volba Visual Studio Code. Fortranské aplikace mají typicky textové rozhraní, spouštějí se z příkazového řádku a interagují textově a pomocí textových nebo binárních souborů.
Poznámky k přednášce
Poprvé s Fortranem (15. 11. 2011, částečná aktualizace 18. 11. 2022)
(datové typy, příkazy, popisy, výrazy, struktura programu, procedury, vstup a výstup, překladače, knihovny)
Podrobněji o Fortranu (30. 6. 2009)
(normy a překladače, struktura programu, příkazy, specifikace, výrazy, pole, vnitřní procedury, ukazatele, struktury, objekty, vstup a výstup)
Objektově orientované programování ve Fortranu,
příklady (20. 11. 2019)
(terminologie, vytvoření třídy a objektu, dědičnost, překrývání metod, abstraktní typy, generické metody a operátory, konstruktory, finalizační metody)
Coarray Fortran (10. 9. 2022)
(program whoami, programy gather/scatter, komunikační benchmark, běh na více strojích)
Interoperabilita Fortranu s C,
příklady (22. 2. 2012)
(modul iso-c-binding, interoperabilní datové typy, interoperabilita proměnných a polí, procedur a jejich volání, globálních proměnných, binární soubory, překladače, knihovny)
Interoperabilita Fortranu s Pythonem (10. 12. 2022)
(překlad fortranských funkcí, podprogramů a modulů)
Co nového ve Fortranu 2008 (1. 11. 2013)
(kooperativní pole, submoduly, ostatní)
Rozpracované poznámky:
pole,
volby překladačů (10. 11. 2015)
Odkazy
O Fortranu:
historie a
přehled jazyka (wikipedia),
Fortran wiki,
Fortran pro všechny (český seriál) a
pro pamětníky (i
česky),
The seven ages of Fortran
Metcalf M., Reid J., Cohen M., Modern Fortran Explained, Incorporating Fortran 2018, Oxford Science, 2018 (
www)
Brainerd W. S., Guide to Fortran 2008 Programming, Springer, 2015
Chapman S. J., Fortran for Scientists and Engineers, 4th Ed., McGraw-Hill, 2018
Chivers I., Sleightholme J., Introduction to Programming with Fortran, 4th Ed., Springer, 2018
Clerman N. S., Spector W., Modern Fortran, Style and Usage, Cambridge, 2012
Markus A., Modern Fortran in Practice, Cambridge, 2012
Ray S., Fortran 2018 with Parallel Programming, CRC Press, 2020
Fortranské normy:
GCC Wiki
Dokumentace k překladačům:
GNU,
Intel,
Nvidia,
AMD
Implementace norem v překladačích:
Fortran wiki
Numerical Recipes:
Fortran book,
C book
OpenMP a MPI:
OpenMP,
specifications a
wiki,
MPI,
specifications,
wiki a
tutorial
Fortran pro Nvidia GPU:
Nvidia HPC SDK,
OpenACC direktivy,
OpenACC Getting Started,
CUDA Fortran,
PGInsider
Software
Překladače:
GNU Compiler Collection (Linux, Windows) a snadný
download pro Windows,
vývojová prostředí
Geany,
Code::Blocks,
NetBeans
Intel oneAPI Base and HPC Toolkits (Linux, Windows)
Nvidia HPC SDK (Linux)
AMD Optimizing C/C++ and Fortran Compilers (Linux)
Programátorské editory:
Visual Studio Code,
Notepad++