Fortran — език за програмиране: история, стандарти и приложения
Fortran: история, стандарти и приложения — от първите компилатори до модерни паралелни и научни изчисления. Открийте стандарти, оптимизация и реални приложения.
Fortran е език за програмиране, създаден за първи път през 50-те години на миналия век. Той се използва и днес. Той е процедурен език, използван главно за научни изчисления и цифров анализ.
Първият компилатор на FORTRAN е създаден през 1954-57 г. от екип в IBM, ръководен от Джон У. Бакъс. Този компилатор е първият компилатор за език от високо ниво. Авторите се притеснявали, че никой няма да използва езика, ако програмите, написани на него, не се изпълняват почти толкова бързо, колкото програмите, написани на асемблер. Затова те го направиха оптимизиращ компилатор.
Поради интензивното използване от учени, занимаващи се с числена работа, езикът се развиваше по начин, който насърчаваше авторите на компилатори да създават компилатори, генериращи висококачествен (бърз) код. Съществуват много производители на високопроизводителни компилатори. Голяма част от работата и изследванията в областта на теорията и проектирането на компилатори бяха предизвикани от необходимостта да се генерира добър код за програми на Fortran.
Появиха се няколко редакции на езика, включително много известните FORTRAN IV (същият като FORTRAN 66), FORTRAN 77 и Fortran 90. Последният официален стандарт за езика е публикуван през 1997 г. и е известен като Fortran 95.
Първоначално езикът разчиташе на прецизно форматиране на изходния код и широко използване на номера на операциите и на командите "отиди към", записани като goto във Fortran.
Всяка версия въвеждаше "модерни" концепции за програмиране, като коментари на изходния код и извеждане на текст, IF-THEN-ELSE (във FORTRAN 77), рекурсия (във Fortran 90) и паралелни конструкции, като същевременно се опитваше да запази "постния" профил и високата производителност на Fortran.
Какво отличава Fortran
- Оптимизация за числени изчисления — езикът и компилаторите са проектирани с приоритет към бързо изпълнение на масивни числени операции.
- Масивна и векторна синтакса — вградената поддръжка на операции с масиви и векторни изрази прави кода по-кратък и по-четим за научни алгоритми.
- Типова система и строг статичен анализ — силно типизиран език с ранно откриване на много грешки при компилация.
- Две форми на писане на код — старият „fixed-form“ (фиксиран формат) за съвместимост със стари програми и новият свободен „free-form“ формат, въведен в по-късните стандарти.
- Поддръжка на паралелност и многопоточност — OpenMP, MPI и нови езикови средства (coarrays, DO CONCURRENT) улесняват паралелните изчисления.
Основни етапи и стандарти
- FORTRAN (ранни версии) и FORTRAN IV / FORTRAN 66 — първоначално дефиниране и разпространение.
- FORTRAN 77 — значителни структурни подобрения (IF-THEN-ELSE, подобрена I/O поддръжка).
- Fortran 90 / 95 — модернизация: модули, динамични масиви, операторы за масиви, рекурсия, свободен формат и др.
- Fortran 2003 — добавена поддръжка за обектно-ориентирано програмиране и подобрена интероперативност с C (ISO_C_BINDING).
- Fortran 2008 и Fortran 2018 — допълнителни паралелни конструкции (coarrays), подобрения в синтаксиса и поправки/разширения на стандартите.
Съвременни възможности
- модули (MODULE) за инкапсулация и повторна употреба на код;
- потребителски типове (derived types) и обектно-ориентирани конструкции (въвеждани с Fortran 2003);
- ISO_C_BINDING за лесна обмяна на данни и извикване между Fortran и C/C++;
- елементарни и чисти процедури (ELEMENTAL, PURE) за оптимизации и паралелизация;
- богати библиотеки за линейна алгебра и научни изчисления (BLAS, LAPACK и др.).
Част от екосистемата
Съществуват активни компилатори и реализации: GNU Fortran (gfortran), Intel Fortran (ifort / Intel oneAPI), NAG Fortran, компилатори от NVIDIA/PGI (nvfortran/pgfortran) и други като Flang. Много от тези компилатори поддържат модерни стандарти и разширения за висока производителност, както и OpenMP и MPI за паралелизъм.
Приложения
Fortran продължава да се използва широко в области, където са необходими бързи и надеждни числени изчисления: метеорология и климатология, числени методи и CFD (компютърна динамика на флуидите), симулации в аерокосмическата и енергетичната индустрия, статистически и финансови модели, научни библиотеки за линейна алгебра и оптимизация. Множество наследени (legacy) кодове и пакети за симулации са написани на Fortran и все още поддържат и развиват големи проекти.
Съвместимост и модернизация
Езикът е проектиран да осигури добра обратно съвместимост, което улеснява поддръжката и постепенното модернизиране на стар код. Стандартите добавят нови възможности без да нарушават масово съществуващите програми. Често срещана практика е смесено програмиране (Fortran + C/C++), използвайки ISO_C_BINDING за интерфейс и обмен на данни.
Заключение
Fortran остава важен инструмент в научните и инженерни изчисления заради своята производителност, богата историческа база кодове и развита екосистема от компилатори и библиотеки. Въпреки появата на нови езици, Fortran продължава да е предпочитан в приложения, където числената ефективност и надеждността са от първостепенно значение.
Значение и изписване на името
Името "Fortran" е съкращение от "Formula Translation" (превод на формули). Преди това езикът е бил известен като FORTRAN (а по-старите му варианти все още са). От Fortran 90 насам изписването с главна буква е изоставено. В публикуваните официални стандарти се използва "Fortran".
Стандарти
Двата стандарта по-долу са за текущи реализации на Fortran.
- ANSI X3.198-1992 (R1997). Заглавие: Език за програмиране "Fortran" Разширен. Неформално известен като Fortran 90. Този стандарт е публикуван от ANSI и никога не е станал международен стандарт (ISO).
- ISO/IEC 1539-1:1997. Заглавие: Информационни технологии - Езици за програмиране - Fortran - Част 1: Базов език. Неформално известен като Fortran 95. Този стандарт има още 2 части. Част 1 е официално приета от ANSI.
обискирам