Объект РЕКСВасина Википедия

Новости с планеты OGLE-2018-BLG-0677
Что вы не только не знали, но и не хотели знать
Автор темы
wiki_de
Всего сообщений: 49090
Зарегистрирован: 13.01.2023
 Объект РЕКС

Сообщение 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 имеется только тридцать операторов ключевых слов.

=== Бесплатное форматирование ===
Позиционирование исходного текста не имеет значения для 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

Изменение регистра текста: 
Смайлики
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Рекс Армс Апартаменты
    Anonymous » » в форуме Васина Википедия
    0 Ответы
    70 Просмотры
    Последнее сообщение Anonymous
  • Рекс Уиллинг
    wiki_en » » в форуме Васина Википедия
    0 Ответы
    47 Просмотры
    Последнее сообщение wiki_en
  • Рекс Машина
    wiki_en » » в форуме Васина Википедия
    0 Ответы
    51 Просмотры
    Последнее сообщение wiki_en
  • Рудольф Карл Каспар фон Рекс
    wiki_de » » в форуме Васина Википедия
    0 Ответы
    46 Просмотры
    Последнее сообщение wiki_de
  • Рекс Гилдо - Das Musical
    wiki_de » » в форуме Васина Википедия
    0 Ответы
    21 Просмотры
    Последнее сообщение wiki_de