Rexx

Revision as of 21:57, 30 Травня 2026 by Yaroslav (розговор | влож) (Bot: Automated import of articles)
(розн) ← Older revision | Latest revision (розн) | Newer revision → (розн)

Rexx — это высокоуровневый язык программирования, изначально разработанный корпорацией IBM в конце 1970-х годов. Язык проектировался преимущественно как мощный и универсальный инструмент для написания сценариев (скриптов) и автоматизации задач операционных систем. Благодаря простому синтаксису и свободному формату написания кода, язык получил широкое распространение в академической и корпоративной среде восьмидесятых и девяностых годов.

История создания и развитие

Разработка языка была инициирована программистом Майком Коулишоу. Процесс создания начался 20 марта 1979 года и завершился к середине 1982 года. Исторически Rexx разрабатывался как замена существовавшим на тот момент скриптовым языкам exec и exec 2, которые отличались высокой сложностью и высоким порогом вхождения.

Архитектурно язык формировался под сильным влиянием сложного и громоздкого академического языка ПЛ/1 (PL/1), который в те годы часто применялся для решения корпоративных задач. Rexx концептуально задумывался как экстремальное упрощение ПЛ/1: он должен был стать легким в освоении языком, доступным для широкого круга пользователей операционных систем, а также служить промежуточной учебной ступенью перед переходом к программированию на ПЛ/1.

В 1981 году язык был впервые официально представлен на профильной конференции, где получил высокие оценки технического сообщества. В 1982 году корпорация IBM выпустила Rexx в качестве полноценного коммерческого продукта. Язык активно продвигался компанией и был портирован на большинство актуальных операционных систем того времени, включая PC DOS, OS/2, Windows, а впоследствии и Linux.

Изначально Rexx функционировал исключительно как интерпретируемый язык, однако в 1987 году был выпущен первый полноценный компилятор. В 1990 году состоялся первый специализированный симпозиум, по итогам которого была создана ассоциация разработчиков языка Rexx Language Association.

В середине 1990-х годов, на фоне роста популярности новых технологий, появилось несколько существенных ответвлений языка: Объектно-ориентированный диалект Object REXX, стандартизация которого была завершена в 1996 году. Диалект NetRexx, архитектура которого опиралась на вычислительную модель Java. NetRexx транслировался в байт-код для виртуальной машины Java, однако из-за синтаксических и парадигмальных отличий он был несовместим с классическим исходным кодом Rexx.

Архитектура и синтаксис

Синтаксис языка отличается крайней лаконичностью: базовый стандарт включает всего от 23 до 32 основных инструкций. В языке отсутствуют жестко зарезервированные ключевые слова в глобальном пространстве имен; слова становятся ключевыми исключительно в определенном локальном контексте.

Программный код строится на базе трех типов инструкций (стейтментов): Операции присваивания. Операции вычисления. Операции, выполняемые по локальным ключевым словам.

Логическая группировка инструкций осуществляется с помощью конструкции блока do. В отличие от языков семейства Паскаль, где требуется пара begin/end, в Rexx блок открывается словом do и закрывается словом end. Данный блок может выступать как простой группировкой операторов (например, в условных ветвлениях), так и классическим циклом.

Циклические конструкции обладают исключительной гибкостью, заимствованной из ПЛ/1. Программист может задавать фиксированное количество повторений (указав число после do), создавать циклы со счетчиком, задавать начальное значение, конечное условие и шаг итерации. Архитектура позволяет комбинировать множество условий продолжения и прерывания работы в рамках одного составного оператора цикла. Также предусмотрена конструкция бесконечного цикла do forever, выход из которого осуществляется по внутреннему условию.

Для множественного ветвления алгоритма применяется специализированная инструкция select (аналог switch в C-подобных языках). В среду также встроена система обработки ошибок, которая перехватывает исключения во время исполнения и возвращает стандартизированные коды ошибок.

Концептуальный пример синтаксиса для вычисления квадратного корня из двух по методу Ньютона:

 /* Пример использования блока do */
 do forever
    /* Логика вычисления по методу Ньютона */
    /* Инструкция условного выхода при достижении нужной точности */
 end

Типы данных и составные переменные

Rexx обладает динамической типизацией. Переменные не требуют предварительного объявления и изначально не имеют фиксированного типа. Особенностью языка является то, что неинициализированная переменная обрабатывается интерпретатором как текстовая строка, содержащая собственное имя в верхнем регистре. Тип данных (число или строка) определяется динамически в зависимости от того, какое значение присваивается переменной в процессе выполнения.

Фундаментальной архитектурной находкой языка является концепция «составных переменных» (compound variables). Составная переменная состоит из базовой части («корня» или stem) и присоединяемого через точку «хвоста» (tail). Эта универсальная конструкция позволяет разработчикам эмулировать практически любые структуры данных из других языков: Классические массивы (если в качестве хвоста используются порядковые числа). Многомерные массивы и деревья (путем добавления нескольких хвостов через точки). Ассоциативные массивы и записи (если хвост является текстовой строкой, например, названием дня недели). С точки зрения интерпретатора любая подобная структура остается единой составной переменной, что делает работу с данными интуитивно понятной.

Обработка строк и инструкция Parse

Язык обладает мощными встроенными возможностями для обработки текстовой информации. Ключевым инструментом для этих задач выступает встроенная инструкция parse.

Инструкция parse осуществляет синтаксический анализ переданной текстовой строки, автоматически разделяя её на фрагменты и распределяя эти фрагменты по заданному списку переменных. Разработчик может передавать инструкции различные модификаторы, определяющие границы переменных, символы-разделители или источники данных (например, чтение напрямую с клавиатуры). Благодаря этой инструкции в профессиональном жаргоне программистов укоренился термин «парсить» (осуществлять синтаксический разбор данных).

Сферы применения, достоинства и недостатки

Пик популярности языка пришелся на 1990-е и начало 2000-х годов. В этот период для него создавались визуальные интегрированные среды разработки, графические библиотеки и инструменты для автоматизации. Долгое время он оставался стандартом для написания скриптов на мейнфреймах IBM.

Главными достоинствами языка считаются простота, низкий порог вхождения и высокая читаемость исходного кода. Язык легко осваивался системными администраторами и рядовыми сотрудниками для написания небольших сценариев автоматизации операционных систем без необходимости изучения сложных языков вроде C. Универсальность позволяла эффективно манипулировать текстом и системными вызовами.

К существенным недостаткам относится техническое устаревание архитектуры (стандарты конца 1970-х годов). Будучи интерпретируемым языком сверхвысокого уровня, Rexx обладает крайне низкой вычислительной производительностью. Он не адаптирован для разработки современных многокомпонентных веб-приложений или систем управления базами данных. Кроме того, вокруг языка сформировалось относительно небольшое сообщество разработчиков, что привело к дефициту готовых библиотек и обучающих материалов в сети Интернет.

В современной индустрии разработки программного обеспечения язык Rexx практически полностью вытеснен универсальным языком Python, а также языком JavaScript, которые обладают несоизмеримо более масштабной экосистемой и адаптированы под современные вычислительные парадигмы.

См. также

Ruby Rust

Смотреть видео