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

ANSI X3.53-1981

ANSI X3.53-1981 — это стандарт Американского национального института стандартов (ANSI), принятый в 1981 году, который определял язык программирования PL/I, его синтаксис, семантику и требования к реализации. Данный стандарт был разработан комитетом ANSI X3 (ныне INCITS, Международный комитет по стандартам информационных технологий) и стал первой официальной попыткой унификации языка PL/I на национальном уровне. Стандарт охватывал подмножество языка, известное как «PL/I Subset G», и предназначался для обеспечения переносимости программ между различными вычислительными системами.

История

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

Язык PL/I (Programming Language One) был разработан компанией IBM в 1964 году для мэйнфреймов семейства System/360. Он задумывался как универсальный язык, объединяющий возможности научного (FORTRAN), коммерческого (COBOL) и системного (ALGOL) программирования. К началу 1970-х годов PL/I получил распространение в академической среде и в корпоративных системах, однако его реализации от разных производителей (IBM, Univac, Burroughs, Digital Equipment Corporation) существенно различались по синтаксису и доступным возможностям. Это создавало проблемы с переносимостью кода.

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

В 1974 году комитет ANSI X3J1 (специализированная группа по PL/I) начал работу над стандартизацией языка. Основной целью было определение минимального набора функций, обязательных для всех реализаций, что позволило бы писать переносимые программы. Процесс занял семь лет из-за сложности языка и разногласий между производителями. В 1981 году стандарт был утверждён под номером ANSI X3.53-1981. Он базировался на подмножестве PL/I, известном как «Subset G», которое исключало некоторые сложные или редко используемые возможности (например, многозадачность, асинхронный ввод-вывод, некоторые типы данных).

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

В 1989 году был принят расширенный стандарт ANSI X3.74-1989 (также известный как «PL/I General Purpose Subset»), который включал больше возможностей, чем Subset G. Позднее, в 1992 году, появился международный стандарт ISO/IEC 10279:1992, который гармонизировал американский стандарт с требованиями Международной организации по стандартизации (ISO). ANSI X3.53-1981 оставался действующим до выхода этих более поздних версий, но фактически был вытеснен ими.

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

Область применения

Стандарт ANSI X3.53-1981 определял:

  • Синтаксис — формальные правила записи операторов, выражений и объявлений.
  • Семантику — смысл и поведение языковых конструкций.
  • Требования к реализации — минимальные характеристики, которым должна соответствовать любая реализация PL/I, претендующая на соответствие стандарту.
  • Подмножество языка — строго определённый набор функций, которые должны поддерживаться всеми реализациями.

Основные элементы подмножества Subset G

Подмножество G включало:

  1. Типы данных:
  • Целочисленные (FIXED BINARY, FIXED DECIMAL).
  • Вещественные (FLOAT BINARY, FLOAT DECIMAL).
  • Символьные (CHARACTER).
  • Битовые (BIT).
  • Массивы (одномерные и многомерные).
  • Структуры (с ограниченной вложенностью).
  1. Управляющие конструкции:
  • Условные операторы: IF, THEN, ELSE, SELECT.
  • Циклы: DO, DO WHILE, DO UNTIL, DO с переменной.
  • Операторы перехода: GO TO, LEAVE, ITERATE.
  1. Ввод-вывод:
  • Файловый ввод-вывод: OPEN, CLOSE, READ, WRITE, REWRITE, DELETE.
  • Форматный ввод-вывод: GET, PUT с использованием FORMAT.
  • Потоковый ввод-вывод (STREAM, RECORD).
  1. Процедуры и функции:
  • Определение процедур (PROCEDURE, END).
  • Параметры (по значению и по ссылке).
  • Рекурсия (ограниченная).
  • Встроенные функции (например, ABS, MAX, MIN, SUBSTR, INDEX).
  1. Обработка ошибок:
  • Операторы ON, SIGNAL, REVERT для обработки исключительных ситуаций (например, ошибок ввода-вывода, деления на ноль).
  1. Объявления:
  • DECLARE для переменных, констант, массивов и структур.
  • Атрибуты: STATIC, AUTOMATIC, INITIAL, DEFINED.

Исключённые возможности

Стандарт намеренно исключал следующие возможности, присутствовавшие в полном PL/I:

  • Многозадачность (TASK, EVENT).
  • Асинхронный ввод-вывод.
  • Указатели (POINTER) и основанные на них переменные.
  • Некоторые типы данных (например, COMPLEX, PICTURE).
  • Динамическое выделение памяти (ALLOCATE, FREE).
  • Некоторые атрибуты (например, CONTROLLED, BASED).

Значение и влияние

Для индустрии

ANSI X3.53-1981 сыграл ключевую роль в унификации PL/I. До его принятия программы, написанные для одного мэйнфрейма, часто не работали на другом. Стандарт позволил:

  • Снизить затраты на перенос кода между системами.
  • Упростить обучение программистов, поскольку они могли изучать единый диалект.
  • Повысить надёжность программ за счёт чётко определённого поведения.

Для разработчиков

Стандарт стал основой для многих учебных курсов по PL/I в 1980-х годах. Он также использовался при разработке компиляторов и инструментов разработки, таких как PL/I Optimizing Compiler от IBM и компиляторы от Digital Research (PL/I-80) и Microsoft (MS PL/I).

Критика

Несмотря на успех, стандарт подвергался критике за:

  • Ограниченность — исключение многих мощных возможностей полного PL/I (например, указателей и многозадачности) делало его непригодным для системного программирования.
  • Сложность — даже подмножество G оставалось одним из самых сложных языков своего времени, что затрудняло его изучение.
  • Отсутствие поддержки — некоторые производители не полностью реализовали стандарт, что приводило к несовместимости.

Применение

Основные области

Стандарт ANSI X3.53-1981 применялся в:

  • Корпоративных информационных системах — банки, страховые компании, государственные учреждения, где PL/I использовался для обработки транзакций и отчётов.
  • Научных расчётах — обработка данных, моделирование, статистика.
  • Образовании — преподавание программирования в университетах (например, в СССР и странах Восточной Европы).

Примеры реализации

  • IBM PL/I Optimizing Compiler — одна из первых реализаций, полностью соответствующая стандарту.
  • Digital Research PL/I-80 — реализация для микрокомпьютеров на базе процессора Intel 8080/Z80.
  • Microsoft PL/Iкомпилятор для MS-DOS, выпущенный в 1982 году.

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

  • Стандарт ANSI X3.53-1981 был одним из первых национальных стандартов на язык программирования высокого уровня, принятых в США (после FORTRAN и COBOL).
  • В СССР стандарт был переведён и использовался в качестве основы для разработки отечественных компиляторов PL/I, например, для ЕС ЭВМ.
  • Несмотря на то, что PL/I в целом утратил популярность к 1990-м годам, стандарт ANSI X3.53-1981 продолжал использоваться в унаследованных системах (legacy systems) до начала XXI века.

Источники

  • ANSI X3.53-1981, American National Standard for Information Systems — Programming Language PL/I (Subset G). American National Standards Institute, 1981.
  • Sammet, J. E. Programming Languages: History and Fundamentals. Prentice-Hall, 1969.
  • Wegner, P. Programming Languages, Information Structures, and Machine Organization. McGraw-Hill, 1968.
  • ISO/IEC 10279:1992, Information technology — Programming languages — PL/I General Purpose Subset. International Organization for Standardization, 1992.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →