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

Комитет ANSI X3J1

Комитет ANSI X3J1 — это технический комитет по стандартизации, действовавший в рамках Американского национального института стандартов (ANSI). Основной задачей комитета была разработка и поддержка стандарта языка программирования PL/I, а также связанных с ним спецификаций, включая подмножества и расширения. Комитет работал в период с конца 1960-х годов до начала 2000-х, сыграв ключевую роль в формализации одного из ранних универсальных языков программирования.

История

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

Язык PL/I был разработан в 1964 году корпорацией IBM для машин серии System/360. Он сочетал черты научного FORTRAN, коммерческого COBOL и системного языка ассемблера, что делало его универсальным, но сложным. К концу 1960-х годов PL/I получил распространение не только на мэйнфреймах IBM, но и на оборудовании других производителей (например, Burroughs, Honeywell, Univac). Возникла необходимость в едином стандарте, чтобы обеспечить переносимость программ между разными реализациями.

Основание и первые годы

Комитет ANSI X3J1 был сформирован в 1968 году под эгидой ANSI (тогда — USASI). Его полное название — «Technical Committee on PL/I». Первоначально в состав вошли представители IBM, других производителей вычислительной техники, академических кругов и крупных пользователей (например, правительственных учреждений США). Первая встреча состоялась в 1969 году.

Разработка стандарта PL/I

Основной работой комитета стала подготовка стандарта языка PL/I. Первый проект был опубликован в 1972 году, но процесс согласования затянулся. Окончательный стандарт был утверждён в 1976 году как ANSI X3.53-1976. Он описывал полный язык PL/I, включая такие сложные конструкции, как задачи (tasking), исключения (ON-условия) и динамическое выделение памяти. В 1981 году вышла редакция с исправлениями — ANSI X3.53-1981.

Дополнительные стандарты

Параллельно комитет разрабатывал подмножества языка для упрощения реализации:

  • ANSI X3.74-1981стандарт на подмножество PL/I (Subset G), предназначенное для малых и средних ЭВМ.
  • ANSI X3.113-1987 — стандарт на интерфейс с операционной системой (PL/I General Purpose Subset).
  • ANSI X3.131-1988 — стандарт на расширенное подмножество (PL/I General Purpose Subset Extended).

Закат активности

С середины 1980-х годов популярность PL/I начала снижаться из-за распространения языков C, Pascal и Ada. Комитет X3J1 продолжал работу по поддержке стандарта, но новые версии выходили редко. В 1990-е годы активность практически прекратилась. Официально комитет был расформирован в начале 2000-х годов, когда ANSI перестал поддерживать стандарт PL/I как активный. Последняя редакция стандарта — ANSI X3.53-1996 (с техническими исправлениями 1998 года).

Организационная структура

Комитет X3J1 входил в структуру ANSI, подчиняясь аккредитованному комитету по стандартизации X3 (Information Technology). Внутри X3J1 существовали рабочие группы:

  • Подгруппа по синтаксису — занималась формальным описанием грамматики PL/I (в нотации БНФ).
  • Подгруппа по семантике — определяла поведение конструкций языка.
  • Подгруппа по подмножествам — разрабатывала упрощённые версии PL/I.
  • Подгруппа по тестированию — создавала наборы тестов для проверки соответствия реализаций стандарту.

Заседания проводились 2–4 раза в год, обычно в США. Участие было добровольным, расходы покрывались организациями-членами.

Основные результаты

Стандарт PL/I (ANSI X3.53)

Стандарт определял:

  • Лексикуключевые слова (PROCEDURE, DECLARE, IF, DO, CALL), операторы, идентификаторы, литералы.
  • Типы данных — числовые (FIXED, FLOAT, BINARY, DECIMAL), строковые (CHARACTER, BIT), массивы, структуры, указатели.
  • Управляющие конструкции — IF-THEN-ELSE, DO-группы, SELECT, ON-условия для обработки исключений.
  • Процедуры и функции — рекурсия, передача параметров по ссылке, внешние и внутренние процедуры.
  • Ввод-вывод — потоковый (STREAM) и записный (RECORD), работа с файлами.
  • Параллельное выполнение — задачи (TASK), синхронизация через EVENT и PRIORITY.

Стандарт занимал более 500 страниц и считался одним из самых объёмных среди языковых стандартов своего времени.

Подмножество G (ANSI X3.74)

Subset G был разработан для реализации на ЭВМ с ограниченными ресурсами. Он исключал:

  • задачи (TASK),
  • динамическое выделение памяти (ALLOCATE/FREE),
  • некоторые типы данных (например, COMPLEX),
  • сложные формы ввода-вывода.

Это позволило создать компиляторы PL/I для мини-ЭВМ (например, DEC PDP-11).

Тестовые наборы

Комитет разработал так называемый «PL/I Validation Suite» — набор из нескольких тысяч тестовых программ, проверяющих соответствие компилятора стандарту. Этот набор использовался для сертификации реализаций PL/I в США и других странах.

Влияние и критика

Влияние

Работа комитета X3J1 оказала влияние на последующие языковые стандарты:

  • Методы формального описания синтаксиса и семантики, применённые в PL/I, были использованы при разработке стандартов Ada и C.
  • Концепция подмножеств (subsetting) стала распространённой практикой в стандартизации (например, подмножества C или SQL).
  • PL/I Validation Suite послужил прототипом для тестовых наборов других языков (например, Ada Compiler Validation Capability).

Критика

Стандарт PL/I критиковался за избыточность и сложность. Многие конструкции (ON-условия, задачи, макропроцессор) были трудны для реализации и использования. Кроме того, процесс стандартизации затянулся на 8 лет, что привело к расхождению между стандартом и реальными компиляторами (особенно от IBM, которые имели собственные расширения). Комитет также обвиняли в недостаточном учёте интересов небольших производителей.

Прекращение деятельности

В 1998 году ANSI пересмотрел статус стандарта PL/I, переведя его в категорию «устаревших» (withdrawn). Комитет X3J1 формально продолжал существовать, но не проводил заседаний после 2000 года. Окончательно он был расформирован в 2003 году. В настоящее время (2020-е годы) стандарт PL/I не поддерживается ANSI, но его спецификации доступны в архивах.

Наследие

Несмотря на прекращение деятельности комитета, PL/I продолжает использоваться в некоторых унаследованных системах (legacy systems), особенно в банковской сфере и государственных учреждениях США. Стандарты, разработанные X3J1, остаются основой для этих реализаций. В России PL/I применялся в советских ЭВМ серии ЕС ЭВМ (аналог IBM System/360), где использовались компиляторы, основанные на стандарте ANSI X3.53.

Источники

  • American National Standards Institute. ANSI X3.53-1976: Programming Language PL/I. New York: ANSI, 1976.
  • American National Standards Institute. ANSI X3.74-1981: PL/I Subset G. New York: ANSI, 1981.
  • Sammet, Jean E. Programming Languages: History and Fundamentals. Englewood Cliffs: Prentice-Hall, 1969.
  • Wexelblat, Richard L. (ed.). History of Programming Languages. New York: Academic Press, 1981.
  • ISO/IEC 646:1991 (основа для кодировки, используемой в PL/I).
  • Документы комитета ANSI X3J1, хранящиеся в архиве Computer History Museum (Маунтин-Вью, Калифорния).
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru