Slashdot Mirror


Rexx Is Still Strong After 25 years

therexxman writes "March marks the 25th anniversary of the Rexx programming language, and to celebrate the Rexx Language Association is hosting the 15th Annual Rexx Symposium at the IBM Research Labs in Boeblingen, Germany, from May 2 to 6, 2004. Full details of the Symposium can be found in the 2004 Rexx Symposium Announcement. Many of the world's 'Rexxperts' will be in attendance including Rexx's founder, Decimal Arithmetic guru, and IBM Fellow, Mike Cowlishaw."

1 of 288 comments (clear)

  1. "REXX's main features include..." by metamatic · · Score: 0, Flamebait

    For balance, let's list REXX's main *mis*features...

    1. Functions can't return multiple values, nor can they modify their arguments. If you want to write a function which returns two values (say), you need to use a magic string which you think will never occur in either of them as a separator, concatenate, return the result, and then split it apart again.

    2. Whitespace is significant--it's interpreted as concatenation. Hence mistyped or syntactically invalid statements are quite likely to be reinterpreted as some kind of concatenation of variables. (And I thought Python was bad.)

    3. Using an undefined variable is not considered an error. Instead, it just defaults to having a value that's the same as its name, only in upper case. Truly foul, especially when combined with misfeature #2 above.

    So if (for example) you put whitespace between a function name and the brackets surrounding its arguments, it suddenly stops being a function call and becomes a concatenation of strings instead. Pass the barf bag.

    4. REXX normally guesses continuations, by assuming the next line is a continuation of the current line if the current line doesn't look like a complete statement.

    5. Comma is used both to separate function arguments, and to indicate continuation. So in spite of #3, you can't just break a long list of function arguments across multiple lines--you have to turn the last comma on each line into double-comma, or you get something completely not what you intended. Ugh.

    6. You're allowed to use variables that have the same names as words used in the language itself.

    7. Scoping is dynamic. Functions and procedures are just a hack whereby the system temporarily hides all variables except the listed ones, until it next hits a return. Not that you have to; it's quite possible to write functions with overlapping scope.

    8. Forget about associative storage, REXX doesn't even have arrays. You can simulate them with 'compound variables', but then there's no type checking or bounds checking. If you want any, you have to write it yourself.

    9. You can't pass arguments by reference. In fact, you can't pass them by value either. Instead, you have to pass constants, and have the function or procedure use those constants to calculate the name of the variables it should use.

    I think REXX is the ugliest hack I've seen since Perl 4 or Tcl.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak