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

REXX

REXX (Restructured Extended Executor) — это интерпретируемый язык программирования высокого уровня, разработанный в 1979 году сотрудником корпорации IBM Майком Коулишоу (Mike Cowlishaw). Изначально создавался как мощный и простой в использовании макропроцессор и язык сценариев для операционных систем IBM, но впоследствии стал использоваться как язык общего назначения, особенно в среде мейнфреймов и систем автоматизации. Ключевыми особенностями REXX являются синтаксис, ориентированный на удобство чтения и написания, встроенная поддержка строковых операций и десятичной арифметики, а также кроссплатформенность.

История

Создание и ранние версии

Язык REXX был разработан Майком Коулишоу в 1979 году в лаборатории IBM в Херсли, Великобритания. Первоначальная цель заключалась в создании языка, который был бы более мощным и удобным, чем существовавшие тогда командные интерпретаторы (например, EXEC на CMS), но при этом оставался бы доступным для непрограммистов. Коулишоу стремился к тому, чтобы синтаксис REXX был максимально близок к естественному английскому языку, что облегчало его изучение и использование.

Первая реализация REXX была выпущена в 1982 году для операционной системы VM/CMS (Virtual Machine/Conversational Monitor System). Вскоре язык был портирован на другие платформы IBM, включая MVS (Multiple Virtual Storage) и OS/2. В 1983 году IBM выпустила спецификацию языка, что способствовало его распространению.

Распространение и стандартизация

В 1980-х и 1990-х годах REXX приобрел значительную популярность, особенно в среде мейнфреймов IBM, где он стал стандартным языком для написания сценариев автоматизации и системных утилит. Важную роль в популяризации REXX сыграла его включенность в операционную систему OS/2, где он использовался как основной язык сценариев.

В 1996 году Американский национальный институт стандартов (ANSI) принял стандарт для REXX — ANSI X3.274-1996. Этот стандарт закрепил основные синтаксические и семантические конструкции языка, обеспечив переносимость программ между различными реализациями. Позднее стандарт был принят и Международной организацией по стандартизации (ISO) как ISO 10279:1998.

Современное состояние

Несмотря на снижение популярности в 2000-х годах с распространением языков общего назначения, таких как Python и Perl, REXX продолжает использоваться в ряде ниш. Он остается востребованным в среде мейнфреймов IBM (z/OS, VM), в системах автоматизации (например, в среде z/TPF), а также в некоторых встраиваемых системах. Существуют открытые реализации REXX, такие как Regina REXX и ooREXX, которые поддерживают работу на современных операционных системах (Windows, Linux, macOS).

Классификация

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

  • Интерпретируемый язык: Исходный код REXX выполняется интерпретатором, а не компилируется в машинный код. Это обеспечивает быструю разработку и отладку, но может снижать производительность по сравнению с компилируемыми языками.
  • Язык сценариев (скриптовый язык): Изначально разработан для автоматизации задач, управления операционной системой и написания макросов.
  • Язык высокого уровня: Абстрагирует программиста от деталей аппаратного обеспечения, предоставляя удобные конструкции для работы с данными.
  • Язык общего назначения: Хотя основная сфера применения — сценарии, REXX может использоваться для решения широкого круга задач, включая обработку текста, численные расчеты и разработку приложений.

Характеристики

Синтаксис и семантика

REXX отличается простым и читаемым синтаксисом, который напоминает английский язык. Основные характеристики:

  • Динамическая типизация: Тип переменной определяется автоматически во время выполнения. Переменные могут хранить строки, числа, списки или другие структуры данных.
  • Строковый тип данных: Все данные в REXX, включая числа, хранятся как строки. Это упрощает обработку текста, но может приводить к накладным расходам при численных операциях.
  • Десятичная арифметика: REXX использует десятичную арифметику с плавающей точкой, что позволяет избежать ошибок округления, характерных для двоичной арифметики. Точность вычислений может быть задана пользователем.
  • Отсутствие ключевых слов для управления памятью: Управление памятью полностью автоматическое, что снижает риск ошибок, связанных с утечками или двойным освобождением.
  • Встроенные функции: REXX предоставляет богатый набор встроенных функций для работы со строками, числами, датами, файлами и другими объектами.

Управляющие конструкции

REXX поддерживает стандартные управляющие конструкции, такие как:

  • Условные операторы: IF ... THEN ... ELSE ...
  • Циклы: DO ... END, DO WHILE ... END, DO UNTIL ... END, DO I = 1 TO 10 ... END
  • Операторы выбора: SELECT ... WHEN ... OTHERWISE ... END

Работа с данными

REXX предоставляет удобные средства для работы с данными:

  • Строки: Операции конкатенации, поиска, замены, извлечения подстроки.
  • Списки (стеки): REXX поддерживает стековую структуру данных, которая позволяет эффективно обрабатывать последовательности строк.
  • Массивы: REXX поддерживает одномерные и многомерные массивы, которые могут быть индексированы как числами, так и строками (ассоциативные массивы).

Взаимодействие с операционной системой

REXX предоставляет возможности для взаимодействия с операционной системой:

  • Выполнение команд: Вызов команд операционной системы (например, ls, dir, copy).
  • Работа с файлами: Чтение, запись, создание и удаление файлов.
  • Обработка аргументов командной строки: Передача параметров программе.
  • Взаимодействие с другими программами: Запуск внешних программ и обмен данными с ними.

Применение

REXX нашел применение в различных областях:

  • Автоматизация задач в мейнфреймах: Написание сценариев для управления системами IBM z/OS, VM и z/TPF. REXX является стандартным языком для автоматизации операций, таких как запуск заданий, мониторинг систем, обработка журналов.
  • Системное администрирование: Создание сценариев для управления файловыми системами, пользователями, процессами на различных платформах.
  • Разработка макросов: REXX использовался для написания макросов в таких приложениях, как текстовый редактор XEDIT и среда разработки ISPF.
  • Обработка текста: Благодаря мощным строковым функциям, REXX часто применяется для обработки логов, конфигурационных файлов и других текстовых данных.
  • Образование: Благодаря простоте синтаксиса, REXX иногда используется для обучения основам программирования.

Примеры

Пример 1: Приветствие

``rexx / Программа, выводящая приветствие / say "Введите ваше имя:" parse pull name say "Привет, " name "!" ``

Пример 2: Вычисление факториала

``rexx / Вычисление факториала числа / say "Введите число:" parse pull n fact = 1 do i = 1 to n fact = fact * i end say "Факториал числа " n " равен " fact ``

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

  • Майк Коулишоу, создатель REXX, также известен как автор алгоритма «Cowlishaw's algorithm» для вычисления числа π с высокой точностью.
  • REXX был одним из первых языков, который поддерживал десятичную арифметику с плавающей точкой, что сделало его популярным в финансовых приложениях.
  • Существует реализация REXX для операционной системы Linux, называемая Regina REXX, которая является свободно распространяемой.
  • В 1990-х годах REXX был включен в состав операционной системы OS/2 как основной язык сценариев, что способствовало его широкому распространению на платформе x86.

Критика

Несмотря на свои достоинства, REXX подвергается критике по ряду причин:

  • Производительность: Как интерпретируемый язык, REXX может быть медленнее компилируемых языков, особенно при выполнении сложных численных расчетов.
  • Ограниченная поддержка объектно-ориентированного программирования: В стандартном REXX отсутствует объектно-ориентированная модель, что затрудняет разработку крупных приложений. Существуют расширения, такие как ooREXX, которые добавляют эту возможность.
  • Меньшая популярность: По сравнению с более современными языками, такими как Python или Perl, REXX имеет меньшее сообщество и меньшее количество библиотек.

Источники

  1. Cowlishaw, M. F. (1985). The REXX Language: A Practical Approach to Programming. Prentice-Hall.
  2. ANSI X3.274-1996. American National Standard for Information Systems — Programming Language REXX.
  3. ISO 10279:1998. Information technology — Programming languages — REXX.
  4. IBM Corporation. (1990). REXX/VM User's Guide.
  5. Cowlishaw, M. F. (1990). REXX: A Language for the 1990s. IBM Systems Journal, 29(2), 234-249.

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

На главную BFOmetr →