FORTRAN
FORTRAN (также Фортран) — это один из первых языков программирования высокого уровня, созданный в 1950-х годах корпорацией IBM. Название является акронимом от «Formula Translation» (перевод формул). FORTRAN был разработан для научных, инженерных и математических вычислений и стал стандартом де-факто в этих областях на десятилетия. Язык известен своей высокой производительностью при работе с массивами и числами с плавающей запятой, а также обширными библиотеками для численного анализа.
История
Создание и ранние версии
Разработка FORTRAN началась в 1953 году под руководством Джона Бэкуса в IBM. Целью было создание компилятора для машины IBM 704, который бы позволил программистам писать код на языке, близком к математической нотации, вместо машинного кода или ассемблера. Первый компилятор FORTRAN был выпущен в 1957 году. Он произвел революцию, так как сгенерированный машинный код был лишь на 20% медленнее написанного вручную, что сделало высокоуровневое программирование практичным.
Первая версия, известная как FORTRAN I, включала такие конструкции, как оператор IF для условных переходов, циклы DO и подпрограммы. В 1958 году вышла FORTRAN II, которая добавила независимую компиляцию подпрограмм. FORTRAN III (1960) был экспериментальной версией, не получившей широкого распространения.
Стандартизация и FORTRAN IV
FORTRAN IV (1961) стал следующей значимой версией, устранившей многие недостатки предшественников. В 1966 году Американский национальный институт стандартов (ANSI) опубликовал первый стандарт языка — ANSI X3.9-1966, который закрепил две версии: FORTRAN (основной) и Basic FORTRAN (упрощенный). Эта версия стала широко используемой на мэйнфреймах и миникомпьютерах.
FORTRAN 77
В 1978 году был принят стандарт FORTRAN 77 (ANSI X3.9-1978), который стал одним из самых долгоживущих и популярных. Он добавил:
- Структурированные конструкции: блоки
IF-ELSE-END IF. - Строковый тип данных
CHARACTER. - Оператор
IMPLICIT NONEдля обязательного объявления типов. - Улучшенную работу с вводом-выводом (форматы
FORMAT).
Современные версии: Fortran 90/95 и далее
Стандарт Fortran 90 (ISO/IEC 1539:1991) стал кардинальным обновлением. Он ввел:
- Свободный формат исходного кода (вместо фиксированного позиционного).
- Массивные операции (работа с целыми массивами без циклов).
- Модули (
MODULE) для инкапсуляции данных и процедур. - Производные типы данных (аналог структур в C).
- Динамическое распределение памяти (
ALLOCATABLE). - Управляющие конструкции
DO WHILE,SELECT CASE.
Fortran 95 (1996) был небольшим обновлением, добавившим конструкцию FORALL и чистые процедуры. Дальнейшие стандарты (Fortran 2003, 2008, 2018) добавили объектно-ориентированное программирование, совместимость с C, параллельные вычисления (Coarrays) и другие современные возможности. Современный язык официально называется Fortran (с прописной буквы), хотя исторически использовалось написание FORTRAN.
Характеристики и особенности
Синтаксис и структура
Исторически FORTRAN использовал фиксированный формат, где столбцы 1-5 отводились под метки, столбец 6 — под символ продолжения, а столбцы 7-72 — под код. Современный Fortran поддерживает свободный формат, аналогичный другим языкам.
Ключевой особенностью является мощная поддержка операций с массивами. Язык позволяет выполнять поэлементные операции, срезы и редукции (например, SUM, MATMUL) непосредственно, без явных циклов, что повышает производительность и читаемость.
Типы данных
Fortran имеет богатый набор встроенных типов:
INTEGER(целые числа различной разрядности).REAL(числа с плавающей запятой одинарной и двойной точности).COMPLEX(комплексные числа).LOGICAL(логический).CHARACTER(символьные строки).
Стандарты Fortran 90+ позволяют определять производные типы и перегружать операторы.
Производительность
Fortran традиционно считается одним из самых быстрых языков для численных расчетов. Это объясняется:
- Отсутствием необходимости в сборке мусора.
- Строгой типизацией, позволяющей компилятору генерировать эффективный код.
- Отсутствием указателей в классическом смысле (кроме указателей Fortran 90+), что упрощает анализ зависимостей данных и векторизацию.
- Наличием встроенных конструкций для работы с массивами, которые легко оптимизируются под SIMD-инструкции процессоров.
Применение
Научные вычисления
Fortran остается доминирующим языком в областях, требующих интенсивных вычислений с плавающей запятой:
- Численное прогнозирование погоды (NWP): Модели, такие как WRF (Weather Research and Forecasting) и ECMWF IFS, написаны в основном на Fortran.
- Вычислительная гидродинамика (CFD): Пакеты, такие как ANSYS Fluent, OpenFOAM (частично), и многие академические коды.
- Вычислительная химия и физика: Пакеты Gaussian, VASP, Quantum ESPRESSO.
- Моделирование климата: Модели общей циркуляции (например, CESM, HadGEM).
Инженерные расчеты
Многие коммерческие и исследовательские инженерные пакеты, особенно в аэрокосмической и автомобильной промышленности, используют Fortran для ядер своих вычислительных модулей. Примеры включают NASTRAN (анализ методом конечных элементов) и различные библиотеки для линейной алгебры (BLAS, LAPACK).
Финансовое моделирование
Несмотря на распространение C++ и Python, Fortran все еще используется в некоторых областях количественного финансирования для моделирования рисков и ценообразования деривативов, где требуется максимальная скорость.
Критика и недостатки
Устаревшие конструкции и синтаксис
Критики отмечают, что исторический синтаксис Fortran (особенно в версиях до 90) был громоздким и способствовал написанию «спагетти-кода» из-за обилия операторов GO TO. Хотя современные стандарты поддерживают структурированное программирование, огромное количество существующего кода написано на старых версиях.
Отсутствие современных парадигм
До Fortran 2003 язык не поддерживал объектно-ориентированное программирование. Даже после добавления этой возможности, реализация считается менее элегантной по сравнению с C++ или Java. Кроме того, в языке отсутствует встроенная поддержка регулярных выражений, многопоточности (до Coarrays) и развитая стандартная библиотека для работы с данными.
Проблемы с совместимостью
Различия между версиями языка (особенно между FORTRAN 77 и Fortran 90) могут создавать проблемы при переносе кода. Компиляторы от разных производителей могут по-разному интерпретировать некоторые конструкции, особенно в областях, не охваченных стандартом.
Значение и наследие
FORTRAN стал первым широко распространенным языком программирования высокого уровня. Он доказал, что компиляторы могут генерировать эффективный код, и заложил основы для многих современных языков. Идеи, такие как независимая компиляция, форматы ввода-вывода и мощные числовые типы, были новаторскими для своего времени.
Несмотря на возраст, Fortran остается критически важным инструментом в научном сообществе. Огромные библиотеки проверенного кода, написанные за десятилетия, и высокая производительность компиляторов делают его незаменимым для задач, где скорость вычислений является приоритетом. Многие современные суперкомпьютеры и вычислительные кластеры продолжают использовать Fortran для своих основных приложений.
Интересные факты
- Первый компилятор FORTRAN содержал около 25 000 строк машинного кода и был написан командой из 13 человек.
- В 1984 году FORTRAN был признан языком, на котором написано более 80% всех научных программ.
- Стандарт FORTRAN 77 до сих пор используется в некоторых legacy-системах, особенно в оборонной и аэрокосмической промышленности.
- В языке Fortran существует понятие «общих блоков» (COMMON blocks), которые позволяют разным подпрограммам обращаться к одним и тем же данным в памяти, что было предшественником глобальных переменных.
Источники
- Backus, J. W., et al. «The FORTRAN automatic coding system.» Proceedings of the Western Joint Computer Conference. 1957.
- ANSI X3.9-1966. «FORTRAN.» American National Standards Institute. 1966.
- ANSI X3.9-1978. «Programming Language FORTRAN.» American National Standards Institute. 1978.
- ISO/IEC 1539-1:1991. «Information technology — Programming languages — Fortran.» International Organization for Standardization. 1991.
- Metcalf, M., Reid, J., Cohen, M. «Modern Fortran Explained.» Oxford University Press, 2018.
- Chapman, S. J. «Fortran 95/2003 for Scientists and Engineers.» McGraw-Hill, 2007.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →