ANSI X3.37
ANSI X3.37 — это стандарт Американского национального института стандартов (ANSI), определяющий язык программирования Фортран (Fortran). Конкретно номер X3.37 закреплён за несколькими последовательными версиями языка, начиная с Fortran 77 (официально утверждён в 1978 году) и заканчивая Fortran 90 (утверждён в 1992 году). Стандарт регламентирует синтаксис, семантику и набор встроенных возможностей языка, обеспечивая переносимость программ между различными вычислительными системами.
История
Предпосылки и ранние стандарты
Фортран, созданный в 1950-х годах компанией IBM, быстро стал доминирующим языком для научных и инженерных расчётов. К концу 1960-х годов возникла острая необходимость в унификации многочисленных диалектов (IBM FORTRAN IV, FORTRAN 66 и др.). Первый стандарт ANSI был принят в 1966 году под обозначением ANSI X3.9-1966 (известный как FORTRAN 66). Он зафиксировал базовые конструкции: арифметические операторы, циклы DO, операторы ввода-вывода и подпрограммы.
Разработка ANSI X3.37
Работа над следующей версией стандарта началась в конце 1960-х годов под эгидой комитета ANSI X3J3. Целью было расширение возможностей языка при сохранении обратной совместимости. В 1978 году был опубликован стандарт ANSI X3.9-1978, более известный как Fortran 77. Он получил обозначение X3.37 в классификации ANSI, хотя в документации часто упоминается как X3.9-1978. Основные нововведения включали:
- Блочную конструкцию IF-THEN-ELSE для структурного программирования.
- Символьный тип данных CHARACTER.
- Оператор OPEN, CLOSE и INQUIRE для файлового ввода-вывода.
- Улучшенную обработку массивов и подпрограмм.
Fortran 90 и дальнейшее развитие
В 1992 году комитет X3J3 завершил работу над радикально обновлённой версией, которая была утверждена как ANSI X3.198-1992, но в рамках той же серии X3.37 часто упоминается как Fortran 90. Этот стандарт ввёл:
- Модули и интерфейсы.
- Динамическое распределение памяти (операторы ALLOCATE и DEALLOCATE).
- Операции с массивами (векторизация).
- Типы данных, определяемые пользователем (структуры).
- Рекурсивные подпрограммы и функции.
- Управление точностью через KIND-параметры.
Последующие версии (Fortran 95, 2003, 2008, 2018) разрабатывались под эгидой ISO/IEC, а не ANSI, хотя ANSI принимал их как национальные стандарты. Номер X3.37 был окончательно заменён на ISO/IEC 1539.
Структура и содержание стандарта
Основные разделы
Документ ANSI X3.37 (на примере Fortran 77) состоял из следующих глав:
- Общие положения — область применения, терминология, требования к совместимости.
- Лексические элементы — алфавит, пробелы, комментарии, идентификаторы (до 6 символов в Fortran 77, до 31 в Fortran 90).
- Константы и переменные — типы данных (INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL, CHARACTER).
- Выражения и присваивания — арифметические, логические и символьные операции.
- Управляющие конструкции — GO TO, IF, DO, CONTINUE, STOP, PAUSE.
- Ввод-вывод — форматный и бесформатный ввод-вывод, файлы, устройства.
- Подпрограммы и функции — SUBROUTINE, FUNCTION, передача параметров.
- Блочные структуры — COMMON, EQUIVALENCE, DATA, BLOCK DATA.
Синтаксические особенности
- Формат строки: в Fortran 77 строки делились на поля (столбцы 1-5 для меток, столбец 6 для признака продолжения, столбцы 7-72 для кода). Fortran 90 ввёл свободный формат (free source form).
- Комментарии: в Fortran 77 — буква C в первом столбце; в Fortran 90 — символ ! в любом месте строки.
- Имена переменных: в Fortran 77 — до 6 символов; в Fortran 90 — до 31.
Типы данных
| Тип | Описание | Пример в Fortran 77 | Пример в Fortran 90 |
|---|---|---|---|
| INTEGER | Целое число | INTEGER A | INTEGER(4) :: A |
| REAL | Вещественное число | REAL X | REAL(8) :: X |
| DOUBLE PRECISION | Двойная точность | DOUBLE PRECISION Y | REAL(16) :: Y |
| COMPLEX | Комплексное число | COMPLEX C | COMPLEX(8) :: C |
| LOGICAL | Логическое значение | LOGICAL L | LOGICAL :: L |
| CHARACTER | Символьная строка | CHARACTER*10 NAME | CHARACTER(LEN=10) :: NAME |
Применение
Научные и инженерные расчёты
ANSI X3.37 (Fortran 77/90) стал основой для тысяч программных пакетов в физике, химии, аэродинамике, метеорологии и других областях. Примеры:
- BLAS (Basic Linear Algebra Subprograms) — библиотека для линейной алгебры.
- LAPACK — расширенная библиотека для решения систем линейных уравнений и задач на собственные значения.
- NAG Library — коммерческая библиотека численных методов.
Образование и обучение
До середины 1990-х годов Fortran 77 был стандартным языком для обучения программированию в технических вузах СССР и России. Многие учебники по численным методам содержали примеры на Фортране.
Наследие и современность
Несмотря на появление более современных языков (C++, Python, Julia), Fortran 77/90 продолжает использоваться в высокопроизводительных вычислениях (HPC). Причина — огромный объём существующего кода, оптимизированного под старые архитектуры, а также высокая эффективность компиляторов для Фортрана (например, Intel Fortran Compiler, GNU Fortran).
Критика и ограничения
Недостатки Fortran 77
- Отсутствие динамической памяти.
- Ограниченная длина имён (6 символов).
- Слабая поддержка структурного программирования (отсутствие циклов WHILE, CASE).
- Зависимость от формата строк (фиксированная длина 72 символа).
- Проблемы с модульностью и инкапсуляцией.
Достоинства Fortran 90
- Введение модулей и интерфейсов.
- Динамическое управление памятью.
- Операции над массивами (векторизация).
- Рекурсия.
- Улучшенная совместимость с C.
Критика со стороны сообщества
- Сложность перехода с Fortran 77 на Fortran 90 для крупных проектов.
- Неполная обратная совместимость (некоторые конструкции Fortran 77 были объявлены устаревшими).
- Относительная медлительность внедрения стандарта в промышленности.
Интересные факты
- Стандарт ANSI X3.37-1978 (Fortran 77) был одним из первых, официально одобренных Международной организацией по стандартизации (ISO) как ISO 1539-1980.
- В СССР и России Фортран активно использовался в Академии наук и оборонной промышленности. Например, на Фортране были написаны программы для расчёта траекторий космических аппаратов и моделирования ядерных реакций.
- В 1990-х годах существовал проект f2c (Fortran to C), позволяющий транслировать код Fortran 77 в C, что облегчало интеграцию с Unix-системами.
- Номер X3.37 в классификации ANSI обозначает именно язык Фортран; другие версии (например, Fortran 95) получили номера X3.159 и далее.
Источники
- ANSI X3.9-1978: American National Standard for Programming Language FORTRAN.
- ANSI X3.198-1992: American National Standard for Programming Language Fortran 90.
- ISO/IEC 1539-1:1991: Information technology — Programming languages — Fortran.
- Меткалф, М., Рид, Дж., Коэн, М. «Фортран 90/95: Руководство пользователя». — М.: Мир, 1998.
- Официальная документация комитета ANSI X3J3 (архивные материалы).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →