5 ms·
A brief interview with Rexx creator Mike Cowlishaw
- sumoboy 4y agoRexx was pretty cool at the time, used it both MVS and OS/2. Wrote a ton of automation with it, ISPF interfaces that pretty much ran a dozen mainframes with barely any operator input. Way back in the day you had computer operators who sat in front of consoles monitoring messages (aka. logs msgs today) and they had to reply to keep things running 24x7. I was like skynet, made their jobs easy. Rexx was also behind a whole pager messaging system I wrote when JCL jobs failed, in a batch processing world you can't suffer problems and delays. This was at a major telecom company. Another day, another language, fun times.
- poo-yie 4y agoBrief is an understatement! For those who have never heard of Rexx, it was developed in either late 60s or early 70s at IBM. It is a powerful scripting language. I first encountered it in OS/2 where it was the default (built-in) scripting language. During the OS/2 days a couple of GUI drag-and-drop app development products were built with it (Watcom's VX-REXX and VisPro Rexx). I used VX-REXX to create a graphical client/server application for OS/2 that used DB2/2. It was unbelievably productive. I've heard that VisPro Rexx was also just as good. I also worked with Rexx in z/VM (and z/OS to much lesser extent). It was nice to know one powerful scripting language that could be used across various IBM systems. There were a few odd things in the language -- 'stem' variables come to mind. This was Rexx's way of doing arrays (or dynamic lists). You stored the number of elements in $stem_var_name.0. Good times!
- pavlov 4y agoI believe Rexx was also quite popular on the Amiga! That platform was otherwise very much the spiritual opposite of what IBM represented back in the 1980s.
- buggeryorkshire 4y agoYup, it was called arexx but was really nice.
- coldacid 4y agoSo nice that Commodore actually bought it off the developer and shipped it with later releases of AmigaOS. It's not just a great way to automate a lot of Amiga apps (since most, both commercial and "PD", had ARexx support) but also a useful IPC mechanism on the platform.
- actionfromafar 4y agoIt was like another world what you could do with Arexx, because So. Many. Program. had support for it. Only what I started using Linux in 1995 one could do similar things (but in a much more clumsy and shell, pipes and commands-kind-if-way.) I think PowerShell is the spiritual successor to Arexx. (Because you could do GUI stuff in ARexx and script GUI programs!)!
- avg_dev 4y agoIt is indeed very brief. Something I've been wondering about lately is how much language developers get to code in their actual language. Perhaps if things get really really far along, the language interpreter/compiler/runtime/whatever becomes self-hosting. But I suspect many languages never actually get that far. I was just thinking about the fact that maybe most language developers today still code in C (I have no idea if this is actually true). Perhaps in the future they will code in Rust or Go. He does briefly speak to part of this point: > I don't think I'd change anything in them except to emphasise more that a programming language is a Human-Computer-Interface and the language designer should design for the users of the language, not just for himself or herself. -- I personally have never used Rexx. But I remember many years ago I made an attempt to sign up for an OS/2 Warp beta and being shocked when I actually got picked. I recall installing it and the OS contained what was the first instance I had seen of some sort of voice control for computers. Even at the time my IBM PS/2 (a 386sx running at 20MHz) was at the low end of the requirements for OS/2 Warp and the system didn't perform very well at all. But I have a memory of speaking something like "Computer: Go to sleep!" and my brother laughing at me and repeating it from time-to-time after that, long after I'd uninstalled OS/2 and went back to Windows 3.11 or DOS or whatever I was running in those days.
- dimitar 4y agoOne example is Rich Hickey who wrote Clojure, then his team wrote the Datomic database (on-prem and SaaS) in it.
- mkovach 4y agoAlways liked Rexx. Worked at a fairly big IBM shop (mainframes, AIX, desktop, etc) were all Big Blue. Although Rexx was a bit cranky on AIX, almost all system level scripts used (or called) Rexx. It wasn't a world buster, but then I did't have any reasonable complaints about it. It worked, was fairly easy to learn and teach, and didn't it's job.
- pjsg 4y agoI worked with Mike in 1977 when he was he was assigned to mentor me as a gap-year student working at Hursley. He was a rock climber and I recall many discussions about the physics of ropes and what happened when/if you fell and the rope broke your fall. There are all sorts of interesting effects that happen when the rope "goes tight" and the waves that run up and down the rope as it stretches (both elastically and inelastically). We worked in Product Assurance (IBM's terminology for QA). We built hardware to test the system that was under test. We often worked the night shift as the developers got the working system during the day! I don't recall Rexx from those days, so I think it came after 1977.
- dtagames 4y agoREXX was a big deal when I worked on mainframe compliers at IBM. It was the system scripting language (think bash or DOS scripts) as well as the editor command language (like emacs) -- and it was a scriptable programming language for apps (like JavaScript). The best part is that all of those parts could interact. So your REXX app could talk to the command line and execute code there, or to the editor -- and vice versa. Pretty slick. I wrote some great stuff in REXX both for work and for fun. Mike's stated goal with the language was to make programming as easy as possible for the programmer, compiler be damned! In fact, it was quite difficult to create a REXX compiler and that didn't come until much later. Where REXX fell apart for me is that it didn't keep up with browsers and the internet, which is where the bulk of development work shifted -- at least my development work! REXX was also strictly imperative/procedural and didn't include the functional concepts that were also invented by John Backus, a contemporary of ours there at the time. Today, functional is my religion and I can't imagine going back. I've become a big fan of TS. I wonder what Mike thinks of it?
- epc 4y agoI think Rexx would have been a great scripting language for web sites but IIRC the interpreter on AIX was hobbled in some way (it was never practical for me to use it for www.ibm.com for example). I think there was a lot of anti–mainframe animus inside IBM that affected Rexx adoption on AIX. By the time objRexx and NetRexx were available the world had moved on.
- deleted 4y ago[deleted]
- avg_dev 4y agoThat's really interesting. I personally feel like JS as it was originally created is some sort of travesty (my apologies to those involved - I myself have written a tremendous amount of bad code under time pressure - and not under time pressure ;) ), but it definitely does allow for a lot of functional programming paradigms which is kind of nice. I don't know much about Lua or mruby but I understand they may fill such needs too. Also fun to note that John Backus was at IBM. I have some vague memories of BNF. I imagine that AT&T Bell Labs and IBM and Xerox were amazing places to work at one time. I do hope that things are generally trending for the better, in that ideas can be exchanged digitally, and that things are de facto more inclusive today, but I bet it would have been a heady thing to have a lounge filled with people like at those offices and then go back to your own office and noodle away on ideas that had been discussed.
- avg_dev 4y agoThe Wikipedia article on Rexx seems to be pretty informative: https://en.wikipedia.org/wiki/Rexx https://en.wikipedia.org/wiki/Rexx > Rexx (Restructured Extended Executor) is a programming language that can be interpreted or compiled. It was developed at IBM by Mike Cowlishaw.[2][3] It is a structured, high-level programming language designed for ease of learning and reading. Proprietary and open source Rexx interpreters exist for a wide range of computing platforms; compilers exist for IBM mainframe computers.[4] > > Rexx is a full language that can be used as a scripting, macro language, and application development language. It is often used for processing data and text and generating reports; these similarities with Perl mean that Rexx works well in Common Gateway Interface (CGI) programming and it is indeed used for this purpose. Rexx is the primary scripting language in some operating systems, e.g. OS/2, MVS, VM, AmigaOS, and is also used as an internal macro language in some other software, such as SPF/PC, KEDIT, THE and the ZOC terminal emulator. Additionally, the Rexx language can be used for scripting and macros in any program that uses Windows Scripting Host ActiveX scripting engines languages (e.g. VBScript and JScript) if one of the Rexx engines is installed. The page goes on to discuss ARexx (the Amiga port) and Compound variables, which can be used as arrays (both of these things have been mentioned here by other commenters).
- epc 4y agoRexx was incredibly useful as a scripting language on the VM and MVS mainframe environments. It was a huge step up from the "EXEC" language. I wrote a gopher/http server in it circa 1992 (never saw the light of day outside of IBM). There was an internal version of WebExplorer (OS/2 web browser) that used it as a scripting language in 1995 (also never saw the light of day outside IBM). My biggest complaint would be that it didn’t have a consistent way of invoking external programs or libraries. Perl won out for CGI and web scripting inside IBM over Rexx from a lack of libraries and some weird performance issue on AIX I no longer recall.
- epc 4y agoSeparately, Mike was a great mentor to me as I tried to figure out what it meant to “run” a corporate web.
- BooneJS 4y agoRexx was my first foray into writing code using OS/2 around 1994. I then tried my hand at Pascal before getting into college and taking a formal C++ class.