Объект РЕКС
![]() | |
Парадигма | Мультипарадигмальность : объектно-ориентированная ( классовая ), процедурная ( императивная ), структурированная. |
---|---|
Разработано | Саймон К. Нэш (IBM) |
Впервые появился | 1988 год |
Стабильная версия | 5.0.0
/ 10 мая 2023 г |
Предварительный выпуск | 5.1.0
|
Язык реализации | С++ |
Платформа | ИА-32 , x86-64 , ARM , s390x |
ТЫ | Кроссплатформенность : Linux , Microsoft Windows , macOS , Solaris , OpenIndiana , AIX , FreeBSD , OS/2. |
Лицензия | CPL 1.0, GPLv2 |
Расширения имен файлов | .rxs, .rex, .rexx, .cls |
Веб-сайт | www |
Основные реализации | |
Объект REXX (до 2004 г.) ооРекс (с 2005 г.) | |
Под влиянием | |
Рекс , Смолток | |
Под влиянием | |
НетРекс |
Object REXX — это высокоуровневый , общего назначения ( интерпретируемый , объектно-ориентированный основанный на классах ) язык программирования .
Это продолжение и значительное расширение языка программирования Rexx (часто называемого «Classic Rexx»). Object REXX сохраняет все функции и синтаксис «Classic Rexx», добавляя при этом полные возможности объектно-ориентированного программирования (ООП). Хотя Object REXX не реализует все аспекты «Информационные технологии – язык программирования REXX» ANSI X3.274-1996. [ 1 ] стандарт, он предлагает множество новых функций.
Следуя своему влиянию «Classic Rexx», Object REXX спроектирован таким образом, чтобы его было легко изучать, использовать и поддерживать. Объект REXX сегодня часто называют открытым объектом Rexx (ooRexx).
История
[ редактировать ]В 1988 году проект «Oryx» в IBM под техническим руководством Саймона Нэша экспериментировал с объединением «Classic Rexx» с моделью Smalltalk объектной . [ 2 ] [ 3 ] Мотивацией проекта была передача преимуществ ООП в «Classic Rexx», оставаясь при этом совместимыми и, таким образом, перенося удобство использования «Classic Rexx» в ООП. [ 4 ] Вначале проекты были сосредоточены на аспектах ООП, таких как рассмотрение всего как объекта, объектно-ориентированная инкапсуляция и передача сообщений , объектно-ориентированный параллелизм , классы и наследование . [ 5 ]
Эта первоначальная работа позже привела под руководством Рика Макгуайра к созданию первого прототипа Object REXX, который был представлен в 1992 году. В 1994 году IBM объявила, что Object REXX заменит «Classic Rexx» в качестве стандартного интерпретатора REXX в следующей версии ОС. /2 . [ 3 ] В 1996 году Объект REXX [ а ] был выпущен как часть операционной системы OS/2 Warp 4 . [ 6 ] В 1997 году последовали версии для Windows 95 , Windows NT и Linux . [ 7 ] [ 8 ] В 1999 году была выпущена версия Object REXX для AIX V4.1.5 или выше. [ 9 ] В 2000 году последовали версии для zLinux и Sun/Solaris . Для Windows 2000 , Windows Me , Windows 98 и Windows NT 4.0 последнее крупное обновление Object REXX было выпущено в 2001 году. [ 10 ]
12 октября 2004 г. IBM объявила о прекращении выпуска Object REXX и передала исходный код и лицензионные права. [ б ] в некоммерческую группу специальных интересов (SIG), Языковую ассоциацию Рекс (RexxLA). В 2005 году RexxLA выпустила ooRexx как новое воплощение Object REXX как бесплатное программное обеспечение с открытым исходным кодом под лицензией Common Public License . [ 11 ] Эта первая версия ooRexx 3.0.0 была сильно переработана по сравнению с исходным исходным кодом IBM с целью повышения читабельности. Позже ядро ooRexx было переписано на чистом C++ , а новая архитектура и собственный интерфейс были спроектированы и реализованы под техническим руководством Рика Макгуайра. Эта работа позволила RexxLA выпустить ooRexx 4.0.0 с поддержкой 64-битной версии в 2009 году. По сей день RexxLA продолжает разрабатывать, поддерживать и поддерживать ooRexx, а также «Classic Rexx» и NetRexx . Кроме того, RexxLA организует ежегодные симпозиумы. [ 12 ]
Оригинальный интерпретатор Object REXX от IBM по-прежнему доступен в операционных системах, производных от OS/2, таких как ArcaOS и eComStation .
Релизы
[ редактировать ]В следующей таблице представлены заслуживающие внимания особенности и изменения основных версий интерпретаторов Object REXX и ooRexx. Все релизы ooRexx и необходимая документация доступны на Sourceforge . [ 13 ] [ 14 ] Для дистрибутивов на базе Arch Linux текущая и разрабатываемая версии доступны в репозитории пользователей Arch . Начиная с версии 5.0.0 доступны портативные версии интерпретатора, позволяющие использовать его без установки.
Основные релизы | Дата выпуска | Примечательные особенности и изменения |
---|---|---|
1.0.0 (ОС/2) [ 15 ] |
Объект REXX. 1996-09-25 |
|
1.0.0 (Окна) [ 16 ] |
Объект REXX. 28 февраля 1997 г. (ИЭ) 30 мая 1997 г. (нем.) |
|
1.1.0 (ЭИКС) [ 17 ] |
Объект REXX. 1999-04-09 |
|
2.1.0 (Окна) [ 18 ] |
Объект REXX. 2001-04-21 |
|
3.0.0 [ 19 ] [ 20 ] |
ooRexx 2005-03-30 |
|
3.1.0 [ 21 ] |
ooRexx 2006-08-21 |
|
3.1.1 [ 22 ] |
ooRexx 2006-11-23 | |
3.1.2 [ 23 ] |
ooRexx 2007-09-17 |
|
3.2.0 |
ooRexx 2008-01-22 |
|
4.0.0 [ 24 ] |
ooRexx 2009-09-30 |
|
4.1.0 [ 25 ] |
ooRexx 2011-09-28 |
|
4.2.0 [ 27 ] |
ooRexx 2014-02-23 |
|
5.0.0 [ 28 ] |
ooRexx. 2022-12-22 |
|
5.1.0 |
ooRexx 2024 |
Философия дизайна и особенности
[ редактировать ]ooRexx разработан с сохранением всех функций «Classic Rexx». Это соответствует [ с ] стандарту ANSI для языка Rexx (X3.274-1996, «Язык программирования Rexx» [ 1 ] ), для совместимости между платформами с другими соответствующими реализациями. Таким образом, программы Classic Rexx обычно запускаются под ooRexx без каких-либо изменений. Это позволяет легко переносить как программный код, так и знания разработчиков из «Classic Rexx» в ooRexx. К этому ooRexx добавляет все возможности ООП, такие как создание подклассов , полиморфизм и инкапсуляция данных . Дополнительные возможности включают множественное наследование через миксины классы- .
Код, который IBM выпустила с открытым исходным кодом в 2004 году, не включал классы для IBM System Object Model (SOM) и Workplace Shell (WPS). поддержки [ 29 ] Версия IBM Object REXX для OS/2 включает классы для поддержки SOM. [ 30 ] и ВПС. [ 31 ] Сюда также входит первый продукт OS/2, eComStation, а также его нынешний потомок, ArcaOS. [ 32 ]
ooRexx следует философии дизайна «Classic Rexx», чтобы создать «ориентированный на человека» язык программирования, который легко изучать, кодировать, запоминать и поддерживать, отчасти за счет сохранения небольшого размера языка и следования принципу наименьшего удивления . [ 33 ] [ 34 ] Например, ooRexx 5.0.0 содержит всего тридцать инструкций по ключевым словам. [ 35 ] Кроме того, существует только один тип данных — символьная строка , которую не нужно объявлять, что снижает трудозатраты программистов по сравнению со строго типизированными языками . [ 36 ]
Свободная форма
[ редактировать ]Как и «Классический Rexx», ooRexx имеет синтаксис свободной формы , при котором расположение программного кода не имеет значения. Перед выполнением интерпретатор объединяет несколько пробелов в один, при этом строка символов, заключенная в кавычки (одинарные или двойные), не изменяется. Две вертикальные полосы ( ||
) или соседние кавычки ( ""
или ''
) можно использовать в качестве операторов концентрации. Поскольку язык свободной формы требует учета меньшего количества синтаксических правил, предполагается, что он облегчает обучение за счет снижения внутренней когнитивной нагрузки . [ 37 ]
say "Hello World!" /* output: Hello World! */
say " This" 'is' "REXX!" /* output: This is REXX! */
say "Good""bye" || '!' /* output: Goodbye! */
Регистронезависимый
[ редактировать ]Как и «Classic Rexx», ooRexx является языком программирования, нечувствительным к регистру . Интерпретатор записывает все символы вне кавычек с заглавной буквы перед их выполнением. Поскольку случаи не нужно различать, необходимо изучить меньше дополнительных деталей и избежать досадных синтаксических ошибок. [ 37 ]
a = " This" 'is' "REXX!" /* a merged string */
Say A /* output: This is REXX! */
SAY a /* output: This is REXX! */
Парадигма сообщения
[ редактировать ]Подобно парадигме обмена сообщениями, реализованной Аланом Кеем в Smalltalk, все в ooRexx является объектом, с которым можно взаимодействовать, отправляя сообщения с именем метода. Идея отправки сообщений объектам, как если бы они были живыми существами, помогает новичкам изучать концепции ООП. [ 38 ]
В отличие от Smalltalk, здесь имеется явный оператор сообщения — тильда ( ~
), где слева от него размещается принимающий объект и возвращается результат операции. Как и Smalltalk, сообщения ooRexx могут быть каскадированы, если две тильды ( ~~
) используются вместо одного, возвращая объект, получивший метод, а не полученный результат. Поведение большинства методов по умолчанию можно изменить, указав опцию, которая может быть написана или сокращена и не учитывает регистр. Это обеспечивает буквальное понимание и снижает затраты на обучение для новичков. [ 37 ] Например, метод полосы по умолчанию удаляет начальные и конечные пробелы. Такое поведение можно изменить, например, указав "leading"
или "l"
как вариант.
a = " This" 'is' "ooRexx!" /* a merged string */
Say A /* output: This is ooRexx! */
SAY a~Strip("Leading") /* output: This is ooRexx! */
say A~strip("l") /* output: This is ooRexx! */
Встроенные и внешние функции
[ редактировать ]Релиз ooRexx 5.0.0 содержит 82 встроенные функции , количество которых остается относительно стабильным на протяжении многих лет. [ 35 ] Используя ::requires
директиве внешние библиотеки функций могут быть интегрированы для каждой программы отдельно. Такие библиотеки обычно организованы вокруг функций, специфичных для предметной области.
Библиотека расширений Rexx предоставляет класс для чтения и записи файлов со значениями, разделенными запятыми (CSV), для создания и обработки данных нотации объектов JavaScript (JSON), а также среду подкоманд, которая частично имитирует среду TSO / CMS . [ 39 ] Библиотека RxMath предлагает расширенные математические функции, такие как вычисление квадратного корня, экспоненциальная функция, логарифм, синус, косинус, тангенс, арксинус и расчет мощности. [ 40 ] Библиотека RxSock позволяет включать протоколы TCP/IP , [ 41 ] в то время как библиотека RxFtp [ 42 ] специально обеспечивает доступ к протоколу передачи файлов .
Мосты
[ редактировать ]Расширение Windows включает в себя обработчик сценариев Windows Script Host (WSH), который можно использовать для выполнения общих задач автоматизации. Он также включает поддержку связывания и внедрения объектов / ActiveX (OLE), позволяющую взаимодействовать с программами Windows, такими как Microsoft Office, через OLEObject
. [ 43 ] ooSQLite предоставляет интерфейс для SQLite , внутрипроцессной библиотеки, которая реализует автономный, бессерверный, не требующий настройки транзакционный механизм базы данных SQL . [ 44 ] Существует также внешняя библиотека, реализующая двунаправленный мост Java , основанный на Bean Scripting Framework , называемый BSF4ooRexx , который позволяет использовать классы Java в программах ooRexx. [ 38 ]
Зависит от операционной системы
[ редактировать ]Для Windows ooRexx включает в себя структуру OODialog, позволяющую создавать диалоговые окна Windows и, следовательно, графические пользовательские интерфейсы . [ 45 ] Помимо поддержки OLE, расширение Windows позволяет взаимодействовать с диспетчером программ Windows, журналом системных событий , буфером обмена и реестром, а также запрашивать, редактировать и взаимодействовать с окнами, меню или подменю. [ 43 ]
Для POSIX -совместимых операционных систем библиотека классов nCurses позволяет писать текстовые пользовательские интерфейсы с использованием библиотеки программирования ncurses . [ 46 ] Библиотека RxUnixSys предоставляет функции в большинстве систем Unix для взаимодействия с процессами и потоками, пользователями и группами пользователей, файлами и файловыми системами и другими. [ 47 ]
Примечания
[ редактировать ]- ^ Включая интерфейсы к модели системных объектов (SOM) и оболочке рабочего места (WPS).
- ^ За исключением пакетов SOM и WPS.
- ^ Object REXX и Open Object Rexx не включают в себя все новые функции стандарта ANSI Rexx.
Ссылки
[ редактировать ]- ^ Jump up to: а б «X3.274-1996 Американский национальный институт стандартов языка программирования Rexx» (PDF) .
- ^ «7 причин, по которым Рекс все еще имеет значение» . SmartBear.com . Проверено 19 июня 2024 г.
- ^ Jump up to: а б «Объект IBM REXX — EDM2» . www.edm2.com . Проверено 19 июня 2024 г.
- ^ Нэш, Саймон К. (11 июня 1990 г.). «Объектно-ориентированный REXX» (PDF) . Материалы симпозиума REXX для разработчиков и пользователей : 76-100.
- ^ Нэш, Саймон К. (21 мая 2009 г.). «Ретроспектива Object Rexx» (PDF) . Материалы 20-го симпозиума по языку Rexx .
- ^ «IBM Object REXX для OS/2 — EDM2» . www.edm2.com . Проверено 19 июня 2024 г.
- ^ «IBM Object REXX теперь работает в Windows NT и Windows 95» . ИБМ. 25 февраля 1997 г.
- ^ Швейцер, Манфред; Бергер, Уве (21 апреля 2005 г.). «От объекта REXX к ooRexx» (PDF) . Материалы 16-го симпозиума по языку Рекс .
- ^ «IBM Object REXX для AIX — объектно-ориентированный язык сценариев для начинающих и опытных программистов» . ИБМ. 30 марта 1999 г.
- ^ «IBM Object REXX для Windows V2R1 — объектно-ориентированное программирование для начинающих и опытных пользователей» . ИБМ. 20 марта 2001 г.
- ^ «Отзыв программного обеспечения и прекращение обслуживания: IBM Object REXX» . ИБМ. 12 октября 2004 г.
- ^ «RexxLA — Симпозиумы Rexx» . www.rexxla.org . Проверено 17 мая 2024 г.
- ^ «ooRexx (Открыть объект Rexx) — просмотрите /oorexx на SourceForge.net» . sourceforge.net . Проверено 18 мая 2024 г.
- ^ «ooRexx (Открыть объект Rexx) — просмотрите /oorexx-docs на SourceForge.net» . sourceforge.net . Проверено 18 мая 2024 г.
- ^ «IBM Object REXX для OS/2 — EDM2» . www.edm2.com . Проверено 19 июня 2024 г.
- ^ «IBM Object REXX теперь работает в Windows NT и Windows 95» . ИБМ. 25 февраля 1997 г.
- ^ «IBM Object REXX для AIX — объектно-ориентированный язык сценариев для начинающих и опытных программистов» . ИБМ. 30 марта 1999 г.
- ^ «IBM Object REXX для Windows V2R1 — объектно-ориентированное программирование для начинающих и опытных пользователей» . ИБМ. 20 марта 2001 г.
- ^ «Новости ооРекс» . Сорсфордж . Проверено 18 мая 2024 г.
- ^ Open Object Rexx Reference, версия 3.0.0 (PDF) . РексЛ.А. 24 марта 2005 г. Проверено 18 мая 2024 г.
- ^ «Новости ооРекс» . Сорсфордж . Проверено 18 мая 2024 г.
- ^ «Новости ооРекс» . Сорсфордж . Проверено 18 мая 2024 г.
- ^ «Новости ооРекс» . Сорсфордж . Проверено 18 мая 2024 г.
- ^ «ooRexx 4.0.0: Readme» (PDF) . Проверено 18 мая 2024 г.
- ^ «ooRexx 4.1.0: Примечания к выпуску» . Проверено 18 мая 2024 г.
- ^ «ooSQLite: Readme» . Проверено 18 мая 2024 г.
- ^ «ooRexx 4.2.0: Изменения» . Проверено 18 мая 2024 г.
- ^ «ooRexx 5.0.0: Изменения» . Проверено 18 мая 2024 г.
- ^ Куда пропала поддержка SOM в версии 4.0.0?
- ^ Уиллис Боутон (2004). «СОМ и Объект REXX» . ЭДМ/2 . Проверено 2 февраля 2014 г.
- ^ «Доступ к объектам оболочки рабочего места». Ссылка на объект REXX . ИБМ.
- ^ «Включает ли ArcaOS поддержку REXX?» . Проверено 3 сентября 2020 г.
- ^ Фосдик, Ховард (2005). Справочник программиста Rexx . Издательство Уайли. ISBN 0-7645-7996-7 .
- ^ Коулишоу, Майк (1987). «Дизайн языка REXX» . Уведомления ACM SIGPLAN . 22 (2): 26–35.
- ^ Jump up to: а б Эшли, В. Дэвид; Флэтчер, Рони Г.; Хесслинг, Марк; Макгуайр, Рик; Пидин, Ли; Симс, Оливер; Вулферс, Джон (2022). Документация ooRexx 5.0.0 Справочник по Open Object Rexx (PDF) . РексЛ.А.
- ^ Стефик, Андреас; Зиберт, Сюзанна (2013). «Эмпирическое исследование синтаксиса языков программирования» . Транзакции ACM по компьютерному образованию (TOCE) . 13 (4): 1–40.
- ^ Jump up to: а б с Винклер, Тилль; Флэтшер, Рони Г. «Когнитивная нагрузка в обучении программированию: облегчение нагрузки на новичков с помощью REXX» (PDF) . Центральноевропейская конференция по информационным и интеллектуальным системам .
- ^ Jump up to: а б Флэтчер, Рони Г.; Винклер, Тилль. «Использование парадигмы сообщений для облегчения изучения объектно-ориентированных концепций и программирования» (PDF) . В 2024 году 47-я конференция MIPRO по ИКТ и электронике (MIPRO) : 1244–1249.
- ^ Эшли, В. Дэвид; Флэтчер, Рони Г.; Хесслинг, Марк; Макгуайр, Рик; Пидин, Ли; Симс, Оливер; Вулферс, Джон (2022). Документация ooRexx 5.0.0 Справочник по библиотеке расширений Rexx (PDF) . РексЛ.А.
- ^ Эшли, В. Дэвид; Флэтчер, Рони Г.; Хесслинг, Марк; Макгуайр, Рик; Пидин, Ли; Симс, Оливер; Вулферс, Джон (2022). Документация ooRexx 5.0.0 Справочник по математическим функциям RxMath (PDF) . РексЛ.А.
- ^ Эшли, В. Дэвид; Флэтчер, Рони Г.; Хесслинг, Марк; Макгуайр, Рик; Пидин, Ли; Симс, Оливер; Вулферс, Джон (2022). Документация ooRexx 5.0.0 Справочник по функциям сокетов TCP/IP RxSock (PDF) . РексЛ.А.
- ^ Эшли, В. Дэвид; Флэтчер, Рони Г.; Хесслинг, Марк; Макгуайр, Рик; Пидин, Ли; Симс, Оливер; Вулферс, Джон (2022). Документация ooRexx 5.0.0 Справочник по библиотеке классов RxFtp (PDF) . РексЛ.А.
- ^ Jump up to: а б Эшли, В. Дэвид; Флэтчер, Рони Г.; Хесслинг, Марк; Макгуайр, Рик; Пидин, Ли; Симс, Оливер; Симс, Оливер; Вулферс, Джон (2022). Документация ooRexx 5.0.0 Справочник по расширениям Windows (PDF) . РексЛ.А.
- ^ Эшли, В. Дэвид; Флэтчер, Рони Г.; Макгуайр, Рик; Мисфельд, Марк; Пидин, Ли; Симс, Оливер; Вулферс, Джон (2022). Документация ooRexx 1.0.0 Справочник по ooSQLite (PDF) . РексЛ.А.
- ^ Эшли, В. Дэвид; Флэтчер, Рони Г.; Макгуайр, Рик; Пидин, Ли; Симс, Оливер; Вулферс, Джон (2019). Документация ooRexx 4.2.4 Справочник по ooDialog (PDF) . РексЛ.А.
- ^ Эшли, В. Дэвид; Флэтчер, Рони Г.; Хесслинг, Марк; Макгуайр, Рик; Пидин, Ли; Симс, Оливер; Стейнбёк, Эрих; Вулферс, Джон (2022). Документация ooRexx 5.0.0 Справочник по библиотеке классов nCurses (PDF) . РексЛ.А.
- ^ Эшли, В. Дэвид; Флэтчер, Рони Г.; Хесслинг, Марк; Макгуайр, Рик; Пидин, Ли; Симс, Оливер; Стейнбёк, Эрих; Вулферс, Джон (2022). Документация ooRexx 5.0.0 Справочник по функциям расширений Unix (PDF) . РексЛ.А.