ARexx — это интерпретатор Rexx для Amiga , написанный в 1987 году Уильямом С. Хоузом, с рядом специфичных для Amiga функций, выходящих за рамки стандартного Rexx. Скрипт ARexx может взаимодействовать с программным обеспечением, реализующим порт ARexx . Приложение Amiga может определять набор команд и функций для ARexx, тем самым делая возможности программного обеспечения доступными для скрипта ARexx. [1] Несколько приложений поддерживают запуск скрипта ARexx как макроса .
Скрипт ARexx может выполнять команды и функции в нескольких приложениях, что позволяет скрипту интегрировать функциональность приложений. Например, скрипт ARexx может извлекать данные из базы данных , вставлять данные в электронную таблицу для выполнения вычислений над данными, а затем вставлять таблицы и диаграммы на основе результатов в документ текстового процессора .
ARexx позволяет скрипту взаимодействовать с приложениями, которые являются «совместимыми с ARexx» — способными получать команды от ARexx и выполнять их. Известные примеры включают: приложение базы данных MicroFiche Filer предоставляет обширные команды ARexx, редактор Textra, поставляемый с JForth, предоставляет интегрированную среду программирования, а приложение для мультимедийных презентаций AmigaVision может управлять другими программами через ARexx.
Как и в стандартном Rexx, ARexx использует представление данных без типов . Другие языки программирования различают такие типы, как integer , floating point , string , но Rexx обрабатывает все данные как text (string). Это упрощает написание кода, но приводит к неэффективности выполнения и ошибкам. Как это часто бывает в языках с динамической областью действия , переменные не объявляются перед их использованием. Они создаются при первом использовании.
ARexx предоставляет встроенные команды и доступ к своей хостовой библиотеке Amiga (rexxsyslib.library), а также к другим библиотекам и функциям. Программа Amiga с портом ARexx может предоставлять свои функции сценарию ARexx. Сценарий ARexx может вызывать другие сценарии ARexx.
ARexx был создан в 1987 году, разработан для Amiga Уильямом С. Хоусом. Он основан на языке Rexx, описанном Майком Коулишоу в книге The REXX Language: A Practical Approach to Programming . [2] ARexx был включен Commodore в AmigaOS 2.0 в 1990 году и был включен во все последующие выпуски AmigaOS. Эта более поздняя версия ARexx тесно связана с официальным языком Rexx; позже Хоус участвовал в разработке стандарта ANSI для Rexx.
Из руководства ARexx:
ARexx был разработан на компьютере Amiga 1000 с 512 Кбайт
памяти и двумя дисководами. Прототип языка был
разработан на языке C с использованием Lattice C , а производственная версия была написана
на языке ассемблера с использованием ассемблера Metacomco . Документация
была создана с использованием редактора TxEd [3] и была установлена в TeX с использованием AmigaTeX .
Это 100% продукт Amiga. [4]
Поскольку ARexx написан на языке ассемблера 68000 , он не может работать на полной скорости с процессорами PPC MorphOS , более современным потомком Amiga. ARexx не был переписан для них и до сих пор отсутствует в MorphOS. Уильям Хоуз больше не участвует в разработке программного обеспечения Amiga, и ни одна фирма не финансирует новые версии ARexx. Несмотря на это, существующая версия ARexx продолжает использоваться, хотя и не распространяется с MorphOS.
Если пользователь использует программу, которая создает анимацию путем объединения различных файлов растровых изображений , но в которой отсутствуют возможности обработки изображений, он может написать скрипт ARexx, который выполняет следующие действия:
EqFiles.rexx [5] — известный пример простого скрипта ARexx, написанного для автоматизации повторяющихся и скучных процедур. Этот скрипт использует программу ALeXcompare [6] для сравнения файлов, а затем находит все дубликаты в наборе файлов и возвращает вывод, выделяя любые результаты другим цветом.
Значительная ценность ARexx заключается в расширении AmigaOS за счет добавления возможностей, которых в ней не хватает. Например, программа ARexx может отображать предупреждающее сообщение или воспроизводить звуковой сигнал, если определенная программа Amiga останавливается, дает сбой или завершила запланированное задание.
Следующий скрипт представляет собой скрипт ARexx, который отображает предупреждения в зависимости от событий:
/* Alarm.rexx */ ARG event IF event = 0 THEN EXIT IF event = 1 THEN SAY "Программа неожиданно завершилась" IF event = 2 THEN SAY "Программа завершила свою работу" IF event = 3 THEN SAY "Невозможно найти данные в выбранном каталоге"