My Personal Rexx Journey

My Rexx Journey

by Howard Fosdick   ¬©

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 while I love working in 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. (Have fun writing that device driver!) 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 in 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!


What About Python? Since I wrote this piece, several folks have asked why I didn't include Python. The reason is that I have a familiarity with the language but have never used it in an industrial-strength IT application. Let me add a few words about Python here.

Python shares Rexx's basic values -- it's easy to learn, easy to code, and easy to maintain. Yet it combines that easiness with power. This is that "magical formula" that I've long advocated as the future of programming.

Of course, Python shares Rexx's universality. It's an open source tool that runs everywhere and interfaces to everything.

Where Python pulls away from Rexx and all the other languages "down in the pack" is its widespread use. Surveys consistently show that it's the most popular language in the world (exceeding even longtime contenders like Java, JavaScript, and C/C++). No accident, that.

Python embodies the values we should aim for in everyday programming. Wherever it fits the project requirements, Python is a great choice for IT.

Go to