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

ANSI X3.53-1976

ANSI X3.53-1976 — это американский национальный стандарт, утверждённый Американским национальным институтом стандартов (ANSI) в 1976 году, который определял язык программирования PL/I. Стандарт зафиксировал синтаксис, семантику и требования к реализации языка, предназначенного для решения широкого круга задач в научной, инженерной и коммерческой областях.

История

Предпосылки создания

Язык PL/I был разработан в середине 1960-х годов корпорацией IBM в рамках проекта «IBM System/360». Целью было создание универсального языка, объединяющего возможности научных языков (например, FORTRAN) и коммерческих (например, COBOL). Первая реализация под названием «PL/I (F)» появилась в 1966 году. К началу 1970-х годов язык получил распространение в академической среде и в крупных корпоративных системах, однако отсутствие единого стандарта приводило к несовместимости реализаций от разных производителей.

Разработка стандарта

В 1971 году комитет X3 (ныне INCITS) при ANSI начал работу по стандартизации PL/I. В состав комитета вошли представители IBM, Burroughs, Honeywell, Control Data Corporation, а также университетов и государственных организаций. Проект стандарта был опубликован в 1974 году, а после общественного обсуждения и внесения поправок окончательная версия была утверждена 1 июля 1976 года как ANSI X3.53-1976.

Последующие версии

Стандарт 1976 года стал основой для последующих уточнений. В 1981 году вышла версия ANSI X3.53-1981, которая включала исправления ошибок и дополнительные уточнения по обработке строк и массивов. В 1989 году стандарт был пересмотрен и опубликован как ANSI X3.53-1989, который оставался действующим до середины 1990-х годов, когда интерес к PL/I начал снижаться.

Содержание стандарта

Синтаксис и структура

Стандарт ANSI X3.53-1976 определял синтаксис языка на основе формальной грамматики, описанной в форме Бэкуса — Наура (БНФ). Ключевые элементы включали:

  • Идентификаторы — до 31 символа, начинающиеся с буквы.
  • Комментарии — обрамлялись символами / и /.
  • Операторы — арифметические, логические, строковые и побитовые.
  • Управляющие конструкцииIF-THEN-ELSE, DO-END, SELECT-WHEN-OTHERWISE, GOTO.
  • Процедуры — определялись ключевым словом PROCEDURE с возможностью рекурсии.

Типы данных

Стандарт вводил следующие типы данных:

  • Числовые: FIXED BINARY (целые), FLOAT BINARY (с плавающей точкой), FIXED DECIMAL (десятичные с фиксированной точкой), FLOAT DECIMAL (десятичные с плавающей точкой).
  • Строковые: CHARACTER (символьные строки), BIT (битовые строки).
  • Структурные: STRUCTURE (записи с полями), ARRAY (массивы до 15 измерений).
  • Специальные: FILE (файловые переменные), ENTRY (ссылки на процедуры), POINTER (указатели).

Ввод-вывод

Стандарт описывал два режима работы с файлами:

  • Потоковый ввод-вывод — последовательное чтение и запись данных с использованием операторов GET FILE и PUT FILE.
  • Записный ввод-выводпрямой доступ к записям фиксированной длины через операторы READ FILE и WRITE FILE.

Обработка ошибок

В стандарт были включены механизмы обработки исключительных ситуаций:

  • ON-единицы — блоки кода, выполняемые при возникновении определённых условий (например, ON ERROR, ON ENDFILE).
  • Сигналы — оператор SIGNAL для генерации пользовательских ошибок.

Реализации и совместимость

Основные реализации

Стандарт ANSI X3.53-1976 стал эталоном для многих компиляторов. Наиболее известные реализации:

  • IBM PL/I Optimizing Compiler — для мейнфреймов IBM System/370 и последующих.
  • Digital Research PL/I — для операционных систем CP/M и MS-DOS (1980-е годы).
  • Fujitsu PL/I — для японских мейнфреймов.
  • Iron Spring PL/I — современная реализация для Windows и Linux (с 2000-х годов).

Проблемы совместимости

Несмотря на стандартизацию, многие реализации добавляли расширения, не предусмотренные ANSI X3.53-1976. Например, IBM ввела поддержку многопоточности и динамической памяти, а Digital Research — интеграцию с графическим интерфейсом. Это приводило к тому, что программы, написанные для одного компилятора, требовали доработки для переноса на другой.

Влияние и значение

Роль в развитии языков программирования

PL/I, зафиксированный стандартом ANSI X3.53-1976, оказал влияние на последующие языки:

  • C — заимствовал концепцию структур и указателей.
  • Ada — унаследовал механизмы обработки исключений и типизацию.
  • Java — использовал идею универсальности (один язык для разных задач).

Применение в промышленности

Стандарт активно использовался в крупных корпоративных системах 1970–1990-х годов, особенно в банковской сфере, страховании и государственном управлении. Например, в США на PL/I были написаны системы обработки данных налоговой службы (IRS) и системы управления авиаперевозками.

Критика

Критики стандарта отмечали его избыточность: язык содержал множество редко используемых возможностей, что усложняло компиляторы и обучение. Кроме того, стандарт не предусматривал модульной системы, что затрудняло разработку крупных проектов.

Интересные факты

  • Стандарт ANSI X3.53-1976 был одним из первых, где использовалась формальная грамматика БНФ для описания синтаксиса.
  • В 1978 году на основе этого стандарта был разработан язык PL/I-80, оптимизированный для 8-битных микропроцессоров.
  • В 2000-х годах предпринимались попытки возродить PL/I как язык для высоконагруженных систем, но они не получили широкого распространения.

Источники

  • ANSI X3.53-1976. American National Standard for Information Systems — Programming Language PL/I. 1976.
  • Sammet, J. E. Programming Languages: History and Fundamentals. Prentice-Hall, 1969.
  • Wegner, P. Programming Languages, Information Structures, and Machine Organization. McGraw-Hill, 1971.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru