IBM Open Sources Object Rexx
dryeo writes "IBM has Open Sourced Object Rexx. IBM Announcement. Source code has been turned over to The Rexx Language Association under the Common Public Licence. Rexx is an interpreted language which has been included in platforms such as the Amiga, OS/2 and AIX, and most IBM mainframes. For a quick overview check out Rexx for everyone."
A lot more information on Rexx can be found here on IBM's website. This is the main page and has links to courses, function libraries, etc.
IBM is a traditional American company, and back in the old days, IBM managers hired people who were smart and were willing to work[1]. There are many instances of data entry clerks becoming full fledged programmers and even project managers. Rexx, which was invented by an IBMer in the 1960s (?), is a perfect match for this kind of employee. Rexx is very easy to learn. It has no pointers or references (ala Perl). At the same time, Rexx has powerful facilities for string manipulation since most Rexx programs are string-oriented applications like processing queries for a database. Every installation of OS/2 comes with Rexx.
Rexx could actually have precluded the need for Perl if IBM had open sourced it 20 years ago.
By the way, the inventor of Rexx became an IBM fellow.
note
----
[1] IBM traditionally refuses to hire anyone without American citizenship. This rule was relaxed to allow the hiring of permanent residents. Nonetheless, as a matter of corporate policy, IBM managers generally do not hire people with an H-1B visa.
*cough* eclipse *cough*
OS/2 Warp came with an extra CD containing an integrated suite, IBM Works, written in Rexx, it was quick and functional so I guess it's a decent language given what they did with.
Trolling using another account since 2005.
The power of rexx (or the arexx implementation on the Amiga) was that there was a unified scripting language available across applications from different vendors, I added arexx support into the version 2.0 of the image processing/paint software 'Photogenics' for the Amiga, and the beauty of this was you could script applications from different vendors with ease, so if you wanted to batch process a directory full of images and you needed to run the image first through Photogenics and then through (rival) Art Department Professional or ImageFX, you could do that easily.
Please read my Canon EOS tech blog at http://www.everyothershot.com
Object Rexx is kind of new and allows integration of object oriented programs on different platforms. It works on many platforms AIX, OS/2 (had to put it in), the other windows, linux and solaris. It is a very useful tool and is backwards compatible with REXX. People with a more mainframe background will choose it over perl (which is unix based in its syntax). It's also useful for talking to AS/400s. There are a few of those out there.
For a real blast from the past, check out the REXX FAQ that I maintained for a couple of years. Copies are still floating around the net, including here:
t
http://www.funet.fi/pub/languages/rexx/rexxfaq.tx
It seems so... old, I guess. But REXX itself was fun to use, and I spent a lot of time using it and writing applications with (and for) it. It was very approachable, a good way to learn basic programming concepts. It definitely rocked on the Amiga because it was so well-integrated with the system. If OS/2 had not failed, it might still be here, because it was also decently integrated there.
Eric
Rexx is good.
> Using Rexx in conjunction with Bash scripting I can accomplish most of the everyday tasks I face as a sysadmin.
;-)
;-)
Hey, I thought I was the only one who used primarily Rexx and bash!
I'd actually _like_ to learn Perl, but I've yet to run across a text-processing task I couldn't get done in Rexx.
I'll often load a file into the (GPL'd) Hessling Editor ("THE"), which uses Rexx an an extension language. What the editor's native commands (quite powerful in their own right) won't do on their own, a Rexx macro will.
Common scenario: I'll have a group of text files all of the same sort that need some complex editing. I'll load _one_ of the files into THE, and begin using native commands and Rexx to do what needs to be done. Meanwhile, I'm keeping track of what I'm doing in another buffer: i.e. I'm assembling a macro that will do just what needs to be done to all the other files in the group, and will do it in a flash...
Rexx _does_ have a niche, and (so I've thought for a long time) _could_ find a place in the hearts of many *nix users.
More precisely, what I've thought is that if there were an open-source *OO* Rexx (Regina, nice as it is, is not ObjectRexx) Rexx might have a chance.
I wonder if it isn't too late though... Perl/Python/Ruby etc. are pretty entrenched (and well they should be -- I _still_ maintain Rexx could have a place in the ecology, however).
This is an interesting development, to be sure. Maybe it's _not_ too late! At any rate, if you won't give Rexx a try, do me a favor and disbelieve the poster who says QBasic is better.
On the Amiga, applications support Rexx in two ways: they can be commanded using Rexx, and upon certain events they can be made to launch specific Rexx scripts. Rexx commands applications in a markedly different way from the normal UNIX way of working: it assumes the application is already running, and sends commands to make it do different things. If I had a mailer, a Rexx-script for it could look somewhat like this (I forgot the syntax, bear with me...)
ADDRESS KMAIL.0
# now commands are going to the first instance of kmail that is running. Now we'll create a mail. Rexx has highly convenient associative variables for this.
mail.address = "johannesg@slashdot.org"
mail.subject = "Rexx is bloody useful"
mail.body = "at least, if all applications support it"
SEND mail
# Now we will store that mail in our mysql database:
ADDRESS MYSQL.0
SQL INSERT INTO sentmail VALUES mail
COMMIT
And done! We have linked together two already-running applications, to make a new, unique solution.
Similarly, my mailer _should_ just run a Rexx script when mail is received. The script should decide what to do with the mail, which could be classifying it, testing it for spam, forwarding it to another account, or for all I care making an immediate hardcopy and faxing it to my holiday address. None of those functions should be built into the mailer; instead, the user can configure the scripts precisely for his own needs.
This has some major benefits:
- Tools can remain lean, concentrating on core functionality. As long as the Rexx-interface is powerful enough, and the right triggers are provided, any user functionality you can imagine can be added by interfacing other applications to it.
- Complex tools for a specific purpose can be cobbled together by throwing a few existing applications together with some scripting glue.
- The GUI becomes as easy to script as the shell is today.
Of course I am not saying Rexx is the only way to do this, and indeed the KDE people are already moving in this direction with DCOP (I think). However, I believe noone in the Linux world has yet realized how amazingly powerful and useful this concept is.
So in the end, this isn't about Rexx at all - it is about how incredibly useful the concept of scripting together sets of applications is. The language really doesn't matter, since the Rexx interface works on the level of exchanging strings between the script and the addressed application (i.e. it might as well be Perl, or Python, or Ruby, or ...). Rexx is only special because it did this so incredibly well on the Amiga that I still miss it on a weekly basis.
Actually, solutions are to services as custom-made products are to assembly-line products.
Instead of offering a service that a customer will decide whether or not they need it, a solution offers everything to achieve the list of goals a client requires.
The Penguin Producer
4758 Secure Coprocessor Driver for Linux
This project is a Linux device driver for the IBM 4758 PCI Cryptographic Coprocessor, which is a tamper-sensing and responding, programmable PCI card. It provides a highly secure subsystem in which data processing and cryptography can be performed.
ATM on Linux
ATM support for Linux is currently in pre-alpha stage. There is an experimental release, which supports raw ATM connections (PVCs and SVCs), IP over ATM, LAN emulation, MPOA, Arequipa, and some other goodies.
Abstract Machine Test Utility (AMTU) for Linux
Abstract Machine Test Utility (AMTU) is an administrative utility that checks whether the underlying protection mechanism of the hardware is being enforced. This is a requirement of the Controlled Access Protection Profile (CAPP) FTP_AMT.1.
Ananas Project: Summary
This is the source for Working XML, a column on developerWorks with companion project code that demonstrates the evolution of full-fledged XML applications. This is distributed under the artistic license.
Apache HTTP Server
The Apache project develops and maintains an open-source HTTP server for various modern desktop and server operating systems.
BlueHoc simulator
BlueHoc is a tool that predicts the performance of Bluetooth wireless hardware technologies. BlueHoc simulates the baseband and link layers of the Bluetooth specification.
COIN (Common Optimization INterface)
Developers can use Common Optimization INterface (COIN) to build optimization solutions. IBM mathematical optimization researchers opened the code they use in finding the optimal allocation of limited resources. The code has many applications in a variety of industries.
Channel Bonding
The Channel Bonding project works on methods to join multiple networks on Linux into a single logical network with higher bandwidth. The project team works with the Beowulf Ethernet Channel Bonding project, where bonding work began.
Consensus prototype
Consensus is a joint European project carried out by six companies. The project is partially funded by the European Commission. The project goal is to provide technology to support single-authoring for mobile devices. developerWorks hosts the open source implementation developed by the Consortium. Detailed information about the project is at the Consensus Project home page (http://www.consensus-online.org).
Content Query System (CQS) Project: Summary
Content Query System (CQS). CQS is a distributed peer-to-peer query system for the purpose of discovering content or data. XML messages are passed between systems and query "engines" are used to access the data that is being made available on the system.
Crypto Accelerator Driver
Device Driver Support for the IBM eServer Cryptographic Accelerator.
Crypto Interface Library
Generalized Interface library for the IBM eServer Cryptographic Accelerator Device Driver. Note, this is a low level api for the Specified adapter, it is not intended to be an interface which is written to by applications. Applications should use the openCryptoki PKCS#11 api for interfacing to the token.
Dynamic Probe Class Library (DPCL)
DPCL is an object-based C++ class library that allows tool developers and sophisticated tool users to build parallel and serial tools using a technology called dynamic instrumentation.
Embedded IBM PowerPC 4xx Linux Support
This project contains packages which enable adding support for IBM PowerPC 4xx Embedded Processors to
STFU about slashdot bias.
IBM Works wasn't written in REXX. It was written in C (and/or C++), and was originally Footprint Works (before IBM bought out Footprint for their banking software).
Yaz.
Many of the icons for OS/2 Warp were designed by Susan Kare, who also designed many of the icons for the original MacOS and for Windows 3.x...
Here are some of the Warp icons she created for IBM.
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.