Object REXX — это универсальный интерпретатор объектно-ориентированного языка программирования, объектно-ориентированного (основанного на классах) языка программирования высокого уровня. Сегодня его часто называют ooRexx (сокращение от «Open Object Rexx»), который является прямым преемником Object REXX с открытым исходным кодом.
Это расширение языка программирования REXX|Rexx (часто называемого «Classic Rexx»), сохраняющее все функции и синтаксис, но добавляющее объектно-ориентированное программирование (ООП) и другие усовершенствования. Следуя влиянию Classic Rexx, ooRexx спроектирован так, чтобы его было легко изучать, использовать и обслуживать. Соответствие американскому национальному институту стандартов «Информационные технологии — язык программирования REXX» | ANSI X3.274-1996
Существует также объектно-ориентированная версия Rexx («ру!»), которая изначально была разработана Kilowatt Software и больше не разрабатывается.
== История ==
В 1988 году проект Oryx в IBM под техническим руководством Саймона Нэша Классик экспериментировал с объединением Classic Rexx с объектной моделью Smalltalk (язык программирования)|Smalltalk.
Эта первоначальная работа позже привела к созданию первого прототипа Object REXX, представленного в 1992 году под руководством Рика Макгуайра. В 1994 году IBM объявила, что Object REXX заменит интерпретатор Classic Rexx в следующей версии OS/2.
12 октября 2004 г. IBM объявила о прекращении выпуска Object REXX и передала исходный код и лицензионные права Rexx Language Association (RexxLA). Исходный код, выпущенный IBM, не содержал необходимых классов для поддержки IBM System Object Model (SOM) и Workplace Shell (WPS). Последняя версия Object REXX для OS/2 содержит классы, которые также можно запускать для продуктов-преемников OS/2, eComStation и ArcaOS.
В 2005 году RexxLA выпустила ooRexx 3.0.0, новую версию Object REXX под лицензией Eclipse Public License|Common Public License.
== Обзор версии ==
В следующей таблице представлен обзор наиболее важных версий Object REXX и ooRexx. Все опубликованные версии ooRexx и связанная с ними документация находятся в свободном доступе на SourceForge|Sourceforge.
== Языковой дизайн ==
Дизайн языка ooRexx следует философии Classic Rexx, целью которой является создание «человекоориентированного» языка программирования, который легко изучать, программировать, запоминать и поддерживать. Частично это достигается за счет небольшого объема речи и соблюдения принципа наименьшей неожиданности.
Следуя принципу проектирования «документация перед реализацией», ooRexx предоставляет исчерпывающую документацию в соответствии с Руководством по стилю IBM с синтаксическими диаграммами и примерами.
=== Инструкции ===
Как и в Classic Rexx, здесь есть операторы присваивания, ключевых слов и команд. В целях сохранения небольшого размера языка в ooRexx 5.0.0 имеется только тридцать операторов ключевых слов.
=== Бесплатное форматирование ===
Позиционирование исходного текста не имеет значения для ooRexx, что обеспечивает высокую степень гибкости. Перед выполнением интерпретатор объединяет несколько пробелов без кавычек в один, при этом строка, заключенная в кавычки (одинарные или двойные), не модифицируется. Для объединения можно использовать две вертикальные линии (||), разделяющие термины пробелами или прилегающие термины. При желании строки кода можно распределить по нескольким строкам, используя запятую (,) или знак минус (-) в качестве символа продолжения. Кроме того, несколько строк можно объединить в одну, используя точку с запятой (;).
=== Регистронезависимо ===
Как и в случае с Classic Rexx, в ooRexx чувствительность к регистру | верхний и нижний регистр не играют роли.
Интерпретатор автоматически записывает все символы вне кавычек с заглавной буквы перед их выполнением. Поскольку нет необходимости различать прописные и строчные буквы, требуется изучать меньше дополнительных деталей и можно избежать досадных синтаксических ошибок.
=== Всё является объектом ===
В то время как Classic Rexx следует философии «все является строкой» и использует строку в качестве единственного типа данных, ooRexx рассматривает все как объекты, включая строки, массивы, потоки и многие другие. Для управления объектами используются методы, а не традиционные функции.
В ooRexx переменная, содержащая строку, является ссылкой на строковый объект, который не нужно объявлять, что снижает накладные расходы по сравнению с типизацией (информатика) | строго типизированные языки.
=== Парадигма сообщения ===
Подобно парадигме обмена сообщениями, реализованной Аланом Кеем в Smalltalk, с объектами можно взаимодействовать путем именования методов с помощью сообщений.
В отличие от Smalltalk, здесь имеется явный оператор сообщения, тильда (~), слева от которого находится объект получения и возвращается результат операции. Отправка сообщения приводит к активации метода с соответствующим именем метода и манипуляции с полученным объектом. Как и в случае со Smalltallk, сообщения могут быть каскадными, если вместо одной используются две тильды (~~), возвращая объект, получивший метод, а не полученный результат.
Базовое поведение большинства методов можно изменить, указав опцию. Эту опцию можно записать как прописью, так и сокращенно, и опять же, заглавные буквы не важны. Это обеспечивает буквальное понимание при чтении кода и снижает трудоемкость обучения для новичков, поскольку нет необходимости изучать значение сокращений.
=== Межплатформенная совместимость ===
ooRexx разработан с сохранением всех функций Classic Rexx и по существу соответствует стандарту ANSI для языка Rexx (X3.274-1996, «Язык программирования REXX»).
Скрипты Rexx обычно выполняются без изменений под ooRexx, что позволяет легко перейти к объектно-ориентированной парадигме без потери времени, затраченного на исходный код.
== Возможности ==
В частности, ooRexx предоставляет такие функции ООП, как наследование (программирование)|наследование, полиморфизм, инкапсуляция данных (программирование)|инкапсуляция данных и множественное наследование через классы миксинов|миксинов. Интерпретатор включает в себя утилиту rexxc, которая позволяет компилировать программы ooRexx и дополнительно кодировать их в Base64, что ускоряет запуск программы, поскольку первоначальный анализ и компиляция уже выполнены.
=== Парсинг ===
Оператор ключевого слова PARSE позволяет быстро и гибко анализировать строку и присваивать ее части различным переменным за один шаг.
=== Процедура и функция ===
ooRexx предоставляет новый способ определения процедур и функций, не относящихся к конкретному классу, с помощью директивы ::ROUTINE. Оператор CALL можно использовать для вызова подпрограммы как процедуры. Кроме того, подпрограммы, возвращающие значения с использованием операторов ключевого слова RETURN, можно активировать посредством вызовов функций, указав имя подпрограммы, за которым следуют круглые скобки. Содержимое скобок передается в качестве аргумента подпрограмме. Оператор PARSE можно использовать для анализа полученных аргументов и присвоения их переменным.
=== Класс и метод ===
Оператор ::CLASS, за которым следует имя класса, заставляет интерпретатор определить новый класс. После имени класса такие параметры, как METACLASS, SUBCLASS, MIXINCLASS, ABSTRACT и INHERIT можно использовать для установки. Директива ::METHOD может использоваться для определения нового метода класса, связанного с предыдущей директивой ::CLASS. Оператор ::ATTRIBUTE используется для определения функции доступа для получения или назначения объектной переменной. С помощью EXPOSE объектная переменная может быть напрямую доступна методу.
=== Многопоточность ===
ooRexx реализует объектно-ориентированный параллелизм, при котором объекты имеют независимые ресурсы для выполнения методов и могут взаимодействовать друг с другом посредством сообщений. Несколько объектов могут быть активны одновременно и обмениваться сообщениями для синхронизации.
=== Трассировка ===
Как и в Classic Rexx, ключевое слово TRACE и встроенная функция TRACE() позволяют отладку. В обоих случаях можно контролировать уровень детализации и активировать интерактивную отладку во время выполнения.
В ooRexx 5.1.0 представлен класс TraceObject, который содержит дополнительную информацию, такую как временные метки, экземпляры интерпретатора, идентификаторы потоков, в которые отправляются сообщения, и состояние защитных блокировок для программ многопоточной трассировки. Этот класс упрощает определение того, какой метод в данный момент охраняется и блокируется.
== Встроенные функции и классы ==
Поскольку ooRexx стремится быть совместимым с Classic Rexx, его встроенные функции по-прежнему доступны.
В соответствии со своими объектно-ориентированными корнями, ooRexx предоставляет большую часть своей функциональности через встроенные классы и методы. В состав ooRexx 5.0.0 входит в общей сложности 57 классов, разделенных на группы классов Fundamental, Stream, Collection и Utility.
=== Фундаментальный ===
Классы этой группы являются важнейшими строительными блоками всех остальных классов. Класс Object является корнем иерархии классов, поэтому его методы и атрибуты доступны всем созданным объектам каждого класса. Класс Class (называемый метаклассом) используется для управления свойствами класса (например, его объектами методов) и используется для создания экземпляров (также объектов и значений). Таким образом, для каждой директивы ::CLASS создается экземпляр этого класса (также называемый объектом класса).
=== Поток ===
=== Коллекция ===
Коллекция — это объект, содержащий несколько элементов со связанными индексами, которые позволяют извлекать элементы с помощью методов AT или []. Существуют классы MapCollection, SetCollection и OrderedCollection, каждый из которых позволяет манипулировать определенным типом коллекции.
MapCollection — это класс-примесь, определяющий базовый набор методов, реализуемых всеми коллекциями, которые сопоставляют индекс со значением. Классы Directory, StringTable, IdentityTable, Properties, Table, Relation и Stem наследуют эти методы.
Объект Stem автоматически создается при использовании составной переменной. Как и в Classic Rexx, такая переменная состоит из основы и хвостовой части, разделенных точкой (.). Хотя основа должна начинаться с буквы, в конце может быть любой символ. Использование одного числового хвоста создает тот же эффект, что и массив, а несколько числовых хвостов можно использовать для создания многомерного массива.
SetCollections — это специальные типы MapCollections, где индекс и элемент являются одним и тем же объектом. Хотя индексы в объекте Set уникальны, каждый индекс может появляться в объекте Bag более одного раза.
OrderedCollection — это класс-примесь, определяющий базовые методы для всех коллекций, имеющих внутренний порядок индексов, например List, Queue, CircularQueue и Массив. Объект List позволяет добавлять новые элементы, каждый из которых имеет новый индекс, в любую позицию коллекции. Связанный индекс остается действительным для этого элемента независимо от других добавлений или удалений. Объект Queue позволяет удалять элементы из начала очереди и добавлять их в хвост или заголовок. Объект CircularQueue — это очередь заранее определенного размера. По достижении конца CircularQueue в начало вставляются новые элементы, заменяющие предыдущие элементы.
Массив — это последовательная коллекция, упорядоченная по целочисленным индексам. Как и некоторые другие классы коллекций, класс Array предоставляет метод MAKESTRING для кодирования своих элементов в виде строки.
=== Утилита ===
Классы DateTime или TimeSpan поддерживают получение и форматирование даты, времени или отметки времени в различных форматах и позволяют выполнять арифметические операции между ними. Несколько классов Comparator упрощают сортировку для встроенных классов, таких как File, DateTime и других. Класс Supplier и его подкласс StreamSupplier позволяют перечислять коллекцию элементов вместе с коллекцией индексов. Класс Validate предоставляет методы для проверки того, относятся ли данные аргументы к правильному классу и типу или находятся ли они в числовом диапазоне. Экземпляр VariableReference поддерживает ссылку, а экземпляр WeakReference создает ссылку на другой незакрепленный объект.
Регулярное выражение — это шаблон, который можно использовать для поиска строк. Чтобы повысить читаемость шаблонов в коде, класс RegularExpression позволяет использовать символические имена, инкапсулированные через двоеточия (:). Например, строка, содержащая только буквы, обычно описываемая как [A-Za-z], может быть сокращена как [:alpha:].
Другие классы помогают получить информацию о контексте текущего исполняемого кода (RexxContext), языке Rexx или исполняющей платформе (RexxInfo) и особенностях выполнения (StackFrame). код>). Классы Buffer и Pointer специально разработаны для поддержки написания методов и функций в машинном коде с использованием API C/C++. Классы Alarm и Ticker предоставляют функции уведомления, а классы EventSempahore и MutexSempahore реализуют механизмы синхронизации для многопоточных действий. Класс Monitor позволяет маршрутизировать сообщения к различным целевым объектам, а класс RexxQueue обеспечивает объектно-подобный доступ к внешним очередям данных Rexx.
== Внешние пакеты и библиотеки ==
Внешние библиотеки можно интегрировать в программу с помощью директивы ::REQUIRES и опции LIBRARY. Такие библиотеки обычно организованы вокруг функций, специфичных для конкретной области действия.
Библиотека RxSock обеспечивает интеграцию протоколов управления передачей/Интернет-протокола|TCP/IP,
Многие из этих внешних пакетов и библиотек также совместимы с другими реализациями REXX|Rexx.
== Языковые мосты ==
Хотя ooRexx больше не включает классы для поддержки SOM и WPS по сравнению с Object REXX, он предоставляет интерфейс программирования|программные интерфейсы для взаимодействия с кодом, написанным на C (язык программирования)|C или C++.
=== API C/C++ ===
Как и Classic Rexx, ooRexx включает программные интерфейсы для расширения Rexx приложениями, написанными на C, и наоборот. Это позволяет создавать функции обратного вызова для подкоманд, используемых в программах Rexx, работающих как макросы, внешние функции, которые позволяют прямое расширение набора функций ooRexx, а также системные функции, которые настраивают поведение интерпретатора.
В ooRexx 4.0.0 были представлены интерфейсы, которые позволяют приложениям C++ расширять ooRexx и наоборот. К ним относятся функции обратного вызова для методов и функций, написанных на C++, которые могут расширять ooRexx и упаковываются как внешние библиотеки. Они называются динамически подключаемыми библиотеками в Windows и общими библиотеками в системах на базе Unix. Внешнюю библиотеку можно использовать с директивой ::REQUIRES или с ключевым словом EXTERNAL как часть ::ROUTINE, Можно загрузить директиву ::METHOD или ::ATTRIBUTE.
=== Java ===
Используя интерфейсы C++, BSF4ooRexx был разработан как двунаправленный мост Java на основе Bean Scripting Framework. Этот мост позволяет ooRexx взаимодействовать с объектами Java, а Java — с приложениями Rexx.
=== Автоматизация Windows ===
Расширение Windows включает в себя механизм Windows Script Host (WSH), который можно использовать для выполнения распространенных задач автоматизации. Сюда также входит поддержка связывания и внедрения объектов/ActiveX (OLE), что позволяет взаимодействовать с программами Windows через OLEObject.
== Примечания ==
== См. также ==
* Сравнение языков программирования
* Расписание языков программирования
* РЕКС
== Литература ==
* * * * *
* [https://www.rexxla.org/ Языковая ассоциация Рекс]
* sourceforge:projects/oorexx/files/oorexx-docs/5.0.0/|Открыть документацию по Object Rexx 5.0.0
* sourceforge:projects/oorexx/|Открыть Object Rexx на Sourceforge
* [https://www.oorexx.org/ Веб-сайт Open Object Rexx]
* [https://rosettacode.org/wiki/Category:OoRexx Открытый объект Rexx в Rosetta Code]
* sourceforge:projects/bsf4oorexx/|BSF4ooRexx на Sourceforge
Категория:Язык сценариев
Категория:Объектно-ориентированный язык программирования
Категория:Язык программирования
Категория:Программное обеспечение IBM
Подробнее: https://de.wikipedia.org/wiki/Object_REXX
Объект РЕКС ⇐ Васина Википедия
Новости с планеты OGLE-2018-BLG-0677
Что вы не только не знали, но и не хотели знать
Что вы не только не знали, но и не хотели знать
-
Автор темыwiki_de
- Всего сообщений: 49092
- Зарегистрирован: 13.01.2023
1734073338
wiki_de
Object REXX — это универсальный интерпретатор объектно-ориентированного языка программирования, объектно-ориентированного (основанного на классах) языка программирования высокого уровня. Сегодня его часто называют ooRexx (сокращение от «Open Object Rexx»), который является прямым преемником Object REXX с открытым исходным кодом.
Это расширение языка программирования REXX|Rexx (часто называемого «Classic Rexx»), сохраняющее все функции и синтаксис, но добавляющее объектно-ориентированное программирование (ООП) и другие усовершенствования. Следуя влиянию Classic Rexx, ooRexx спроектирован так, чтобы его было легко изучать, использовать и обслуживать. Соответствие американскому национальному институту стандартов «Информационные технологии — язык программирования REXX» | ANSI X3.274-1996
Существует также объектно-ориентированная версия Rexx («ру!»), которая изначально была разработана Kilowatt Software и больше не разрабатывается.
== История ==
В 1988 году проект Oryx в IBM под техническим руководством Саймона Нэша Классик экспериментировал с объединением Classic Rexx с объектной моделью Smalltalk (язык программирования)|Smalltalk.
Эта первоначальная работа позже привела к созданию первого прототипа Object REXX, представленного в 1992 году под руководством Рика Макгуайра. В 1994 году IBM объявила, что Object REXX заменит интерпретатор Classic Rexx в следующей версии OS/2.
12 октября 2004 г. IBM объявила о прекращении выпуска Object REXX и передала исходный код и лицензионные права Rexx Language Association (RexxLA). Исходный код, выпущенный IBM, не содержал необходимых классов для поддержки IBM System Object Model (SOM) и Workplace Shell (WPS). Последняя версия Object REXX для OS/2 содержит классы, которые также можно запускать для продуктов-преемников OS/2, eComStation и ArcaOS.
В 2005 году RexxLA выпустила ooRexx 3.0.0, новую версию Object REXX под лицензией Eclipse Public License|Common Public License.
== Обзор версии ==
В следующей таблице представлен обзор наиболее важных версий Object REXX и ooRexx. Все опубликованные версии ooRexx и связанная с ними документация находятся в свободном доступе на SourceForge|Sourceforge.
== Языковой дизайн ==
Дизайн языка ooRexx следует философии Classic Rexx, целью которой является создание «человекоориентированного» языка программирования, который легко изучать, программировать, запоминать и поддерживать. Частично это достигается за счет небольшого объема речи и соблюдения принципа наименьшей неожиданности.
Следуя принципу проектирования «документация перед реализацией», ooRexx предоставляет исчерпывающую документацию в соответствии с Руководством по стилю IBM с синтаксическими диаграммами и примерами.
=== Инструкции ===
Как и в Classic Rexx, здесь есть операторы присваивания, ключевых слов и команд. В целях сохранения небольшого размера языка в ooRexx 5.0.0 имеется только тридцать операторов ключевых слов.
=== Бесплатное [url=viewtopic.php?t=28138]форматирование[/url] ===
Позиционирование исходного текста не имеет значения для ooRexx, что обеспечивает высокую степень гибкости. Перед выполнением интерпретатор объединяет несколько пробелов без кавычек в один, при этом строка, заключенная в кавычки (одинарные или двойные), не модифицируется. Для объединения можно использовать две вертикальные линии (||), разделяющие термины пробелами или прилегающие термины. При желании строки кода можно распределить по нескольким строкам, используя запятую (,) или знак минус (-) в качестве символа продолжения. Кроме того, несколько строк можно объединить в одну, используя точку с запятой (;).
=== Регистронезависимо ===
Как и в случае с Classic Rexx, в ooRexx чувствительность к регистру | верхний и нижний регистр не играют роли.
Интерпретатор автоматически записывает все символы вне кавычек с заглавной буквы перед их выполнением. Поскольку нет необходимости различать прописные и строчные буквы, требуется изучать меньше дополнительных деталей и можно избежать досадных синтаксических ошибок.
=== Всё является объектом ===
В то время как Classic Rexx следует философии «все является строкой» и использует строку в качестве единственного типа данных, ooRexx рассматривает все как объекты, включая строки, массивы, потоки и многие другие. Для управления объектами используются методы, а не традиционные функции.
В ooRexx переменная, содержащая строку, является ссылкой на строковый объект, который не нужно объявлять, что снижает накладные расходы по сравнению с типизацией (информатика) | строго типизированные языки.
=== Парадигма сообщения ===
Подобно парадигме обмена сообщениями, реализованной Аланом Кеем в Smalltalk, с объектами можно взаимодействовать путем именования методов с помощью сообщений.
В отличие от Smalltalk, здесь имеется явный оператор сообщения, тильда (~), слева от которого находится объект получения и возвращается результат операции. Отправка сообщения приводит к активации метода с соответствующим именем метода и манипуляции с полученным объектом. Как и в случае со Smalltallk, сообщения могут быть каскадными, если вместо одной используются две тильды (~~), возвращая объект, получивший метод, а не полученный результат.
Базовое поведение большинства методов можно изменить, указав опцию. Эту опцию можно записать как прописью, так и сокращенно, и опять же, заглавные буквы не важны. Это обеспечивает буквальное понимание при чтении кода и снижает трудоемкость обучения для новичков, поскольку нет необходимости изучать значение сокращений.
=== Межплатформенная совместимость ===
ooRexx разработан с сохранением всех функций Classic Rexx и по существу соответствует стандарту ANSI для языка Rexx (X3.274-1996, «Язык программирования REXX»).
Скрипты Rexx обычно выполняются без изменений под ooRexx, что позволяет легко перейти к объектно-ориентированной парадигме без потери времени, затраченного на исходный код.
== Возможности ==
В частности, ooRexx предоставляет такие функции ООП, как наследование (программирование)|наследование, полиморфизм, инкапсуляция данных (программирование)|инкапсуляция данных и множественное наследование через классы миксинов|миксинов. Интерпретатор включает в себя утилиту rexxc, которая позволяет компилировать программы ooRexx и дополнительно кодировать их в Base64, что ускоряет запуск программы, поскольку первоначальный анализ и компиляция уже выполнены.
=== Парсинг ===
Оператор ключевого слова PARSE позволяет быстро и гибко анализировать строку и присваивать ее части различным переменным за один шаг.
=== Процедура и функция ===
ooRexx предоставляет новый способ определения процедур и функций, не относящихся к конкретному классу, с помощью директивы ::ROUTINE. Оператор CALL можно использовать для вызова подпрограммы как процедуры. Кроме того, подпрограммы, возвращающие значения с использованием операторов ключевого слова RETURN, можно активировать посредством вызовов функций, указав имя подпрограммы, за которым следуют круглые скобки. Содержимое скобок передается в качестве аргумента подпрограмме. Оператор PARSE можно использовать для анализа полученных аргументов и присвоения их переменным.
=== Класс и метод ===
Оператор ::CLASS, за которым следует имя класса, заставляет интерпретатор определить новый класс. После имени класса такие параметры, как METACLASS, SUBCLASS, MIXINCLASS, ABSTRACT и INHERIT можно использовать для установки. Директива ::METHOD может использоваться для определения нового метода класса, связанного с предыдущей директивой ::CLASS. Оператор ::ATTRIBUTE используется для определения функции доступа для получения или назначения объектной переменной. С помощью EXPOSE объектная переменная может быть напрямую доступна методу.
=== Многопоточность ===
ooRexx реализует объектно-ориентированный параллелизм, при котором объекты имеют независимые ресурсы для выполнения методов и могут взаимодействовать друг с другом посредством сообщений. Несколько объектов могут быть активны одновременно и обмениваться сообщениями для синхронизации.
=== Трассировка ===
Как и в Classic Rexx, ключевое слово TRACE и встроенная функция TRACE() позволяют отладку. В обоих случаях можно контролировать уровень детализации и активировать интерактивную отладку во время выполнения.
В ooRexx 5.1.0 представлен класс TraceObject, который содержит дополнительную информацию, такую как временные метки, экземпляры интерпретатора, идентификаторы потоков, в которые отправляются сообщения, и состояние защитных блокировок для программ многопоточной трассировки. Этот класс упрощает определение того, какой метод в данный момент охраняется и блокируется.
== Встроенные функции и классы ==
Поскольку ooRexx стремится быть совместимым с Classic Rexx, его встроенные функции по-прежнему доступны.
В соответствии со своими объектно-ориентированными корнями, ooRexx предоставляет большую часть своей функциональности через встроенные классы и методы. В состав ooRexx 5.0.0 входит в общей сложности 57 классов, разделенных на группы классов Fundamental, Stream, Collection и Utility.
=== Фундаментальный ===
Классы этой группы являются важнейшими строительными блоками всех остальных классов. Класс Object является корнем иерархии классов, поэтому его методы и атрибуты доступны всем созданным объектам каждого класса. Класс Class (называемый метаклассом) используется для управления свойствами класса (например, его объектами методов) и используется для создания экземпляров (также объектов и значений). Таким образом, для каждой директивы ::CLASS создается экземпляр этого класса (также называемый объектом класса).
=== Поток ===
=== Коллекция ===
Коллекция — это объект, содержащий несколько элементов со связанными индексами, которые позволяют извлекать элементы с помощью методов AT или []. Существуют классы MapCollection, SetCollection и OrderedCollection, каждый из которых позволяет манипулировать определенным типом коллекции.
MapCollection — это класс-примесь, определяющий базовый набор методов, реализуемых всеми коллекциями, которые сопоставляют индекс со значением. Классы Directory, StringTable, IdentityTable, Properties, Table, Relation и Stem наследуют эти методы.
Объект Stem автоматически создается при использовании составной переменной. Как и в Classic Rexx, такая переменная состоит из основы и хвостовой части, разделенных точкой (.). Хотя основа должна начинаться с буквы, в конце может быть любой символ. Использование одного числового хвоста создает тот же эффект, что и массив, а несколько числовых хвостов можно использовать для создания многомерного массива.
SetCollections — это специальные типы MapCollections, где индекс и элемент являются одним и тем же объектом. Хотя индексы в объекте Set уникальны, каждый индекс может появляться в объекте Bag более одного раза.
OrderedCollection — это класс-примесь, определяющий базовые методы для всех коллекций, имеющих внутренний порядок индексов, например List, Queue, CircularQueue и Массив. Объект List позволяет добавлять новые элементы, каждый из которых имеет новый индекс, в любую позицию коллекции. Связанный индекс остается действительным для этого элемента независимо от других добавлений или удалений. Объект Queue позволяет удалять элементы из начала очереди и добавлять их в хвост или заголовок. Объект CircularQueue — это очередь заранее определенного размера. По достижении конца CircularQueue в начало вставляются новые элементы, заменяющие предыдущие элементы.
Массив — это последовательная коллекция, упорядоченная по целочисленным индексам. Как и некоторые другие классы коллекций, класс Array предоставляет метод MAKESTRING для кодирования своих элементов в виде строки.
=== Утилита ===
Классы DateTime или TimeSpan поддерживают получение и [url=viewtopic.php?t=28138]форматирование[/url] даты, времени или отметки времени в различных форматах и позволяют выполнять арифметические операции между ними. Несколько классов Comparator упрощают сортировку для встроенных классов, таких как File, DateTime и других. Класс Supplier и его подкласс StreamSupplier позволяют перечислять коллекцию элементов вместе с коллекцией индексов. Класс Validate предоставляет методы для проверки того, относятся ли данные аргументы к правильному классу и типу или находятся ли они в числовом диапазоне. Экземпляр VariableReference поддерживает ссылку, а экземпляр WeakReference создает ссылку на другой незакрепленный объект.
Регулярное выражение — это шаблон, который можно использовать для поиска строк. Чтобы повысить читаемость шаблонов в коде, класс RegularExpression позволяет использовать символические имена, инкапсулированные через двоеточия (:). Например, строка, содержащая только буквы, обычно описываемая как [A-Za-z], может быть сокращена как [:alpha:].
Другие классы помогают получить информацию о контексте текущего исполняемого кода (RexxContext), языке Rexx или исполняющей платформе (RexxInfo) и особенностях выполнения (StackFrame). код>). Классы Buffer и Pointer специально разработаны для поддержки написания методов и функций в машинном коде с использованием API C/C++. Классы Alarm и Ticker предоставляют функции уведомления, а классы EventSempahore и MutexSempahore реализуют механизмы синхронизации для многопоточных действий. Класс Monitor позволяет маршрутизировать сообщения к различным целевым объектам, а класс RexxQueue обеспечивает объектно-подобный доступ к внешним очередям данных Rexx.
== Внешние пакеты и библиотеки ==
Внешние библиотеки можно интегрировать в программу с помощью директивы ::REQUIRES и опции LIBRARY. Такие библиотеки обычно организованы вокруг функций, специфичных для конкретной области действия.
Библиотека RxSock обеспечивает интеграцию протоколов управления передачей/Интернет-протокола|TCP/IP,
Многие из этих внешних пакетов и библиотек также совместимы с другими реализациями REXX|Rexx.
== Языковые мосты ==
Хотя ooRexx больше не включает классы для поддержки SOM и WPS по сравнению с Object REXX, он предоставляет интерфейс программирования|программные интерфейсы для взаимодействия с кодом, написанным на C (язык программирования)|C или C++.
=== API C/C++ ===
Как и Classic Rexx, ooRexx включает программные интерфейсы для расширения Rexx приложениями, написанными на C, и наоборот. Это позволяет создавать функции обратного вызова для подкоманд, используемых в программах Rexx, работающих как макросы, внешние функции, которые позволяют прямое расширение набора функций ooRexx, а также системные функции, которые настраивают поведение интерпретатора.
В ooRexx 4.0.0 были представлены интерфейсы, которые позволяют приложениям C++ расширять ooRexx и наоборот. К ним относятся функции обратного вызова для методов и функций, написанных на C++, которые могут расширять ooRexx и упаковываются как внешние библиотеки. Они называются динамически подключаемыми библиотеками в Windows и общими библиотеками в системах на базе Unix. Внешнюю библиотеку можно использовать с директивой ::REQUIRES или с ключевым словом EXTERNAL как часть ::ROUTINE, Можно загрузить директиву ::METHOD или ::ATTRIBUTE.
=== Java ===
Используя интерфейсы C++, BSF4ooRexx был разработан как двунаправленный мост Java на основе Bean Scripting Framework. Этот мост позволяет ooRexx взаимодействовать с объектами Java, а Java — с приложениями Rexx.
=== Автоматизация Windows ===
Расширение Windows включает в себя механизм Windows Script Host (WSH), который можно использовать для выполнения распространенных задач автоматизации. Сюда также входит поддержка связывания и внедрения объектов/ActiveX (OLE), что позволяет взаимодействовать с программами Windows через OLEObject.
== Примечания ==
== См. также ==
* Сравнение языков программирования
* Расписание языков программирования
* РЕКС
== Литература ==
* * * * *
* [https://www.rexxla.org/ Языковая ассоциация Рекс]
* sourceforge:projects/oorexx/files/oorexx-docs/5.0.0/|Открыть документацию по Object Rexx 5.0.0
* sourceforge:projects/oorexx/|Открыть Object Rexx на Sourceforge
* [https://www.oorexx.org/ Веб-сайт Open Object Rexx]
* [https://rosettacode.org/wiki/Category:OoRexx Открытый объект Rexx в Rosetta Code]
* sourceforge:projects/bsf4oorexx/|BSF4ooRexx на Sourceforge
Категория:Язык сценариев
Категория:Объектно-ориентированный язык программирования
Категория:Язык программирования
Категория:Программное обеспечение IBM
Подробнее: [url]https://de.wikipedia.org/wiki/Object_REXX[/url]
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Рекс Армс Апартаменты
Anonymous » » в форуме Васина ВикипедияАпартаменты Rex Arms Apartments в Портленде, штат Орегон, — это здание, внесенное в Национальный реестр исторических мест. Архитектура эпохи Возрождения | Здание в стиле Возрождения было построено в 1913 году.
==См. также==
* Национальный реестр списков исторических мест на юго-востоке Портленда,... - 0 Ответы
- 70 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Рекс Уиллинг
wiki_en » » в форуме Васина Википедия'''Рекс Джон Уиллинг''' (25 марта 1923 – 23 сентября 2000) был новозеландским государственным служащим и политиком, который был личным секретарем премьер-министра Нормана Кирка.
==Биография==
Уиллинг родился в 1923 году в семье Томаса Элвина и Элис Моны Уиллинг. В 1947 году он женился на Мари... - 0 Ответы
- 47 Просмотры
-
Последнее сообщение wiki_en
-
-
-
Рекс Машина
wiki_en » » в форуме Васина Википедия«Рекс машина» — предстоящий компьютерный анимационный комедийный фильм, созданный DreamWorks Animation в сотрудничестве с Kapow Pictures. Режиссер Марк Гравас (от режиссера фильмов «А вот и Питер Коттонтейл: Фильм» и «Школа страха Каспера»).
== Производство ==
=== Развитие ===
Впервые он был... - 0 Ответы
- 51 Просмотры
-
Последнее сообщение wiki_en
-
-
-
Рудольф Карл Каспар фон Рекс
wiki_de » » в форуме Васина Википедия'''Рудольф Карл Каспар граф фон Рекс''' (родился 23 января 1858 года в Дрездене; † 22 февраля 1916 года в Вене) был саксонским действительным тайным советником и министром , в: Мелвилл Генри Массу, маркиз Рувиньи и Рейнваль: «Титулованное дворянство Европы». Международное пэрство или Кто есть кто |... - 0 Ответы
- 46 Просмотры
-
Последнее сообщение wiki_de
-
-
-
Рекс Гилдо - Das Musical
wiki_de » » в форуме Васина Википедия'''Рекс Гильдо - Мюзикл''' — пьеса Розы фон Праунхайм. Премьера спектакля состоялась в 2024 году под руководством Хайнера Бомхарда в Театре Мюнстера.
== Сюжет ==
Рекс Гильдо — немецкий актёр и певец. Мюзикл рассказывает о жизни бывшей поп-звезды. От истоков, успехов и трагического конца. Давно... - 0 Ответы
- 21 Просмотры
-
Последнее сообщение wiki_de
-
Вернуться в «Васина Википедия»
Перейти
- Васино информационное агентство
- ↳ Лохотроны и разочарования
- ↳ Секреты рекламы и продвижения
- ↳ Заработок в Интернете
- ↳ Маленькие хитрости
- ↳ Посудомойки
- ↳ Режим питания нарушать нельзя!
- ↳ Прочитанные мной книги
- ↳ Музыкальная культура
- ↳ Ляпсусы
- ↳ Интернет — в каждый дом!
- ↳ Изобретения будущего
- ↳ В здоровом теле — здоровый дух
- ↳ Боги, религии и верования мира
- ↳ Расы. Народы. Интеллект
- Прочее
- ↳ Васина Википедия
- ↳ Беседка
Мобильная версия