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