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

Бодрый старичок для сложных расчётов

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

Фортран — один из старейших языков программирования, появившийся ещё в 1957 году. При этом в майском рейтинге TIOBE 2025 он на 11-м месте. Да-да, язык, которому больше 60 лет, не просто жив — он до сих пор решает задачи в суперкомпьютерах, моделирует климат и ядерные реакции, двигает вперёд науку и не собирается на покой. Разбираемся, почему Fortran всё ещё в строю и стоит ли учить его в 2025 году.

История

Фортран (от FORmula TRANslator, формульный транслятор) разработали в IBM в 1950-х годах, чтобы автоматизировать численные расчёты и не писать километры машинного кода вручную. Первая версия появилась в 1957 году, и это была настоящая революция.

В то время почти весь код писался на ассемблере. Чтобы умножить два числа, приходилось творить магию с регистрами и адресами памяти. А тут внезапно можно было просто написать A = B * C, и это работало.

Фортран стал первым в истории массово используемым языком высокого уровня. Он буквально научил компьютеры понимать формулы, что открыло новую эру — программирование стало доступно не только инженерам-электронщикам, но и математикам, физикам, экономистам.

Язык программирования Фортран
Программа на FORTRAN-77 с выдачей компилятора. Источник: Википедия

IBM продвигала Fortran как стандарт для научных расчётов, и он быстро стал основой практически всех крупных инженерных и исследовательских проектов: от аэродинамики до ядерной физики.

В 1960–1980-х годах Фортран был де-факто языком номер один в науке. Практически всё ПО на суперкомпьютерах писалось на нём, и если кто-то занимался чем-то, где нужно было считать сложные штуки, — без Фортрана было не обойтись.

Как развивался

Что удивительно, с развитием разных языков Фортран не просто выжил, а пережил десятки других языков, стал международным стандартом и до сих пор активно используется там, где нужны большие и точные вычисления. Он регулярно обновляется, и каждый апдейт — это настоящее развитие:

  • Fortran 66 — первый официальный стандарт. 
  • Fortran 77 — структурное программирование, нормальные комментарии — и жизнь программистов стала чуть легче.
  • Fortran 90 / 95 — появились модули, рекурсия, динамические массивы и более читаемый синтаксис.
  • Fortran 2003 / 2008 — добавили ООП, интерфейсы, параллельные вычисления.
  • Fortran 2018 — ещё больше фишек для высокопроизводительных вычислений.
  • И наконец, Fortran 2023 — последняя версия, опубликованная в ноябре 2023 года, куда добавили поддержку новых вычислительных моделей.

У языка живое сообщество, выходят новые компиляторы: Intel Fortran, GNU Fortran (gfortran), IBM XL Fortran и другие. А ещё вокруг языка выросла современная экосистема:

  • Появились обёртки на Python — например, f2py в составе NumPy позволяет вызывать Fortran-код прямо из питоновского скрипта.
  • Поддерживаются современные IDE и CI-инструменты, включая CMake, Visual Studio, VS Code и CLion.
  • Есть библиотеки и пакеты, адаптированные под нужды научных расчётов, с нормальной документацией и поддержкой.

Сегодня программисты часто пишут логически тяжёлые вычисления на Fortran, а интерфейс и интеграцию делают на Python. Получается быстрый, стабильный, поддерживаемый стек: классика и современность.

Разные серьёзные компании, например Airbus, используют связку Fortran + Python + C/C++ в моделировании аэродинамики, потому что это до сих пор лучшее сочетание скорости, надёжности и гибкости.

Язык программирования Фортран
Рейтинг TIOBE. Май 2025 года, Фортран на 11-м месте

Синтаксис

У Фортрана простой и строгий синтаксис, заточенный под вычислительные задачи. Что-то напоминает Pascal, что-то — Python, но с академическим уклоном. Любая программа начинается с ключевого слова program, дальше идёт тело, и всё заканчивается end program с указанием имени:

program hello
print *, "Hello, Fortran!"
end program hello

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

Переменные объявляются явно, и тип всегда указывается заранее — язык строго типизированный. Например:

real :: temperature ! Число с плавающей точкой
integer :: count ! Целое число
logical :: is_valid ! Булево значение: .true. или .false.
character(len=20) :: name ! Строка фиксированной длины

И никакой ерунды с undefined, null и NaN.

Цикл do в Fortran — это аналог for в других языках, но со своим синтаксисом:

do i = 1, 5
sum = sum + numbers(i)
end do

В Fortran тоже можно (и нужно) комментировать код, но способ зависит от версии языка. В современных версиях (Fortran 90 и выше) комментарии начинаются с ! и могут стоять где угодно в строке — хоть в начале, хоть в конце:

print *, "Hello, Code!"  ! Это комментарий справа от кода

! А это комментарий на всю строку

А вот в старом Fortran 77 всё было суровее: комментарии — это строки, которые начинаются с C, с или с * в первом символе строки и только в первой колонке. Без шуток:

C Эту строку компилятор просто игнорирует

* Такая же история

Ещё были «неофициальные» дебаг-комментарии d, D. И просто пустая строка тоже считалась комментарием — не потому, что была комментарием по смыслу, а потому, что игнорировалась компилятором. Тогда даже позиция символа в строке была важна: код начинался строго с 7-й позиции, первые 6 — для нумерации строк и спецсимволов. Так что форматирование было похлеще, чем в Python с его табуляцией. Но в современных версиях всё намного проще.

Для повторного использования логики есть подпрограммы (subroutine) и функции (function). Они похожи на то, что есть в других языках — просто объявляются по-другому и вызываются более старомодно. В Фортране функция принимает аргументы и возвращает результат, но без return: он присваивается напрямую через имя функции:

real function square_root(x)
  real :: x
  square_root = sqrt(x)
end function square_root

Здесь square_root — имя функции, и оно же — переменная, в которую внутри тела функции мы записываем результат.

Есть в Фортране ещё модули — они позволяют группировать процедуры и переменные, чтобы не плодить лишний код. В общем, архитектурно Fortran давно научился быть масштабируемым, а не просто «языком одного скрипта».

Всё это делает Fortran комфортным для тех, кто уже знает Python, C++, Java и даже JavaScript.

Примеры программ на Fortran

Теперь напишем программу целиком, с указанием типов, циклом и комментариями. Оцените, насколько легко читается такой код, — кажется, что мы пишем на чём-то современном и простом:

program sum_example
  implicit none
  integer :: i, sum
  integer, dimension(5) :: numbers
  ! Инициализация массива
  numbers = (/1, 2, 3, 4, 5/)
  sum = 0
  ! Считаем сумму элементов
  do i = 1, 5
    sum = sum + numbers(i)
  end do
  print *, "Сумма элементов массива: ", sum
end program sum_example
Язык программирования Фортран

А вот пример с subroutine — подпрограммой, которая ничего не возвращает, но меняет переданные ей значения:

program swap_example
  implicit none
  integer :: a, b
  a = 10
  b = 20
  ! До вызова подпрограммы
  print *, "До swap: a =", a, ", b =", b
  ! Вызов подпрограммы
  call swap(a, b)
  ! После вызова
  print *, "После swap: a =", a, ", b =", b
contains
  ! Подпрограмма меняет местами два числа
  subroutine swap(x, y)
    integer :: x, y, temp
    temp = x
    x = y
    y = temp
  end subroutine swap
end program swap_example
Язык программирования Фортран

Здесь swap — это подпрограмма, которая ничего не возвращает, но работает по ссылке: значения a и b меняются местами прямо в теле основной программы. Вызов делается через call.

Особенности

Компиляторы Фортрана десятилетиями затачивались под линейную алгебру, работу с матрицами и числами с плавающей запятой. На практике это означает: он производит вычисления быстрее, чем Python, а иногда даже быстрее, чем C++.

Например, если нужно перемножить две огромные матрицы, то код на Fortran будет коротким и суперэффективным:

real, dimension(1000,1000) :: A, B, C
C = matmul(A, B)

Fortran исторически работает на суперкомпьютерах. Он умеет использовать все ядра, все потоки, всю память — и компиляторы выжимают из железа максимум. Его до сих пор используют в проектах NASA, метеоцентрах, ядерной физике, моделировании климата и т. д. Та же LAPACK — библиотека линейной алгебры, на которой держится половина научных расчётов в мире, — написана на Fortran.

Почему не переписали всё это, допустим, на Python? Потому что Fortran работает быстрее. А ещё потому, что в научном коде накопились миллионы строк легаси, которые никто не хочет (и не может) разбирать заново. Поддержка старого кода — это отдельная профессия. Переписывать его дорого, рискованно и иногда просто бессмысленно: он решает задачу, решает быстро. А раз работает — не трогай.

Поэтому современный подход — не «снести всё и переписать», а аккуратно обернуть Fortran в Python и работать с тем, что уже доказало свою эффективность десятилетиями.

Fortran — один из немногих языков, у которого в стандарты вшита поддержка параллельных вычислений. Это такой способ разделить задачу на куски и выполнять их одновременно на разных ядрах или компьютерах. Например, когда есть тяжёлые расчёты (моделирование климата всей планеты или симуляция турбулентности воздуха вокруг самолёта), — то без параллелизма не обойтись. 

В Фортране есть встроенный инструмент Coarrays, который позволяет писать параллельный код без дополнительных библиотек и сложных настроек. Синтаксис почти не меняется, просто добавляем [*] рядом с переменной — и теперь на каждом потоке есть своя копия данных, которые потом можно синхронизировать, пересылать и собирать в итоговый результат.

Язык программирования Фортран
Так выглядит параллельный Фортран в действии: каждый горизонтальный ряд — отдельный процесс. Зелёные участки — активная работа, тёмные — ожидание или синхронизация

Зачем нужен

Коротко: чтобы считать быстро, точно и много.

Fortran стал первым языком, который дал инженерам, физикам и математикам возможность писать вычислительный код не на ассемблере, а на человекопонятном языке. Программистам не нужно было больше ковыряться в машинных командах — они могли просто описывать формулы и расчёты. Fortran задал стандарт для научного программирования:

  • точность при работе с числами с плавающей запятой;
  • высокая производительность;
  • предсказуемое поведение;
  • понятный синтаксис, близкий к математической записи.

Даже сегодня синтаксис, похожий на Fortran, используется в высокоточных инженерных решениях. В Airbus, например, система теплового моделирования THERMISOL описывает тепловые узлы в структуре, напоминающей Fortran, а затем компилируется в полноценный Fortran-код для суперточных расчётов.

Где используется сейчас

Фортран до сих пор движок науки и сложных расчётов, на нём симулируют ядерные реакции и погодные катаклизмы. Вот где его реально используют:

  • Прогнозирование погоды. Большая часть расчётов в глобальных моделях — GFS (США), ECMWF (Европа), ICON (Германия) — до сих пор на Fortran. Потому что прогноз за сутки вперёд — это миллионы уравнений, и ни один язык не делает это быстрее.
  • Астрофизика и ядерные симуляции. От симуляции взрыва сверхновой до поведения плазмы в термоядерных реакторах. Например, LLNL (Ливерморская лаборатория) и CERN — у них тонна научного кода всё ещё на Fortran.
  • Финансовые расчёты. Некоторые крупные банки до сих пор поддерживают старые системы расчёта рисков и валидации моделей, где вся математика была изначально написана на Fortran.
  • Климатические симуляции. Сценарии глобального потепления, таяния ледников, парниковых газов — всё это считается на супермашинах, где до сих пор крутятся десятки миллионов строк на Fortran. Например, модель CESM (Community Earth System Model) — на нём.
  • Университеты и исследовательские центры. Академическая наука обожает Fortran за его точность, лаконичность и стабильность. Многие курсы по численным методам до сих пор включают задания на нём — просто потому, что это работает.

Короче, если нужно посчитать, как поведёт себя вселенная через 10 секунд после Большого взрыва или куда полетит обломок спутника на орбите — это, скорее всего, сделают на Фортране.

Стоит ли изучать Fortran

Учить Fortran просто ради галочки не надо. Но если вы хотите работать в области, где сложные расчёты, моделирование, высокая производительность и суперкомпьютеры, — он может оказаться мощным инструментом в арсенале.

В России язык до сих пор используют в университетах и НИИ — в МГУ, МФТИ, МИФИ, в Академии наук, в Институте прикладной математики, в ядерных и гидродинамических симуляциях. Где-то это легаси-код, который просто никто не переписывает. А где-то вполне живой проект, где обновляют расчёты, подтягивают новые библиотеки и всё ещё пишут новые модули.

Вам слово

Приходите к нам в соцсети поделиться своим мнением о Фортране и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте — шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!

Обложка:

Алексей Сухов

Корректор:

Александр Зубов

Соцсети:

Кирилл Климентьев

Вёрстка:

Егор Степанов

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
А вы читали это?
easy