|
Обновите ArcaOS до уровня NeoWPS
- Установите набор PNG иконок, нарисованных дизайнером, специализирующемся на оформлении OS/2
- Установите eSchemes 2018, чтобы менять цвета и кнопки на рабочем столе
|
REXX - потенциал платформы OS/2 |
TITLE: REXX - потенциал платформы OS/2
DATE: 2002-01-14 23:04:36
AUTHOR: Basil A. Sidorov
Что такое REXX? Какова его концепция?
Абревиатура REXX расшифровывается как REstructure eXtended eXecutor и
созвучна с латинским REX (король). История создания изложена автором,
Майком Колишау (Mike Cowlishaw) в
"Rexx brief history".
А началась эта история 29 марта 1979, когда была опубликована первая
спецификация нового языка. После обсуждения концепций, в конце 1979
года Майк реализовал первый интерпретатор. Первоначально новый язык
был доступен только внутри IBM, что с одной стороны позволяло учесть
мнения и пожелания большого числа людей, а с другой - делало возможным
внесение достаточно кардинальных изменений.
К 1982 году язык оформился в его теперешнем виде и получил вторую
букву "X".
В OS/2 REXX появился с версии 1.2, сначала в расширенной (EE), а с
версии 1.3 - и в стандартной редакции системы.
REXX - скриптовый язык и применяется там же, где применяются любые
скриптовые языки: когда возможности встроенного языка пакетной
обработки уже исчерпаны, а переход на "традиционное" программирование
себя еще не оправдывает.
Каждый скриптовый язык использует ту или иную концепцию. Основная
концепция REXX - "все есть строка". Другая весьма важная особенность
- отсутствие зарезервированых слов. Она гарантирует, что Ваши скрипты
не перестанут работать только потому, что в новой версии появилось
новое ключевое слово или встроенная функция, имена которых конфликтуют
с именами в Ваших скриптах.
В повседневной деятельности возникают задачи, которые могут быть прекрасно
решены с помощью REXX. Например, маленький шедуллер, обработчик текста,
работа с WPS. Каков этот круг задач?
Тривиальный пример работы с WPS - создание программных объектов с
помощью SysCreateObject() штатной библиотеки расширения RexxUtil. Или
SysOpenObject() с помощью которой можно запустить на исполнение
(DOS)программу с требуемыми настройками. А вообще, на
www.os2.spb.ru
лежит коллекция самых разных скриптов "на все случаи жизни".
Когда мне понадобилось скопировать "всё, что можно" с плохо читаемого
компакт-диска - написание скрипта заняло примерно полчаса. Вместе со
всеми украшательствами. Думаю, что поиски "чего-нибудь готового"
заняли бы больше времени:)
Какие REXX'ы бывают?
Можно выделить три ветви - Classic REXX, Object REXX и NetRexx.
Первые два входят в штатную поставку OS/2 начиная с Warp4.
Пользователи Warp3 могут установить Object REXX из архива
на хоббесе.
Эту же версию я рекомендую и для мерлина, а "сладкую парочку" RexxCRT.DLL/RexxUtil.DLL
из него - всем, кроме пользователей ACP1+.
Наиболее современная версия классического рекса это, видимо, Regina
Rexx, развиваемый Марком Хесслингом (Mark Hessling) и существующий как
проект на SourceForge.
Объектный рекс начал разрабатываться внутри IBM в начале 1990-х годов
и, насколько я понимаю, позиционируется IBM'ом как основной диалект и
заменитель "классики".
NetRexx был создан
и развивается Майком Колишау и представляет язык
Java-программирования с рексоподобным синтаксисом.
Где можно найти твои статьи про Object REXX?
Статьи опубликованы на сайте RDM/2, архив 1999 года.
Первая из них дублирует :) чти.мя ACP1, вторая сравнивает возможности ввода/вывода
классического и объектного REXX'ов.
Могут ли другие скриптовые языки (perl, vb) заменить REXX?
Мне сложно ответить на этот вопрос, т.к. я весьма шапочно знаком с
Perl'ом и еще меньше - с Visual Basic'ом.
Однако, читая "Изучаем Perl" Р.Л.Шварца и Т.Кристиансена, нельзя не
обратить внимание на сильную привязку Perl'а к юниксоподобным
системам, а VB раздражает большим числом своих инкарнаций.
Кроме того, рекс не просто общецелевой скриптовый язык, это еще и
"универсальный клей", используемый самыми разными компонентами OS/2 и
различными прикладными программами. Заменить его в этом качестве
может только другой рекс.
В частности, REXX используется инсталятором OS/2, широко применяется
при CID-инсталяции различных программ. Некоторые LanServer'овские
утилиты - тоже rexx-скрипты.
С чего начать изучение REXX?
Изучение REXX'а начинается с того же, что и все остальное - с чтения
штатной документации. Для тех, кому удобнее читать русское
руководство - нужен либо "русский Мерлин" либо (c)rexx.inf из него.
Руководство должно быть прочитано полностью. Особенно - раздел
"Встроенные функции". Это позволит не изобретать велосипеды типа
wordpos() или space().
В части синтаксиса нужно помнить об открывающей скобке:
length(string) - вызов функции "length" с аргументом "string", а
length (string) - объединение (через пробел) двух строк.
Некоторую сложность могут представлять кортежи (stem) с их правилами
подстановки "хвостовых" значений.
Но если воспользоваться rexxtry (интерактивный скрипт из штатной
поставки) - большинство вопросов выясняются легко и быстро.
'REXX Tips and Tricks'
- этот текст будет полезен начинающим?
Безусловно. Причем читать его нужно и тем, кто не собирается
использовать REXX, а просто хочет расширить свои познания об штатных
утилитах, языке пакетной ("обычные" .cmd) обработки и т.п. Скажем,
классическое: "SomeProg 2>&1 > nul" проще всего найти именно там.
Версия периодически меняется, так что искать лучше по слову "rxtt".
Что можно сказать о производительности? Какого размера бывают рексовые скрипты?
"Пузомеркой" интерпретатора является RexxCPS, который измеряет время
исполнения некоторых типичных операций. Но говоря о
производительности, следует помнить, что скорость работы процессоров
постоянно растет. Как следствие, использование скриптовых языков
вообще и REXX, в частности, становится все более удобным.
Размеры скриптов бывают самыми разными: от однострочного
/* SAY.CMD */ interpret 'say' arg(1)
до многосоткилобайтовых монстров типа PPWizard.
Практически же оптимальным является скрипт до 10-15 килобайт. Дело в
том, что интерпретация REXX-скриптов в OS/2 является двухстадийной.
На первой стадии строится так называемый токенизированый образ, на
второй - интерпретируется результат токенизации.
Если скрипт достаточно мал и токенизированый образ оказался менее
64Кб, он сохраняется в расширенных атрибутах файла, что ускоряет все
последующие запуски скрипта.
Если образ настолько велик, что не помещается в расширенных
аттрибутах, то первая стадия будет повторятся каждый раз, существенно
увеличивая общее время запуска скрипта. В такой ситуации (утилитой
rexxc) можно сохранить токенизированный образ как дисковый файл. Если
файлу присвоить расширение .cmd - он будет исполняться как обычный
текстовый скрипт.
Используя такую технику следует помнить, что формат токен-образа не
стандартизирован и зависит от версии интерпретатора. Таким образом
токенизированые скрипты (обычно) не годятся для распространения как
самостоятельная программа.
Здесь я бы отметил ещё одно преимущество Object Rexx - написание
модульных скриптов становится тривильным: аттрибут public для
общедоступных классов/процедур и директива requires в скриптах,
которые будут ими пользоваться. Для классов есть и более изощрённая
техника, которая позволит избавиться от накладных расходов, связанных
с директивой requires.
Что нужно сделать, чтобы использовать REXX в своей программе на Си?
Все необходимое (руководство, хедеры, примеры) есть в OS/2 Tookit.
Само API реализовано в рамках проекта SAA как SAA Rexx API и
достаточно универсально для использования самыми разными
интерпретаторами.
... А если я хочу использовать REXX,
как внутренний скриптовый язык своей программы?
Например, пользователь делает описание "3D-сцены" на рексе
(параметры объектов и сцены).
Дальше, остается воспользоваться готовым решением - запустить интерпретатор рекса.
При выполнении скрипта, вызываются функции программы (расстановка объектов и т.п.)
Совет простой - читать RexxPG/смотреть примеры/хедеры всё того же
ToolKit'а. Интерпретатор REXX'а имеет различные хуки, которые
позволяют определять собственные команды/функции, манипулировать пулом
переменных и вводом/выводом, перехватывать обработку ошибок и даже
подменять интерпретатор, если это нужно.
Лично я этим не занимался, но вот несколько примеров:
Есть ли REXX в других ОС? Какие у них ограничения?
Здесь сложно что-либо добавить к информации с авторского сайта.
Интерпретаторы рекса есть практически везде - от майнфреймов до
наладонных компьютеров. Я работал с рексом в PCDOS, с Региной
(Win32/DOS32), классикой и объектным рексом в OS/2. Если исключить
интерпретатор PCDOS (с крайне неприятным ограничением <64Кб на
значение переменной), то написание универсальных скриптов вполне
реально.
Вместе с тем, я считаю, что наиболее перспективным является Object
REXX, несмотря на то, что пока(?) он развивается исключительно фирмой
IBM и свободно доступен только для OS/2 и Linux'а.
Как ты думаешь, есть ли смысл предлагать REXX, как язык
для начинающих программистов? вместо Паскаля? (например, в школах) ...
Сложно сказать. С одной стороны и Pascal и Rexx - алгоритмические
языки, с другой - Pascal знает гораздо большее:) число
преподователей.
... идея сумасшедшая, но зато какие просторы для творчества
открываются перед "малышом"?!! (обновлять на десктопе объекты, доступ к SOM)
Если это десктоп OS/2 - безусловно:)
Есть ли гарантии, что REXX никуда не исчезнет?
"Полную гарантию может дать только страховой полис":) На самом деле в
"Философия Java" Брюса Эккеля есть такой (примерно) текст: "На одном
из моих семинаров Алан Голуб доказывал, что наиболее используемые в
настоящее время языки - Rexx и Cobol, в указанном порядке".
На вопросы отвечал: Василий А. Сидоров
Вопросы задавал: Eugene Gorbunoff
Комментарии: Timur Kazimirov 2002-01-15 02:01:58 | Класс!!! Пора книгу выпускать. | Eugene Gorbunoff 2002-01-15 02:22:09 | Рано еще. Первая страница не закончена =)
| Timur Kazimirov 2002-01-15 09:13:44 | Ну тогда еще лучше - будем продолжения ждать | Alexander Lapshin 2002-01-15 20:19:57 | Очень интересно!
Когда следующее интервью?
Может проинтервьюировать еще ребят lgs.kiev.ua ? | Сергей 2002-01-19 05:42:40 | В свежей статье на os2ezine
[url] сказано, что "At one time Rexx was going away to be replaced by Visual Basic, IBM's new corporate scripting language; IBM's basic is dead and Rexx still survives."
Как обстоят дела на самом деле? IBM выбрал VB или REXX останется жив?
| stellar 2002-10-16 15:07:21 | "шапочно знаком с Perl, на настораживает его сильная привязка к
юниксоподобным системам".
-- идиот | Дмитрий 2003-04-04 17:06:09 | Rexx - не типизированный язык, поэтому интерпретатор иногда понимает строку не так, как задумывалось автором программы. В чем-то это является большим недостатком, объяснимым древностью языка.
В полуоси cmd.exe определяет тип батника (простой батник или rexx-программа) по первой строке. У rexx-программ она является символом комментария. У меня вопрос к специалистам: это поведение прошито в cmd.exe или как-то настраивается. В частности, как прикручивается Perl? | Стажёр 2004-03-30 17:31:15 | С одной стороны, я бы не стал покупать книгу про REXX, написанную Василием Сидоровым, с другой стороны...
Если бы в мире компьтеров чаще думали головой, то не было бы PHP и Java, а были бы REXX и FORT ;-)
Калачихин Владимир | Старшина 2005-05-30 14:25:26 | >> Если бы в мире компьтеров чаще думали головой, то не было бы PHP и Java, а были бы REXX и FORT ;-)
Правильно, уважаю, мыслишь как стажер. Подрастешь - поймешь побольше. | Chuk 2005-05-31 12:14:26 | О чем вы спорите. Каждый язык хорош для того для чего он создавался. И Perl и Java и C# и Delphi и C++ для своих целей просто супер. За другие языки не могу сказать потому что не работал. | disputant 2010-08-21 22:08:20 | "Полную гарантию может дать только страховой полис"
Учите классику :) - Бендер говорил о СПОКОЙСТВИИ, а не о гарантии... |
Прокомментируйте эту статью (напоминаем, автор работал над текстом несколько недель, уважайте мнение других).
|
В состав eComStation 2.0 включен офисный пакет OpenOffice.org 3.x с поддержкой формата Microsoft Office Open XML (.docx и т.п.) |
|
|