Фортран
Фортран (англ. 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, во многом наследуют идеи Фортрана о векторных операциях и эффективных численных алгоритмах.
Источники
- Backus, J. (1978). «The History of Fortran I, II, and III». Annals of the History of Computing, 1(1), 21-37.
- ANSI X3.9-1966. American National Standard Fortran.
- ANSI X3.9-1978. American National Standard Programming Language FORTRAN.
- ISO/IEC 1539:1991. Information technology — Programming languages — Fortran.
- Metcalf, M., Reid, J., & Cohen, M. (2018). Modern Fortran Explained. Oxford University Press.
- Chapman, S. J. (2018). Fortran for Scientists and Engineers. McGraw-Hill Education.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →