Rexx is a scripting language that was invented at IBM years ago. The Linux community has largely ignored Rexx, but I believe it could play an important role in Linux's challenge to the Windows desktop. How can a language many in the Linux community have never even heard of be valuable in Linux's fight for the desktop?
In many ways Rexx is a predecessor to the open source scripting languages that play such a prominent role in Linux. Like many of those languages, Rexx is free, portable, widely used, and standardized. Rexx runs runs anywhere, from handhelds to desktops to servers to mainframes. It enjoys a strong international standard, so scripts run across all these platforms.
Rexx has a world-wide user community that offers good support, hundreds of free tools, and nine different Rexx interpreters optimized for various platforms and purposes. Rexx books, resources, and forums come in a wide variety of spoken languages.
So what, you say? That's all well and good, but it's nothing different from what languages like Perl and Python offer.
What distinguishes Rexx is that it blends ease of use and power through a host of specific techniques. Ease of learning and ease of use are why Rexx came bundled as the scripting language of the Amiga OS and OS/2. Many thousands of developers and end users learned the language through these desktops of yesteryear and still remember it fondly today. Rexx has a proven track record as the driving language for major desktop systems.
Rexx's power has enabled it to be the dominant scripting language on mainframes for two decades. To this day no other scripting language challenges it on any mainframe operating system.
Linux needs an easy-to-learn, easy-to-use scripting language for desktop users and casual programmers. It has to be a language that users can learn quickly but that they won't have to abandon for lack of power as they become proficient. It has to be a language they can script from memory, without complicated syntax or tricky linguistics. It should be a language with deep reach into other platforms and cross-systems compatibility to support Linux's integration into IT. And it should have great international support.
Rexx fits the bill.
Languages like Perl are great for developers but they don't address these needs. They're power languages packed with benefits. But ease of learning, ease of use, and user-friendliness for the desktop user or casual script writer are not among them.
Python is easy to learn. But new users and occasional programmers don't think in object-oriented terms. One must be taught to think this way. My friend, a high school computer science teacher, tells me that new users state their programming problem and then ponder the steps to resolve it. They don't identify the objects of a problem space and then consider the methods they need. At the end of the semester, a few advanced students love object-oriented programming and are off and coding Java. The vast majority would have been better served by having learned to script procedural solutions for common programming problems.
I have great respect for the enthusiastic Python developers who tell me that anyone can program in the language, and that ease of use is one of Python's big advantages. But I believe they are wrong in thinking that even casual users must love (or be made to love) the OO paradigm.
Tcl/Tk is another great language, and one that is easy to learn and use. But Tcl/Tk doesn't offer Rexx's wide-ranging ties to other systems, from handhelds to mainframes. (It runs on many platforms but is identified primarily with Windows and Unix-oriented systems.) Nor does Tcl/Tk present a proven track record as the default scripting language for other operating systems. Few IT sites rely on Tcl/Tk for admin scripting.
"Classic" Rexx is a procedural language. Yet it offers a 100%-upwardly compatible object-oriented version as well. Open Object Rexx is fully object-oriented, with classes, messaging, single and multiple inheritance, polymorphism, encapsulation, overloading, and all the rest. It comes with a huge class library.
The advantage to Rexx is that users have a choice. They can script procedurally or write fully object-oriented code. Since Open Object Rexx runs any classic Rexx script, users can evolve into object-oriented scripting at the rate at which they feel comfortable -- or not. Users are not compelled into object-oriented scripting. This dual, procedural-plus-OOP approach yields compatibility and a reach across platforms, history, and the needs of beginners that is required for a truly successful language for the casual developer.
Languages like Perl, Python, and Tcl/Tk are among the great advantages to Linux. But Linux needs a language that addresses the casual programming needs of desktop users, end users, white-collar professionals, and occasional administrators. Rexx fulfills these needs.
See for yourself
Sample Scripts -- Download scripts for Linux and/or Windows plus Open Object Rexx scripts for Linux. The interpreters below also come loaded with sample scripts.
Books -- The Rexx Programmers Reference covers all aspects of free Rexx and its tools in 690 pages for $25. Rexx books are available in dozens of languages.
Free Rexx interpreters For Linux
Regina: Highly portable, professional, runs everywhere.
Open Object Rexx: Fully object-oriented superset of classic procedural Rexx.
BRexx: Fastest Rexx with the smallest footprint.
Rexx/imc: Proven interpreter with a track record extending back a decade for support.
NetRexx: A "Rexx-like" language for Java environments. Use NetRexx to develop Java-compatible applications, applets, servlets, beans and components.
Free Rexx interpreters for other platforms
Reginald: Offers a high degree of Windows integration with Windows hooks and access to all DLLs.
r4: Adds tools for Windows programming from the command line.
Rexx for Palm OS: Standard Rexx for the Palm OS.
roo!: Fully object-oriented superset of classic procedural Rexx for Windows only.
Users Group -- Rexx Language Association
For Windows users and
for mainframe users.
Howard Fosdick is an independent consultant who has worked in most major scripting languages. He is the author of the Rexx Programmers Reference.