ARexx
ARexx — это реализация языка Rexx для Amiga , написанная в 1987 году Уильямом С. Хоузом, с рядом специфических для Amiga функций, выходящих за рамки стандартных возможностей REXX. Как и большинство реализаций REXX, ARexx является интерпретируемым языком . Программы, написанные для ARexx, называются « скриптами » или « макросами »; некоторые программы предлагают возможность запускать сценарии ARexx в своем основном интерфейсе в виде макросов.
ARexx может легко взаимодействовать со сторонним программным обеспечением, реализующим «порт ARexx». Любое приложение или скрипт Amiga [1] может определить набор команд и функций , к которым будет обращаться ARexx, тем самым делая возможности программного обеспечения доступными для сценариев, написанных на ARexx.
ARexx может направлять команды и функции нескольким приложениям из одного и того же сценария, тем самым предлагая возможность смешивать и сопоставлять функции из разных программ. Например, сценарий ARexx может извлекать данные из базы данных , вставлять данные в электронную таблицу для выполнения вычислений, а затем вставлять таблицы и диаграммы на основе результатов в документ текстового процессора .
История
[ редактировать ]ARexx был впервые создан в 1987 году и разработан для Amiga Уильямом С. Хоузом. Он основан на языке REXX, описанном Майком Коулишоу в книге «Язык REXX: практический подход к программированию» . [2] ARexx был включен Commodore в AmigaOS 2.0 в 1990 году и во все последующие выпуски AmigaOS. Эта более поздняя версия ARexx тесно связана с официальным языком REXX; Позже Хоуз участвовал в разработке стандарта ANSI для REXX.
ARexx написан на 68000 языке ассемблера и поэтому не может работать на полной скорости с новыми процессорами PPC , версия ARexx для них не переписана и до сих пор отсутствует в MorphOS 3.0. Уильям Хоуз больше не участвует в разработке программ для Amiga, и ни одна другая фирма, связанная с Amiga, не финансирует новые версии ARexx. Несмотря на это, существующая версия ARexx продолжает использоваться, хотя она не распространяется вместе с MorphOS.
Из руководства ARexx:
ARexx был разработан на компьютере Amiga 1000 с объемом памяти 512 КБ.
память и два флоппи-дисковода. Языковым прототипом был
разработан на C с использованием Lattice C , и была написана производственная версия
на языке ассемблера с использованием ассемблера Metacomco . Документация
был создан с использованием TxEd [3] редакторе и был установлен в TeX с помощью AmigaTeX .
Это 100% продукт Amiga. [4]
Характеристики
[ редактировать ]ARexx — это язык программирования, который может взаимодействовать с другими приложениями. Например, используя ARexx, можно запросить данные из приложения базы данных и отправить их в приложение для работы с электронными таблицами. Для поддержки этой возможности приложение должно быть «совместимо с ARexx», имея возможность получать команды от ARexx и выполнять их. Программа базы данных может иметь команды для поиска, извлечения и сохранения данных — база данных MicroFiche Filer имеет обширный набор команд ARexx. Текстовый редактор может иметь команды ARexx, соответствующие его набору команд редактирования — редактор Textra, поставляемый с JForth, может использоваться для обеспечения интегрированной среды программирования. Программа мультимедийных презентаций AmigaVision также имеет встроенный порт ARexx и может управлять другими программами, используя ARexx.
ARexx может увеличить мощность компьютера за счет объединения возможностей различных программ. Из-за популярности автономного пакета ARexx компания Commodore включила его в выпуск 2 AmigaDOS .
Как и все реализации REXX, ARexx использует бестиповое представление данных. Другие языки программирования делали различия между целыми числами , числами с плавающей запятой , строками , символами, векторами и т. д . Напротив, системы REXX рассматривают все данные как строки символов, что упрощает написание выражений и алгоритмов. Как это часто бывает в языках с динамической областью видимости , переменные не объявляются перед их использованием, они возникают при первом использовании.
Сценарии ARexx используют систему обработки ошибок , которая отслеживает выполнение и реагирует соответствующим образом. Программист может при необходимости приостановить и возобновить выполнение программы.
Набор команд ARexx прост, но помимо команд есть функции его справочной библиотеки Amiga (rexxsyslib.library). Также легко добавить другие библиотеки или отдельные функции. Сценарии ARexx также можно вызывать как функции из других сценариев ARexx. Любая программа Amiga, имеющая встроенный порт ARexx, может использовать свои функции совместно со сценариями ARexx.
Примеры решений ARexx распространенных проблем
[ редактировать ]Реализация новых функций и возможностей с помощью скриптов
[ редактировать ]Если конечный пользователь использует программу, которая создает анимацию путем объединения различных файлов растровых изображений , но в которой отсутствуют возможности обработки изображений, он может написать сценарий ARexx, который выполняет следующие действия:
- ARexx находит файлы изображений в их каталогах.
- ARexx загружает первое изображение
- ARexx загружает программу рисования
- Изображение загружается в программу рисования, которая вносит изменения в файл.
- Измененное изображение сохраняется в другом каталоге.
- ARexx повторяет процедуру для любого изображения в каталоге.
- Программа рисования закрывается и загружается программа анимации.
- Анимация построена
- Анимация сохраняется в своей директории.
- Анимационная программа закрыта.
Избегание повторяющихся процедур
[ редактировать ]EqFiles.rexx [5] — это хорошо известный пример простого сценария ARexx, написанного для автоматизации повторяющихся и скучных процедур. Этот скрипт использует программу ALeXcompare. [6] для сравнения файлов, а затем находит все дубликаты в наборе файлов и возвращает выходные данные, выделяя любые результаты другим цветом.
Расширьте возможности AmigaOS
[ редактировать ]Одной из основных особенностей ARexx является то, что она может расширить возможности AmigaOS, добавив некоторые процедуры, которых не хватало в ОС. Например, можно написать простую программу ARexx для вывода предупреждающего сообщения на экран монитора или воспроизведения звукового сигнала, если определенная программа Amiga останавливается, дает сбой или завершает запланированное задание.
Следующий сценарий представляет собой минимальный сценарий ARexx, который отображает предупреждения в зависимости от происходящих событий.
/* Alarm.rexx */
ARG event
IF event = 0 THEN EXIT
IF event = 1 THEN SAY "Program has ended unexpectedly"
IF event = 2 THEN SAY "Program has finished its job"
IF event = 3 THEN SAY "Cannot find data in selected directory"
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Жигер, Эрик. «Командные хосты ARexx» .
- ^ Коулишоу, Майкл (1985). Язык REXX: практический подход к программированию (1-е изд.). Прентис Холл. ISBN 0-13-780651-5 .
- ^ "Amazing_Computing_1986-03_067.JPG" .
- ^ Справочное руководство для пользователей ARexx
- ^ Перуджи, Фульвио. «ЭкФайлс» .
- ^ Казик, Алекс. «ALeXcompare» .
- Примечания
- Каллауэй, Меррилл. (1992). Поваренная книга ARexx . Альбукерке, Нью-Мексико: Уайтстоун. ISBN 0-9632773-0-8 .
- Замара, Крис; Салливан, Ник (1991). Использование Arexx на Amiga . Abacus Software Inc. ISBN 1-55755-114-6 .