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

Фортран

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

История

Создание и ранние версии (1954—1966)

Язык был разработан в корпорации IBM группой под руководством Джона Бэкуса. Работа над проектом началась в 1954 году, а первый компилятор был выпущен в 1957 году для компьютера IBM 704. Целью проекта было создание инструмента, который позволил бы программистам записывать математические формулы в форме, близкой к общепринятой, и автоматически транслировать их в машинный код. До появления Фортрана программирование велось исключительно на ассемблере или машинных кодах, что было крайне трудоёмко и требовало высокой квалификации.

Первый компилятор сразу продемонстрировал впечатляющую эффективность: сгенерированный им код был лишь на 20 % медленнее эквивалентного кода, написанного вручную на ассемблере, при этом скорость разработки возрастала многократно. В 1958 году вышла версия Fortran II, в которую были добавлены подпрограммы (функции). Fortran III, созданный в том же году, не был выпущен как коммерческий продукт. В 1961 году появился Fortran IV, который стал первым по-настоящему стандартизированным диалектом, включавшим логические выражения, оператор COMMON для организации общей памяти и улучшенную работу с вводом-выводом.

Стандартизация и эпоха мейнфреймов (1966—1990)

К середине 1960-х годов существовало множество несовместимых диалектов Фортрана от разных производителей (IBM, CDC, Burroughs, Univac). Для обеспечения переносимости кода Американский национальный институт стандартов (ANSI) в 1966 году утвердил первый стандарт языка — Fortran 66 (ANSI X3.9-1966). Этот стандарт определил ядро языка, включавшее операторы DO, IF, GO TO, работу с массивами и подпрограммами.

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

Современный этап: Fortran 90/95 и далее (1990 — настоящее время)

Осознавая отставание от современных языков (Pascal, C), комитет ANSI и ISO приступили к радикальной модернизации. Результатом стал стандарт Fortran 90 (ISO/IEC 1539:1991). Он ввёл в язык принципиально новые возможности: свободный формат записи (отказ от строгой колоночной разметки), динамические массивы, модули (MODULE) для инкапсуляции данных и процедур, типы, определяемые пользователем (TYPE), перегрузку операторов, указатели, рекурсию, а также обширную встроенную библиотеку математических функций и функций для работы с массивами (векторизация).

Fortran 95 (1997) стал незначительным уточнением стандарта 90, в основном устранив некоторые устаревшие конструкции (например, оператор EQUIVALENCE и арифметический IF). Fortran 2003 (2004) ввёл объектно-ориентированное программирование (поддержку классов, наследования, полиморфизма), совместимость с языком C, улучшенную обработку исключений и поддержку стандарта IEEE 754 для вычислений с плавающей запятой. Fortran 2008 (2010) добавил параллельные вычисления на основе модели Coarray Fortran (CAF), которая позволяет эффективно программировать для систем с распределённой памятью. Fortran 2018 (2018) расширил возможности параллелизма и ввёл поддержку стандарта ISO C для взаимодействия с C-библиотеками.

Ключевые особенности и синтаксис

Фортран традиционно отличался строгим синтаксисом, ориентированным на математические формулы. В современных версиях (Fortran 90+) используется свободный формат, но исторически код писался в фиксированном формате, где каждая строка имела строгую структуру: позиции 1-5 — метки (номера строк), позиция 6 — признак продолжения строки, позиции 7-72 — собственно код, позиции 73-80 — идентификаторы (часто игнорировались компилятором).

Основные элементы синтаксиса включают:

  • Имена переменных: от 1 до 31 символа (в Fortran 77 — до 6), начинаются с буквы.
  • Типы данных: INTEGER, REAL, DOUBLE PRECISION (двойная точность), COMPLEX, LOGICAL, CHARACTER, а также производные типы (в Fortran 90+).
  • Неявное объявление типов: исторически, переменные, начинающиеся с букв I, J, K, L, M, N, считались целыми, все остальные — вещественными. Эта особенность (неявная типизация) была объявлена устаревшей в Fortran 90, и настоятельно рекомендуется использовать оператор IMPLICIT NONE для её отключения.
  • Операторы: арифметические (+, -, *, /, ** — возведение в степень), логические (.AND., .OR., .NOT., .EQV.), сравнения (.LT., .GT., .EQ., .LE., .GE., .NE.).
  • Управляющие конструкции: IF-THEN-ELSE-END IF, DO (цикл), DO WHILE, SELECT CASE (аналог switch в C).
  • Массивы: одна из сильнейших сторон языка. Поддерживаются многомерные массивы (до 7 измерений в Fortran 77, до 15 — в Fortran 90+), динамические массивы (ALLOCATABLE), операции над целыми массивами (например, A = B + C * 2). Индексация по умолчанию начинается с 1.
  • Подпрограммы и функции: процедуры, определяемые с помощью SUBROUTINE и FUNCTION. Аргументы передаются по ссылке (по умолчанию).
  • Модули: (MODULE) — основной механизм организации кода в современных версиях. Модули содержат определения типов, переменных и процедур, обеспечивая инкапсуляцию и контроль доступа (PUBLIC, PRIVATE).

Области применения

Фортран остаётся доминирующим языком в следующих областях:

  • Численное моделирование и научные расчёты: практически все крупные пакеты для вычислительной гидродинамики (CFD), такие как FLUENT, OpenFOAM, и коды для моделирования климата (например, NCAR Community Climate Model) написаны на Фортране или имеют фортрановские ядра.
  • Вычислительная физика: квантово-химические пакеты (Gaussian, NWChem), расчёты методом Монте-Карло, молекулярная динамика (LAMMPS, GROMACS).
  • Инженерные расчёты: конечно-элементный анализ (NASTRAN, ANSYS), расчёт прочности конструкций, аэродинамика.
  • Метеорология и океанология: оперативные прогностические модели (например, модели ECMWF, GFS) написаны на Фортране из-за требований к максимальной производительности на суперкомпьютерах.
  • Финансовое моделирование: в некоторых инвестиционных банках и хедж-фондах используются фортрановские коды для высокочастотной торговли и расчёта рисков, где критична скорость выполнения.

Критика и недостатки

Несмотря на свою производительность, Фортран подвергается критике по нескольким причинам:

  • Устаревший синтаксис: исторический код часто труден для чтения и сопровождения из-за обилия операторов GO TO, меток и неявной типизации.
  • Слабая поддержка строк: до Fortran 2003 работа со строками была крайне неудобной по сравнению с C или Python.
  • Отсутствие стандартных библиотек: в отличие от C++ (STL) или Python, в Фортране долгое время не было стандартных коллекций (словари, списки) и сложных структур данных.
  • Сложность написания графического интерфейса: Фортран не имеет встроенных средств для создания GUI, что делает его непригодным для разработки пользовательских приложений.
  • Редкость специалистов: количество программистов, владеющих современным Фортраном, невелико, что затрудняет поддержку старых кодов и разработку новых проектов.

Влияние на другие языки

Фортран оказал огромное влияние на развитие языков программирования. Концепция высокоуровневого компилируемого языка, оператор DO (цикл for), работа с массивами, подпрограммы — все эти идеи были впервые реализованы в Фортране. Язык ALGOL, а затем и Pascal, C, и Ada заимствовали многие синтаксические конструкции и принципы организации. Современные языки для научных вычислений, такие как Python (с библиотеками NumPy и SciPy) и Julia, во многом наследуют идеи Фортрана о векторных операциях и эффективных численных алгоритмах.

Источники

  1. Backus, J. (1978). «The History of Fortran I, II, and III». Annals of the History of Computing, 1(1), 21-37.
  2. ANSI X3.9-1966. American National Standard Fortran.
  3. ANSI X3.9-1978. American National Standard Programming Language FORTRAN.
  4. ISO/IEC 1539:1991. Information technology — Programming languages — Fortran.
  5. Metcalf, M., Reid, J., & Cohen, M. (2018). Modern Fortran Explained. Oxford University Press.
  6. Chapman, S. J. (2018). Fortran for Scientists and Engineers. McGraw-Hill Education.

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

На главную BFOmetr →