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

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) состоял из следующих глав:

  1. Общие положения — область применения, терминология, требования к совместимости.
  2. Лексические элементы — алфавит, пробелы, комментарии, идентификаторы (до 6 символов в Fortran 77, до 31 в Fortran 90).
  3. Константы и переменные — типы данных (INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL, CHARACTER).
  4. Выражения и присваивания — арифметические, логические и символьные операции.
  5. Управляющие конструкции — GO TO, IF, DO, CONTINUE, STOP, PAUSE.
  6. Ввод-вывод — форматный и бесформатный ввод-вывод, файлы, устройства.
  7. Подпрограммы и функции — SUBROUTINE, FUNCTION, передача параметров.
  8. Блочные структуры — 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 AINTEGER(4) :: A
REALВещественное числоREAL XREAL(8) :: X
DOUBLE PRECISIONДвойная точностьDOUBLE PRECISION YREAL(16) :: Y
COMPLEXКомплексное числоCOMPLEX CCOMPLEX(8) :: C
LOGICALЛогическое значениеLOGICAL LLOGICAL :: L
CHARACTERСимвольная строкаCHARACTER*10 NAMECHARACTER(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 →