REXX Introduction

A couple of articles worthy of mention that serve as an introduction to REXX. The first article is a general introduction to REXX, while the second one focuses on using REXX to access DB2 databases. Nothing too involved, but I do enjoy accessible introductory articles, no matter the language.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

NeTREXX is particularly interesting

The NetRexx dialect of REXX is particularly interesting, I think, because it combines the informality of REXX with direct Java interoperation. NetREXX programs look like dynamically typed REXX programs, but are in fact statically typed; the compiler does extensive type inference.

The NetREXX syntax also neatly unifies casting, assignment, and variable typing. The constant 32 is natively of type Rexx (the number/string hybrid that is REXX's basic type). To cast this to a JVM integer, one writes int 32. The assignment a = int 32 implicitly types a as having type int if it appears lexically before any other assignments to a, and the incomplete assignment a = int explicitly types a as int without assigning any value to it.

The "formalized informality" of languages like REXX and Perl is very unlike the style of most programming languages. The one that went perhaps furthest in this direction was CORC, a sort of batch Basic for student use that literally never generated a compiler error: the compiler would attempt to repair and run the program, even to the length of applying a spelling-correction algorithm to variables used only once. This was done in an attempt to minimize slow debugging cycles in an environment when runs were done once a day and most programs were discarded after they ran successfully.

Not extreme enough

[...] for student use
[...]
the compiler would attempt to repair and run the program, even to the length of applying a spelling-correction algorithm to variables used only once.

An obvious improvement would be to try and guess the task given to the student (using names of files, variables, functions, and comments) and then just run the correct implementation of the task. Given the audience, it would work in 99% cases :-)

Well

Luckily, the implementation (at Cornell) was supervised by the instructors.