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.