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?
How can a language many in the Linux community have never even heard of be valuable in Linux’s fight for the desktop?
It can’t?
Heh, the only place I remember seeing rexx was on the 370 mainframes we had at school. The language does seem a bit archaic put next to languages like ruby.
‘s/Rexx/Lua/n’ for the whole article and you want see much difference.
I don’t see how a scripting language could strip percents from Micorpsoft market share and actually why it should do that.
NB: I’m not a Lua zealot, I don’t even use it on daily basis.
It tries to advertise a language (rexx) saying that it is great because you don’t have to use OO programming with it, as opposed to python.
Except with python you can write normal procedural code.
As I said, pretty pointless.
(can you make pretty GUIs fast with rexx? web services? webscraping/automation scripts?)
Amiga and OS/2 had Rexx and they lost the battle for the desktop against Windows which didn’t had any scripting support beside cmd for a long time. So why should Rexx be of any importance?
True, there are lots of nice scripting languages like Python, Ruby, Lua etc.
Developers I work with already say that they are several times more productive when prototyping in ruby. Why should they change the tool they are incredibly productive with to something else?
Used Arexx all the time on the amiga.
Is it of any use these days I wonder, as the biggest
use I had was controlling different programs via their Arexx ports.
t tries to advertise a language (rexx) saying that it is great because you don’t have to use OO programming with it, as opposed to python.
Except with python you can write normal procedural code.
As I said, pretty pointless.
(can you make pretty GUIs fast with rexx? web services? webscraping/automation scripts?)
>
>
You can, but what’s the point? All of this (libs,ect) REXX would have to either created for or ported to Linux.
This is just more whinning from the Amiga crowd over the fact that Linux users aren’t interested in the Amiga enviroment.
There’s no reason on earth that Linux should adopt Rexx anymore than it should adopt .net or mono.
But in a world with perl, python, ruby, tcl, php, erlang, java and, ehrm, bash… it’s not more relevant than any of those.
I used Rexx back when I used OS/2. Damn slick back then.
That said, I don’t see the point of considering it under Linux — or any *nix — when you can just use Python.
Let the language war flame begin… =)
Python is easy to learn. But new users and occasional programmers don’t think in object-oriented terms
Totally wrong. Python doesn’t force you into Java/C# “OO” at all.
Seriously, when it comes to those casual pieces of code you write to make your life easier, why not use shellscript?
It’s easy to use, easy to learn, requires no interpeter you don’t already have installed and is widely used.
Concur
No, Python and Ruby don’t force a Java or C# style of object oriented programming. However, they do force programmers to be familiar with how OOP works. There are just so many fundamental operations that are implemented as methods that you can’t ignore OOP for long.
Now, this isn’t necessarily a bad thing, but if you don’t accept the truth about these languages, then you can’t very well advocate them.
Plain old REXX is not particularly interesting in itself. The article’s drum beat about not being OO isn’t particularly relevent since there are dozens of non-OO scripting languages out there.
The REXX implementation that had the most going for it was ARexx (Amiga), way back when. That was fairly unique in the ease with which applications could expose functions to the REXX interpretter. Because it was so easy, many applications exposed REXX interfaces, allowing for very powerful procedural control of applications.
In Windows, there really is no equivalent to this functionality (though it’s kind of touched on using Window scripting host and ActiveX, but those are far more complex and less flexible). On the MacOS side of the equation there’s AppleScript — which is very powerful, but not quite the same.
Under Linux, you’ve got dcop (KDE), bonobo (GNOME), and dbus (freedesktop.org’s IPC mechanism which is desktop-environment agnostic). While I’m not so familiar with bonobo, dcop is very simple to interact with and to expose interfaces in applications with. dcop bindings are available for most languages and can be implemented in minutes for languages where they are absent. To get ARexx’ functionality in Linux, for example, you’d need nothing more than write a stub around the ‘dcop’ command-line utility.
The real rub here is: dcop is currently the most amenable to scripting interaction but is really only used in KDE, and even there, not many developers spend much time or though on exposing functionality of their apps. If dbus matures to the same extent, then you’ll have something.
Regardless, I don’t think it will have a bearing on Linux on the desktop. Microsoft’s current dominance of the desktop computer market is proof that features, functionality, stability, and quality do not make you king. Rigorous marketing, FUD, and “playing hardball” with OEMs is the only way to maintain numerical and fiscal superiority.
I think one of the author’s main points, which most responses may have ignored, it that REXX is easy to learn for desktop users (who likely have never learned to program) and casual programs and that it can grow with them as their abilities grow.
I have often thought about learning a bit about programming (just for fun, as it were) but have been intimidated by what I see as a steep learning curve for most programming languages.
Call me stupid if you like (I’m not) or lazy if you will (guilty on occasion), but I’d be interested in a language that offers an easy entry point, a not so intimidating learning curve, and an ability to handle more complex tasks as my ability improves. REXX sounds like it can do that, although I am not very familiar with it. Can Python or other languages offer the same flexibility?
I’m not trying to start an argument, and I don’t want to incite a flamefest. I’m genuinely curious.
Chris, in your defense of the article you failed to mention that in reality even with out freaking classes Python is more OO than Java or C#.
but if you don’t accept the truth about these languages, then you can’t very well advocate them.
The truth is that Python doesn’t force you into some “OO” style at all. Python is perfectly happy being programmed with functions and “classes” that work just like structs.
> I have often thought about learning a bit about programming (just for fun, as it were) but have been intimidated by what I see as a steep learning curve for most programming languages.
*cough* #!/bin/sh *cough*
I think one of the author’s main points, which most responses may have ignored, it that REXX is easy to learn for desktop users (who likely have never learned to program) and casual programs and that it can grow with them as their abilities grow.
So is Python. Why use Rexx on Linux unless you already know it?
(I’m expecting that Python or Ruby will become the next major scripting language to be used at the prompt constantly. Rexx used to fill that role.)
Can’t see that linux needs Rexx, choice is good but its just another scripting language. What Linux needs is a easy to use standardized developement environemnt similiar to MS VB in Windows.
I’ve looked at Rexx, but really have not found much in it that’s not served by Bourne Shell on the level of shuffling files and processes around, and Python or lisp when I need to move around more complex data. That’s not to say that it’s not a great language, but that I can’t find a use for it that isn’t already served by existing languages with better support.
The author of that “Rexx is a must” article is the author of Rexx Programmer reference, which he links generously in various references at the bottom of the article. Just pointing out the bias.
>Call me stupid if you like (I’m not) or lazy if you will >(guilty on occasion), but I’d be interested in a language >that offers an easy entry point, a not so intimidating >learning curve, and an ability to handle more complex tasks >as my ability improves.
One word: REBOL.
As for Rexx being a “must”; No it isn’t. Arexx on the Amiga was (possibly still is, if it’s in OS4) brilliant, but I don’t see how linux would benefit from Rexx at this point. As others have stated, there’s really nothing Rexx can do that the currently available and familiar alternatives can’t.
“Amiga and OS/2 had Rexx and they lost the battle for the desktop against Windows which didn’t had any scripting support beside cmd for a long time. So why should Rexx be of any importance?”
Bad examples.OS/2 and Amiga lost more for non-technical reasons.
I know Perl. I like Perl. I use Perl. Perl is quick and dirty. But all I read is Python this, Python that. Did I miss the Python lifeboat? Is Perl sunk?
No. Perl is like a submarine. It is damn cool, really sleek, and functional. Python, on the other hand, is more like one of those club-med cuise ships.
as for Ruby… I like what Bruce Eckel has to say:
http://onthethought.blogspot.com/2005/01/thinking-in-ruby-not.html
as for the article… what can I say? can’t blame a guy for pushing his fave scripting language. But saying that REXX is *the* language for casual user, is kinda stretching it, especially when comparing it with Python… which actually kinda look like Rexx, but much more extensible.
While casual users might not know how OO can help them, at some point, if they write enough scripts, they will start to be curious about what OO can give them.
For example, I had a client who is a Product Manager, he knows his business like the back of his hand, but doesn’t know a thing about programming, can’t get much more “casual” than him. I introduced Python to him as a built-in scripting facility in the application that I built for him, and he immediately are able to express business logic using it. No curly braces, no fuss about knowing what $ is supposed to mean, no nonsense. He loved it.
About 6 months later he called me and asking how can he do certain things with Python, then I realize that he starts to get into stuff that OO will be able to help him. My point is, casual users will evolve into serious users, so the best language for them is an extensible one.
Also… did you see the list of Rexx interpreter at the end of the article?? that’s quite a few of them, so the next question is, which one should I use?? I guess that’s for another war … er, I mean article
I spent a lot of time researching languages. I wanted one for me that’d be relatively easy to learn yet was powerful and well supported. I narrowed it down to Perl, Rexx and Ruby. Ruby won. Best compromises for me.
You can program as procedurally as you wish in Ruby. None of that Pythonic ‘self’ stuff to contend with if you don’t want to. Hides the funky bits of OO til you’re ready or have a need for it. Ruby’s much wider support in terms of a userbase also helped tip the scales in its favour.
I remember there was a thread on REXX just a while ago. It seems REXX is just like IPv6: every one in a while somebody discovered REXX (yes, I’ve used it, about 10 years ago, thanks), and start professing its outstanding features and how the world would be save with REXX.
Zzzzzzz…
uhh, re “wider support” i meant wrt Rexx 😉
I know! Let’s create a NEW scripting language that combines the power of Perl and the ease of use of Rexx, and rewrite all our OS’s with it so it works with everything.
Seriously, the biggest problem with most scripting languages is that they’re either too hard to stay good at if you only need them occasionally, or too limited to be useful.
I always have to decide whether to spend an hour getting into “Perl mode” again, or just use my IDE’s regex find/replace and be done quicker. Applescript is very powerful, but it’s also legendary for being flaky and temperamental, unless you do it all day every day and learn the workarounds. People who work full time in a language like Python or Ruby that is also suitable for scripting-type tasks have a big edge (better tool, readily accessible.)
what i’m missing most is the “standard” libraries in al these new scripting languages, and libraries functioning on all platforms… I think python is still one of the best choices here (or perl which has cpan (but the user is still required to download additional modules/libs separately, and as they are not in the main package you never know when they are going to get outdated/unsupported). These issues are far more important than the language itself…
I had forgotten about Ruby. I don’t know much about it except that, as I recall, some of mini-distributions (Feather Linux, for example) include it or tools for programming with it. (I haven’t looked that closely, to be honest.)
As a veteran language designer, I find the designs of both languages to be criminally arbitrary and hideous (cf. Scheme, SML), and not in a good way like perl, which is at least intuitive for people who know various traditional unix scripting tools.
i find pascal to be the most simple to learn and to use casually without having to remember much….
I know someone’s going to dog me for saying it, but OO programming is far less about “objects” and “classes” and “polymorphism” than it is about basic theory. Today’s OO concepts are an elaboration on theory and techniques used in structured languages since they began. We just started to make those techniques easier to write and maintain.
Today’s OO languages do put you into an OO environment, whether you like it or not. There is almost always something going on in the background of an OO language that could be considered OO. However, the point of writing some OO languages was to make those object oriented techniques unnoticeable. In other words, we can program in an OO environment, fully OO in the background, but never actually notice it on the surface. We can program structurally in most OO languages. In fact, I believe C# is really the most forceful language in respect to programming with classes that I have used so far. Even then, you can get away with writing in C# structurally.
The truth is that Python doesn’t force you into some “OO” style at all. Python is perfectly happy being programmed with functions and “classes” that work just like structs.
Dave, I understand what you’re saying, but let’s look at just one example which demonstrates what I’m trying to say.
a = [1, 2, 3]
a.reverse()
There’s no standalone reverse function so that you can simply write:
reverse(a)
Yes, you could write:
list.reverse(a)
But either way, you need to understand what’s going on. I’ve seen far too many times such things explained as magic, breeding entire classes full of programmers with no ability to think abstractly.
Now, I’m not saying OOP is bad, or it shouldn’t be taught, but when it’s a fundamental part of a language’s standard library, it can’t be glossed over, even if the syntax permits.
“””Dave, I understand what you’re saying, but let’s look at just one example which demonstrates what I’m trying to say.
a = [1, 2, 3]
a.reverse()
There’s no standalone reverse function so that you can simply write:
reverse(a)
Yes, you could write:
list.reverse(a)
But either way, you need to understand what’s going on. I’ve seen far too many times such things explained as magic, breeding entire classes full of programmers with no ability to think abstractly.
Now, I’m not saying OOP is bad, or it shouldn’t be taught, but when it’s a fundamental part of a language’s standard library, it can’t be glossed over, even if the syntax permits. “””
Actually, it’s quite possible to write code in python without understanding OO at all. It’s not something to brag about, but I used to; I know others who still do. It’s easy enough to see a.whatever() as syntactic sugar for whatever(a), even if that’s not what’s actually going on.
I agree entirely that explaining it as magic or handwaving about it isn’t good, especially pedagogically. For writing clean Python code, understanding OO is certainly a benefit; for writing Python code which works, it’s unnecessary.
Hopefully, concepts and abstraction can be learned with time; I’m unaware of anyone who writes clean code from day 1, even under guidance and using a language well suited to it. A small amount of Smalltalk taught me a lot more about OO than several years of Python did; ymmv.