My Personal Rexx Journey

My Rexx Journey

This website is a Rexx "tribute site" -- an ad-free site I maintain at personal expense to honor the most impressive programming language I've ever worked with.

My hope is that the site proves useful to Rexx programmers, and also to all those who want to learn about Rexx.

*   *   *

In the course of my long career, I've worked with quite a few programming languages. There were the Unix & Linux shell languages, for example: KornShell and Bash. Powerful, and a lot of fun for me to work with as an individual, but not easily maintained by companies who write much code with them.

Many powerful languages suffer this defect of complexity. Think of AWK, for example. Incredible at what it does, but a syntax nightmare, for sure.

Then there are HTML, CSS, and JavaScript: three entirely different languages for one task. Of which one -- HTML -- features syntax unfriendly for the humans who have to work with it. No wonder everybody who can uses WordPress or one of the web hosting products!

Which brings me to Perl. Powerful and versatile... the world's at your command, and you can do anything with it! Perl is one fun language.

But like the *nix shell languages, I surely wouldn't want to be the IT manager responsible for keeping a big code base of this complicated stuff working. Who would you hire to maintain it? And how productive could they be in the task?

In the world of software vendors and software engineers, it makes sense to create products in such powerful-but-difficult languages as the shell languages and Perl. You need the best and most appropriate tools for the job, and you have the skills and the team to handle them.

But at the everyday IT shop, no. Just no. Beyond some essential infrastructure where it's truly necessary, betting your company on such hard-to-maintain systems is unwise. You want the machines to do the work (that's why you bought them). Not your programming staff.

I'd group languages like assembler and C/C++ into this category as well. Their benefit is their closeness to the machine and the control this gives you. And their raw speed. If you face a problem requiring those benefits, then these are the tools you need to solve your problem. But the power of these languages comes at the cost of your time. They're not very productive for high-level solutions.

If the goal of a programming language is to shift the burden of creating apps from the human to the machine, all the languages I've mentioned thus far don't score very highly.

Then there are the programming languages at the opposite end of the spectrum. These are easy to code and maintain, but sometimes lack the programming power you need. Some forms of BASIC fall into this category, as well as some domain-specific languages. And some report-generation languages, too. I remember many nights of trying to work out problems in SQL, for example. (Will joining that table to itself allow me to calculate the rolling averages? But what if I want to attach a historical value to each?) Ugh... SQL koans. Thank goodness Oracle bucked the non-procedural SQL mania of the early relational days and came up with PL/SQL.

Let's recap, just so there's no misunderstanding. I'm not bashing any of the programming languages I've mentioned here. Each has its use and its benefits. That's why there are so many different programming languages. It's all about different tools for different tasks. The world needs this variety -- and computing history proves it. And from the personal standpoint, I've enjoyed working with every one of these languages.

Then There's Rexx

Rexx somehow manages a miracle. It's easy to write and easy to maintain. Yet it's still as versatile and powerful as you need for nearly any application. Its extensible design is one reason. Just add a function library, code a line in your script to access it, and voilĂ ! The power is yours, yet the syntax remains simple, and the code remains easy to read and maintain.

Rexx came along at a time in history when processing was migrating from batch to interactive. With the rise of teleprocessing systems, the mainframe world -- predominate at the time -- badly needly a "scripting" or glue language to tie it all together. Plus, the tool had to easily issue system commands and even function as a macro language.

Mike Cowlishaw, at IBM in the UK, came up with the solution: Rexx. Easy as BASIC, but standardized everywhere -- and with unlimited power. Rexx is generally considered the world's first general-purpose scripting language. And, amazingly, it's still one of the best. No surprise that Mr. Cowlishaw is an IBM Fellow, a Fellow of the Royal Academy of Engineering, and the recipient of so many other honors. (And Rexx is just one of his many career accomplishments!)

Rexx combines power with ease of use so effectively that it quickly spread to every platform imaginable. It runs everywhere. And as this website shows, you can download open source Rexx, its tools, tutorials, documentation, and everything else you'll ever need -- for free.

To me, Rexx has a certain sort of beauty. Yes, you can write crappy, obscure Rexx code, just as you can with any programming language. But you almost have to try to do it. For the great majority, Rexx is easy to work with, powerful, and easy to maintain... and most important of all, it's fun!

Enjoy Rexxing!