Семь признаков того, что Rexx по-прежнему актуален

Автор: Rene Jansen

Дата: 10.06.2013

Источник: ru.eComStation.ru

О динамическом языке Rexx хоть и говорят с ностальгией, но редко берутся писать на нем. Рене Винсент Янсен (Ren? Vincent Jansen) приводит несколько убедительных причин в пользу использования языка в инструментарии разработчика.

Всякий раз, когда я упоминаю о языке Rexx на Slashdot или другом техническом сайте, люди недовольно вздыхают. Они полагают что Rexx, первый скриптовый язык широкого применения, больше не актуален. Я с этим не согласен и в этой статье я постараюсь объяснить почему.

Итак, если вы не сталкивались с Rexx ранее, сделаем небольшое пояснение. Язык придумал сотрудник компании IBM Майк Кулешоу (Mike Cowlishaw) в 1979 году. Сегодня существует девять открытых реализаций Rexx. Он поддерживается практически на любой платформе, но изначально был наиболее популярен на платформах IBM: мейнфреймах и ОС OS/2.

Вот несколько ключевых причин, почему писать программы на Rexx так здорово:

  • небольшой язык с богатыми возможностями.
  • не чувствителен к регистру там, где это имеет значение.
  • предоставляет два непревзойденных встроенных оператора - TRACE и PARSE.

Так где же может стать полезным Rexx сегодня, когда есть множество языков - напр., Python, PHP и Perl "более известных и популярных" Сейчас объясню...

Rexx выступает в роли связующего звена, объединяющего все важные вычислительные задачи на мейнфреймах.

Несомненно, пик популярности Rexx, почтенного предка скриптовых языков, пришелся на середину девяностых годов. На упоминания о Rexx на Slashdot отзываются те, кому нравилось работать с Rexx, но сейчас им приходится использовать другие языки. Чаще всего это означает, что они больше не имеют доступа к мейнфрейму, на котором работали и, спустя какое-то время, нашли замену Rexx. Это также означает, что новый инструмент не смог полностью заменить воспоминания.

Rexx изначально применялся на мейнфреймах и применяется там по сей день. Он появился в 1980 на VM и был опубликован IBM (поначалу неохотно) для решения нужд технического персонала. Тем самым заменив собой язык exec-2, который состоял преимущественно из амперсандов. Автор языка, Майк Кулешоу, впоследствии был удостоен звания IBM Fellow, а Rexx распространился на все операционные системы IBM - MVS, OS/2 и OS/400.

Обычно язык Rexx, выступая в роли связующего звена, применяется персоналом, не занятом в проргаммировании, т.е. системными программистами и группами управления инфраструктурой и промежуточным ПО. Возможно, это делает Rexx также и первым языком DevOps. Rexx-приложения как таковые обычно остаются незамеченными, но если бы их вдруг не стало, вероятнее всего, наступил бы конец света похлеще предсказываемого древними Майя. Недавно я видел, как ключевые компоненты коммерческих приложений заменили на связующее Rexx-приложение потому что "все просто работает" - "It Just Works" (эти слова должны бы стать торговой маркой Rexx ? кому бы сейчас не принадлежали права на эту фразу). Так что Rexx самый "большой" неизвестный язык написания приложений. Брюс Эккель (Bruce Eckel) упомянул об этом в своей книге Thinking in Java.

Для мейнфреймов коммерческий компилятор Rexx генерирует нативный объектный код. Он также позволяет внедрять приложения в промышленную эксплуатацию без необходимости выполнения их из исходного кода (выжимая производительность всю до последней капли). Ни для кого не секрет, что великолепный компилятор Rexx, от Haifa research, Vienna labs - прибыльный продукт. На мейнфреймах (которые играют важную роль в обеспечении вашего финансового благополучия) альтернативы просто нет.

 С появлением объектно-ориентированной версии для виртуальной машины Java, Rexx развился в полноценный язык ООП.

 В своем первозданном виде, который по-прежнему используется на мейнфреймах, Rexx относится ко времени функциональной декомпозиции. Если это все, что вам известно, вы, вероятно, удивитесь тому, что язык Rexx является куда более современной средой программирования.

Существует два объектно-ориентированных потомка. Один разрабатывался в комитетом под впечатлением от Smalltalk. Здесь еще до Java использовалась стековая виртуальная машина, динамизму которой позавидовал бы Ruby. (Хотя это и анахронизм т.к. Ruby еще "пешком под стол ходил" в то время, когда Simon Nash с коллегами создал Object в IBM Hursley). Еще одно существенное преимущество этой иновационной реализации: ooRexx обладает полной обратной совместимостью с классическим вариантом языка. Она родилась на OS/2 и в глазах общественности ее репутация незаслуженно пострадала от преждевременного заката самой ОС. Она отлично интегрируется в модель компонентов SOM.

Другая ветвь развития создана отцом языка Rexx. Начиналось все как эксперимент по оценке возможности выполнения Rexx на виртуальной машине Java (JVM). В дальнейшем это стал первый альтернативный язык для JVM. Эта версия сегодня является стабильным, полноценным и самодостаточным продуктом, который обходит по производительности другие языки для VM.

Причина проста: NetRexx реализован в виде кросс-платформенного транслятора с Rexx в исходный код на языке Java. За 16 лет существования эта версия JVM продемонстрировала значительный прогресс для компилятора javac, ВМ hotspot и j9 и др. NetRexx - это попытка начать с нуля и исправить то, что не устраивало самого Майка Кулешоу (все сравнения теперь не чувствительны к регистру, а перегруженная конструкция "do" разбита на две - "do" и "loop" ? и также перенесена в Object Rexx). Это, как было отмечено в 2008 году на саммите Sun JVM Language Summit, единственный альтернативный язык для JVM, который послужил основой для создания классе в библиотеке классов Java Class Library: BigDecimal.

Rexx по прежнему доступен пользователю (понятен человеку)

Важнейшей целью при создании интерпретаторов и компиляторов является простота и доступность для пользователя. Другими словами, язык не должен быть сложным, даже если это и упростит задачу создателю компилятора. Под этим подразумевается: "я думаю, это должно работать".

В любой реализации Rexx вся арифметика - десятичная. Она не страдает от "компьютерных" ошибок округления, которые заставляют вас выглядеть глупо. Более того, десятичная точность практически не ограничена (разумеется, в пределах объема памяти, вычислительной мощности и здравого смысла).

Эволюционируя, Rexx не "ломает" ваш старый код.

Меня не перестает удивлять то, сколько компаний обанкротилось из-за того, что переход с VB n на VB n+1 требовал слишком больших инвестиций или то, как люди говорили о "legacy-коде Java" в 1997 году. Такого просто не может случиться с Rexx. Можно не беспокоиться о выбранных годами ранее именах переменных: в язык не было добавлено ни одного нового служебного слова. Более того, в NetRexx и вовсе нет зарезервированных слов (хотя я бы не советовал давать переменной имя "end" если вы хотить сократить код программы используя loops).

Для языка Rexx существует стандарт ISO и реализация для любой платформы.

Не так много языков программирования имеют стандарт ISO. Это означает, что определены жесткие критерии, по которым можно оценить ту или иную реализацию, следовательно, и качество доступных интерпретаторов и компиляторов. Одна из первых открытых реализаций, Regina, работает на внушительном количестве архитектур и операционных систем о которых даже я не слыхал ни разу.

Rexx - это открытое ПО!

Я уверен: будущее - за open source.

Любопытно, но когда я только начал работать в IT-сфере, программное обеспечение, даже большие проекты IBM, было доступно в исходных кодах. Во всяком случае для клиентов, которые обязательно получали код на ленте или микрофильмах. Я помню, что в то время даже IT-специалисты конкурирующих компаний помогали друг другу и в итоге выигрывали все. К тому же это было весело!

Что касается дня сегодняшнего, тот факт что в IBM сдержали обещание открыть Object Rexx и NetRexx (первый в 2005 года, второй в июне 2011 года) для всех пользователей и поклонников означает, что затраченные ресурсы не пропадут зря и есть перспективы. Также это значит и то, что будущее уже наступило. Чтобы начать работать с открытым Rexx, обратите внимание на Open Object Rexx и NetRexx. Regina - соответсвующий стандарту ISO классический Rexx для всех актуальных платформ.

Будущее языка Rexx - на мобильных платформах.

Rexx отлично подходит для мобильных устройств благодаря скромным требованиям и отличной переносимости. Уже существуют несколько реализаций Rexx и NetRexx для Android. Например, есть NetRexx IDE для Android-устройств.

Производительность, которая присущая оптимизированному коду, появляется на маломощных машинах, "карманных мейнфреймах". Вполне возможно, что код NetRexx уже выполняется на вашем Android-устройстве, просто вы об этом не догадываетесь... как и о роли мейнфреймов в сегодняшней жизни.

Так или иначе, у языка Rexx определенно есть место в нашем с вами будущем.

 

Дополнительная информация: