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 имеет меньшее сообщество и меньшее количество библиотек.
¶Источники
- Cowlishaw, M. F. (1985). The REXX Language: A Practical Approach to Programming. Prentice-Hall.
- ANSI X3.274-1996. American National Standard for Information Systems — Programming Language REXX.
- ISO 10279:1998. Information technology — Programming languages — REXX.
- IBM Corporation. (1990). REXX/VM User's Guide.
- Cowlishaw, M. F. (1990). REXX: A Language for the 1990s. IBM Systems Journal, 29(2), 234-249.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


