Howard Fosdick wrote about one of my favorite languages, Rexx, on OnLAMP earlier this week.
For many years, I did almost all my programming in Rexx, mostly on VM/CMS but occasionally on TSO or OS/2; it was a language well-suited to the environment and to the kinds of problems I had to deal with, especially when augmented with tools like WAKEUP (providing event handling) and RXSOCKET (TCP/IP socket access), as well as the invaluable CMS Pipelines. One of the best features of Rexx was its ubiquity on VM/CMS; because it used system hooks, it was available as a macro language for any program which needed one — and so it was far easier for a developer to use Rexx than to make up a unique language.
Back in 1989, Almaden’s only connection to Usenet was an AIX box, which dialed out once a day and fetched the day’s postings. I wanted real-time access to Usenet, especially misc.kids (this was long ago, before spam was invented, and so there was some actual content on Usenet), but our only connection to the ARPANet was on VM. So I wrote some Rexx code to gateway postings through VM to the AIX box (and back); it was probably about 2000 lines of Rexx and needed four virtual machines to run (CMS was single-threaded). Since the postings were traversing VM, it also seemed like a good idea to gateway them into our VM-based conferencing system — and at one time, that traffic accounted for 25% of the network traffic in IBM.
Rexx was the native macro language on OS/2, as well, and at one time, my OS/2 Gopher client had a hook to allow writing Rexx macros. Unfortunately, I never figured out any use for macros in a Gopher client, and so I never documented the hook (I think I removed it before the official release of the Gopher client). But Mike Cowlishaw took great advantage of the OS/2 support of Rexx when he wrote the OS/2 Gopher (and later Web) server, GOSERVE — of course, he was also the author of Rexx, so it was a natural decision for him!
I don’t use VM/CMS much any more (I still have an account, which I use once every 90 days to change its password); I still do have a mission-critical Rexx program which converts my paystub into QIF form so I can import it into Quicken. And my preferred text editor, Kedit, uses a 90%-subset of Rexx as its macro processor.
These days, I tend to write in Python — it has much the same “feel” as Rexx, and it makes it easy to get to SOAP, XML parsers, and the like. I tried Perl for a while, but didn’t like the style of the language. I’m playing with Ruby a bit, but haven’t really gotten down to writing anything real, and I can get by in PHP when I need to (for example, in customizing WordPress). But I still miss Rexx.