ARexx

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
ARexx
Класс языка императивный
Тип исполнения сценарный язык, макроязык и интерпретируемый язык программирования
Появился в 1987
Разработчик Уильям С. Хоуз и Wishful Thinking Development
Расширение файлов .rexx .rx
Испытал влияние REXX
Лицензия проприетарная

ARexx — диалектом язык программирования REXX для компьютеров Amiga, разработан в 1987 году программистом Уильямом С. Хоузом из компании Wishful Thinking Development, с целом рядом функций выходящих за рамки стандартных возможностей REXX для поддержки специфики AmigaOS. Программы, написанные для ARexx обычно представлены в виде файлов сценариев или макросов.

Любое[1] приложение написанное для AmigaOS, а также AROS, может выполнять сценарии ARexx для расширения своих возможностей и межпрограммного обмена данными. Для этой цели приложения открывают т. н. «порт ARexx» и определяют наборы команд и/или функций доступных для вызова из сценариев ARexx через этот именованный порт. Таким образом, пользовательский сценарий ARexx может, например, вызывать функции реализуемые одним и другим приложениями, а интерпретируемые в сценарии результаты их выполнения отправить аргументами команд к третьему и четвёртому приложениям. Эта возможность позволяет смешивать и сопоставлять функции и данные из разных приложений. Например, сценарий ARexx может извлекать данные из базы данных, добавлять их в электронную таблицу для выполнения вычислений, а затем вставлять таблицы и диаграммы на основе полученных результатов в документ открытый в текстовом процессоре.

Первые версии ARexx появились в 1987 году и были разработаны для компьютеров Amiga Уильямом С. Хоузом. Разработчик руководствовался синтаксисом интерпретируемого языка REXX описанным Майком Кулешовым[англ.] в книге «The REXX Language: A Practical Approach to Programming»[2]. ARexx был включён в поставку AmigaOS 2.0 корпорацией Commodore в 1990 году и с тех пор присутствовал во всех последующих версиях AmigaOS. Эта более поздняя версия ARexx следует официальному синтаксису языка REXX, хотя и была написана специально для экосистемы компьютеров Amiga. Начиная с AmigaOS 3.5, даже рабочий стол Workbench получил собственный порт ARexx, через который ARexx может использовать системные функции. Позже Хоуз принял участие в разработке стандарта ANSI для REXX.

Оригинальный интерпретатор ARexx был написан на ассемблере m68k и используется в AmigaOS 4 и MorphOS в режиме эмуляции так как не был портирован. Версия ARexx переписанного на языке Си для AROS является неполной и предполагается к замене другим диалектом REXX — Regina. Уильям Хоуз больше не участвует в разработке приложений для компьютеров Amiga, и никакая другая фирма, связанная с платформой Amiga, не финансирует разработку новых версий ARexx. Несмотря на это, существующая версия ARexx продолжает использоваться в потомках классической AmigaOS — AmigaOS 4, MorphOS и AROS.

Из руководства ARexx (автор отвечает на вопрос о влиянии):

ARexx был разработан ка компьютере Amiga 1000 имеющем 512 КБ памяти и два дисковода.
Прототип интерпретатора был разработан на Си с использованием Lattice C,
а окончательная версия написана на ассемблере с использованием инструментария MetaComCo.
Документация была написана в редакторе TxEd и свёрстана TeX в AmigaTeX[англ.].
Так что это Amiga-продукт на 100 %.[3]

Структура программы

[править | править код]

Каждая программа на ARexx должна состоять (по историческим причинам) как минимум из одной строки комментария, причём это должна быть первая строка программы:

/* Это моя программа */

Наличие этой строки сообщает интерпретатору RexxMast, что данный файл является сценарием для ARexx. Дополнительные строки комментариев в файле игнорируются интерпретатором и могут использоваться программистом по назначению. Фактически, сама программа на языке ARexx всегда начинается только со следующей строки:

SAY "Привет, Мир!"

При исполнении этой команды в консольное окно будет выдано сообщение «Привет, Мир!».

Библиотеки ARexx

[править | править код]

ARexx поставляется с обширной библиотекой предопределённых (системных) функций. Эти функции всегда доступны и оптимально согласованы с внутренними структурами данных принятыми в AmigaOS, но из-за этого они могут сильно отличаться от официального набора команд REXX (например, функция ADDLIB ()).

Помимо предопределённых функций существует множество функций из дополнительных библиотек написанных сторонними программистами для расширения стандартного набора. Эти дополнительные библиотеки могут быть подключены из программы на языке ARexx и после этого становится доступным реализованный в них функционал. Например:

  • rexxreqtools.library — Интеграция возможностей библиотеки reqtools.library в ARexx. Позволяет программе на ARexx выдавать пользователю окна запросов для выбора файлов, директорий, шрифтов и цветов палитры.
  • tritonrexx.library — Позволяет создавать графические интерфейсы на базе GUI Triton.
  • rexxtricks.library — Предлагает различные функции-«трюки» для использования функций DOS, прямого доступа к SCSI, экрану и пиктограммам приложений из программ на языке ARexx.

Однако это лишь малая часть существующих библиотек, с помощью которых можно расширить ARexx.

Примечания

[править | править код]
  1. Giguere, Eric ARexx Command Hosts.
  2. Cowlishaw, Michael. The REXX Language: A Practical Approach to Programming. — 1st. — Prentice Hall, 1985. — ISBN 0-13-780651-5.
  3. ARexx Users Reference Manual