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
- Всего сообщений: 53262
- Зарегистрирован: 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 Ответы
- 71 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Водный объект на Бундесплац
wiki_de » » в форуме Васина ВикипедияВодный объект был построен на Бундесплац в Берне после реконструкции в 2004 году. Водный объект состоит из 26 фонтанов, которые символизируют 26 кантонов Швейцарии. Дизайнеров вдохновил водный объект Magic l'Energy на выставке Expo 2002, из которого им также было разрешено использовать множество... - 0 Ответы
- 35 Просмотры
-
Последнее сообщение wiki_de
-
-
-
Необычный объект
wiki_de » » в форуме Васина Википедия* Альт-саксофон, синтезатор, электроника: Джош Джонсон
* Сэмпл барабанов: Аарон Стил (4)
«Unusual Object» — джазовый альбом Джоша Джонсона. Записи, сделанные, вероятно, примерно в 2023 году, были выпущены на лейбле Northern Spy Records в 2024 году.
== Фон ==
По словам Роба Шеперда, на этом... - 0 Ответы
- 43 Просмотры
-
Последнее сообщение wiki_de
-
-
-
Рекс Уиллинг
wiki_en » » в форуме Васина Википедия'''Рекс Джон Уиллинг''' (25 марта 1923 – 23 сентября 2000) был новозеландским государственным служащим и политиком, который был личным секретарем премьер-министра Нормана Кирка.
==Биография==
Уиллинг родился в 1923 году в семье Томаса Элвина и Элис Моны Уиллинг. В 1947 году он женился на Мари... - 0 Ответы
- 48 Просмотры
-
Последнее сообщение wiki_en
-
-
-
Объект (роман, 2024 г.)
wiki_en » » в форуме Васина Википедия'''''Объект''''' — научно-фантастический роман 2024 года|жесткий первый контакт (научная фантастика)|первый контакт, написанный Джошуа Т. Калвертом. Речь идет об ученом, обнаружившем внесолнечный объект, вошедший в Солнечную систему при загадочных обстоятельствах.
==Сюжет==
Доктор Мелоди «Мел»... - 0 Ответы
- 14 Просмотры
-
Последнее сообщение wiki_en
-
Вернуться в «Васина Википедия»
Перейти
- Васино информационное агентство
- ↳ Лохотроны и разочарования
- ↳ Секреты рекламы и продвижения
- ↳ Заработок в Интернете
- ↳ Маленькие хитрости
- ↳ Посудомойки
- ↳ Режим питания нарушать нельзя!
- ↳ Прочитанные мной книги
- ↳ Музыкальная культура
- ↳ Ляпсусы
- ↳ Интернет — в каждый дом!
- ↳ Изобретения будущего
- ↳ В здоровом теле — здоровый дух
- ↳ Боги, религии и верования мира
- ↳ Расы. Народы. Интеллект
- Прочее
- ↳ Васина Википедия
- ↳ Беседка
Мобильная версия