OSTG | ThinkGeekSlashdotITMJLinux.comSourceForge.netfreshmeatNewslettersPriceGrabber JobsBroadbandWhitepapers
August 30, 2005

  Special Offers      
Get news and special offers on:
Internet Security


Other Languages

Why Linux needs Rexx

Tuesday June 28, 2005 (09:01 AM GMT)
By: Howard Fosdick

  Printer-friendly   Email story  

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

Forums -- In English, French, German, Russian, and Japanese. 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.

  Printer-friendly   Email story  


Top  |  50 comments  |  Search Discussion  |  

If you'd actually used Python... (Score:0)
By Anonymous Reader on 2005.06.28 6:59 (#115204)
If you'd used Python you'd know that it is a procedural language first (no need to write functions if you just want a straight-through script) with optional OO bits tacked on (not unlike Perl).

What exactly does Rexx offer that these current languages don't? That would have made a much better article.
[ Reply to This ]
Basically... (Score:1)
By canckaer (186973) on 2005.06.28 7:45 (#115206)
You just wanted to do some advertising for your book, and get paid for it, instead of paying for it.
[ Reply to This ]
how does this help the linux desktop ? (Score:1)
By algorythm (191110) on 2005.06.28 7:45 (#115207)
The article starts with "Rexx can help linux in the desktop environment". Somewhere in the middle the 'support' for that argument was "Rexx was used on amigaOS, OS/2, and especially mainframes".

Exactly how does the fact that Rexx was cool on some now largely obscured OS's and is used to help admin big iron like mainframes help linux on the desktop today?

It may be a great scripting language for administrative tasks, and allow for porting tools from mainframe OS's to linux (which is one of the things IBM is helping folks do) but neither of those are (arguably) really useful on grandma's PC.

Does it have some great feature that allows easy transition for windows/mac users to a linux environment? Is there something inherent to it that would allow for development of an integrated desktop environment?

Those are the kinds of questions that should have been answered to support why Rexx will help linux on the desktop, curiously none of them were even asked.
[ Reply to This ]
Thanks for the update (Score:1)
By eocasio (191111) on 2005.06.28 8:25 (#115210)
Thanks for the update on Rexx. It is certainly not a dead programming language, but to make it to the desktop today it will need a killer app that shows it's strengths or a killer development tool to capture the hobbyist.

For the record, one of the first WWW server implementations was partly written in Rexx by Bernd Pollermann (Berners-Lee, T.,Weaving the Web, p. 32). So I think it is worth the look. I also like the fact that it can be used to develop handheld applications.
[ Reply to This ]
looks a bit like BASIC or FORTRAN (Score:0)
By Anonymous Reader on 2005.06.28 8:54 (#115214)
Code samples resemble to BASIC or FORTRAN. "C"-like languages are generaly more popular in UNIX community. I don't expect Rexx to catch up in Linux circles, but people with Visual Basic experience might like it.


[ Reply to This ]
Fool! (Score:0)
By Anonymous Reader on 2005.06.28 9:42 (#115219)
There is nothing Perl cannot do! Nothing!
[ Reply to This ]
  • Re:Fool! by Anonymous Reader (Score:0) 2005.06.29 16:50
    Yeah, whatever... (Score:0)
    By Anonymous Reader on 2005.06.28 10:04 (#115222)
    The problem Linux has isn't a "needs Rexx" problem, as much as a "needs a standardized automation API".

    ARexx was great because everthing exposed itself to ARexx, the same way they (kinda) do for VBA or AppleScript. I have nothing against the Rexx language, but the language itself won't solve the problem of scriptability on Liunx.
    [ Reply to This ]
    python (Score:0)
    By Anonymous Reader on 2005.06.28 11:11 (#115228)
    All of the python-related comments are bunk. You obviously neglected to do your homework, as python is perfectly at home being used as a procedural language, or an object oriented one. Given the glaring misunderstanding that I see in just that one paragraph, you can't reasonably expect me to take any of the article seriously.
    [ Reply to This ]
    • Re:python by Anonymous Reader (Score:0) 2005.06.28 12:29
      The original purpose of Rexx (Score:1)
      By fmcgowan (172199) on 2005.06.28 12:30 (#115238)
      was to provide a single scripting language for allm IBM platforms. It does that and, by entension, it provides a single scripting language than can be used in every nix shell.

      I use Rexx (Regina) on Windows at work every chance I get. It provides the stable scripting language MS forgot(?) to provide. It provides all the other niceties that bash and every other nix shell provide - real variables, arithmetic operators, low level file I/O, etc - that MS has never provided for its platforms or has implemented inconsistently from version to version.

      Replacing calls to utility programs wiht CyWin nix utilities will make the scritps poratble to new platform.
      [ Reply to This ]
      outdated, crippled (Score:0)
      By Anonymous Reader on 2005.06.28 14:28 (#115248)
      Rexx was great 20 years ago when I used to use it on a mainframe. I did a lot of cool things with rexx and thought it was wonderful back then. Today if I were still using a mainframe I would clearly prefer Perl to Rexx any day. It is like I could use a tricycle as I did as a child but why (unless you use tricycle landing gear in a plane)? Thanks for the memory. I'll stick with a real scripting language.
      [ Reply to This ]
        This is an ad, not an article (Score:0)
        By Anonymous Reader on 2005.06.28 15:53 (#115259)
        This whole article is just an advertisement for the author's book. It should never have been given free space on Newsforge.

        [ Reply to This ]
          ARexx can glue apps together (Score:0)
          By Anonymous Reader on 2005.06.28 16:56 (#115262)
          I have used ARexx on the amiga platform for quite some time.One difference of Rexx to scripting languages like python, perl and others is the way the skripts run. The Rexx interpreter runs as a deamon process. Whenever an application is started that can be scripted with Rexx it binds its commands to the deamon. And this is the difference, you can have *one* script that controls running instances of a texteditor, a image manipulation programm and and and together. This way one can glue the functionalities of applications together.

          [ Reply to This ]
          give me BASIC anytime (Score:0)
          By Anonymous Reader on 2005.06.28 17:40 (#115267)
          any idiot can write BASIC... surely the whole point of scripting is making it powerful yet accessible.
          [ Reply to This ]
            2 words... (Score:0)
            By Anonymous Reader on 2005.06.28 20:33 (#115277)
            "Ru" and "by"
            [ Reply to This ]
            Rexx on Linux !? (Score:0)
            By Anonymous Reader on 2005.06.28 21:39 (#115280)
            Did some REXX scripting, back in the OS/2 days. It was pretty good in its time. Now I'm using Python on both Windows and Linux for the same kind of jobs.

            Advocating the use of REXX today is like recommending people develop software in Dartmouth BASIC.
            [ Reply to This ]
              We're supposed to want this? (Score:0)
              By Anonymous Reader on 2005.06.28 21:41 (#115281)
              Is telling us it was used on Amiga and OS/2 supposed to make us want it on Linux? Cause, ya know how great those two OSes did. I mean, they had "great" marketshare.
              [ Reply to This ]
                Looks clean and useful, but is it the answer? (Score:1)
                I downloaded some example programs and took a look at REXX. It is, indeed, a pretty simple language to understand. It has a pretty common language syntax that anyone with procedural language experience could easily grasp. I didn't examine the object oriented components, but I suspect it also has an equally clean object oriented syntax.

                I'd like to know, however, how this can be "the answer" or the "missing link" that somehow will enable Linux to go from here to there?

                IBM has some nice development environments, yet several of them lost favor, and some of them had REXX available for years.

                It wasn't REXX that put them on the map, and it wasn't REXX that caused them to lose their market. It was applications and the cost effectiveness of the systems that caused them to either succeed or fade. I think, for example, that OS/2 was a really solid PC OS. It lacked broad market acceptance because the inexpensive PC vendors went with Windows and cheap Intel based hardware, it had nothing to do with either the goodness or badness of REXX.

                Linux systems are full of useful tools. If people decide to use REXX on Linux as one of those tools, that's fine. However, it is not the tools that are lacking, it is better hardware support, a broader range of popular commercial applications, and additional inertia.

                Bring on REXX, I have no problem with it at all. But don't expect REXX itself to be the answer, it is merely another useful tool.

                Brian Masinick mailto:masinick@yahoo.com
                [ Reply to This ]
                  It's dead, Jim! (Score:0)
                  By Anonymous Reader on 2005.06.29 20:23 (#115347)
                  This is an annoying article because he speaks
                  with the pretense of a studied authority, but
                  clearly he doesn't know what he is talking about.

                  I suspect that this has been written by a crufty
                  has-been who hasn't kept up to date. He pines for
                  the old days. These are the kind of guys that
                  will bore you with endless stories about how cool
                  OS/2 Warp was. These guys end their days
                  consulting for large, old companies with some
                  entrenched and ancient mainframe. They program in
                  COBOL or REXX and they like it.

                  Howard Fosdick writes "... I believe they are
                  wrong in thinking that even casual users must
                  love (or be made to love) the OO paradigm.". This
                  statement has no basis in fact. Python may be
                  object oriented, but there is nothing in that
                  statement that forces a new programmer to cope
                  with some mental paradigm shift. You don't have
                  to be taught to think any differently than you
                  would if you programmed in REXX. In Python you
                  can script procedural solutions. You are not
                  forced to write classes. You can write all
                  functions if you want. In fact, you don't even
                  need to write functions if you want to pound out
                  a quick script.

                  Howard, you learned the wrong language. It's
                  dead. Learn a new one. It doesn't have to be
                  Python. Learn Ruby if you want to stand out from
                  the crowd. Or keep programming in Rexx until you
                  retire in the next five years. But don't tell
                  people how cool your old, dead language is by
                  bashing other languages when clearly you don't
                  know what you are talking about.

                  Enjoy your new hole.
                  [ Reply to This ]
                  Author's Response (Score:0)
                  By Anonymous Reader on 2005.06.30 0:03 (#115351)
                  As the author of this article, I'd like to thank everyone for reading it and for their comments.

                  I'd also like to clarify my statements about Python. I meant to convey the idea that Python has a fundamental object orientation, from variables and built-in object types on up, that some other scripting languages lack. If you program in Python and want to really leverage the language, in my opinion you'll need to understand a bit about objects and OOP. This contrasts to languages like Perl or Rexx, where object facilities were added to the language later in its evolution and many folks (for example, sysadmins) script forever without much regard to them.

                  I apologize for my poor explanation on this topic. Any misunderstanding is my fault. Certainly I did not mean to imply that one can't do procedural programming in Python!

                  On another subject -- I was surprised that several comments impugn my motives in writing the article. Are we unable to read different viewpoints without assigning crass or nefarious motives to those with whom we disagree?

                  [ Reply to This ]
                    Linux *has* REXX: (Score:1)
                    By kmself (179112) on 2005.06.30 0:22 (#115353)
                    ( http://twiki.iwethey.org/ )
                    $ apt-cache search rexx
                    regina-rexx - The Regina REXX interpreter
                    regina3 - The Regina REXX interpreter, run-time library
                    regina3-dev - The Regina REXX interpreter, development files

                    Use it if you want it.


                    SCO [iwethey.org]
                    [ Reply to This ]
                      REXX as a language (Score:0)
                      By Anonymous Reader on 2005.06.30 3:23 (#115359)
                      Linux has had REXX for years. It is a good language , sort of a FORTRAN like scripting language with a reasonable graphics interface. For actual nonmathematical scripting I prefer Perl or Python in most instances.

                      The really great thing about Linux is that you can do mixed language programming very easily. C subroutines with FORTRAN subroutines with REXX with .., perhaps all tied together with a Python main program. Great stuff!
                      [ Reply to This ]
                        Options Galore (Score:0)
                        By Anonymous Reader on 2005.06.30 12:31 (#115381)
                        The way the author structures his argument, it would seem the only scripting language choices are Rexx, Perl, Python, an TCL. Of course, there are *many* more.

                        I don't have any real experience with Rexx, so I would be considered a newbie. So I downloaded some Rexx code and looked at it to see the flavor of the language. What I saw didn't impress me-- as a complete novice, I don't find the language any more clear than many other scripting languages.

                        For example, Lua. Lua is a great scripting language and it was actually designed for non-programmers to use, while still retaining much of the power of functional languages. I've taught others how to program Lua in a couple hours and they were doing useful work with it shortly after.

                        Regardless, the point of most scripting languages is to take an API and make it available for, well, scripting. So ultimately the choice of language matters far less than the availability of API's to interact with the rest of the system. The focus should be more on tools and techniques to expose functionality as API's that can be scripted-- in *any* language. Tools like SWIG help here, but ultimately something better is needed.

                        That something better is likely to be an environment (such as Java or .NET) that offers reflection. Right now, there are scripting langauges that using reflection can expose Java and .NET code (for example, Jython and Monad) in very powerful ways, and (mostly) fully automatically.

                        [ Reply to This ]
                          My very first Windows NT 3.5 script (Score:0)
                          By Anonymous Reader on 2005.06.30 14:10 (#115388)
                          used an early Regina Rexx to create a rotating set of backups. Shortly after I switched to Perl because I needed something cross platform and, at the time, Rexx was not free. Too bad IBM took so long.

                          Now I can't imagine going back.

                          Hopefully ObjectRexx becomes a language of use with the Parrot compiler. Make sure that ObjectRexx is reasonably the same on all platforms and has plenty of API hooks and maybe it will continue to have a niche.

                          [ Reply to This ]
                            Rexx (Score:0)
                            By Anonymous Reader on 2005.06.30 21:17 (#115404)
                            What about PHP ? it's procedural AND object oriented .. and as far as I know, it's open source .. I don't know if it offers the same possibilities or stability because I don't code other languages like python and perl, but I can tell that it's really easy and fast to learn, the documentation is impecable and meaningfull. I don't know what it worth as a script langage for linux.

                            [ Reply to This ]
                              Linux needs REXX? Linux *has* REXX! (Score:0)
                              By Anonymous Reader on 2005.07.02 1:07 (#115453)
                              As the author points out, Linux *has* REXX. As it has nearly every other well-known and not-so-well-known language ever devised. About the only ones I haven't seen are the Algol 58 derivatives -- NELIAC, JOVIAL and MAD -- which are mostly of historical interest. You've got ML and its descendents, a variant of APL the name of which I forget, Java, Perl, PHP, Python, Tcl/Tk, Lisp, Scheme, Forth, REXX, R, and of course C/C++, Fortran, Pascal and Ada.
                              [ Reply to This ]
                                This is nonsense! (Score:0)
                                By Anonymous Reader on 2005.07.02 11:53 (#115464)
                                To suggest that Linux is losing the desktop war to Windows because of Rexx is complete rubbish, and here's why.

                                For some reason, the author is suggesting that Linux needs a non-technical scripting language for the average Joe to get things done in Linux. Hello??!?!? Most Windows users that I know don't write programs of any kind, in fact they have no clue about computer logic (or general logic for that matter). How can anyone suggest that a scripting language will make the difference between using Linux and using Windows, when most people aren't even involved in writing scripts? That's complete rubbish!

                                Mr. Fosdick needs either to stop smoking crack, or bring enough for the rest of us to smoke.
                                [ Reply to This ]

                                © Copyright 2005 - OSTG, Inc., All Rights Reserved
                                About NewsForge  •  Privacy Statement  •  Terms of Use  •  Advertise  •  Contact Us
                                NewsForge --online technology news on Open Source, Linux and IT.
                                Add our feed to your site