НОВОЕ: OS/2 GURU - Вопросы и ответы ru · en · de · es · it · pt · cz · pl · fr

OS/2.GURU Library

Reviews / articles about OS/2 eComStation ArcaOS

Operating systems
ArcaOS, eComStation, IBM OS/2 Warp
eComStation myths 

Latest  
 
 
Blonde Guy

Reformat Утилита для форматирования USB флешек, USB винчестеров (для совместимости с OS/2)

 

(promo)

Unsorted

 

 

AD: ArcaOS 5.1 Russian LIP
Russian ARCAOS exists and it's available since the middle of 2017. All versions are supported: 5.1, 5.1.1.

eCo Software is able to maintain OS/2 LIP packages for any other language (German, Dutch, Brazilian Portuguese, Spanish, Sweden, etc)

REXX - Potential of OS/2 platform


TITLE: REXX - Potential of OS/2 platform

DATE: 2002-01-14 23:04:36

AUTHOR: Basil A. Sidorov
Please use online translator
go to http://translate.google.com
and request the translation of http://ru.ecomstation./projects/reviews/index.php?id=39
to your language

Что такое 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

Test the program:

T&V HappyPlayer - control of TV-tuners Brooktree 848/878

Comments:

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

"...... ........ ..... .... ...... ......... ....."

..... ........ :) - ...... ....... . ..........., . .. . ...........

How to prevent data loss? a) don't use old version of JFS driver. b) Don't boot from old eCS CD1 (if you take eCS 2.0 CD1, then disable its disk checker else it can kill your partitions), Advice how to use JFS filesystem

 

Siberian OS/2

 


 

 

ArcaOS 5.1.1 whatsnew - PNG icons

PNG icons on Desktop

PNG icons on Desktop. (instead of ancient .ico designed in 1994)

Blonde Guy

FOC file selector

eCo Software have created File Open Container - modern dialog to open/select files.

Some remarks about FOC development

// надо на ENG!!

 
Every conference is important.

Warpstock Europe 2017

Interview with Yuri Dario
What do we discuss? I don't remember.

What was happening at that conference?

 

(C) OS2.GURU 2001 -- 2025