Открыть сервис

Язык программирования Фортран

Фортран (Fortran, от англ. Formula Translation — перевод формул) — это компилируемый язык программирования, ориентированный на численные, научные и инженерные расчёты. Разработанный в 1950-х годах, Фортран является одним из старейших языков программирования высокого уровня, сохранивших актуальность до настоящего времени. Отличается высокой производительностью при работе с массивами, встроенной поддержкой операций с плавающей запятой и обширными библиотеками для линейной алгебры, математического моделирования и параллельных вычислений.

История

Создание и ранние версии

Фортран был создан в 1954–1957 годах группой инженеров компании IBM под руководством Джона Бэкуса. Первый компилятор для IBM 704 появился в 1957 году. Основной целью было предоставить учёным и инженерам инструмент для записи алгоритмов в форме, близкой к математической нотации, без необходимости программировать на машинном коде или ассемблере. Первая версия (Фортран I) включала операторы IF, DO, GO TO, ввод-вывод и арифметику. Уже в 1958 году вышла версия Фортран II, добавившая подпрограммы и функции.

Стандартизация

В 1966 году Американский национальный институт стандартов (ANSI) принял первый стандарт языка — ANSI X3.9-1966 (известный как Фортран 66). Он зафиксировал синтаксис и семантику, включая операторы COMMON, DIMENSION, EQUIVALENCE, а также ввёл концепцию блоков данных.

Следующий стандарт, Фортран 77 (ANSI X3.9-1978), внёс существенные улучшения: блочный оператор IF-THEN-ELSE, строковые типы данных, открытие файлов через OPEN и обработку ошибок. Он стал основой для большинства промышленных программ 1980-х годов.

Современные стандарты

В 1991 году вышел стандарт Фортран 90, который радикально переработал язык: ввёл свободный формат записи (вместо фиксированного с колонками), динамические массивы, модули (MODULE), перегрузку операторов, указатели и рекурсию. Фортран 95 (1997) исправил ряд недостатков и добавил элементарные функции для работы с массивами.

Фортран 2003 (ISO/IEC 1539-1:2004) привнёс объектно-ориентированное программирование (классы, наследование, полиморфизм), совместимость с языком Си, улучшенную обработку исключений. Фортран 2008 (ISO/IEC 1539-1:2010) добавил параллельные вычисления через блоки DO CONCURRENT и кoаррайвы (coarrays), а также подпрограммы для работы с битами. Последняя крупная ревизия — Фортран 2018 (ISO/IEC 1539-1:2018) — включает дальнейшее развитие параллелизма, улучшенную совместимость с Си и новые возможности для высокопроизводительных вычислений.

Классификация и диалекты

Фортран традиционно делится на два основных стиля написания кода:

  • Фортран 77 (устаревший) — фиксированный формат (строки до 72 символов, колонки для меток и комментариев), отсутствие рекурсии, ограниченные возможности работы с памятью. Многие старые научные пакеты до сих пор написаны на нём.
  • Современный Фортран (начиная с 90) — свободный формат, модульная структура, динамические массивы, поддержка указателей, объектно-ориентированные возможности.

Известные диалекты:

  • IBM FORTRAN — исторические версии для мейнфреймов IBM.
  • VAX FORTRAN — диалект для компьютеров DEC VAX, повлиявший на стандарт 77.
  • HPF (High Performance Fortran) — расширение для параллельных вычислений на суперкомпьютерах (середина 1990-х), ныне частично вытеснен стандартными средствами.

Устройство и характеристики

Типы данных

Фортран поддерживает встроенные типы:

  • Целые (INTEGER) — знаковые и беззнаковые (с Фортран 2008).
  • Вещественные (REAL) — одинарной и двойной точности (соответствуют float и double в Си).
  • Комплексные (COMPLEX) — для работы с комплексными числами.
  • Логические (LOGICAL) — значения .TRUE. и .FALSE..
  • Символьные (CHARACTER) — строки фиксированной длины (до Фортран 2003) и переменной длины (с Фортран 2003).
  • Производные типы (TYPE) — аналог структур в Си, позволяют объединять разные типы данных в один объект.

Массивы

Массивы — ключевая особенность Фортрана. Они могут быть статическими (размер задаётся на этапе компиляции) и динамическими (размер определяется во время выполнения). Поддерживаются многомерные массивы (до 15 измерений), срезы массивов (например, A(1:10:2)), операции над целыми массивами (поэлементное сложение, умножение) и встроенные функции (транспонирование, умножение матриц, свёртка). Это делает Фортран особенно эффективным для задач линейной алгебры.

Процедуры

Программа на Фортране состоит из основной программы (PROGRAM) и подпрограмм (SUBROUTINE) и функций (FUNCTION). Вызов процедур осуществляется по ссылке (по умолчанию), хотя возможна передача по значению через VALUE. Рекурсивные процедуры поддерживаются с Фортран 90. Модули (MODULE) позволяют группировать процедуры, переменные и типы, обеспечивая инкапсуляцию и повторное использование кода.

Ввод-вывод

Фортран имеет мощную систему форматированного ввода-вывода, основанную на операторах READ и WRITE с дескрипторами формата (например, FORMAT(I5, F10.2)). Это позволяет точно контролировать представление чисел, строк и массивов в текстовых файлах. Поддерживается работа с бинарными файлами, прямым доступом (по номерам записей) и последовательным доступом.

Параллельные вычисления

Стандарт Фортран 2008 ввёл кoаррайвы (coarrays) — модель параллельного программирования с разделением памяти, где каждый процесс (image) имеет свою копию данных, а обмен происходит через явные обращения к удалённым образам. Фортран 2018 расширил эту модель, добавив коллективные операции (сборка, раздача, редукция). Кроме того, Фортран хорошо интегрируется с библиотеками MPI (Message Passing Interface) и OpenMP для параллельных вычислений на кластерах и многоядерных системах.

Применение и значение

Научные и инженерные расчёты

Фортран остаётся основным языком для высокопроизводительных вычислений (HPC) в таких областях, как:

  • Метеорология и климатология — модели общей циркуляции атмосферы и океана (например, WRF, CESM).
  • Аэродинамика и гидродинамикавычислительная гидродинамика (CFD-пакеты, например, OpenFOAM частично написан на Фортране, а многие старые решатели — полностью).
  • Ядерная физика и физика элементарных частиц — моделирование реакторов, расчёты сечений взаимодействия (например, GEANT4 использует Фортран для низкоуровневых численных ядер).
  • Сейсмология и геофизика — обработка сейсмических данных, моделирование распространения волн.
  • Финансовая математика — моделирование рисков, ценообразование опционов (в крупных банках и страховых компаниях).

Библиотеки и наследие

Огромное количество проверенных и оптимизированных математических библиотек написано на Фортране: LAPACK (линейная алгебра), BLAS (базовые операции с векторами и матрицами), FFTPACK (быстрое преобразование Фурье), MINPACK (решение нелинейных уравнений), ODEPACK (решение обыкновенных дифференциальных уравнений). Эти библиотеки используются программами на других языках (Си, C++, Python через NumPy/SciPy) через интерфейсы внешних вызовов.

Образование

Фортран редко используется в начальном обучении программированию из-за своего синтаксиса, ориентированного на вычисления, и отсутствия современных IDE. Однако он остаётся стандартом в курсах вычислительной математики, численных методов и высокопроизводительных вычислений в технических и физико-математических вузах.

Критика

Фортран часто критикуют за:

  • Устаревший синтаксис — фиксированный формат, обилие операторов GO TO в старых программах, неинтуитивные правила области видимости переменных (по умолчанию — глобальные).
  • Сложность поддержки — большие объёмы кода, написанного на Фортране 77, не имеют модульной структуры, что затрудняет их модернизацию и отладку.
  • Ограниченная поддержка современных парадигм — хотя объектно-ориентированные возможности появились в Фортран 2003, они менее развиты, чем в C++ или Java.
  • Недостаток инструментов — меньшее количество современных IDE, рефакторинговых инструментов и систем контроля версий, оптимизированных под Фортран, по сравнению с более популярными языками.
  • Проблемы с памятью — до Фортран 90 не было динамического выделения памяти, что приводило к жёстким ограничениям на размеры массивов.

Тем не менее, благодаря высокой производительности компиляторов (особенно Intel Fortran, GNU Fortran, NAG Fortran), огромному наследию проверенного кода и активному сообществу, Фортран продолжает использоваться в критически важных вычислительных системах.

Интересные факты

  • Первый компилятор Фортрана содержал около 25 000 строк машинного кода и был написан за 18 человеко-лет.
  • Название «Фортран» происходит от слов «Formula Translation» (перевод формул), что отражает основную цель языка.
  • В 1960-е годы Фортран был стандартом де-факто для научных вычислений, и многие университеты требовали знания Фортрана для получения диплома.
  • Компилятор GNU Fortran (gfortran) является частью GCC и поддерживает стандарты от Фортран 77 до Фортран 2018.
  • В 2023 году Фортран всё ещё входит в топ-20 языков по индексу TIOBE, опережая многие более молодые языки.

Источники

  • ISO/IEC 1539-1:2018 — стандарт языка Фортран.
  • Меткалф М., Рид Дж., Коэн М. «Фортран 95/2003 для учёных и инженеров». — М.: ДМК Пресс, 2006.
  • Chapman S. J. «Fortran for Scientists and Engineers». — McGraw-Hill, 2017.
  • Документация GNU Fortran (gfortran).
  • Документация Intel Fortran Compiler.
  • TIOBE Index — рейтинг популярности языков программирования.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →