Введение в ARexx
Источник: www.amirus.org.ru
Краткий обзор языка программирования ARexx
by Dave Crawford
Русский перевод: Vlad Vinogradov ^ ATO-RUS (15.02.2005)
В автомобильном мире между водителем и механиком существует "скрытая цепочка механизмов". В MorphOS между программистом и пользователем также существует нечто - оригинальный скриптовый язык, известный как ARexx. ARexx часто неправильно понимается как "простой" скриптовый язык (язык сценариев). Так же как "скрытая цепочка механизмов" часто может выполнять работу более внушительную (а иногда и более лучшую), чем "реальный" авто-магазин, ARexx более чем предостаточно заполняет промежуток между программистами и пользователями. ARexx может использоваться для множества задач, может использоваться как макро-язык, как портал взаимодействия процессов, и даже для создания законченных автономных программ. MorphOS обеспечивает работу ARexx-языка на PowerPC, что только улучшает работу любого ARexx-проекта. Однако, много людей по-прежнему задаются вопросом "Что же такое ARexx?" Эта статья раскрывает более практическое применение ARexx, чем описано на большинстве сайтов, которые обычно основываются непосредственно на "The ARexx User's Reference Manual" by William S. Hawes.
ARexx это макро-язык. Одна из уникальных возможностей ARexx заключается в том, что он является макро-языком во многих приложениях поверх других функций, что делает ARexx очень полезным инструментом. При программировании под MorphOS прикладные разработчики рано или поздно обычно реализуют поддержку ARexx. Почему? Это позволяет продвинутым пользователям (то есть "скрытой цепочке механизмов") автоматизировать определённые задачи. Некоторые приложения выходят за рамки простой ARexx-поддержки, и включают поддержку макро-записей (например, ImageFX и MorphED). Почти каждое MorphOS-приложение использует ARexx как макро-язык. Короче говоря, ARexx используется для того, чтобы заставить программу делать ещё что-то. Другими словами, человек, создающий макро-команду, получает действительно широкие возможности, когда понимает, что ARexx также может обращаться к функциям других программ!
Да, ARexx может использоваться для связки вместе различных функций совершенно разных программ, причём намного более гибко и мощно, чем любой другой shell-скрипт. ARexx - язык взаимодействия процессов, который может интенсивно обрабатывать данные и команды разнообразных программ, комбинирую их функциональность способами, которые оригинальный разработчик не продумал. Прекрасным примером этого служит использование ARexx для создания "супер-макро-команды", которая берёт отсканированное изображение из VHI Studio, добавляет сведения об авторских правах, используя fxPaint, и закачивает на ваш сайт посредством вашего любимого FTP-клиента. Это только самый простой пример, поскольку ARexx может использоваться для связки множества приложений, которые одновременно запущены на вашем Pegasos! Поэтому ARexx можно считать чрезвычайно мощным межпроцессорным макро-языком, и это только одно из преимуществ, получаемое при его использовании.
Нет, ARexx это больше чем язык, умеющий формировать причудливые макросы, которые могут связывать приложения между собой. ARexx это мощный язык высокого уровня, способный на такие вещи, которые не умеют другие низкоуровневые языки. Говоря простым языком это значит, что ARexx поддерживает внешние функциональные библиотеки, имеет внутренние функции, и мощный набор команд. Как в любом языке программирования, программист (скриптописатель, продвинутый пользователь, любой) может использовать внешние функциональные библиотеки, включая сторонние библиотеки. Эти библиотеки содержат всё, от сетевой работы (rxsocket.library) и общих библиотек (rmh.library, rexxtricks.library) до создания GUI (RxMUI, AWNPipe). Естественно есть и несколько внутренних библиотек, обеспечивающих дополнительные процедуры чтения и записи, расширенные математические операции, и прочие полезные функции, доступные с помощью rexxsupport.library и rexxsyslib.library. Внутренний набор команд включает в себя такие вещи, как ADDRESS, DO, IF, ELSE, INTERPRET, PARSE, SELECT, PULL, PUSH, и многое другое. Несомненно, ARexx сам по себе может быть мощным прикладным языком для разработки.
Несмотря на то, что в этой статье нет каких-либо конкретных примеров программирования, этот обзор даёт представление о возможностях ARexx. Сила ARexx заключается в обеспечении фундамента для разных приложений, взаимодействия процессов, и макро-языке. Думать, что ARexx это просто скриптовый язык - ошибочно; ARexx это гораздо больше. Это целый механизм, используемый прикладными разработчиками для формирования высокоэффективных составляющих в своих программах.
Примеры использования.
Пример 1, использование в качестве макроса:
Пример 2, использование для создания GUI: