Welcome to eComStation.RU site!

Select your language: Russian English Deutch Spanish Italian Portuguese Czech Polish French

Frequently asked questions and answers:

eComStation.RU

ru · en · de · es · it · pt · cz · pl · fr
eComStation - это совершенно другая операционная система для PC (IBM OS/2 Warp)
Программы, новости, статьи, поддержка пользователей, оборудование, вопросы и ответы.
 
      Что такое OS/2?НовостиУстановкаОбновлениеПрименениеБудущееСообществоКупить    
(Карта сайта)

 
 
Списки протестированного OS/2 оборудования
Как получить драйверы OS/2 бесплатно

 
Обновление

 
Программы

 
(Санкт-Петербург)

 
Преимущества (1)

 
Разработчику (1)

 
(Пайпы программ)

 
Компании: (1)

 
История (1):

 
(Бонусы)

 
Советы:

 
(Барьеры и решения)

 
Технологии: (1)

 
(Применение в науке, лаборатории, ..)

 

 
Готовые решения:

 
Новая eComStation:

 
Будущее: (1)

 
(Ссылки на другие сайты)

 
(Картинка дня)

 
Артефакты OS/2

 
Гаджеты

ArcaOS 5.0 Русская версия
Пакет русификации ArcaOS 5.0 OS/2 давно доступен. Поддерживается любая версия: 5.0, 5.0.1, 5.0.2.

eCo Software может выпустить и другие пакеты (Немецкий, Голландский, Бразильский Португальский, Испанский, Шведский и т.д.)

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

Попробуй программу:

Где найти утилиты для сбора системной информации? Сайт SysInfo.

Комментарии:

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

"Полную гарантию может дать только страховой полис"

Учите классику :) - Бендер говорил о СПОКОЙСТВИИ, а не о гарантии...

Прокомментируйте эту статью (напоминаем, автор работал над текстом несколько недель, уважайте мнение других).


Ваше имя:

Ваш E-Mail:

CODE:
......

  

Ваш комментарий:


eComStation легко обслуживать: a) Быстрая установка ОС. 20 минут и готова, b) Универсальные драйверы, можно легко заменять компоненты компьютеров - система всё равно загрузится и будет работать, c) Для ремонтников: удобно чинить компьютеры Windows, загрузив eComStation (нет опасности заражения вирусами)

Статьи

Операционная система
Программное обеспечение
Оборудование
Для разработчика
Разное
Колонка редактора


Готовая eComStation на SSD диске

 



Самая комментируемая статья за месяц: Установка ArcaOS (OS/2) для аудио-проигрывателя (Русский)



Последний активный опрос: Какая высота барьера RPM?

IBM OS/2 Warp

 
Обучение новичков

Списки протестированного OS/2 оборудования

 
Статьи


   
  Почему eComStation?
Возможности
Особенности
Применение
Ролики и скриншоты
   eComStation для
для бизнесменов
для студентов и инженеров
для продавцов компьютеров
сообщество пользователей
   Разработчик
Распространить программу
Описание API, библиотеки
Начать новый проект
Конкурсы
   Программы
Он-лайн каталог
Выбрать через eCo Market
   Служба поддержки
Отправить вопрос
Купить eComStation
Вопросы и ответы
Обучение новичков
 
 
© 2001 - 2018 eCo Software, All rights reserved
eComStation is a registered trademark of Serenity Systems International
OS/2 Warp is a registered trademark of IBM Corporation
 

 

 
Картинка дня: