Slashdot Mirror


O'Reilly on the Virtues of Rexx

gaijincory writes "O'Reilly's ONLamp has written an interesting article on the history and virtues of Rexx, the first widely used scripting language concocted 25 years ago. According to the review, 'Rexx employs decimal rather than binary arithmetic' and 'You don't need to declare or predefine your variables. Rexx automatically allocates them when you first refer to them.' I'd be interested to hear about any success (or failure) implementation stories."

330 comments

  1. You asked for it by Anonymous Coward · · Score: 4, Funny

    We tried working with Rexx

    An employee suggested to me that we load Rexx on a few machines here as an evaluation. I was skeptical at first but he explained the benefits of using it for our employee's day-to-day scripting. So I decided to let him install the interpreter onto 5 machines to see how the users got on. Besides, our IT manager had been using it on his system and it seemed to work fine, why not try it on the client machines?

    Once he'd got the machines up and running with Rexx we let the users try it out. It all seemed fine to start with: Rexx was a pretty good replacement for batch files and the users could still do their work as normal.

    Alas it did not stay that way. After a few days, I had lost count of the number of complaints received from users who could find things they were used to or tasks they could not perform that they previously could with batch files. The final straw came when one employee lost several hours work when Rexx suddenly had an error reading from our intranet file server and corrupted his project.

    Needless to say, the Rexx team offered no support whatsoever. I made the employee uninstall Rexx from the machines and lets just say he's not with us anymore, because we had him killed.

    1. Re:You asked for it by Anonymous Coward · · Score: 0

      why do i care what right wing turdburglar, limbaugh wannabe has to say about a programming language no one cares?

    2. Re:You asked for it by ebuck · · Score: 2, Informative

      A very clever play on words that seems to be something like the old "fill in the blank" stories.

      Was around a few posts back, but then it was about deploying JAVA on the desktop.

    3. Re:You asked for it by Anonymous Coward · · Score: 0

      Well, you're kind of an asshole then aren't you?

      You wanted to try something different. It didn't work out right. So, you're fired.

      Is that lame or what?

  2. Success/failure stories? by Stavr0 · · Score: 4, Informative
    Let's see, it was the Amiga and OS/2's official scripting languages. Nuff said.

    Rexx employs decimal rather than binary arithmetic. [...] You don't need to declare or predefine your variables. Rexx automatically allocates them when you first refer to them. Are these supposed to be positive points? Because it kind of flies in the face of coding best practices...

    1. Re:Success/failure stories? by Anonymous Coward · · Score: 2, Funny

      Latin was a good language, too. Unfortunately, the environments that supported it are no longer widely available or used.

      (There is no Rexx in most ATMs...)

    2. Re:Success/failure stories? by jwdb · · Score: 3, Interesting

      Are these supposed to be positive points? Because it kind of flies in the face of coding best practices...

      I take it you've never heard of LISP? It's a dynamically typed language that, despite being a few decades old (4 or 5 I think) is still seeing some decent usage. I believe the backend of Yahoo Stores is written in LISP, for example.

      Defining your vars beforehand is good practice for strict, structural coding projects and languages. If you're working in a flexible language and you know what you're doing, it's rather unnecessary (not that I can claim to, but I'm learnin').

      Jw

    3. Re:Success/failure stories? by grouse · · Score: 1

      If you think using binary arithmetic is a "best practice" then I hope you don't write any code for use in financial applications, where it can really screw things up.

    4. Re:Success/failure stories? by daviddennis · · Score: 3, Insightful

      I don't think Rexx had a lot to do with the failure of the Amiga or OS/2 in the marketplace. Curiously enough, both of them had their deeply loyal adherents, and perhaps REXX was one of the reasons.

      I have to admit that as a general rule I perfer languages that don't force me to declare variables, especially for simple projects. Or perhaps I just get tired of hearing stilted, bureaucratic language like "best practices".

      That being said, what's wrong with decimal arithmatic? It has the major advantage of eliminating the tiresome rounding errors that make doing financial calculations in (say) Perl so annoying.

      I thought the examples showed a very interesting way of thinking. I probably won't learn or convert to REXX but I can see that it's a very forgiving environment, and I think that makes life more pleasant overall, especially for beginneers. I can see why it's popular in cultures where C and Perl didn't start with overwhelming advantages.

      D

    5. Re:Success/failure stories? by Stavr0 · · Score: 2, Insightful

      If you think using binary arithmetic is a "best practice" then I hope you don't write any code for use in financial applications, where it can really screw things up. Absolutely. But in my mind binary vs 'decimal' is pretty much the same. I think we're talking about binary/fixed point VS floating point arithmetic. And FP is definitely a curse on financial apps.

    6. Re:Success/failure stories? by Anonymous Coward · · Score: 0

      Yup exactly!

      I remember good ol' BaudBandit was scripted through rexx.

      2400 baud modem on the amiga 500, those were the days!

    7. Re:Success/failure stories? by Looke · · Score: 1

      I believe some of the prejudice against dynamical typing is related to poor scoping (look for the Javascript example someone posted) and the possibility of accidentally introducing a new variable if you happen to misspell one. Neither of these is a problem in Lisp, though. I don't know about Rexx.

    8. Re:Success/failure stories? by Forthan+Red · · Score: 1
      > Let's see, it was the Amiga and OS/2's official scripting languages. Nuff said.

      Let's see, the Amiga was only about a decade ahead of its time (and could do things right out the box that Windows still can't get right).

    9. Re:Success/failure stories? by Master+of+Transhuman · · Score: 1


      Definitely - not having to declare a variable and thus causing a mispelled one to be treated as valid is a problem.

      SQR has the same problem, which has bitten me more than once. And it's REALLY hard to visually detect, although you can usually use your editor's search function - if it doesn't find the variable where you expect it to be, you know there's a problem.

      --
      Richard Steven Hack - This sig is TOO GODDAMN SHORT TO DO ANYTHING USEFUL WITH! MORONS!
    10. Re:Success/failure stories? by CableModemSniper · · Score: 1

      Are these supposed to be positive points? Because it kind of flies in the face of coding best practices...

      Don't like perl either then, do you?

      --
      Why not fork?
    11. Re:Success/failure stories? by Anonymous Coward · · Score: 0

      In Rexx You can raise a condition on novalue which will let you find your typos

    12. Re:Success/failure stories? by Anonymous Coward · · Score: 0

      I don't think that was referring to separation of declarations and definitions, but explicitly introducing variables into scope, which all modern Lisps require.

      Not requiring explicit introductions is one of the things I find annoying in Python; because of it, you have to add extra definitions in a function if you want to modify something outside of its lexical scope.

      I don't remember how exactly it worked in Rexx (it's been over 10 years since I've programmed in it), but I think it was similar.

    13. Re:Success/failure stories? by Locutus · · Score: 1

      The poster seems a bit uptight. It said that it wasn't REQUIRED that varibles get declared before they are used and not that you couldn't declare them before use. So lighten up Francis. ;-) For beginners, this sure makes it easier to figure out how to get through the task of writing the first few programs. I wouldn't write a full blown application this way, but simple single file tools/apps would be no big deal.

      LoB

      --
      "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
    14. Re:Success/failure stories? by toledobythesea · · Score: 2, Insightful

      No wonder there are so many problems, at least in business, if people think binary arithmetic is "best practice". It troubles me when I see code comments full of spelling errors. Sometimes that's witty, but usually it suggests ignorance or contempt for precision which is a rather essential attribute for programming. Rexx came out in the days when VM was a kind of counter-culture within IBM. You got the source code too. Didn't use Rexx much, but I was struck by the elaborate annotations and the literacy of the comments. There was nothing sloppy about it, in fact it made much of the other VM (and MVS) source code look pretty slapdash. (That was the first time I'd ever seen mixed-case comments - many of the assemblers then "folded" everything into upper case.) Presumably the new versions aren't written in BAL. I wish somebody would take the Rexx decimal support and put it into Java/ECMA-script.

    15. Re:Success/failure stories? by cait56 · · Score: 1

      And it was quite successful in both cases.

      You surely aren't implying that Rexx was the reason for either to be commercial failures?

      The Amiga version was particularly successful, on technical merits. It was easy and common to perform custom integrations of multiple applications.

      Rexx is very flexible, but not overly flexible (something that can become a nightmare with TCL).

      It also does not suffer from bloated statements to accomplish simple things, the way that AppleScript does.

      But is it so good that I would use it over a scripting language that a staff already knew? I doubt it.

    16. Re:Success/failure stories? by Greyfox · · Score: 1
      Rexx is a pretty decent scripting language and was a favorite of mine in the late '80's and early '90's. I was introduced to it on VM/CMS, where it still lives quite happily today. It was a lot easier to deal with than COBOL or Fortran, and was one of the many reasons I liked OS/2 as much as I did. Unfortunately, Rexx on OS/2 couldn't interact with the Workplace Shell nearly as much as it could have. I think if you'd been able to script GUI interactions through REXX, it would have caught on a lot more than it did.

      These days I prefer Perl, even though I could get REXX for Linux. Perl seems to be a lot more flexible and has Cpan as an added advantage.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    17. Re:Success/failure stories? by count_zero011 · · Score: 1

      Yahoo Stores used to be (http://www.paulgraham.com/), but I believe it was rewritten in C or C++ and Perl after Yahoo bought Viaweb (the company which had originally developed the app in Common LISP).

    18. Re:Success/failure stories? by Anonymous Coward · · Score: 0
      That being said, what's wrong with decimal arithmatic

      There's nothing wrong with it when it's used for the right thing: quantities that have short, exact representations in base-10 (i.e., monetary amounts). However, it is not an appropriate choice for general-purpose arithmetic.

      It has the major advantage of eliminating the tiresome rounding errors

      You've never tried typing 1/3*3-1 on your calculator, have you? (For extra credit, try it in IEEE 754 double-precision.) Decimal arithmetic doesn't eliminate rounding errors, it merely moves them to other calculations.

      So in most cases, binary arithmetic has no significant disadvantage in accuracy. And it's faster.

    19. Re:Success/failure stories? by Tekoneiric · · Score: 3, Informative

      The failure of the Amiga wasn't due to Rexx. If anything Arexx helped keep the Amiga in use for years. Lightwave users missed not having Arexx on the Windows port. The failure of the Amiga was due to the execs at Commodore. They'd rather take trips to the Bahamas than do any real marketing. -Andrea-

      --
      *It's not what you can do for the Dark Side but what the Dark Side can do for you!*
    20. Re:Success/failure stories? by Anonymous Coward · · Score: 0

      Anyone spitting out words like "coding best practices" would certainly be using strict/warnings with Perl.

    21. Re:Success/failure stories? by wheany · · Score: 1

      So, is FP fixed point or floating point?

    22. Re:Success/failure stories? by grouse · · Score: 1

      But in my mind binary vs 'decimal' is pretty much the same.

      Then you are misinformed.

      I think we're talking about binary/fixed point VS floating point arithmetic.

      Floating point is fine, just as long as it's decimal floating point, not binary floating point. I think IBM's Decimal Arithmetic FAQ might help you understand this better. You can represent any decimal number exactly in decimal floating point, so it is in fact better than fixed point, which can represent a smaller set of numbers limited by the precision you set in advance.

      Now you might notice that the FAQ was created by Mike Cowlishaw, the inventor of REXX. He is the expert in the industry on decimal floating point arithmetic precisely because of his experience with REXX (and now with BigDecimal in Java). When the Python developers wanted to add decimal floating point to the language, he's who they turned to.

      Decimal floating point is frequently a "best practice," but you just don't know it yet. Educate yourself.

    23. Re:Success/failure stories? by Anonymous Coward · · Score: 0

      Ah, but you forget, that's where they held their corporate offices towards the end. So they weren't going on vacation, just taking a trip to the home office.

    24. Re:Success/failure stories? by daviddennis · · Score: 1

      I assume you mean (1/3*3) - 1?

      Well, my calculator is bc, so let's see here:

      [David-H-Denniss-Computer:~] david% bc
      bc 1.06
      Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
      This is free software with ABSOLUTELY NO WARRANTY.
      For details type `warranty'.
      (1/3*3)-1
      -1
      scale=4
      (1/3*3)-1
      -. 0001

      Interesting, looks like it's just a little nuts no matter how you do it. However, we wanted to see how Rexx's decimal arithmatic compared, so I downloaded Rexx and here's what I get:


      [David-H-Denniss-Computer:~] david% rexx
      say (1/3)*3-1
      -1E-9
      [David-H-Denniss-Computer:~] david%

      So it looks like neither approach has won over the other, and as you say, binary arithmatic is a lot faster.

      So I guess I have to eat my words on this one. Thanks for an interesting journey.

      D

    25. Re:Success/failure stories? by Tekoneiric · · Score: 1

      That just means they could take trips there on corporate money. It must have been nice to take tropical island vacations on the company bankroll.

      --
      *It's not what you can do for the Dark Side but what the Dark Side can do for you!*
  3. some issues.... by yagu · · Score: 4, Interesting

    Okay, I'm probably dating myself here (illegal in Nebraska, btw), but I remember REXX when it emerged as a replacement for EXEC which I had coded extensively in (written entire app systems) on IBM mainframes. There were a lot of benefits to REXX back then, notably it cleaned up and made transparent a lot of garbage and system management chores required to write clean EXEC code (e.g., strings tokenized at 8 chars, awkward variable interpolation)... I used REXX for a while on the mainframe and can't remember why I abandoned it.

    Fast forward 2 or 3 hundred years, and I found myself dropped into a Unix universe, and quickly self taught myself the ins and outs of shell. Haven't looked back since. Now, I'm looking back and am intrigued... REXX really does have some interesting features. And, since I have a little free time on my hands, maybe I'll re-visit REXX, but from userland out there, any feedback would be useful:

    • Are there any performance issues with REXX, especially for large implementations?
    • How much can you do self-contained in REXX today? One of the things I like about a language like perl is it really abstracts a lot of utilities otherwise passed outside of perl's purview, shielding coders from having to write platform specific snippets for portability. From the examples it looks like REXX takes the other philosophy and encourages dropping out momentarily to execute a native system command or utility.
    • Like perl, are there ways to be strict with REXX (it wasn't totally apparent from the article)?
    • Is REXX really that popular out there? The article seems to think REXX is one of the most popular languages, but other than me I can't name a single other programmer I've known who writes/has written REXX applications. Maybe this is only a European seed for now (in the article).
    • Is anyone else uncomfortable with case insensitive languages? That was one of the things I'd hoped REXX would address when it came out as a replacement for EXEC, I've always thought aside from the confusion factor of ignoring case (ever lose a file in Windows because of this?), not distinguishing case throws away an entire semantic of elegance for creating better and more maintainable code.
    1. Re:some issues.... by Foz · · Score: 3, Interesting
      I can't name a single other programmer I've known who writes/has written REXX applications.


      *raises hand* I used to use REXX extensively when I worked at Toyota. I used it on the OS/2 machines as well as the mainframe. I even used Visual REXX occasionally.

      I loved REXX. Gave it up when I moved to perl though. It is a very nice scripting language with a rich feature set.

      -- Gary F.
    2. Re:some issues.... by wherrera · · Score: 1

      Back in the mid-90's, with an autamated system of batch FTP transfers, involving parsing a directory listing and dowmloading and uploading certain files by name and date, I found it speeded things up 20% to rewite old REXX code in Perl.

      YMMV, by sytem and task, of course.

    3. Re:some issues.... by alanjstr · · Score: 1

      Yes, we still use REXX for scripting on mainframes.

    4. Re:some issues.... by dreamchaser · · Score: 1

      Same here. I used to use REXX (and later VxREXX) all the time when I was doing OS/2 systems engineering.

    5. Re:some issues.... by Conan+The+Accountant · · Score: 2, Interesting

      REXX is still used as a scripting language in the administration of some DB2 databases.

    6. Re:some issues.... by RetroGeek · · Score: 3, Interesting

      I also used REXX a lot, along with Visual REXX.

      REXX has a wonderful String parsing capability.

      And as for OS/2, as Rexx was the official scripting language, many applications came with REXX aware libraries. You could script directly for the application.

      For instance you could write a script for an email program to manage incoming mail. Or for a FAX program, etc.

      Yes other programs in the Windows (and Linux) world have macro languages, but each syntax is different. With OS/2 and REXX you only needed to learn ONE syntax, then use the libraries.

      It was a great idea.

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    7. Re:some issues.... by TheAncientHacker · · Score: 4, Insightful

      Is anyone else uncomfortable with case insensitive languages? That was one of the things I'd hoped REXX would address when it came out as a replacement for EXEC, I've always thought aside from the confusion factor of ignoring case (ever lose a file in Windows because of this?), not distinguishing case throws away an entire semantic of elegance for creating better and more maintainable code.

      No, actually you misplacing files because the case wasn't what you expected on an old Windows 3.x system was the result of using badly ported case-sensitive tools in a case-insensitive environment. (btw: Windows has always been case-insensitive and case-preserving in the NT codebase)

      Case sensitivity is, frankly, not only useless but flat out stupid and a vast step backward as it doesn't match human readable languages or other human experience thus breaking the paradigm of programming language as translator between human intent and hardware inflexibility. It leads to huge numbers of easily avoidable errors, increased maintenance time and cost and increased overall development time while providing no benefit. Sure, it makes life a little easier for lazy compiler writers and it's habit in people who've never bothered to learn any languages not derived from C but the point of a programming language is to make things easier for the human and not the compiler. Read some code in PL/I or ALGOL or LISP or Smalltalk or SNOBOL or, for that matter, REXX and you may expand your idea of what a language can be.

      Other signs of C-blinders are thinking that three-part loop constructs are a good thing, that curly braces are actually either ergonomic or intuitive or that semicolons are how you end sentences;

    8. Re:some issues.... by JoshRoss · · Score: 1

      i totally agree. once you go case intensive you never want to go back. i personally feel much more productive without case. When i think about objects or methods or even words, i don't think about the case.

    9. Re:some issues.... by Tumbleweed · · Score: 1

      Hey old timer! Do you remember FList? I loved that thing. When I moved over to OS/2, some company in the UK was making a version for OS/2 (text mode), but it was soon abandoned before it got released. Saddest day of my life. *sigh*

      I'd still prefer a good implementation of FList to any other directory utility I've ever seen. And since I was on an Amiga for awhile, I've seen quite a lot. :)

    10. Re:some issues.... by JoshRoss · · Score: 1

      shoot, i meant to type "when"! now, if i could just get people to stop TYPEING WITH AID OF THE CAPS LOCK KEY.

    11. Re:some issues.... by Anonymous Coward · · Score: 0

      I remember flist. And xedit.

      Insanely, I miss those days.

    12. Re:some issues.... by Tumbleweed · · Score: 1

      I don't much miss xedit, but flist combined the features of a directory utility with a shell, and that enabled some amazing funcionality.

    13. Re:some issues.... by Anonymous Coward · · Score: 0

      RetroGeek, you are a little too retro. Windows has had a central, language-independant scripting system for many years now. Look up Windows Script Host. (IBM even sells a REXX that will plug into it.)

    14. Re:some issues.... by vegaspctech · · Score: 2, Interesting

      I can't name a single other programmer I've known who writes/has written REXX applications.

      REXX was my Swiss Army knife for the last two BBSes I ran. I used it to fetch FidoNet mail for our network, test and process files from FidoNet file echos, pull and convert newsgroup content, mirror ftp sites, let users of my public BBS chat with users of my private BBS, handle fax transmissions coming in on the BBS lines and to do most anything Maximus or RemoteAccess didn't do out-of-the-box or didn't do the way I'd liked. But I haven't done anything with it since I took my last BBS down in '97...

      --

      Making the world a better place, one psychotic episode at a time.

    15. Re:some issues.... by Anonymous Coward · · Score: 0

      ...badly ported case-sensitive tools in a case-insensitive environment.

      You mean code by programmers who thought you could compare two strings by, you know, *comparing* them? Are you talking about case insensitive *filesystems* (awful, terrible, bad, should be shot on sight) or case insensitive identifiers in *programming languages* (not ideal, but tolerable).

      Programmers have enough to do without having to remember that every text string has a gigantic number of possible representations and that comparisons have to be done by first converting to a canonical form.

      Case sensitivity is, frankly, not only useless but flat out stupid and a vast step backward as it doesn't match human readable languages or other human experience thus breaking the paradigm of programming language as translator between human intent and hardware inflexibility.

      Would you like to hear about my Polish friend who sells shoe polish?

      Just because human languages are ambiguous doesn't mean computer languages should be. That's downright DANGEROUS. (Which conveys a different meaning than if I simple wrote "dangerous").

      It leads to huge numbers of easily avoidable errors, increased maintenance time and cost and increased overall development time while providing no benefit.

      You're perfectly describing case-*in*sensitive filesystems.

      Sure, it makes life a little easier for lazy compiler writers and it's habit in people who've never bothered to learn any languages not derived from C but the point of a programming language is to make things easier for the human and not the compiler.

      Do the simplest thing that could possibly work. Are you saying programmers are lazy because they went to accomplish the same goals with less work? Okay then every CEO is a lazy bastard.

      I wonder if you guys would feel the same way about Unicode identifiers, by the way..

      Read some code in PL/I or ALGOL or LISP or Smalltalk or SNOBOL or, for that matter, REXX and you may expand your idea of what a language can be.

      (please don't put PL/I and ALGOL in the same list as Lisp and Smalltalk)

      Yes, REXX was curiously interesting, but it's a dead language for all practical purposes. So's Lisp unfortunately even though I love it dearly.

    16. Re:some issues.... by Dinosaur+Neil · · Score: 1

      I managed to avoid EXEC (I started off on MVS systems, so I did C-List instead), but in '89 I ended up learning the CMS version of REXX. A year later, I was roped into an automated operations project on our MVS/XA system and, over the next three years or so, coded thousands of lines of REXX (under NetView) for that project. While none of the individual "scripts" were more than 500 or so lines, some of the more complicated ones (like the system shutdown and startup routines) involved dozens of scripts interacting and being triggered by system messages. After that, I ended up writing still more REXX code for migrating people from VM/CMS (which we were phasing out) to TSO. I followed this with ISPF dialogs and OS/2 routines. Then I left IT to finish my degree and pursue a masters, and still found REXX too useful to abandon. I ran it on Windows until I switched Linux 3 years ago and, after a brief attempt to learn Perl, I downloaded ObjectRexx from IBM and am currently building a REXX-based interface to my PostgreSQL inventory database, or at least I would be if I could get the fscking API to work...

      As for your questions:

      • Perfomance: every implementation I've run across (save one) is interpreted, so there will some performance hit for larger apps. Not necessarily a big one...
      • Self contained: actually, REXX really isn't very self-contained. REXX has a number of basic coding structures of its own, but everything that happens outside of the code tends to be specific to a system. For instance, any file I/O on an MVS system is done with the EXECIO command, which is a lame and far less powerful port of the CMS version, while OS/2, Windows and Linux (and probably others) use the lines(), linein() and lineout() functions which may have different capabilities on different platforms.
      • Strictness: only when it is self-inflicted. Personally, my coding style has gotten more and more anal over the years because, somehwere along the line, I found that people expected me to be able to read my own code. I do not know of any systematic way to enfore sctrictness though.
      • Popularity: well, I still like it. But it's very rare that I run across anyone outside of the mainframe world who's even heard of it. Come to think of it, rare is not the right word. The only place I've seen REXX come up outside of work is, well, right here on /..
      • Case sensitivity: tough call. I started out coding BASIC and FORTRAN way back when, so case sensitivity meant everything was done in CAPS. I then learned C and got bit by case sensitiivity, a lot. Soon there after, a learned REXX and found it far more forgiving of my sloppy coding style and weak typing skills.

      To be fair, REXX is an excellent scripting language, but it does have some serious limitiations as a pure programming language. The first (and biggest IMHO) is in the math department; if you want to raise a number to an irrational power, you're out of luck, and if you need trig or exponential or log functions, you'll have to write them yourself. Second problem is the "compound variable" mistakenly referred to as an "array" in the article. REXX does not do arrays. The compound variable can be used like an array, but its contents are stored as they are assigned, rather than placed in a contiguous chunk of memory. This is not a big problem, if you are aware of the difference, but can cause confusion and faulty code if not careful.

      So, I still use REXX, though not nearly as often as when it was my source of income. I have investigated alternatives, but I'm too weak to learn Perl and too lazy to learn Python...

      --
      "I'm a scientist! I don't think, I observe!" - Dr. Clayton Forrester
    17. Re:some issues.... by hob42 · · Score: 2, Interesting

      Would you like to hear about my Polish friend who sells shoe polish?

      Case isn't the real issue here, sometimes human languages are just broken like that. Look at the present and past tense of "read" - both spelled the same, but pronounced different when spoken. Polish for shoes can be capitalized too, depending on how it's used.

      Just as I don't expect a compiler do differentiate between "read" and "read" I don't expect it to differentiate between "Polish" and "polish" either.

    18. Re:some issues.... by zaivala · · Score: 1

      I remember when I got 4DOS, a DOS extender that had some really special features, they included REXX as the scripting language. I never really got into it, but it was there and hundreds of thousands of 4DOS users had it, whether they used it or not.

    19. Re:some issues.... by mangu · · Score: 1
      Other signs of C-blinders are thinking that three-part loop constructs are a good thing, that curly braces are actually either ergonomic or intuitive or that semicolons are how you end sentences


      Before I learned C, I programmed in Fortran, Basic, and Pascal. After learning C, I never wanted to go back or program in any other language. Among the advantages of C are case sensitivity, the use of curly braces, and the three-part loop construct. Why? Let's see:

      Case sensitivity: The Romans, who invented our alphabet, only had upper case letters. Then why do you think someone later invented lower case letters? Because they are easier to read. The bane of Fortran and Basic are people who write code with the caps-lock key on.

      Three-part loop construct: Just like lower case, shorter programs are easier to read. It's easier to understand a function when you see it in its entirety in a single page. Going back and forth is a major source of bugs. Therefore, any coding convention that makes programs shorter are a good thing.

      Curly braces: Less clutter, again easier to read programs. A listing with { ... } is easier to understand than BEGIN ... END or begin ... end or Begin ... End, if you know your language. The objective is reading at a glance, the eye understands { a fraction of a second quicker than BEGIN. If you don't believe me, look at this screen from a distance, which is easier to see?

    20. Re:some issues.... by Anonymous Coward · · Score: 0

      Open Object Rexx comes with the RxMath package which will do powers.

      It also comes with a powerful array class as well as several other 'collection' classes such as set, table, relation, bag, list, queue which can interact with each other using boolean operator methods.

    21. Re:some issues.... by Anonymous Coward · · Score: 1, Insightful

      Not that I have anything against the idea of case insensitivity, but do you have any idea how messy case insensitivity gets when you go beyond US ASCII?

      Not all human languages have case. Some languages have case, but it doesn't work the same for all characters.

      It seems that Scheme may change to become case-sensitive; this is presumably to make allowing unicode in identifiers workable.

      I've never seen any well-written code, in any language, that accessed the same identifiers using different cases (although in Lisp comments usually describe variables in upper case although they're used in lower case in code, but that's also the GNU coding standard for C, so it isn't strictly related to the treatment of case by the language).

    22. Re:some issues.... by TheAncientHacker · · Score: 1

      Case sensitivity does not mean you can't use mixed case, it just means you don't support multiple meanings based on case.

      Three-part loop construct: Perhaps the stupidest coding convention since it allows indeterminate and complex logic inside the structure of the construct rather than writing code that logically follows its design

      Curly braces: Tell me, would you pick a character that's shifted as one of the most commonly used? How about a pair that are, in many fonts, virtually identical to another grouping set? Say, this: {(({(({()}))})})}? Tell me, on a quick glance, what's the error?

    23. Re:some issues.... by BiloxiGeek · · Score: 1

      GTIrc had hooks in it for REXX scripts to handle inbound and outbound IRC commands. PMMail was REXX aware as well. I wrote some scripts for both of those way back in the OS/2 3.x and Warp days. It was my first dive into scripting languages and I found it to be very useful.

      --
      Do not meddle in the affairs of dragons, For you are crunchy and go well with ketchup.
    24. Re:some issues.... by TheAncientHacker · · Score: 1

      Actually, that's one of the arguments FOR case insensitivity as well. The complexity of representation of symbols means that a simple comparison (the one real advantage of case sensitivity) is in reality useless since canonicalization rules are far too complex to prevent mismatches. Think Unicode vs ASCII vs HTMLEncoded vs URLEncoded vs Shift-JIS versions of the same character and you get the idea.

      Thinking C style "compare two consecutive byte streams of memory until you hit a null" as an string comparison these days makes as little sense as thinking 5-bit BAUDOT code. (And, frankly, causes a huge percentage of buffer overflow attacks)

    25. Re:some issues.... by 10101001+10101001 · · Score: 1

      You're right about English being quirky (I wouldn't exactly call it broken), but clearly Polish and polish are composed of different characters, so without special provisions there's no reason why they should be treated the same. Many computer languages at a fundamental level supports variable creation out of a set of characters, normally letters (upper and lower) and numbers. But, there's nothing to stop a person from composing a computer language that only excepts kanji, for instance.

      The fact is, the only real expectation you should have of a compiler is that it adheres to the language it's meant to compile; you shouldn't expect German to follow the exact same case rules as English--that's either ignorance or arrogance. It's equally silly to expect a computer language to use punctuation in the exact same way as a human language. All human languages, AFAIK, are context sensitive, but computer languages are merely context free. In simple terms, human languages are an order more complex than computer languages. It is for this reason that we've still not created a perfect bablefish, but it's perfectly possible to translate one general purpose language to another--language-dependent binary libraries can hinder this translation, of course.

      This last point means that trying to make a computer language that approached a human language would require an order magnitude more time and complexity to make a compiler to implement it. At the same time, programs written in such a language would almost certainly not do exactly what you want because of the ambiguity of human languages. So, it seems a bit silly to complain about computer languages not adhering to some ambiguous standard on what you consider a good language. But perhaps you'd be happy if a compromise was reached and you simply couldn't enter in upper case for variables (or filenames)?

      --
      Eurohacker European paranoia, gun rights, and h
    26. Re:some issues.... by colinrichardday · · Score: 1

      The extra } as the third character from the end.

    27. Re:some issues.... by JohnQPublic · · Score: 1

      Curly braces are more readable? Hardly! And readability was a key factor in the design of Rexx. As Mike Cowlishaw wrote in his "The REXX Language" book:

      If there is one concept that has dominated the evolution of REXX stntax, it is readability (used here in the sense of perceived legibility). Readbility in this sense is a rather subjective quality, but the genera; principle followed in REXX is that the tokens which form a program can be written much as one might write the in Western European languages (English, French, and so forth).
      The other big deal in Rexx (Mike dropped the all-caps form years ago) design was what Mike called The Principle of Least Astonishment. That lead to some very key decisions, like having reserved words only be reserved in the correct context. When Java added the "enum" and "assert" keywords, programs that used those as symbols broke. When Rexx added the "with input" clause to the "address" instruction, nothing broke because symbols weren't previously permitted where "with input" went and "with" and "input" were only made reserved in that specific context.

      Other similar user-focused issues abound. Rexx was designed by Mike Cowlishaw, but every new feature and syntax issue was discussed with and approved by the Rexx user community before being implemented and deployed. Thus there are very few parts of Rexx that users of the language don't like.

    28. Re:some issues.... by Diag · · Score: 1

      I did the Netview/Rexx thing too. Rexx was great on MVS and VM - much better than the alternatives. Being able to quickly write a script that could run from a batch job, or be triggered by a system message, and address ISPF, TSO, Netview, and even CICS or IMS, was very useful when it came to automating mainframe operations.

      I believe Perl could be even helpful for these kinds of tasks, but I've struggled to understand it to the extent that I knew Rexx. That's probably due more to my age now than anything else :/

      --
      Serving Suggestion: Defrost
    29. Re:some issues.... by TheAncientHacker · · Score: 1

      For those of you not familiar with non-C based languages, the reserved words only being reserved in context comes from PL/I. C compilers still don't have it although with try/catch/finally they're getting sort of in the neighborhood of PL/I and REXX ON events for error trapping.

    30. Re:some issues.... by TheAncientHacker · · Score: 1

      And the time it took to find that shows my point about readability of ]}) ...

    31. Re:some issues.... by Stephen+Maturin · · Score: 1
      Some years ago, I used REXX extensively as part of an automation package (OPS/MVS, later Automate/XC) to automate a large MVS/JES3 Complex. We also used it on an outboard Automation package, and later some VX-REXX.

      The savings we were able to achieve, both in availability, job restarts, and operator headcount were astounding.

      A really powerful language, and a lot of fun to write.

      --
      Non tam praeclarum est scire Latine, quam turpe nescire
      -- Cicero
    32. Re:some issues.... by tilrman · · Score: 2, Funny
      Case sensitivity ... doesn't match human readable languages ...

      Capitalization is the difference between "I had to help my Uncle Jack off a horse" and "I had to help my uncle jack off a horse."

    33. Re:some issues.... by shutdown+-p+now · · Score: 1
      In my opinion case-sensitivity is actually useful to distinguish between different kinds of identifiers. A good example is how it is done in ruby: 'Foo' is a class, 'foo' is a method or variable. It's easy to remember and it's easy to read.

      On the other hand, the compiler should only be case-sensitive for as long as it matters. In other words, in the example above, 'Foo' and 'foo' should be two different identifiers, one for class, one for variable. However, 'fooBar' and 'foobar' should be considered the same.

    34. Re:some issues.... by colinrichardday · · Score: 1

      And how much time did it take me to read it? Also, that's a somewhat contrived example.

    35. Re:some issues.... by TheAncientHacker · · Score: 1

      Of course it's a contrived example. A real example would be a couple of pages of code with dozens of curlys and parens on each page printed out in a small font that has, typically, only a few pixels different between (, { and [

      But I didn't think all of slashdot would want to read a 200 line post just to make a point.

    36. Re:some issues.... by TheAncientHacker · · Score: 1

      The question isn't whether you have automatic enforcement of case rules, it's whether you can have two object in the program that are represented by names that only differ by case of one or more letters.

      In your example, having Foo denote a class is great. Having foo denote a method is great. Having the editor (or even just the compiler) enforce those rules is fine.

      Having both Foo and foo in the same program is just waiting for trouble and making life more complicated for no good reason.

    37. Re:some issues.... by Jerry+Coffin · · Score: 1
      Windows has always been case-insensitive and case-preserving in the NT codebase

      For what little it's worth, the NT codebase has always allowed the programmer to decide whether it should be case sensitive or not -- FILE_FLAG_POSIX_SEMANTICS gets you case-sensitivity.

      For better or worse, the standard libraries for most compilers do not pass this flag in their implementations of fopen, ifstream::open, etc., so in most cases you can only get case sensitivity with direct OS calls, not via the standard library.

      Sure, it makes life a little easier for lazy compiler writers and it's habit in people who've never bothered to learn any languages not derived from C but the point of a programming language is to make things easier for the human and not the compiler.

      Doing case-insensitivity well is substantially more difficult than you suggest. From a purely English-speaking viewpoint, the problem is trivial. From some other viewpoints, it becomes less so. For an obvious example, to me it's obvious that 'b' and 'B' should compare equal to each other -- but to a native Russian speaker, it's equally obvious that they should compare as not equal to each other.

      Once there's general agreement about how to do this in general, compilers will most likely implement those agreements, but as long as it's an open question, most compiler writers are (wisely, IMO) leaving it alone.

      Other signs of C-blinders are thinking that three-part loop constructs are a good thing, that curly braces are actually either ergonomic or intuitive or that semicolons are how you end sentences;

      Ending statements with semi-colons is hardly unique to C -- and given the number of purposes for which the period is already used, the semicolon is a relatively easy choice.

      Presumably your mention of three-part loop construct is looking at C's for-loop. While it undoubtedly isn't anywhere close to perfect, it's still an awful lot closer than most of the alternatives. Just for a couple of examples, Pascal's was so limited it was useless for anything but the very simplest of loops. PL/I supported more of the flexibility allowed in C, but degenerated into unreadability for any but the most trivial of loops. Just for example, try to figure out what sequence of values is iterated through with this:

      DO X = N, N+8 TO 20 WHILE (F<=MAX),
      N*2+1 BY X WHILE (F>MAX & N<200);

      Granted, it's possible to do so with a bit of work, but it can be decidedly non-trivial -- and in fact, it's fairly easy to write self-conflicting conditions, so you need to know a lot about expression evaluation to be sure what will happen under some circumstances.

      That, of course, brings up the next big problem: in quite a few languages, loop conditions are unique unto themselves, with different rules both for syntax and semantics than the equivalent written elsewhere -- so the programmer has to learn two or even three sets of (inevitably conflicting) rules about how to do essentially the same things. While the C programmer may need to learn a bit more up-front, once it's learned it can be applied throughout.

      Those of use who've been around long enough to be sure we don't wear "C blinders" (I.e. we started programming long before C came along) can remember all sorts of other...interesting things in some languages. Just for a couple of examples, consider:

      do 10 i = 1.10

      in Fortran. Now if that was: do 10 i = 1,10 it would be a do loop, equivalent to "for i = 1 to 10" in BASIC. Unfortunately, the simple typo of replacing the comma with a decimal point changes it entirely. In fact, it's a simple assignment of 1.10 to a variable named 'do 10 i' with is perfectly legal and legitimate, but enough to make temporarily reduce nearly anbody's sanity level.

      For another example, let's look at:

      X = Y = 0;

      in PL/I. To most people, this looks l

      --
      The universe is a figment of its own imagination.
    38. Re:some issues.... by TheAncientHacker · · Score: 1

      If new languages had some degree of new design or design likely implemented as truly thought through as a language, I'd agree with your assessment. However, over the last decade or so, almost every new language has done the "we've got some new ideas, let's implement them using C syntax as the base". As such, it's hard to find innovation. It isn't C's quirks that I object to, it's the blind assumption that unless there's a good reason tied to the purpose of the new language, it should always include all of those quirks as though they were both intuitively obvious and blindingly close to perfect. Note the blind defense of such meaningless constructs such as the curly brace. People have stopped thinking about language and just accept C as some sort of religious doctrine.

    39. Re:some issues.... by DaveCar · · Score: 1

      after a couple of pages of code you'd lose some context anyway. emacs seems to be pretty reliable on informing me which braces i'm matching.

      not to say that i don't agree with the basic sentiment, but if your point is that languages should bridge the gap between human and computer towwards the human side why not use tools which can make the reading of the code easier for the human?

    40. Re:some issues.... by TheAncientHacker · · Score: 1

      I agree totally that tools should help. What I don't see is why we should stay with conventions whose only advantage is that they're already in use but which have vast disadvantages.

    41. Re:some issues.... by anweald · · Score: 1
      Are there any performance issues with REXX, especially for large implementations?

      I've only ever found huge file io a problem. Solution is to replace linein(File) with charin(File,,BufferLength). You can write your own linein() definition and the interpreter will find it before finding its own built-in linein(). Not sure that's terribly good design but it can be useful.

      How much can you do self-contained in REXX today?

      date(), time(), stream() (querying file attributes) is about it; everything else is OS-transparent only if it's spelt the same etc.

      Like perl, are there ways to be strict with REXX (it wasn't totally apparent from the article)?

      Yes. signal on novalue is the main one: it traps the use of undeclared variables.

      Is REXX really that popular out there?

      I believe it's very popular with mainframe sysadmin types, who don't do applications, natch.

      Is anyone else uncomfortable with case insensitive languages?

      Nope :-) The rexx philosophy is that since eNgLiSH is case-insensitive, even with proper names, so should the programming language be, except for inside quotes of course.

      I didn't think the original article was that good actually. It didn't mention the built-in tracer, which is brilliant, nor the parse command, which is odd but handy. Nor did it mention the main lack, regexps, over (under?) perl, though there are regexp function libraries for some envs.

      The clarity is the main thing: I once had to analyse the obscure reaches of some pseudo-code in an AI paper for a masters assignment and was able to type it in almost to the character in rexx, then put in loads of variable displays and other traces. Found a bug in the paper, got an A...

      --
      http://anweald.co.uk
  4. Forget c++, REXX is KING! by Anonymous Coward · · Score: 1, Funny


    I'm a first year programming student at an Ivy League school and I've
    just finished my Visual Basic classes. This term I'll be moving onto
    C++. However I've noticed some issues with C++ that I'd like to
    discuss with the rest of the programming community. Please do not
    think of me as being technically ignorant. In addition to VB, I am
    very skilled at HTML programming, one of the most challenging
    languages out there!

    C++ is based on a concept known as Object Oriented Programming. In
    this style of programming (also known as OOPS in the coding community)
    a programmer builds "objects" or "glasses" out of his code, and then
    manipulates these "glasses". Since I'm assuming that you, dear reader,
    are as skilled at programming as I am, I'll skip further explanation
    of these "glasses".

    Please allow me to make a brief aside here and discuss the origins C++
    for a moment. My research shows that this language is one of the
    oldest languages in existence, pre-dating even assembly! It was
    created in the early 70s when AT&T began looking for a new language to
    write BSD, its Unix Operation System (later on, other companies would
    "borrow" the BSD source code to build both Solaris and Linux!)
    Interestingly, the name C++ is a pun by the creator of the language.
    When the first beta was released, it was remarked that the language
    would be graded as a C+, because of how hideously complex and unwieldy
    it was. The extra plus was tacked on during a later release when some
    of these issues were fixed. The language would still be graded a C,
    but it was the highest C possible! Truly a clever name for this
    language.

    Back to the topic on hand, I feel that C++ - despite its flaws - has
    been a very valuable tool to the world of computers. Unfortunately
    its starting to show its age, and I feel that it should be
    retired, as COBOL, ADA and Smalltalk seem to have been. Recently I've
    become acquainted with another language that's quite recently been
    developed. Its one that promises to greatly simplify programming. This
    new language is called C.

    Although syntactically borrowing a great deal from its predecessor
    C++, C greatly simplifies things (thus its name, which hints at its
    simpler nature by striping off the clunky double-pluses.) Its biggest
    strength is that it abandons an OOPS-style of programming. No more
    awkward "objects" or "glasses". Instead C uses what are called
    structs. Vaguely similar to a C++ "glass", a struct does away with
    anachronisms like inheritance, namespaces and the whole
    private/public/protected/friend access issues of its variables and
    routines. By freeing the programmer from the requirement to juggle all
    these issues, the coder can focus on implementing his algorithm and
    rapidly developing his application.

    While C lacks the speed and robustness of C++, I think these are petty
    issues. Given the speed of modern computers, the relative sluggishness
    of C shouldn't be an issue. Robustness and stability will occur as C
    becomes more pervasive amongst the programming community and it
    becomes more fine-tuned. Eventually C should have stability rivaling
    that of C++.

    I'm hoping to see C adopted as the de facto standard of programming.
    Based on what I've learned of this language, the future seems very
    bright indeed for C! Eventually, many years from now, perhaps we'll
    even see an operating system coded in this language.

    Thank you for your time. Your feedback is greatly appreciated.

    1. Re:Forget c++, REXX is KING! by gvc · · Score: 1, Informative

      "I'm a first year programming student at an Ivy League school and I've just finished my Visual Basic classes."

      As Ann Landers would've said, "An Ivy League School in New Haven?"

      In the 70s there was a de facto competition among a bunch of Yale students to try to get some preposterous story accepted and published in her column. Parent proudly upholds the tradition.

    2. Re:Forget c++, REXX is KING! by Anonymous Coward · · Score: 1, Funny
      x <--- Joke

      :-)
      -|- <--- You
      / \
    3. Re:Forget c++, REXX is KING! by SysKoll · · Score: 1

      Parent is funny. Why has it been modded off-topic?

      --

      --
      Mad science! Robots! Underwear! Cute girls! Full comic online! http://www.girlgeniusonline.com/

    4. Re:Forget c++, REXX is KING! by Foole · · Score: 1

      Parent is funny. Why has it been modded off-topic?

      Possibly because it didn't mention REXX other than in the subject line.

      --
      This is not a turnip.
  5. What about Rex Conn? by Anonymous Coward · · Score: 0

    The author of 4DOS/4NT/etc?

  6. Want a success story ? by Anonymous Coward · · Score: 1, Interesting

    IBM is still using REXX widely on z/OS.

    1. Re:Want a success story ? by Anonymous Coward · · Score: 0

      I think a lot of the service processor code is in REXX.

    2. Re:Want a success story ? by EvanED · · Score: 1

      Not just z/OS either. VM, CMS, and probably other parts of the z line too.

  7. Way ahead of its time by Andreas(R) · · Score: 1
    You don't need to declare or predefine your variables. Rexx automatically allocates them when you first refer to them.


    If only this was possible in C#, about 25 years later...

    1. Re:Way ahead of its time by Anonymous Coward · · Score: 0

      AC, you are obviously trolling.

    2. Re:Way ahead of its time by Anonymous Coward · · Score: 0

      AC, you are obviously trolling.

      WTF? Andreas(R) is obviously trolling. He's calling C# is bad or archaic because you have to declare your variables before you can use them. If you do declare variables then the compiler can perform validation that it otherwise can't and catch errors at compile time. It's a *good* thing.

    3. Re:Way ahead of its time by Anonymous Coward · · Score: 0

      Fortunately Microsoft makes a product for you -- VisualBasic.NET

    4. Re:Way ahead of its time by Anonymous Coward · · Score: 0

      Fortunately Microsoft makes a product for you -- VisualBasic.NET

      Actually VB.NET does have some level of type-safety, unlike earlier VBs. I can't remember if you're forced to use it, though, or if it's voluntary. It's a step in the right direction anyway.

    5. Re:Way ahead of its time by Anonymous Coward · · Score: 0

      AC, you are obviously trolling!

    6. Re:Way ahead of its time by Anonymous Coward · · Score: 0

      OOB, it's voluntary (Option Strict Off). It's still basically a strongly typed system, but you can either not declare your variables (Option Explicit Off) or declare them all as Object. The runtime contains some expensive logic to do dynamic casts.

      DotNET 2 supposedly will have real dynamic typing so that it can replace existing scripting languages.

    7. Re:Way ahead of its time by Anonymous Coward · · Score: 0

      Of course you're right. But type safety isn't the reason (type inferrence would do fine). Explicit declaration of variables is good documentation and makes it easy to see their scope. Also makes sure that when you misspell a variable you don't get funny bugs.

    8. Re:Way ahead of its time by jsoderba · · Score: 1

      He might prefer Microsoft's other dynamically typed .NET language: Iron Python. (by Jim Hugunin of JPython fame, now a Microsoft employee.)

    9. Re:Way ahead of its time by TheAncientHacker · · Score: 2, Insightful

      If you do declare variables then the compiler can perform validation that it otherwise can't and catch errors at compile time. It's a *good* thing.

      Object Oriented Programming theory would disagree with you. While it's a "*good* thing" for the compiler writer it's a bad thing for the programmer. One of the four original tenets of OOP is that everything in an OOP system uses LATE BINDING so that the system can be flexible. It's only because Stroustrop couldn't get that working when he was writing his semi-OOP preprocessor to C (C++, perhaps you've heard of it) that this key part of OOP started getting ignored.

      The world doesn't begin and end with what can be done easily in a C derivative language. Take a look at Smalltalk-72 to see what OOP was supposed to be.

    10. Re:Way ahead of its time by Anonymous Coward · · Score: 0

      Visual Basic and VBScript have allowed this for years and years as well.

    11. Re:Way ahead of its time by Mornelithe · · Score: 1

      Thanks but no. I want type-safety in my programming languages, be it C#, C++ or Java.

      Go take a gander at languages like Haskell, which don't require you to needlessly pre-declare your variables, and yet, are most likely more type-safe than any of C#, C++ or Java (considering you can circumvent the type system in the latter three with casts).

      Get with the times, Jethro.

      --

      I've come for the woman, and your head.

    12. Re:Way ahead of its time by Anonymous Coward · · Score: 0
      Oh, I get it. You automatically reply to any AC posts with
      AC, you're obviously trolling
      Well I must say that's Very Mature. Not.
    13. Re:Way ahead of its time by DrXym · · Score: 1

      Erk? Declaring variables up front is a good thing. It means you can do compile-time type validation amongst other things.

    14. Re:Way ahead of its time by Anonymous Coward · · Score: 0

      In Soviet Russia, old Koreans obviously troll YOU!

    15. Re:Way ahead of its time by Anonymous Coward · · Score: 0

      Declaring variables and late binding are only in conflict in languages with crappy type systems. With a decent type system the two are essentially orthogonal (hell even in Java which supports interface declarations, they are almost orthogonal).

    16. Re:Way ahead of its time by CableModemSniper · · Score: 1
      --
      Why not fork?
    17. Re:Way ahead of its time by ebuck · · Score: 1

      This was available in FORTRAN, but soon people quickly realized that it didn't benefit them as much as it hurt maintainability.

      That's why C required variable declarations / definitions prior to use. The simple scenario is when you are dealing with a code block where you accidentally reuse a variable that exists in the same block but just off of the viewable screen. In such cases you can interrupt a count, change a looping order, or generally cause a big mess. With explicit declaration / definition, the compiler complains that you defined the same variable twice.

      Different languages are, well DIFFERENT. In C#, you wouldn't want me resetting your loop counter because both you and I like to use the letter 'i' or the variable 'count'.

    18. Re:Way ahead of its time by cakoose · · Score: 1

      No, you don't always need to declare the type of a variable, but you do need to declare the variable.

    19. Re:Way ahead of its time by CableModemSniper · · Score: 1

      Well yes and no. It depends on whether or not you consider teh first assignment to a variable to be it's declaration. If not then no, you don't need to declarare the variable either. The compiler will just spend more time running up and down the AST.

      --
      Why not fork?
    20. Re:Way ahead of its time by cakoose · · Score: 1
      Go take a gander at languages like Haskell, which don't require you to needlessly pre-declare your variables.

      You don't have to say what type your variables are, but you do have to declare them. In a purely functional language, every assignment to a variable is a declaration.

      And it's not about type safely, it's about variable use safety and being explicit about scope.
    21. Re:Way ahead of its time by cakoose · · Score: 1
      Well yes and no. It depends on whether or not you consider teh first assignment to a variable to be it's declaration. If not then no, you don't need to declarare the variable either.

      What do you mean? A declaration gives a variable scope. Listing a named function parameter is a declaration. Using a variable in a "let" is a declaration.

    22. Re:Way ahead of its time by Jerry+Coffin · · Score: 1
      Object Oriented Programming theory would disagree with you.

      This begs the question "what Object Oriented Programming theory?"

      There is no one all-encompassing theory of object oriented programming, any more than there is one univerally-agreed upon theory of the meaning of life.

      Alan Kay seems to disagree with you anyway -- to quote from his HOPL II talk, "OOP is a late binding stategy for many things..." Given his attitude toward parsimony and generality, he clearly would have left out the "for many things" qualification if he considered it possible -- he qualified the statement because the qualification was necessary.

      It's only because Stroustrop couldn't get that working when he was writing his semi-OOP preprocessor to C (C++, perhaps you've heard of it) that this key part of OOP started getting ignored.

      Nonsense. It would have been substantially simpler to design C++ to use only late binding -- after all, he clearly had late binding working to have virtual functions at all, and once it was working, simply using it consistently would be simpler than using it but also allowing for early binding.

      In chapter 1 of The Design and Evolution of C++ Bjarne outlines much of the original motivation for C++, and in doing so points out why late binding for everything would not have fit his goals, one of which was that (what eventually came to be called) C++ would "...produce programs that ran as fast as BCPL programs..." (section 1.1, page 21, for anybody who wants to read more). This became (and continues to be) one of the most fundamental ideas in the design of C++: you shouldn't pay for what you don't use. In this case, it applies very directly: you should only pay the speed penalty for late binding when you also need the flexibilty of late binding.

      In addition, early binding allows a more direct expression of a design at a high level than is possible if only late binding is allowed. Specifically, early binding (i.e. a non-virtual function) expresses a class invariant, a concept that is virtually (no pun intended) impossible to express in Simula or Smalltalk, except via comments.

      The world doesn't begin and end with what can be done easily in a C derivative language. Take a look at Smalltalk-72 to see what OOP was supposed to be.

      The world doesn't begin and end with what can be done easily in an early version of Smalltalk whose design was based less on what was desirable, and more on what would fit into physically small machine using the technology of the early 1970's.

      Later, Jerry.

      --
      The universe is a figment of its own imagination.
    23. Re:Way ahead of its time by TheAncientHacker · · Score: 1

      Funny, I'm quoting Alan Kay from private conversation at OOPSLA '87.

  8. Type safety by Anonymous Coward · · Score: 1, Insightful

    You don't need to declare or predefine your variables. Rexx automatically allocates them when you first refer to them.

    Gah! No-strong-typing is *NOT* a feature!

    1. Re:Type safety by Anonymous Coward · · Score: 0

      You can have strong-typing in a dynamically typed language. I'm not sure if Rexx live up to this, but it's entirely possible.

    2. Re:Type safety by russellh · · Score: 1

      Gah! No-strong-typing is *NOT* a feature!

      Technically I think that may be true.

      but please... it simply means identifiers are just names to which objects are bound.

      --
      must... stay... awake...
    3. Re:Type safety by Atomic+Frog · · Score: 1

      It is a feature, it may not be a feature you want, but it doesn't perform this way by accident.

      Keep in mind this is a _scripting_ language, it is not compiled and is interpreted at run-time. Having to declare and type your variables would be a waste of time.

      If you've ever used Rexx, you should know you'll get nicely understandable error messages at runtime if you've done something not-compatible.

      But this feature is highly convenient...
      For example, I can get it to print out any variable using "say ".
      That's it. Same for literal text enclosed in quotes or whatever. Not like C where I _have_ to f**king format even a plain decimal for printing.
      I mean, why do I have to go
      printf("%d", mynumber);
      when there really is only one bloody way to print a decimal? Stupid for a scripting language anyways.

    4. Re:Type safety by mad.frog · · Score: 1

      Keep in mind this is a _scripting_ language, it is not compiled and is interpreted at run-time. Having to declare and type your variables would be a waste of time.

      Gah... nothing personal, I am SO FREAKING TIRED OF THIS ARGUMENT. To me, this is equivalent to saying that "scripting language" is a synonym for "language I use when I don't really care if my code is robust or reliable".

      I realize this is a highly unfashionable viewpoint on /. these days, but I am just not interested in wasting hours tracking down runtime errors that end up being due to a typo I made somewhere, especially when any reasonable strongly-typed language could (and would) have prevented the code in question from ever compiling.

      Yeah, yeah, I know, dynamic languages give you soooo much flexibility to do cool things. I happen to agree. But IMHO that flexibility is outweighed by the pain in the ass factor of stupid mistakes that aren't caught until runtime.

      In other words: if there are obvious mistakes that I can have the computer find for me... well, that sounds like a Good Thing to me. (After all, the less time I have to spend debugging, the more time I can spend arguing language features on Slashdot....)

      (And yes, I know about various strongly-typed languages with smart type inference, eg OCaml and Haskell. Unfortunately they aren't options at my workplace, and I haven't had the time to learn them on my own yet. I like the concept, though.)

    5. Re:Type safety by cakoose · · Score: 1
      Keep in mind this is a _scripting_ language, it is not compiled and is interpreted at run-time. Having to declare and type your variables would be a waste of time.

      Requiring variable declarations lets you catch more errors than you would otherwise catch. Now the extra effort may not be worth it, but from a user's perspective, compiled vs. interpreted has nothing to do with it.

    6. Re:Type safety by cakoose · · Score: 1
      But this feature is highly convenient...
      For example, I can get it to print out any variable using "say ".
      That's it. Same for literal text enclosed in quotes or whatever.

      The fact that you don't have to declare variables has nothing to do with "say".

      Not like C where I _have_ to f**king format even a plain decimal for printing. I mean, why do I have to go
      printf("%d", mynumber);
      when there really is only one bloody way to print a decimal? Stupid for a scripting language anyways.

      Because the variable is not a "decimal" variable. It's a number. There is more than one way to print a number. That said, 'printf' is totally retarded.

    7. Re:Type safety by Anonymous Coward · · Score: 0

      Less typing on the part of the programmer is better - it leads to fewer TOTAL mistakes.

      If you think you or someone else will screw up due to not knowing the type, LABEL it in the variable name. Put a COMMENT in. GOSH!

    8. Re:Type safety by Anonymous Coward · · Score: 0

      You sir, have provided the first reasonable stance on weak-typing that I have seen (other than my own of course :D). Very many congratulations are due to you :)

      All the people I've come across are strongly (or weakly) typed zealots, who wish to kill the other party a thousand times over, and don't understand the benifits provided by the other side. I find the flexibility of a weakly typed language amazing. Every time I have to write PI / 2.0 I just want to throttle something. However, keeping variables within their type decreases debugging time as you said, which I'm always down with ;)

      I'd give you a medal if I could... :)

    9. Re:Type safety by pthisis · · Score: 1
      You don't need to declare or predefine your variables. Rexx automatically allocates them when you first refer to them.

      Gah! No-strong-typing is *NOT* a feature!


      That excerpt has nothing to do with type strength (without additional information, you can't say whether Rexx is strongly typed or not). In fact, you're mixing up 3 concepts.

      A strongly typed language is one that enforces type constraints rigourosly on all variable accesses. This can happen at runtime or compile time. A language that is not strongly typed is weakly typed, but it's really a continuum (C++ is more strongly typed than C, but isn't a very strongly typed language; Java and Python are more strongly typed, and ML stronger still. C is quite weakly typed, but traditional VB is arguably weaker, and ASM weaker still).

      A statically typed language detects type violations at compile time. A dynamically typed language detects type violations at runtime. Again, this is a continuum. (e.g. C++ is mostly statically typed but has rtti; Python is completely dynamically typed, and ML is about as statically typed as it gets)

      An explicitly typed language requires variable type declarations prior to use. Alternatives include implicit typing and inferred typing.

      There are examples of languages that have incredibly strong, static typing yet do not require explicit type declarations. (ML is one example, and has a sophisticated type inference mechanism).

      There are languages that are strongly, dynamically typed (e.g Python, Smalltalk).

      And there are languages that are weakly typed, yet are statically typed and require explicit type declarations (e.g. C)

      And, of course, there are languages that are strongly, statically typed with explicit typing (the so-called Bondage & Discipline languages, like Ada and Java) and languages that are weakly, dynamically typed with implicit typing (the confusing, bad scripting languages, like traditional VB).

      But thinking that all strongly typed languages are statically typed and require explicit type declarations (like, say, Java) is fallacious.

      Of the 3, strongly typing is the only one that is clearly "good" for a high-level language. Dynamic vs. static typing and explicit vs. implicit typing are at the very least "right tool for the job". There's a pretty solid argument that if you are going to be strongly, statically typed then allowing type inference (a la ML) is a much better idea that requiring explicit type declarations everywhere if you're interested in robost code and programmer productivity. It's much harder to write a good compiler for such a language, however...
      --
      rage, rage against the dying of the light
    10. Re:Type safety by Anonymous Coward · · Score: 0

      Is mad.frog a derived type of Atomic Frog? And if so, is it weakly or strongly typed?

  9. Rexx automatically allocates them when you first refer to them.

    Well, thanks for the heads up. I imagine that they are variant types too.

  10. VM/CMS by bsd4me · · Score: 3, Informative

    IBM made it available for nearly all of its operating systems. In particular, it was extremely handy if you were on a VM/CMS system.

    --

    (S(SKK)(SKK))(S(SKK)(SKK))

    1. Re:VM/CMS by vanyel · · Score: 1

      Quite. I first learned of it while working on a project with IBM in the fall of 1984 (linking mainframes to multibus systems). At the time, it was way better than anything else I'd run into before, but being only available in mainframes at the time, that week was the only exposure I ever really got to it (I was doing firmware in the interface card, and went to IBM for a week to help build a demo). FWIW, I really enjoyed working with the IBM engineer from Sweden, but since they hadn't connected to the net yet, we couldn't exchange email and keep in touch, so we've never talked since. Always wondered what he got up to, so if you're reading this Bjorn, Hi! ;-)

    2. Re:VM/CMS by Tinkster · · Score: 1

      And bever forget the tight integration it had in OS/2, too ... *sigh* NetREXX, REXX-DB2, ... I've written serious amounts of REXX back in the day ;)

  11. Re:Opera and Firefox [selective figures] by alexander+m · · Score: 1

    you feel uncomfortable without case sensitivity in languages? hmm... given that it's only differentiating factor is that it allows you to declare two objects/vars/functions with identical names, whose only difference is the case of one letter, i would have thought the case for clarity was overwhelmingly against! genuinely good semantics would involve well chosen names or prefixes as differentiating factors.

    still, case-sensitivity in languages doesn't really bug me _that_ much (primary language at work is c++) but what i genuinely _loathe_ is case-sensitivity in operating systems. ughh!!

    aaaannnyywayyy...

  12. Is this good? by GoofyBoy · · Score: 4, Insightful

    >You don't need to declare or predefine your variables.

    Isn't this a bad thing? You would never catch typos when using variables. I start using a variable named "myBigNumber" then the next day I mistakenly start using a "myBigNum" variable even though I mean the same thing.

    --
    The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
    1. Re:Is this good? by Nataku564 · · Score: 3, Informative

      In some languages, like perl, the compiler will warn you about dynamically allocating variables if you have the appropriate options turned on. I am not sure if REXX has a similar flag. The dynamic scope of variables was mostly a feature for people who were just writing shell scripts and what not, where you only had global scope anyway.

    2. Re:Is this good? by Pig+Hogger · · Score: 2, Informative
      Isn't this a bad thing? You would never catch typos when using variables. I start using a variable named "myBigNumber" then the next day I mistakenly start using a "myBigNum" variable even though I mean the same thing.
      It is, indeed, a bad thing.
      This is why I *ALWAYS* begin my PHP scripts with:
      error_reporting( E_ALL );
    3. Re:Is this good? by TheGavster · · Score: 1

      Its a *scripting* language. If you're taking days to compose a script, perhaps its not appropriate for the task. The idea is to be able to quickly gin something up to complete a task. Having to declare variables and work out types for everything makes the use of a script less of an efficiency gain.

      --
      "Because Science" is one step from "Because old book". Try "Because of my experiment testing my falsifiable assertion".
    4. Re:Is this good? by multipartmixed · · Score: 3, Interesting

      There is no requirement to work out types in order to declare variables.

      Dynamically declared are a terrible, terrible, terrible thing.

      Take the following JavaScript excerpt:


      function foo()
      {
      for (i=0; i < 10; i++)
      hello();
      }

      function bar(world)
      {
      for (i=0; i < 10; i++)
      foo();
      }

      bar(i);


      How many times does hello() run? It looks like it should run 100 times. But it only runs 10 times.

      Add "var i" to each of those functions, and it behaves as expected.

      Javascript in many respects is a good (core) language. With better inheritance and a few other tweaks, it could be an excellent scripting language. But dynamically allocated variables really, really hurts it.

      --

      Do daemons dream of electric sleep()?
    5. Re:Is this good? by SporkLand · · Score: 1

      There are a number of languages that allow you to not declare variables, and the fact that you don't have to declare variables or their types is considered one of their strengths. Look up Dynamically Typed Programming Languages on google and you will find a number of discussions.

      I know you aren't talking about dynamically typed languages you are talking about declaration, but I think the arguments are the same.

      The thing about programming in one of these languages is that yes you can make the BigNumber / BigNum, but declaring a variable only helps you prevent certain logical errors anyway. What not declaring variables forces you to do is focus on logic flaws that come in programming. If you make the BigNumber / BigNum mistake more than likely you will notice an error in logic. Since you are focusing on logic errors and you are provided with the tools for detecting those, you will also notice other logic errors that wouldn't have been caught by declaring variables.

      That was poorly written, but I believe the heart of the argument is sound if you just read and attempt to think about it.

    6. Re:Is this good? by qbwiz · · Score: 4, Informative

      The problem is just how javascript defines dynamically allocated variable. Try to do the same thing in Python and it will work the way you want it to.

      --
      Ewige Blumenkraft.
    7. Re:Is this good? by Tyler+Eaves · · Score: 1

      Well, that's just dumpness on the part of Javascript. In most scripting languagess, it will indeen run 100 times.

      --
      TODO: Something witty here...
    8. Re:Is this good? by Jeremi · · Score: 1
      Isn't this a bad thing? You would never catch typos when using variables.


      Definitely. I used to do a lot of ARexx programming on the Amiga, and I have spent hours trying to figure out why my script wasn't working quite right (it would run without giving any errors, but do the wrong thing), only to eventually find out that in one place I had a tiny typo in a variable reference, causing it to use the value '0' in the calculation instead of the proper value.


      Having to declare variables is annoying, but the alternative is worse.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    9. Re:Is this good? by TheAncientHacker · · Score: 1

      >You don't need to declare or predefine your variables.

      Isn't this a bad thing?


      For some problems it's a bad thing, for others it's a good thing. It's actually a good thing on some small projects as it adds some flexibility and the cost of accidental variable declaration doesn't rear its head until the project gets large or gets multiple people working on it.

      And your example is, by the way, also a great explanation why case sensitivity is a bad idea. For example, "I start using a variable named 'myBigNum' then the next day I mistakenly start using a 'MyBigNum' variable even though I mean the same thing."

    10. Re:Is this good? by borud · · Score: 1
      I think you've touched upon why so many people think that, for instance, Perl sucks: there is no end to the people who encourage you to be sloppy; hence there is an incredible amount of sloppy, unreadable, unmaintainable Perl code. In fact, if you read Perl books by some of the most prominent Perl gurus they often push the TMTOWTDI-slogan, which makes me wonder: why are these people teaching other people how to program?

      I've worked with a lot of TMTOWTDI'idians and I can't say I enjoy it. It is very limiting in that you tend to throw away their code rather than maintain it -- because it is cheaper to reimplement than to repair.

      There is nothing wrong in self discipline when using languages that does not impose it. There is nothing wrong in broadening the spectrum of scenarios in which a language could be used by adjusting your level of self-discipline and tidyness. The distinction between "scripting language" and "language" is pretty much an academic one. Beware of people who think there is a very clear distinction.

    11. Re:Is this good? by ozmanjusri · · Score: 1

      Dynamically declared are a terrible, terrible, terrible thing.

      You're missing the point of REXX. It's a string processing language which is used to glue OS and apps. Variables are initialised as strings (uppercase version of string name). Numbers are parsed as strings until you perform an operation on them. If you DON'T want something to be a string, then explicitly type it. Otherwise, the interpreter will do it for you based on the operation you're performing.

      In its native environment (OS/2 or AREXX on the Amiga), linking applications which used it as an internal scripting language and an OS which could use it as a shell extension, it worked brilliantly.

      --
      "I've got more toys than Teruhisa Kitahara."
    12. Re:Is this good? by abulafia · · Score: 1
      There is no end to people who encourage you to eat bad food, drink too much and smoke. So?

      I've coded large systems in Perl. The fact that one _can_ be sloppy is no impediment. I'm also slowly improving a largish app in Java I inherited. The code blows. Complete spagetti, with silly uses of beans that do nothing but delegate to deeper classes, such brilliant encapsulation as a rollback function that, if it doesn't have a DB handle, goes and gets a new one, and of course all of the idiotic restrictions of Tomcat. Great. What does a restrictive language win you again?

      I can write crap code in any language. That Perl doesn't keep me from writing one liners and throwaway scripts just to get something done is a feature.

      And don't get me started on the horror that is PHP...

      --
      I forget what 8 was for.
    13. Re:Is this good? by fm6 · · Score: 1

      It's not about "bad" versus "good". Every programming language makes tradeoffs between two conflicting goals: making it easier for the programmer to create code quickly and easily, and safeguarding against programmer error. Every restriction you could build into a language has vehement fans who consider it necessary to writing safe code, and rabid opponents who think its a stupid restriction that any truely competent programmer doesn't need. Requiring that a programmer declare variable is only one of many such restrictions. There must be thousands.

    14. Re:Is this good? by alienw · · Score: 1

      So, I suppose, you consider MYBIGNUM, MyBigNum, and myBigNum to be the same variable? According to many coding conventions, the first would be a constant, the second a function, and the third a variable. Case sensitivity is definitely useful.

    15. Re:Is this good? by Chris84000000 · · Score: 2, Insightful

      There's a small problem in your reasoning in this example. You're assuming that there exists a universal standard of what a programming language "should" do, and that happens here to be based on a C worldview.

      It "should" do what the language specification says it should do. Part of knowing any language is knowing its scoping rules. You say "It looks like it should run 100 times," but the first thing that went through my mind when I read that was not "Assuming C's scoping rules, it should run 100 times," but rather "I don't know enough about javascript's scoping rules to say what that does."

      --
      Please stop misusing Catch-22 to describe chicken-egg problems or other paradoxes that are not Catch-22.
    16. Re:Is this good? by CableModemSniper · · Score: 1
      Yes, if you are trying to be confusing. Having a case-insensitive language also doesn't take away your ability to have those cues either. You can still write CONSTs Functions and variables, you just can't have a CONST with the same name as a Function or variable, which is a good thing anyway, because that's needlessly confusing
      MYBIGNUM = 1000;

      MyBigNum( x ) {
      return MYBIGNUM + x;
      }

      MyBigNum(myBigNum);
      --
      Why not fork?
    17. Re:Is this good? by plsander · · Score: 1

      One man's script is another's application...

      Speaking as one who supported several 5000+ line tools written in Rexx (and that is before all the includes were expanded!). Now to supress those IDSS memories again...

      The stem variables - (the dotted arrays) are very very powerful. They can be nested and the index does not have to be numeric.

    18. Re:Is this good? by TheAncientHacker · · Score: 1

      What that really asks is; is it a good idea to have a constant named MYBIGNUM, a function named MyBigNum and a variable named myBigNum all in the same program since there's no conflict to you using whatever convention you want unless there'd be a naming conflict in the same program.

      Frankly, I'd consider that to be unmaintainable and totally dependant on everyone ever using your program to have exactly the same coding convention. And the, somebody would probably also come up with mybignum, MyBiGnUm and mYbIgNum as well. The meaning of which is as intuitively obvious as any other arbitrary coding convention.

    19. Re:Is this good? by Pig+Hogger · · Score: 1

      One word: "Typoes".

    20. Re:Is this good? by TheAncientHacker · · Score: 1

      You forgot the obvious:

      if (MyBigNum(myBigNum)) == MYBIGNUM ...

    21. Re:Is this good? by TheAncientHacker · · Score: 1

      Sheesh. And then I blew the parens. Which proves another of my points...

    22. Re:Is this good? by SporkLand · · Score: 1

      I just spell checked it, there were no spelling mistakes. Did I make word choice errors? Were the errors gramatical?

    23. Re:Is this good? by alienw · · Score: 1

      Having a case-insensitive language also doesn't take away your ability to have those cues either.

      Yeah, except other programmers who work on the program will not respect your convention. Someone will probably have his caps lock stuck on, someone will have a broken shift key. Then you have to read code and understand that mybigNum and MYBIGNUM are the same exact thing even though they look nothing like each other.

      because that's needlessly confusing

      It's not that confusing and there are many circumstances where this is justified. Are you really saying that MYBIGNUM and myBigNum can be confused with one another? It would be more confusing if they referred to the same variable.

    24. Re:Is this good? by alienw · · Score: 1

      I didn't say you should have all three in the program. I said that consistent capitalization (enforced by the compiler) can help quite a bit when reading code.

    25. Re:Is this good? by Pig+Hogger · · Score: 1

      No, I meant that typoes in your source code would not check as logical errors... :)

    26. Re:Is this good? by TheAncientHacker · · Score: 1

      That would be case preservation (which is good) not case sensitivity (which is evil)

    27. Re:Is this good? by JohnQPublic · · Score: 1

      Yes, Rexx has the "NoValue" condition for this situation. A veriable which has never been set has no value, and using it results in one of two things happening. By defualt, its value is its name in upper case. But if you've executed a "Signal on NoValue" instruction, it throws an exception instead, and execution continues at the label "NoValue" (case-insensitive, of course).

      Professionally-coded Rexx applications always begin the same way:

      Signal on Error
      Signal on NoValue
      ... your code here ...

      thus ensuring that failing system commands and typos throw exceptions that can be handled out-of-line.

    28. Re:Is this good? by Anonymous Coward · · Score: 0

      That's a variable scoping issue, not a dynamic variable issue.

    29. Re:Is this good? by TheAncientHacker · · Score: 1

      Just to be picky, traditionally (it may not be required now) all REXX programs start with a comment line so VM's script processor will know not to execute it as EXEC.

    30. Re:Is this good? by SporkLand · · Score: 1

      They would show up as logic errors because the program would not behave as you expected.

    31. Re:Is this good? by Decker-Mage · · Score: 1
      Perhaps these modern machines make us too lazy. I started with punch cards and some of my programs were truly huge (the largest was over 25,000 cards and took a hand truck to deliver). I was always very cautious in my typing on the keypunch machine as a mistake equaled a card that could only be thrown away. Sure, there were some machines that would fix a card, by slapping some tape over the mistake, but that was just asking for trouble with the card reader. Sooo..., I type once and check twice when entering my code, which was always done on paper to start with anyway. I still do it that way.

      In carpentry the rule is measure twice, cut once. Perhaps our lives would be a lot easier if we remembered that computers are tools as well. If you are sloppy in one thing, you probably are elsewhere which probably explains the state of software today. Heck, no probably about it.

      --
      "[I]t is a wise man who admits the limits of his knowledge or skill, and that pretending either causes harm." --Terry Go
    32. Re:Is this good? by alienw · · Score: 1

      No, it would be case sensitivity. If I call a variable MyVar, you shouldn't be able to refer to it as MYVAR, because then the convention wouldn't be worth much.

    33. Re:Is this good? by TheAncientHacker · · Score: 1

      No. That's case preservation and is typically enforced by a good editor (Even QuickBASIC 4 in 1988 had it). Case sensitivity is when MyVar and MYVAR refer to different objects in the system.

    34. Re:Is this good? by TheAncientHacker · · Score: 1

      Nonsense.

      I started with punch cards as well and, frankly, I've never found any reason to associate masochism with quality. If a programming environment makes it harder for me to make typos, great. I can spend more time making sure the logic is right. It isn't a really good use of my time spending my time finding the spelling errors when the computer can do a better job for me.

    35. Re:Is this good? by Salamander · · Score: 1
      It looks like it should run 100 times.

      Only to someone who never learned about scope. Treating global scope as the most "natural" is the hallmark of a terrible programmer.

      --
      Slashdot - News for Herds. Stuff that Splatters.
    36. Re:Is this good? by Anonymous Coward · · Score: 0

      Try to do the same thing in Python and it will work the way you want it to.

      Python got it wrong too... What does this do?


      a = 0
      def f():
      print a
      f()
      f()

      Ok, now what does this do?

      a = 0
      def f():
      print a
      a = a + 1
      f()
      f()

      Not what I would expect at first... Silly examples, but it brings out the point that most new language designers seem to think declaring your variable is too much work. Eventually, some of them realize their folly and add it back in. (Perl got "local" and "my" for instance...) I'm not arguing for strict typing, just explicit scoping.

      Here's a better one... Python finally got lexical closures, but they're limited because you can't specify the scope you want:

      def mkgen():
      a = 0
      def f():
      a += 1
      return a
      return f


      Ugh...

  13. started using it in 80's on a 360. by WindBourne · · Score: 1

    I had moved over to the OS-360 to do do PL1/COBOL/RPG in the 80's. REXX was there to play with. I found myself doing all sorts of fun stuff with it. Fairly easy to use. I still think of it like being a very very skinny perl.

    --
    I prefer the "u" in honour as it seems to be missing these days.
    1. Re:started using it in 80's on a 360. by Anonymous Coward · · Score: 0

      Yea right. The new XBOX isn't coming out until November and you used one in the 80s. Pfft... n00bs.

  14. Bleeding edge, or so I thought by 3770 · · Score: 1

    I'm a sucker for bleeding edge.

    I was using OS/2 back in the day (I used Linux too). Windows was just too mainstream.

    I found that OS/2 had a new scripting language that I hadn't seen before. Wow, a new thing I can learn to stay ahead of the curve.

    I spent quite a bit of time learning it before I found out that it was old even then (1994).

    Well, it wasn't bleeding edge, but it was still fun and it beat the pants off of DOS .bat files.

    Good times.

    --
    The Internet is full. Go Away!!!
    1. Re:Bleeding edge, or so I thought by Anonymous Coward · · Score: 0

      > It beat the pants off of DOS .bat files

      Just about anything would (though you can actually do some somewhat useful things with Windows CMD language these days.)

      REXX is a big improvement over DOS/CMD, but I don't see any real advantages over the unix shell language plus awk/grep/sed.

      I remember having this discussion in the 1980s...

  15. REXX by bsd4me · · Score: 0

    Hearing about REXX brings up memories about sitting on an IBM 3178, finishing an assignment, going to print it, only to realize that some prof decide to sent about 3000 pages of data to the line printer ahead of me.

    It also brings up the nightmares of having to use XEDIT to do the work...

    --

    (S(SKK)(SKK))(S(SKK)(SKK))

  16. In it's day by Skiron · · Score: 0

    T-Rex was king. And there are loads of articles on that too.

    1. Re:In it's day by maxwell+demon · · Score: 1

      T-Rex? Is that a REXX offering from the Deutsche Telekom? :-)

      --
      The Tao of math: The numbers you can count are not the real numbers.
    2. Re:In it's day by d'fim · · Score: 1

      No, it's a REXX offering from the folks who came up with T-SQL.....

      --
      Adherence to the truth is a form of disloyalty.
  17. Re:From Monty Python: by Anonymous Coward · · Score: 0

    Thanks for the laugh riot, fuckwit.

  18. Biggest problem is no one is using it by mekkab · · Score: 1, Insightful

    Some olde ex-mainframe guys at work have some Rexx manuals and one guy wrote a small utilitiy in Rexx. (these were the same people that had extensions to vi (.exrc's) to make it work like their mainframe editors...uhm, get out of the past?)

    So thats great and all, but why are you programming in a professional capacity in a language that no one can maintain? Thats worse than hacking code in perl and not "using strict"!

    --
    In the future, I would want to not be isolated from my friends in the Space Station.
    1. Re:Biggest problem is no one is using it by Detritus · · Score: 3, Interesting
      So thats great and all, but why are you programming in a professional capacity in a language that no one can maintain?

      What, like Perl?

      I've written scripts in REXX, and found it easy to write and easy to read at a later date. There are books available on the language. I'd recommend "The REXX Language" by Cowlishaw.

      --
      Mea navis aericumbens anguillis abundat
    2. Re:Biggest problem is no one is using it by LiquidCoooled · · Score: 1

      no one can maintain

      Obviously like other outdated languages they fall out of fashion and favour, but that certainly doesn't mean its unmaintainable.

      Tweaking an existing program with 20+ years of bugfixes and real world modifications is infinitely cheaper and easier than replacing the functionality it performs.

      We have a set of basic (predates VB even!) function code lurking in the core of our system which we would love to replace, but making mistakes and forgetting the intricate details by giving it a whole rewrite is out of the question at the moment.

      --
      liqbase :: faster than paper
    3. Re:Biggest problem is no one is using it by the+eric+conspiracy · · Score: 1

      What, like Perl?

      Yeah, I hear you. My disgust with Perl is leading me to use Python for scripting.

    4. Re:Biggest problem is no one is using it by snorklewacker · · Score: 2, Insightful

      > My disgust with Perl is leading me to use Python for scripting.

      You mean the same language that has no "use strict" at all? That one?

      If you can't maintain reasonably written perl code, stay the hell away from my C. You're a code grinder, not a programmer.

      --
      I am no longer wasting my time with slashdot
    5. Re:Biggest problem is no one is using it by mekkab · · Score: 1

      Tweaking an existing program with 20+ years of bugfixes and real world modifications is infinitely cheaper and easier than replacing the functionality it performs.

      Sorry, I can't agree. I've seen fabulous disasters related to attempting to upgrade mainframes that take down major infrastructure and make the paper (re: NATS making upgrades to their NAS mainframe and UK airspace going down for 2 hours on a friday). The problem? They don't have the experience.

      I've also personally written a drop-in replacement for a kernel queueing method that no longer exists in modern kernels (Device Queues); after 100% line coverage unit testing and 3-way boolean decision coverage, no one has had a problem in two years.

      I realize these are anecdotal. However there is a realistic time and place for simply scrapping what was there and starting a new.

      --
      In the future, I would want to not be isolated from my friends in the Space Station.
    6. Re:Biggest problem is no one is using it by mekkab · · Score: 1

      Yes- I mentioned perl. I hate perl. I mean, its great for hacking something together; but its a read-only language.

      There may be books available on the language now, but what happens when it goes the way of PL1?

      --
      In the future, I would want to not be isolated from my friends in the Space Station.
  19. Sounds like another language by quickbasicguru · · Score: 1

    Why does this sound like Visual Basic?

    1. Re:Sounds like another language by the+eric+conspiracy · · Score: 1


      Why does this sound like Visual Basic?

      Maybe because that is my model for The Worst Language.

    2. Re:Sounds like another language by mattyrobinson69 · · Score: 1

      vb has had actual, real data types since vb3 or vb4 iirc, i hate vb (its inconsistancies) but it does not force variant data types.

  20. And all these years by Timesprout · · Score: 3, Funny

    I thought Rexx was the name of the animated doggie on the MS search dialog.

    --
    Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
    What truth?
    There is no dupe
    1. Re:And all these years by LiquidCoooled · · Score: 1

      I thought it was called "oh fuck off!".

      At least thats all I hear around the office whenever it appears.

      --
      liqbase :: faster than paper
  21. Ruby Doobie Doooo by OSXexpert · · Score: 2, Interesting

    Check out Ruby, the language. It runs circles around Rexx, is free and very cool. True objects, all the time. Garbage collection built in, as well as everything is an object. The best of Smalltalk, Lisp, BASIC, C, and more.

    --
    --- Old Time NeXThead
    1. Re:Ruby Doobie Doooo by MightyMartian · · Score: 1

      There was, if I recall, an OOP variant of Rexx. Wasn't there even a version that compiled to Java byte code?

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    2. Re:Ruby Doobie Doooo by Anonymous Coward · · Score: 0

      Yes it is called ooRexx (there is another version called roo), has all the above and is open source available from http://www.oorexx.org/

  22. The KEDIT editor by ortholattice · · Score: 1
    On Windows, a truly wonderful and overlooked text editor, with REXX underneath, is KEDIT from Mansfield.

    Among its GUI editing features I find essential for everyday work are (1) an underlying model where the screen is a giant xy plane of characters, like a paint program, rather than a sequence of varying-length lines - if I click on column 50 after the end of a 30-character-long line, the cursor sticks there and I can start typing - I don't have to type spaces or tabs to get to column 50; and (2) seamless block cut and paste - even when the block goes beyond the end-of-line.

    I have tried many editors, commercial and not, including Emacs with various macros, in an attempt to emulate these simple features, and although some come close, there's always some problem where they just don't quite hack it, because their underlying model of how lines are treated is just too deeply embedded in the fundamental design. I just can't deal with anything that's almost, but not quite there; a text editor exactly like I want is crucial to my existence since it's where I spend 90% of my time. As far as I know, this product has 0 bugs; at least I have not found one in many years of use.

    On the other hand, I dislike the company that owns it. The product is annoyingly expensive ($159) and despite the price, they haven't updated it in years - for example, there is no scroll wheel support. I don't even know if the company is actively doing anything except acting as a shell to sell this product. They have 0 interest in porting it to Linux or anything else; I have asked and even offered to help them port it.

    Sadly, for me this is the one final piece that I need to go full time to a Linux desktop. Over the years I have tried to get it run under Wine; it "almost works" but eventually craps out. (I haven't tried in a couple of years; time to do that again.)

    People will probably respond with a list of editors claimed implement the GUI features I mentioned. This happened the last time (a few years ago) I posted about this; I tried them all and they all came up short for one reason or another. But list them again, and I'll try them again!

    1. Re:The KEDIT editor by eddy · · Score: 1

      Both of your allegedly(?) "uncommon" features are present in my favourite editor, GWD Edit

      Sort of wrote an "ode" to it a few years back. Still haven't found a replacement.

      --
      Belief is the currency of delusion.
    2. Re:The KEDIT editor by Anonymous Coward · · Score: 2, Interesting

      - if I click on column 50 after the end of a 30-character-long line, the cursor sticks there and I can start typing - I don't have to type spaces or tabs to get to column 50

      That is truly a great feature for blind users. Imagine not being able to see where the cursor is then having your editor suddenly decide to move it to somewhere else when you start typing. I can't believe editors think that tossing characters into the wrong place is acceptable in 2005. I can understand serious problems like that in 1985 when I first started using computers, but the fact that most editors are broken like that 20 years later is absurd.

      PS: Why am I no longer allowed to post to Slashdot without help from someone that can see? Why the filter to prevent blind users from posting? Why does the person that runs this site hate the blind?

    3. Re:The KEDIT editor by snorklewacker · · Score: 1

      > if I click on column 50 after the end of a 30-character-long line, the cursor sticks there and I can start typing

      It goes without saying that emacs is quite capable of this feature too. I thought it was built-in, but apparently not ... There's picture-mode, but that behaves differently than you expect (it's made for ascii line drawings). Rectangle copy and paste is also supported in emacs by holding down the alt key. It does appear to have the broken behavior of not extending the rectangle into anywhere there isn't already text, however. That would be far more difficult to fix, I'd say. I guess you could call that "coming up short".

      If you're really particular about editors, really feel you need exotic behaviors, and don't hate emacs already (I love it, but I can certainly see the opposing points of view) then it's really worth your time to get to know emacs. Plus, you get a fairly gentle introduction to a classical lisp without the enormous crufty baggage that a COMMON-LISP-IMPLEMENTATION saddles you with.

      Emacs also supports your mousewheel. I would never pay for an editor that lacked something so basic.

      --
      I am no longer wasting my time with slashdot
    4. Re:The KEDIT editor by TheAncientHacker · · Score: 1

      Mansfield's KEDIT is a port of the old VM editor XEDIT. You might want to search for other XEDIT ports although KEDIT was the best for years. There used to be quite a few out there. In fact there were enough that PC Magazine did a comparison of XEDIT clones. (btw: I personally don't like the XEDIT family but editors are a very individual thing)

    5. Re:The KEDIT editor by Anonymous Coward · · Score: 0

      Trying to avert an editor war, but Vim (as I'm sure Emacs) is quite capable of handle the few requirements you listed.

      1) set virtualedit="all"
      2) ctrl-v (or ctrl-q on Windows)

    6. Re:The KEDIT editor by Anonymous Coward · · Score: 0

      Did you ever try good old PC-Write back in the DOS days? This certainly fulfilled condition 1, and probably 2 as well.

      I now use xemacs, but this has the annoying habit of redefining the keyboard when you edit different types of files, and sticking all sorts of junk I don't want into new files. It's a pain to have to go edit the start-up macros to fix this.

    7. Re:The KEDIT editor by Camel+Pilot · · Score: 1
      kedit is an amazing piece of software. Kedit provides a simple interface for things like:
      • Manipulating multiple files in the ring buffer. Such as search and replace, Tiled display, etc.

      • Folding. Selectively display lines based on simple commands like:

        ==>all "word" and
        ==>less "removeword" and
        ==>add

        I have yet to get vim do this.

      • Easy block or column editing
      • Incredably fast when editing large megabyte files.
      • Handling nl and cr all form imaginable.


      Once a year I contact the company and request a linux port and once a year they tell me the product is dead and there will be no ports or updates. I wish they would open source this product or someone buys them out and port this code over.
    8. Re:The KEDIT editor by Anonymous Coward · · Score: 0

      try THE: "THE is a powerful text editor modelled on the VM/CMS text editor XEDIT with the best features of Mansfield Software's Kedit"... http://hessling-editor.sourceforge.net/

    9. Re:The KEDIT editor by chriskenrick · · Score: 1

      There's a vim script package called allfold that was inspired by the XEDIT all feature, you might find that helpful.

  23. My past life in REXX by dougsyo · · Score: 4, Informative

    I used to be the VM/ESA systems programmer (king geek) for a state university (I'm still at that university, it's been over 21 years).

    REXX was the first serious scripting language that IBM delivered for VM (EXEC was awful and EXEC2 not much better). Our systems development (applications) staff wrote quite a number of in-house REXX applications interfaced to DMS/CMS (this was before ISPF was very usable under VM). Most of these were working with CUFS (later Advantage). I used REXX extensively to match-merge two files, generate reports, and reformat data. I also rewrote some programs in REXX that had originally been implemented in SNOBAT (a snobol4 dialect for System/370).

    Roll forward a few years. All the sudden, I'm responsible for Unix servers as well as VM. Although I installed regina on our Unix servers, I figured out pretty quickly that perl was the preferred script language for Unix (I first installed 4.0.36). I saw that there were a lot of facilities and working scripts in perl that I'd have to build for myself in REXX, so I made a point to learn perl. I still used REXX for things that interacted with our VM/ESA and z/OS & TSO/ISPF environment.

    Roll forward a few more years. IBM drops HESC, and VM becomes prohibitively expensive to keep. Meanwhile, our academia is moving to Unix and PC-based teaching, and a Unix-based ERP is on the horizon. We decided to eliminate VM. I spent quite a few hours writing perl scripts to parse DMS/CMS panel sources and REXX programs, to build ISPF panels and generate ISPF-friendly REXX from the DMS/CMS REXX code (fortunately most of the code was cookie-cutter so it was easy to do a find/replace). I knew these programs would be eliminated when the ERP was in place.

    Now I'm so neck-deep in Oracle (database, application server, and other toys) and SCT Banner that I maybe spend 10 minutes a day on our z/OS system, and haven't written a new program there (in any language, much less REXX) in six months. I still maintain or help debug a REXX program now-and-then.

    REXX was a success, but for us VM died. I still like REXX, but perl has pretty-well replaced it for me. The last time I wrote a REXX program I caught myself writing perl-isms into it that I had to fix.

    Doug

    1. Re:My past life in REXX by Anonymous Coward · · Score: 0

      Wow. Care to explain any of those acronyms?

      We're mostly Unix people here :)

    2. Re:My past life in REXX by Anonymous Coward · · Score: 0

      Doug,
      Much similar for me with respect to applications now on Unix. Still use Rexx on VM/CMS to access VSAM files. On Unix with Oracle I've written over 100,000 lines of Rexx scripts with Rexx/SQL for CGI scripts -- many are for production applications. Rexx rocks.

  24. Rexx made programming IBM mainframes FUN by IEBEYEBALL · · Score: 2, Interesting

    What I remember about REXX is that it was one of the few languages (along with Model 204 User Language) that made programming IBM mainframes FUN. Of course, nowadays IBM mainframes can be tweaked to run Linux and that opens up a whole slew of scripted languages to choose from.

    --
    -- SKYKING, SKYKING, DO NOT ANSWER.
    1. Re:Rexx made programming IBM mainframes FUN by dougsyo · · Score: 1

      Whoa, another Model204 user!

      We (YSU - Youngstown State) installed 8.0 in January 1985. Initially we ran M204 under VM because our VS/1 system didn't have enough space for online M204 systems. That cleared up once we went to MVS/XA. We were a beta site for several releases, had site visits from Mary T & Alan Y.

      Model204 under CMS has some nice interface features to REXX, although we never used it.

      Alas, due to Banner, Model204 at our site is going the way of our VM & REXX code, but we'll have it for a few more years yet. M204-L has had recent discussion about "Another one bites the dust", but I haven't mentioned what we're doing yet.

      Doug

    2. Re:Rexx made programming IBM mainframes FUN by Jack+William+Bell · · Score: 1

      Heh...

      Ya, I spent six years in the COBOL mines back inthe 80's. And most of what I did was damn boring. But I could do some cool things with REXX in my spare time. What I liked best was the ease of parsing strings with it. Plus it was integreated pretty well into TSO/ISPF, so I could extend the editors and programming environment with it.

      I never wrote a production application in REXX. But I wrote plenty of utilities to make my life easier and some of them took on a life of their own. One of them I wrote after my first exposure to Smalltalk-80. I called it BRZR (Browser) and it was a kind of code browser for JCL (Job Control Language) and COBOL.

      You started by opening a JCL job in ISPF and you ran BRZR. It then opened a second session and gave you a list of all the COBOL programs and PROCs in the job. You could select any of those and it would open a new session with that PROC or program in an editor. If you opened a program and ran BRZR again it would give you a list of the copybooks and link routines, which you could open. And so on. It was actually quite cool for an environment as primitive as TSO/ISPF.

      BRZR and some other utilities I wrote to ease programming ended up trickling out of the shop I worked in and found use in other agencies. I wonder if someone somewhere is still using a descendant of one of them?

      --
      - -
      Are you an SF Fan? Are you a Tru-Fan?
    3. Re:Rexx made programming IBM mainframes FUN by kpharmer · · Score: 1

      that was my motivation as well: after writing cobol, jcl, cics, and ims dc & db - rexx was just really fun.

      Since it was the macro language for ispf - i first wrote about twenty macros - so you you could put the cursor on a filename, hit a pfkey and automatically browse the file, etc, etc.

      Wrote code that would convert a cobol program to cobol II (all periods except one replaced in every paragraph by scope terminators, etc). Then systematically converted *hundreds* of programs to this newer style.

      Wrote a ton of little apps with Dialog Manager, rexx, and db2 - these little apps could be written in 1-2 days, were easy to maintain and performed CRUD on about a dozen tables. Probably more productive than Ruby on Rails today ;-).

      Also started writing batch apps in rexx instead of cobol. That also made it easier to eventually transition to c.

      But the world of perl, java, and c wasn't fun. Really no better than cobol & jcl. Rexx was fun. But luckily now I've found python. Python is also fun. So i'm writing code again.

      I suppose i could still use rexx (it's a stored procedure language in db2, and works on most platforms still). But these days python and ruby look more promising. And still fun.

    4. Re:Rexx made programming IBM mainframes FUN by IEBEYEBALL · · Score: 1

      All of my Model 204 work was in the Washington D.C. area, except for a stint in Massachusetts and 6 months in Akron. Gotta wonder how many Model 204 installations are left out there.

      --
      -- SKYKING, SKYKING, DO NOT ANSWER.
  25. Is this good?-Exposure. by Anonymous Coward · · Score: 0

    I'd rather there be little to no exposure of variables. Remember programming is about what you do TO the data. The nature of the data itself is important so far as what you can' and can't do with it.

    1. Re:Is this good?-Exposure. by Mike+McTernan · · Score: 1

      I'd rather there be little to no exposure of variables.

      I guess you are a fan of functional languages then...

      --
      -- Mike
  26. History? I don't think so by TheAncientHacker · · Score: 4, Informative

    REXX's history isn't even really mentioned.

    First of all, REXX is hardly the first popular scripting language, there were lots of them before it. REXX was designed as an alternative to EXEC2 which was a replacement for EXEC and that's just on IBM's VM mainframe systems. Listing other scripting systems prior to REXX is left as an exercise for the reader.

    As for history, REXX wasn't developed as an official IBM project. It was developed as an internal tools project by Mike Cowlishaw at IBM's research lab in Hursley, England (the VENTA lab) because EXEC2 basically sucked. It was distributed on IBM's internal tools system (VMTOOLS and IBMVM) and became hugely popular inside IBM.

    It was made available as an unsupported tool through the IBM VM user group and became so popular that despite IBM managment wanting EXEC2 to be the "official" scripting language, nobody in their right minds used EXEC2 and REXX became almost universal. Pressure from their commercial VM/CMS and VM/XA users forced IBM to make REXX a supported product.

    In the mid 1980s, a PC version became available internally on the IBMPC and PCTOOLS systems and quite a few internal tools were written in REXX but despite internal popularity, IBM didn't release the PC version of REXX until much later when a vastly expanded (some would say bloated) version was released as a fairly expensive commercial product.

    As a side note, REXX was released as a scripting language for PCs with later versions of OS/2 but by that time OS/2 was insignificant in the PC industry.

    One unrelated note, Cowlishaw is also famous as the keeper of the IBM Jargon Dictionary - a tongue firmly in cheek listing of IBMisms.

    1. Re:History? I don't think so by Anonymous Coward · · Score: 0

      IBM PC DOS 7 came with REXX, but by then it was probably too late for anyone to care.

      I've yet to read anything interesting about REXX other than "IBM uses it" and "It's better than DOS Batch". Seems to be a rather conventional and simple scripting language.

    2. Re:History? I don't think so by TheAncientHacker · · Score: 1

      Yep, I'd forgotten about IBM PC DOS 7.0 (as had everyone else). Remember that by the time it shipped nobody who was still using DOS as their OS was doing upgrades. DOS based systems were legacy project that were being touched as little as possible by then.

      As for cool things in REXX, take a look at the PARSE PULL command. Very, very handy for writing user input routines in a scripting system.

    3. Re:History? I don't think so by snorklewacker · · Score: 1

      One unrelated note, Cowlishaw is also famous as the keeper of the IBM Jargon Dictionary - a tongue firmly in cheek listing of IBMisms.

      Is this the same one that lists the FAMD -- "Forced Air Movement Device" -- a four-letter acronym for a three-letter word?

      Rexx was pretty neat on the amiga as an IPC mechanism, namely REXX ports. As a language, I always found it pretty mediocre.

      --
      I am no longer wasting my time with slashdot
    4. Re:History? I don't think so by Anonymous Coward · · Score: 0

      In IBM mainframes fans are still refered to as AMDs. Who knows why...guess names stick after 40 years...

  27. XOR Failure by cynic+pi · · Score: 1

    Here's a failure:
    Logic operators:
    & == and
    | == or
    && == xor
    How the hell did they get && for XOR, I wrote testing scripts in Rexx and this was one of the most hidden bugs that could be introduced.
    I mean cmon some forms of logic had used & for and for a long time, just find a different character for XOR.

    1. Re:XOR Failure by fabu10u$ · · Score: 2, Funny
      had used & for and for a long time
      ...head... ...exploding...
      --
      They say the mind is the first thing to ... uh, what's that saying again?
    2. Re:XOR Failure by redjack · · Score: 1

      The IBM terminal keyboards and displays had a limited character set in addition to emitting characters in EBCDIC: http://www.globalmt.com/html-manuals/admin/admin00 000006.gif. More, many of the characters were filtered or interpreted by the telecommunications systems (VTAM) or by the editor / monitor. Cowlishaw chose a representation that worked under these restrictions.

      How often have you used an XOR in a script?

  28. AREXX - the Amiga variant by blakespot · · Score: 1
    AREXX is the Amiga variant that brought REXX to the consumer. Well, to a relatively small group of consumers, as it were. :-) Interesting reading, though.


    blakespot

    --
    -- Heisenberg may have slept here.
    iPod Hacks.com
    1. Re:AREXX - the Amiga variant by Blymie · · Score: 2, Informative

      At the time however, it wasn't a relatively small group of consumers, if one was referring to consumers that use computers.

      People must put things in context. The Amiga started out with a very large percentage of marketshare. It was only in its end years that market share dwindled so, via incredible growth in _other_ market shares.

      For a while, REXX was a very dominant programming language. Then again, so was TCL for a while, and so was BASIC.

    2. Re:AREXX - the Amiga variant by Anonymous Coward · · Score: 0

      Heh, on the modern Amiga variant MorphOS (well "modern") there is a video editor written in AREXX the Amiga made REXX really powerful by allowing applications to easily implement "ports" which allowed REXX to use the software's functions, in the case of this MorphOS REXX video editor app, it requires fxPaint image editor and a few command line linux video apps (can't remember which). Rexx is a simple glue to hold together the much more powerful apps around it, and in the process, new applications for existing software practically falls into your lap. It's a shame no modern OS has its scripting language so heavily implemented in day to day desktop applications. AppleScript comes somewhat close though, but imagine AppleScript with full support from Adobe et cetera.

      BTW: it's really hard for ME to read the image that confirms I'm not a script.... took me three times

  29. /bin/sh is older by js7a · · Score: 3, Informative
    ... Rexx, the first widely used scripting language concocted 25 years ago.
    Rexx v1 was released internal to IBM in 1979, and wasn't available to IBM cumstomers until 1982. Steve Bourne wrote /bin/sh at Bell Labs in 1974, and it was included in every Unix distribution from 1976 to the present.
    1. Re:/bin/sh is older by Anonymous Coward · · Score: 0

      Did the original sh have any control flow mechanisms?

    2. Re:/bin/sh is older by js7a · · Score: 2, Informative

      Ken Thompson's 1976 sh did not have any kind of control flow, but the 1977 Bourne shell had very sophisticated control flow: for/do/break/continue/done, case/esac (switch), if/then/elif/else/fi and while/do/break/continue/done. It also had subshells, command and parameter substitution, support for path searching and process-associated environment variables, redirectable standard error output, and signal trapping -- all three years before anyone outside IBM could get a copy of REXX.

  30. How long... by ultrabot · · Score: 0, Offtopic

    ... are we going to pretend that rexx isn't dead?

    I mean, perhaps this romantic nostalgia should just be gotten over with at some point.

    There are better alternatives around these days, with significant developer communities.

    --
    Save your wrists today - switch to Dvorak
    1. Re:How long... by skimitar · · Score: 0, Offtopic
      That's a good point .... This is just computational necrophilia to fill a gap in an otherwise slow news day.

      And another thing (very OT!) why is my default firefox RSS feed bookmark suddenly being banned by slashdot? All I did was click the RSS icon at the bottom of that dang fireyfox doodad on th' interweb. Twas months ago....Now I am being told slashdot hates me and my headline reader is banned. Should have written it in Rexx?

  31. IBM and the Rexx Lang Assoc. by rubycodez · · Score: 2, Informative

    have made Rexx open source: get yourself some of that here

  32. Rexx Extremely Popular by Anonymous Coward · · Score: 0

    Is REXX really that popular out there? The article seems to think REXX is one of the most popular languages, but other than me I can't name a single other programmer I've known who writes/has written REXX applications. Maybe this is only a European seed for now (in the article).

    Yes I can name a single other programmer who has written REXX apps, my dad when he worked at IBM about 20 years ago

  33. Good or whack? by Anonymous Coward · · Score: 0

    Tell me about O'Reilly on the Virtues of Rexx. Is it good or is it whack?

    pasxkbb

    1. Re:Good or whack? by Anonymous Coward · · Score: 0

      How do you feel about tell me about O'Reilly on the virtues of Rexx?

  34. do you fail it? by Anonymous Coward · · Score: 0

    indeed. you fail it!

  35. REXX benefits and drawbacks by scottsk · · Score: 3, Informative

    The most obvious drawback in REXX is that the standard I/O calls don't work on the mainframe (where you have to use EXECIO calls), so it's not very portable. Really, REXX's biggest benefit is its tight integration with TSO (the mainframe command interpreter) and ISPF (the screen interface and editor). When REXX is by itself on other platforms, these benefits disappear. I use REXX on MVS (now called z/OS), but it just pales in comparison to Perl or Python for other environments.

    Keep in mind REXX predates the adoption of C-ish syntax (C, C++, Java, Perl, Python, PHP, etc), so it's not as easy to switch gears mentally as it would be among the C-ish family. As you'd expect, the syntax has its quirks, especially if you don't use it much. None of the standard library functions has names like C's, unlike Perl and PHP. Truth be told, REXX looks a whole lot like structured BASIC.

    REXX is quirky. You can use stems as associative arrays, but there is no mechanism to iterate over them. (I'm not joking.) No regular expressions built into the language like Perl has. No built-in systems programming interfaces (you have to ADDRESS the operating system to run commands, like bash, etc. - more of a flow control language like bash than an environment like Perl) While there are modern extensions like OO for REXX, they're not standard in all REXX interpreters, and are as clumsy as adding OO to BASIC, Fortran, COBOL, and other pre-C languages.

    WROX has a REXX book, the only new one in ages and ages. Unfortunately, it concentrates on non-mainframe platforms where there frankly isn't as much to talk about because you don't have the tight integration with the OS.

  36. Rexx for Windows Available Today by Anonymous Coward · · Score: 0

    If anyone's interested in REXX for Windows, please visit http://www.quercus-sys.com/. There appear to be various *nix implementations available, but I have no experience with these.

    I spent about three years writing REXX apps and interfaces after a new IBM mainframe was installed at a heavily VAX-bigotted research facility for a large household name type company.

    I felt that REXX made me extremely productive in comparison with my peers. Upon leaving that position I counted over 32,000 lines of code, most of it in daily use and believed to be error-free by the users and me.

    Fast forward 20 years - I'm retired and do <flamebait>
    MS Access/VBA design/development
    </flamebait>
    for fun and profit. Over the years I've coded in C, PHP, JavaScript, and assorted other languages. None of them have the ease of use of REXX, IMHO.

  37. REXX with other backends by maxwell+demon · · Score: 1

    One nice thing about REXX is its "outside environment" concept. This basically anables it to be added to about anything which accepts commands. For example, EMX's gdb port for OS/2 added REXX support. This way, you could actually write "debug scripts". See an example in this usenet posting.

    --
    The Tao of math: The numbers you can count are not the real numbers.
  38. Rexx not popular with the Russian mafia, then? by Dogtanian · · Score: 1

    Needless to say, the Rexx team offered no support whatsoever. I made the employee uninstall Rexx from the machines and lets just say he's not with us anymore, because we had him killed.

    Aaah... so *that's* what happens when programmers on those Russian-based DDOS attack blackmail schemes mess up. (^_^)

    Seriously, funny twist on an otherwise cut-and-pasted troll article... you still deserve to stay at -1 though :-P

    --
    "Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
  39. Best string handling ever by COBOL/MVS · · Score: 1

    REXX is by far the best for templating strings. I used it a lot to prototype stuff on the mainframe before writing the, well, you know...

    It was also great for writing quick mf applications (code generators, code behind ispf panels, etc.). And, like so many other posts already said, it's somewhat portable to other platforms but without compilation. Very cool indeed.

    --
    GOBACK.
  40. Re:Best TEXT handling ever by COBOL/MVS · · Score: 1

    Uh, in the post above, please read 'string' as 'text'.

    --
    GOBACK.
  41. Automated OS/2 install by mollog · · Score: 1

    OS/2 2.0 and up had facilities to automatically install an operating system using a boot ROM on the LAN card, and a boot server with a REXX script. When I did testing of hardware, that was the technique I used to speed OS installation. Although I only used it with OS/2, I think it could have worked with other OS's, too.

    --
    Best regards.
  42. Thanks for the memories. by Doc+Ruby · · Score: 1

    One of the reasons I like Perl, especially for prototypes, is automatic variable memory management. The interpreter automatically instantiates/allocates variables whenever you first use them, then deallocates them when they go out of scope (which is global unless otherwise directed), or when directed to "undefine" them. Memory leaks, double frees, "should I free this copy now that I'm done, or does something else use it?", duplicate pointers... none of that hell gets in the way of the algorithm, unless you want it to :P.

    --

    --
    make install -not war

    1. Re:Thanks for the memories. by blue_adept · · Score: 1

      I've lost my enthusiasm for languages that automatically instantiate variables. Perl and Javascript come to mind.

      One reason is that when I'm reading code, it's extra work to think "where the hell did THIS variable come from? was it just created on this line, or should I scan up higher to see if something was going on further up".

      And in javascript you can suddenly have a variable like foo.bar.whatever, and who knows how many (if any) of those objects were instantiated earier or somewhere else, if any. Not to mention that you can screw yourself my mistyping variable names. what a mess, no thanks!!

      --

      "Is this just useless, or is it expensive as well?"
    2. Re:Thanks for the memories. by Doc+Ruby · · Score: 1

      I learned to program in C decades ago. So I always start every function with variable declarations, and end it with a return(). Perl lets me do that, so I always have a reference. But I'm not required to do that - which makes for much more rapid prototyping and debugging, without failures from purely syntactical (not algorithmic) errors. C is similar, in that variables can be declared anywhere, though the declaration is required.

      A much bigger version of the problem is with "foo *bar = getFoo()". When that statement goes out of scope, do you have to free(bar)? Or is bar's value used in another scope, also? I resorted to function naming conventions: getFoo() retrieves a value, the storage of which is already managed by code in other code paths, while makeFoo() creates a value to be managed in the code path that calls it. But what about updateFoo(foo), which creates members of struct *foo? And various other complexities. Perl at least ensures that most syntactical errors aren't harmful, so the algorithm gets development priority. If there were some equivalent to valgrind for Perl, which reports automatic garbage collection, we could even debug storage management errors which Perl hides, which can sometimes interfere with the algorithm.

      What I really want is a flowchart editor for Perl -D. Perl compiles the source into a tree graph for optimization; I want a flowchart GUI directly to that tree. I want it to also generate lexical Perl code, for all the different lexical analysis tools we've already got. But so many problems in lexical programming derive from the "hidden" collection of available objects, which are never "revealed" except when a specific item is directly referenced. The lexical version only locally indicates the essential program flow in time, and multidimensional programs are deceptively flattened into linear program text. A flowchart editor would leverage lots of our topographical skills into better programming, and fits perfectly with Perl's internal program model. Compilable UML is coming along, but it seems like overkill - I just want to draw some simple charts for the marketer, and compile it.

      --

      --
      make install -not war

    3. Re:Thanks for the memories. by Anonymous Coward · · Score: 0

      Just because certain combinations of features are present in the same language doesn't mean that they're related.

      Automatic memory management, variable declarations and variable scoping are three different things.

      Another common "confusion" is associating explicit type declarations and static typing.

    4. Re:Thanks for the memories. by Doc+Ruby · · Score: 1

      They're related in that I like them, because they each automate a memory management task that allows errors in programming.

      --

      --
      make install -not war

  43. stale glue by pvg · · Score: 1

    REXX seems historically interesting but little in the article makes it clear why one ought to care about it today.

    The first example is telling - munge a file and do something depending on the content of each line. This has been such a common problem for so many years that the number of very capable solutions exceeds the number of lines in the file it is often applied to. The usual suspects of unix command line utilities (easily available or shipping with many platforms in common use) handle 80% of this stuff with a command or two. For the rest, the entire battery of sed, awk, shell, perl, python, ruby, etc is available and easily applicable. For most basic file and text processing problems, you can just google for a solution and you'd probably have to constrain your search to your favourite tool or language in order not to be overwhelmed by the multitude of solutions.

    The fact is, basic text processing and data sctructures beyond a simple integer indexed array (imagine that, a hash table keyed with strings!) are so deeply ingrained in most popular 'glue' languages that demonstrations of a particular tool's proficiency at such things seems quaint.

    A less dated way to put a scripting language through its paces might be something like logging into a website, tracking the cookied session, navigating to some location without a stable URL (say, dependent on form posts) and parsing out some piece of data from the resulting page. Simple things in a few lines of perl or python. What about REXX?

    -pvg

    1. Re:stale glue by Anonymous Coward · · Score: 0

      Well, I've never worked with cookies or HTML forms, but I'm told that in Rexx it is easy enough to do these things using the Libcurl & RexxCurl available freely from http://www.rexx.org/. I'll tell you what, post your few lines of PERL or Python and I'll try to work out how to do the same in REXX.

  44. GUI Test Automation by stormcoder · · Score: 1

    I did GUI test automation, for Atrial defibrilator control software, in Rexx. Rexx was very cool at the time but was hard to extend. I would never go back to it now. It is primitive compared to modern scripting languages, like Python. I would say that the only way it would become popular is if OS/2 made a startling come back. There is about as much chance of that as Microsoft going out of business next month.

    --
    Sorry my bullshit sensor overloaded.
  45. Was I the only one... by rbarreira · · Score: 0

    who read it as "O'Reilly on the Virtus of Sex"?

    --

    The AACS key is NOT 0xF606EEFD628B1CA427BEA93A9CA9773F
    1. Re:Was I the only one... by stevejobsjr · · Score: 1

      Watch it with that loofa.

  46. Re:Opera and Firefox [selective figures] by mattyrobinson69 · · Score: 1

    In Ruby, variables are case sensitive, and with good reason, iirc, they are (recommended to be)named like this:

    myClassNameInCamelCase
    my_local_variable
    MY_CO NSTANT_HAS_A_NAME_LIKE_THIS

    i cant remember what variables local to classes are though.

    Its very useful as if you are reffering to A_STRING you know its a constand, etc.

    i cant speak for rexx because ive never bothered to learn it.

  47. Not Troll - Funny. Mod up please by GomezAdams · · Score: 1

    This is a funny folks. If I had any mod points I'd do it.

    --
    Too lazy to create a sig...
    1. Re:Not Troll - Funny. Mod up please by Locutus · · Score: 1

      agreed. LOL on this one.

      LoB

      --
      "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
  48. Re:Opera and Firefox [selective figures] by Bitsy+Boffin · · Score: 1

    Not arguing one way or the other, but that has nothing to do with case sensitivity. It's common convention, in both case sensitive and insensitive languages for constants to be UPPERCASE, and for variables to be camelCase or under_scored. Whether the language is case sensitive or not has nothing to do with the matter.

    --
    NZ Electronics Enthusiasts: Check out my Trade Me Listings
  49. Off topic (your sig) by abulafia · · Score: 1
    Generate code using XML and XSLT with Visual Studio XGen [sourceforge.net]! (GPL)

    Gah. That sounds like "Build a house using sausage and slide rules with a Quantel PaintBox!"

    /me shudders, the horrors, the horrors...

    --
    I forget what 8 was for.
    1. Re:Off topic (your sig) by 3770 · · Score: 1


      Interesting.

      What is it that you don't like and/or disagree with?

      --
      The Internet is full. Go Away!!!
    2. Re:Off topic (your sig) by abulafia · · Score: 1
      I was mostly being goofy. But, as a serious response, it strikes me as the same sort of thing as UML, but updated to use recent buzzwords. Don't get me wrong - we use XML/XSLT in nontrivial ways in apps we build - sometimes, even when not strictly required - because it comes along with a nice toolchain.

      We even use code-generation at times, when dealing with things like Hibernate, and I'm tryng hard to be able to generate the variances, too. It provides a starting point.

      We don't use Visual(.*), but then we're not in that market.

      I guess my point is that code generation tends to be a crutch. I've heard too many people claim that they can't do something, because the tool won't do it for them. I'm pleased that those people exist, because they feed a stream of dissatisfied clients to me, but I can't endorse it.

      Anyway, like I said, I was attempting humour. Perhaps I shouldn't.

      --
      I forget what 8 was for.
    3. Re:Off topic (your sig) by 3770 · · Score: 1

      Heh..

      I actually realised that you meant it as a joke. But I wanted to see if there was a serious and thought out opinion behind it.

      I also wanted to know if the comment mainly was against Visual Studio (Anti MS), or code generation using XML and XSLT.

      Code generation is not the solution for everything. But there are some places where it makes sense. I could go on, but you can take a look at the link below. It is a short read with my take on it.

      http://vsxgen.sourceforge.net/whentousecodegen.htm l

      The reason I'm basing it on XML and XSLT is because that is a stable, widespread and powerful technology. And it is also a technology where your knowledge about it can be used for many other things. It is win-win.

      The tool came about because I wanted to generate some code. I downloaded CodeSmith and although it is a great tool it has a special code generation language that I don't want to spend time to learn and that locks you into using CodeSmith.

      That's why I built my own simple tool.

      Sorry for boring you to tears with a subject that interests me. :)

      --
      The Internet is full. Go Away!!!
    4. Re:Off topic (your sig) by abulafia · · Score: 1
      I actually realised that you meant it as a joke. But I wanted to see if there was a serious and thought out opinion behind it.

      Well, I tend to think so, but intelligent minds may differ.

      I also wanted to know if the comment mainly was against Visual Studio (Anti MS), or code generation using XML and XSLT.

      Both, actually, but I try to be fair, and even use The Tools Of The Enemy when needed. (I'm running windows right now, for particular testing reasons, etc. and soforth.) Lately some of Microsoft's tools are looking interesting - it is rough, now, but the whole managed code thing seems like a good idea. I'm not inherently anti MSOFT; I am simply so most of the time, for reasons I consider good.

      Sorry for boring you to tears with a subject that interests me.

      No problem - it interests me, too (I try to automate as much as my life and business as I can - leaves me with more time to roll in piles of cash and vacation in exotic locales. As if.). Like I said, we use the technique, but consider it a starting point - a way to save clients money (As I said - with things like Hibernate, middlegen is great). Weirdly enough, that's a market differentiation, and we get more clients because of it as time goes on.

      I don't hate XML and related standards. I do think they tend to be orthagonal bandaids to at least many situations for which they're proposed. I also dislike the high overhead of parsing them, the lack of pointers, and the general lack of standardization. But those are quibbles we could use just about anywhere in the last 35 years...

      I don't think generating code from XML is any worse that a lot of solutions. I just don't think it is any better. There might be a problem you're solving in Visual-whatever, that I'm not getting.

      --
      I forget what 8 was for.
  50. Ahh! Good ol 'Rexx by orionware · · Score: 1

    I first used ARexx which was Amigas port(?) or possibly a rename(?)

    It was awesome for programming games used in BBS systems or for even writing a BBS.

    I loved it.

    --


    Karma means nothing to me, so suck it...
  51. Re:Opera and Firefox [selective figures] by Anonymous Coward · · Score: 0

    Yes, but you should generally avoid having a variable A_STRING, and another one named a_string

  52. ARexx, too bad Rexx didn't grab its featurelist. by Almost-Retired · · Score: 3, Interesting

    Raises hand here, if only to lament that Rexx, at least in the form of the linux regina clone, is a poor, no, poor to the point of starving to death, comparison to ARexx, written BY William Hawes for the amiga.

    It was extensible by writing libraries for it, libraries that allowed it to do anything you were of a mind to.

    When I was still running a big box amiga, Jim Hines and I (we were both working at a tv station, http://www.wdtv.com/> ) and needed a cron to run some of the very time consuming rendering jobs that lots of video people were running on amiga's a decade back.

    So we wrote a cron in ARexx, and by carefull coding, its cpu hit was less than we could measure. Most of the wannabe cron apps for the amiga were coded to wait in busy loops till the clock matched, and of course used 20% or more of the cpu.

    Eventually I bought a copy of rexx-plus, the only actual compiler for arexx there ever was, which could build standalone programs out of your arexx scripts.

    You can yet, I think, download that to run on your old amiga, from Aminet.net, search for EzCron, latest version. IIRC the archive contains both the arexx script itself, and the compiled binary.

    We did things in a couple of days using arexx that would have taken weeks in C. Repeatedly.

    There is yet today, a headless old 2000/040 amiga there, running EzCron, and its executing additional arexx scripts to grab the prompter files for our newscasts from the news server in the news dept., and make them available for you to read at the above site. Incomplete sometimes because the news folks get lazy and don't transcribe to the prompter, whats said in a taped segment.

    But when we looked at making those arexx scripts run on linux, regina upchucked all over the place because they were doing things that Rexx never had in its repertory. If that miggy ever dies for good, we'll have to rewrite them in bash, and that will take a couple of weeks to translate I expect. Bash I believe does have all the tools to do it. But its going to take a concerted effort we haven't found the time to do yet. Normal life keeps happening...

    --
    Cheers, Gene
    "There are four boxes to be used in defense of liberty:
    soap, ballot, jury, and ammo. Please use in that order."
    -Ed Howdershelt (Author)

  53. it all depends... by constantnormal · · Score: 2, Informative

    ... REXX is yet another interpretive scripting language, one that is exceedingly clear and non-cryptic -- one can return to a REXX script you wrote a decade ago and understand it (try that with perl!).

    And REXX has a much easier learning curve than something like perl, even easier (IMHO) than plain vanilla unix hell scripting. If you're in a large group or a group with a high turnover, you could do a lot worse than selecting REXX as a scripting standard.

    For specifics as to why you might choose REXX over another scripting language in your toolkit, it has tremendous parsing capabilities (you can specify a template when you read text from the input stream, and have REXX bust up the incoming text to fit the template, adjusting case if desired) as well as very nice ways of dealing with arrays ("stems" in REXX parlance).

    One of the niceties of using REXX in the mainframe world was that you could specify the environment a command string would be interpreted in. Not quite AppleScript, where you can direct scriptable apps to do your bidding, but the next best thing.

    This allows you to co-opt other portions of your system to do the work for you, and not reinvent the wheel at every turn. Think of this as the "script as conductor" philosophy of scripting.

    But REXX is also capable of functioning as a standalone programming environment. In the mainframe realm, I've done socket programming, dynamic sql, screen painting and more file conversions than I want to think about using REXX. I do code using a fair assortment of compiled languages, but when it's crunch time, nothing beats a good interpretive scripting facility to deliver the goods in a timely manner.

    Sadly, aside from the unix/dos command shell, I don't believe many other environments are generally supported under non-mainframe REXX (I don't believe I've ever seen REXX operating as an EMACS macro, for example), but given the flexibility of the unix shell environment, that is generally sufficient.

  54. Look around! by Atomic+Frog · · Score: 2, Informative

    It's still used in IBM mainframes, and is the scripting language of choice in OS/2 (which is _still_ in heavy use, though not at home).

    For those of you NOT clued in, Rexx also comes as ObjectRexx, which, as you might guess is fully object oriented.

    IBM has completely open-sourced it, and there is also a second open-source implementation (Regina Rexx).

    Check out what's been going on at :
    http://www.rexxla.org/>

    For 90% of what people use a scripting language for, Rexx beats the pants of Perl. it's easy to use and it's _readable_.

    On many platforms, you can construct full GUI apps with it too, from paint programs, to GUI unzippers, etc.

    Oh, it's nice enough! My preferred scripting language along with Python. I've easily written stuff like converters from BSDL (boundary scan description language) to XML, even a simulation of 3-d nuclear spin diffusion in sparsely abundant cubic lattice.

    1. Re:Look around! by biobogonics · · Score: 1

      For 90% of what people use a scripting language for, Rexx beats the pants of Perl. it's easy to use and it's _readable_.

      Certainly true for the only real application I've written in Rexx. It's a program that uses 10-20 digit integers. Exact arithmetic is more important than speed. While developing and testing the program over several months, I enjoyed being able to insert and remove debugging and diagnostic code with ease. In the process I found and reported a number of bugs in one vendor's implimentation of Rexx.

  55. Whoa. by PixelScuba · · Score: 1

    Seriously, I was concerned for a moment there. I read the article title and thought, "What does Fox News' Bill O'Reilly know about anything practical?"

  56. Re:ARexx, too bad Rexx didn't grab its featurelist by Almost-Retired · · Score: 2, Informative

    I almost forgot. The main reason it was handier than sliced bread on the amiga is that NO other language on any other platform had the concept of an ARexx "port" for direct communication from one process to another.

    I don't think it was anything but a name to address translator where the buffer named had to be read before another write to it was performed else the system went up in copious clouds of profanity. But if you paid attention to your housekeeping it was at least as stable as writing to a disk file, and a heck of a lot faster.

    --
    Cheers, Gene
    "There are four boxes to be used in defense of liberty:
    soap, ballot, jury, and ammo. Please use in that order."
    -Ed Howdershelt (Author)

  57. Re:Opera and Firefox [selective figures] by david+duncan+scott · · Score: 1
    A good friend of mine, who should have damned well known better, once handed me code to maintain that included three procedures named Abc, aBc, and abC. I could have killed him.

    In an earlier case, I once worked in a facility with honest-to-God 132-column green-bar line printers, and one of them, for higher speed, was upper-case only. Luckily our in-house proprietary languages were all case-insensitive.

    Frankly I always figured that case-sensitivity was primarily a product of system programmers who didn't feel like writing upper filters, and later made it seem like a virtue. In the same vein, clearly nobody at Bell Labs could type very well.

    --

    This next song is very sad. Please clap along. -- Robin Zander

  58. OS/2 is dying - alot of REXX with it by iggymanz · · Score: 1

    sadly, in the last 2 years OS/2 use in ATM and POS systems went from over 80% to under 30% as a version of Windows replaces it. The mainframe market from IBM continues to grow at over 20% per year, but of course that's not many machines (just a heck of alot of users)

  59. oh ye by Anonymous Coward · · Score: 0

    You don't need to declare or predefine your variables. Rexx automatically allocates them when you first refer to them.
    ye, that's good stuff at all! I remember looking for a bug in a F77 program for one hour and a half, just because variable don't have to be declare and someone (understand : me), name a variable difffpres, instead of diffpres.
    To not declare variable is _bullshit_ (like in PHP)

  60. first line comment by Bazman · · Score: 1

    I used to program on a VM/CMS machine, and we used REXX. The first line in every file had to be a comment. My usual comment was: /* IBM REXX LIVES! */

    which changed meaning depending on how you pronounced the third word...

    Baz

    1. Re:first line comment by dougsyo · · Score: 1

      For those wondering why the mandatory comment, it was not a requirement to force documentation into a program (-:

      EXEC, EXEC2, and REXX scripts shared the same common filetype (extension), "EXEC".

      When the command processor went to execute an exec program, it looked at the first line. First lines beginning with a REXX comment were passed to the REXX interpreter. First lines beginning with the token &TRACE were passed to the EXEC2 interpreter. Otherwise they were passed to the original EXEC interpreter.

      BTW, for the guy asking about the acronyms:
      VM/ESA (and VM/370 and VM/SP) were virtual memory operating systems (not unlike VMware) that allowed "bare metal" operating systems to share a single processor. VM would run underneath itself (very common when working on upgrades), and it was also used to support DOS/VSE, UTS (Amdahl's mainframe Unix), VS/1, and MVS variants.

      CMS (Conversational Monitoring System) was the interactive environment that most users had to edit, print, compile, and execute programs. In addition, our MVS guest machines generally IPL'd (booted) CMS to do some setup, and the last line of their profile exec (autoexec.bat-like) was to boot the device that contained MVS.

      z/OS (and forerunners OS/390, MVS/ESA, MVS/XA, MVS/SP, MVS and VS1) is essentially batch operating systems (not the best description really), but a batch job or started task (daemon) can run multiple-user TP monitors like TSO and CICS that allow people to interact over 3270 (block-mode) terminals and other connections. Database services under MVS included DB2, IMB, Model 204, IDMS (who remembers that one?) and others.

      ISPF is the Interactive System Productivity Facility, a menu/panel/picklist/editor environment with file tailoring (template) processing. It's common in the TSO (Time-Sharing Option) environment, less so in VM. DMS/CMS was a CMS-only panel manager that had a lot less baggage than ISPF.

      CUFS was College and University Financial System, an accounting package for higher ed. It was rolled into Advantage by the vendor, AMS, during the run-up to Y2K.

      SCT is the vendor of Banner, essentially an ERP for colleges and vendors. It is very dependent on Oracle facilities (database, application server, and other services). My thoughts about the product are "not kind", mostly due to documentation and implementation schedule issues.

      Got all that?

      Doug

  61. From a gentler time by Julian+Morrison · · Score: 2, Insightful

    Aparrently REXX will call an OS command if it doen't recognise a keyword. So just plain including grep and uniq and so forth as if they were functions is allowed. How quaint! Just think of the hacks, if you misspell pront or writte or opne or some random thing, you could be running any random black-hat code and perhaps never even knowing.

    Sorry, nostalgic folks. The state of the art has moved on, and not accidentally.

    1. Re:From a gentler time by thaig · · Score: 2, Informative

      Like, . . .er . . . bash? Or csh or ash or ksh or . . . .

      This is what makes these languages powerful - it's a concept that will never die because it's too useful.

      Regards,

      Tim

      --
      This is all just my personal opinion.
    2. Re:From a gentler time by jim3e8 · · Score: 1

      So fix it the way we've been fixing it for generations. Unset your PATH or set it to known system directories such as /usr/bin:/bin:/sbin:/usr/sbin or whatever. This is good practice even when using taint mode in Perl. If you have "black hat" code in system directories, you have bigger problems anyway.

    3. Re:From a gentler time by anweald · · Score: 1
      | Aparrently REXX will call an OS command if it doen't recognise a keyword.

      The "best practice" is to force the non-recognition e.g. 'grep' MyNeedle '*.txt', which can't accidently match rexx syntax 'cos it starts with a quote.

      | So just plain including grep and uniq and so forth as if they were functions is allowed. How quaint! Just think of the hacks, if
      | you misspell pront or writte or opne or some random thing, you could be running any random black-hat code and
      | perhaps never even knowing.

      You can misspell "FNATROR" in any language...

      --
      http://anweald.co.uk
  62. Re:ARexx, too bad Rexx didn't grab its featurelist by Anonymous Coward · · Score: 0

    I think this is the main point: IPC.
    You open ports to other apps, remotely controlling them, swapping from one environment to another with the ADDRESS keyword.
    That is one thing that LUA do too, for those who don't know REXX. (you can embed a REXX ports in any app, giving validation of messages, parsing, one-liner or entire scripts, say, the same functions as those from menus).
    REXX isn't another Shell, it is more an inter app postal service.

  63. Re:Opera and Firefox [selective figures] by fullpunk · · Score: 1

    Not in ruby. Because this is a dynamic typed language you do not declare variable. So to specify to the interpreter that a variable is a const, you have to name it with uppercases. But you are right for java, c, c++, ...

  64. Frivolous uses of REXX by zerbot · · Score: 1

    The BitNET RELAY server for VM/CMS was written in REXX.

    Damn, I feel old.

    1. Re:Frivolous uses of REXX by dougsyo · · Score: 1

      I remember Relay.

      I used to support a usenet news server written in REXX (PSU NetNews), and had IRC, mail (Shaffer Mail), NNTP newsreader (NNR) and web browser (Charlotte) clients, all written in REXX.

      There was also VM Gopher client and server, and I (just for fun) briefly ran a VM HTTPD written in REXX.

      Doug

    2. Re:Frivolous uses of REXX by JohnQPublic · · Score: 1

      And to close the loop, IRC ("Internet Relay Chat") was quite inspired by RELAY. In fact, that's why IRC's middle name is "Relay".

  65. slashdot submitter by XO · · Score: 1

    If the slashdot submitter had just bothered to google for "rexx", then that would've answered all of his problems.

    RTFG.

    --
    "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
  66. Ahh good ol REXX - and my first website... by seanvaandering · · Score: 1

    For someone who HATES programming, and I really do, I started playing around with it when it came as the scripting language in a TELNET program I used years back called ZOC before I used Linux and was stuck on Windows.

    I also was heavily into online MUD realms, and ran a Worldgroup/Galacticomm BBS with MajorMUD - a very expensive addon MUD realm. Well I came up with the idea to create an online database that combined all the data from all the realms and put it together in a nice ranked website of all the top players and worlds. The entire engine was coded in REXX and I called the site MUDSentry, its been recently recoded in PHP and renamed to TurboSentry, but keep in mind, I programmed it in 2002 and Im not a fan of learning curves.

    One thing, IMHO, for someone who HATES programming, learning this language was EASY. And since it was included in the TELNET client I was using, well that was the motivation behind the site and using the language.

    Would I ever do that again? Never.

  67. Re:bash is the prefered scripting language for Uni by Anonymous Coward · · Score: 0

    Uh. You mean sh.

  68. Best 90's solution for mail routers by Green+Salad · · Score: 1

    It saved by butt in the 90's to monitor and reboot e-mail routers the got hung up.

    We had rows of 486 servers running a very early version of Windows NT as enterprise mail routers. Unfortunately, they'd hang-up, then so would the e-mail in some regions. Our initial solution was to keep a person monitoring the mail routers every five minutes and sign off on a quality assurance clipboard that everything was running.

    This is not the kind of work that makes you want to get up and go to work every day. (It eliminated my at-work modem-surfing time.) A Lotus tech told me you could use REXX on OS/2 Warp to periodically test the state of the router software and if the session didn't respond back, reboot the individual instance of the router that failed on an OS/2 box. After a couple of weeks of frustrated swearing I got it working beautifully, eliminating several machines and the near full time job of walking down the rows checking machine hang-up states. The downside is I had to spend at least a couple of weeks studying/experimenting with REXX and this wierd Windows-like thing called OS/2 on my own, because no one could help me with it. OS/2 was the first OS I used that come with everything in one box (wordprocessor, spreadsheet, dialer, browser, etc.)

    It was good preparation for becoming a Linux geek!

  69. make it EXEC and EXEC2 in VM/CMS ... by porky_pig_jr · · Score: 1

    and CLISTs in TSO. I had the same experience. REXX under VM/CMS came first, of course, and that was quite a pleasure from switch from EXEC/2. on TSO it became available at some later point, but I was able to create some fairly complex apps before dropping into Ultrix and Sun/OS word and never going back.

    As I remember REXX was fairly concise and compact and easy to deal with (kind of reminds me PASCAL), certainly neater and better organized than PERL (but what is NOT better organized than PERL anyway?). Yet since there are some many choices in Un*x world (many scripts, and then PERL and PYTHON), I doubt REXX would ever achieve that level of acceptance it did in mainframe world.

  70. Rexx still in use? Oh yeah... by Anonymous Coward · · Score: 0

    IBM's Mainframes (even the new ones), and SNA network mgmt. tools still use REXX as there primary language for scripts and batch jobs.

    Even the newest versions of the stuff released last year.

  71. MS always was behind the times by WindBourne · · Score: 1

    Problem with MS is that it takes them 3 decades to rip off other companies.

    --
    I prefer the "u" in honour as it seems to be missing these days.
  72. Type safety catches stupid bugs by Chemisor · · Score: 1
    printf ("Password: ");
    tmp = getline();
    verify_password (tmp);
    tmb.clear();
    tmp[0] = '*';
    printf ("Welcome to %sNIX!\n", tmp.cdata());
    I really can't see the problem here. Some idiot told me it prints his password, but he is surely deluded. Nothing could possibly be wrong with MY code!

    1. Re:Type safety catches stupid bugs by Anonymous Coward · · Score: 0

      Aren't you confusing type safety with explicit variable introduction? There are languages where you can introduce a variable without deciding its type. (Common Lisp springs to mind, again.)

    2. Re:Type safety catches stupid bugs by Chemisor · · Score: 1

      > here are languages where you can introduce a
      > variable without deciding its type.

      If you don't know what the variable is for, don't introduce it. Wait until you know. Maybe you won't need it at all.

    3. Re:Type safety catches stupid bugs by Anonymous Coward · · Score: 0

      ...except that rudimentary debugging shows it does...

      Now, I know you were posting this to show the problems with languages that don't require you to declare your variables, but honestly you're overstating it.

      I've worked with languages that don't require declaration for a while in the past, and I can say that misspelling something usually leads to errors that are noticible. For example, when you write something to screen, the wrong thing or nothing gets printed (easily found durring test runs). Loops may not correctly function (easily found durring test runs). Values may incorrectly change (easily found durring test runs).

      Debugging code like this is a pain in the butt since you have to comb through the code, but FINDING OUT about bugs is almost as easy as with any other language. The difference is that instead of the compiler throwing up an ID10T error for every misspelling, the program simply dosen't work correctly. Obviously the former is a lot nicer (especially when upgrading old code) since less debugging sessions need to be done, but the latter "works" as well if you're willing to test (or have somebody else test) your compiled code.

    4. Re:Type safety catches stupid bugs by Chemisor · · Score: 1

      > FINDING OUT about bugs is almost as easy as with any other language.

      The trouble is that you'll only find the ones that make something obvious happen. For each one of those there'll be a dozen subtle changes that you will have missed. Would you notice if all the rectangles on the screen were suddenly a pixel wider?

      > The difference is that instead of the compiler
      > throwing up an ID10T error for every
      > misspelling, the program simply dosen't work correctly.

      The point of having the compiler do it is that it is easy to verify that you are using only the variables you intended to use in the first place when you must declare them. Those who say predeclaration is cumbersome are those who want to ignore bugs in their program in order to write it faster. If you complain about idiot errors for every misspelling, you obviously make a lot of misspellings. Since each one of those is necessarily an error, you are simply postponing finding them until the program runs. Given that they will not all necessarily do something obvious, it becomes clear that you are simply allowing bugs to stay in the program. "If it ain't broke, don't fix it" is not always a good idea. Code should be clean. Period.

    5. Re:Type safety catches stupid bugs by Anonymous Coward · · Score: 0

      Of course, but the variable serves a purpose beyond just being of a certain type. Dynamical typing lets you say "I need to store a filename" without deciding whether it'll be a string or a more complex pathname object. It doesn't necessarily allow implicit introduction of variables.

  73. Re:ARexx, too bad Rexx didn't grab its featurelist by Ziviyr · · Score: 1

    When I think of ARexx I keep going back to the time I had to bang out several lines of code to reinvent an xor fuction, because the builtin seemed absolutely broken.

    ARexx definitely had its moments, it also seemed very sloppy in implementation though.

    --

    Someone set us up the bomb, so shine we are!
  74. Man this brings back a lot of memories by wizardguy · · Score: 1

    Back in 1989 , I wrote an entire Email application for inhouse email on IBM VM mainframes using REXX (with Assembler/370 for display, and RSCS for moving the mail to different users mailboxes ). The email system was one the most widely used inhouse application in the company

    I probably used every single feature REXX provided.

    Good language and easy to debug

    1. Re:Man this brings back a lot of memories by Anonymous Coward · · Score: 0

      I was also part of a small team that wrote and managed a REXX based email package on VM/CMS. My company had email before it was called email. We called our email package POST, which was actually ported from an earlier computer system. The first encarnation was written in EXEC2 and also RSCS based, with a simple command line interface and XEDIT editor. That was where I got my feet wet with scripting and software. We started converting to REXX during this period.

      Several years later, IBM decided to push something called PROFS, and conviced our management that would be the way to go. Prior to this, there had been talk of selling our POST email package, as other companies had nothing that could match it. Someone also decided we had to continue to provide the same POST interface for PROFS, so a POSTv2 was created that ran on top of PROFS. This was written in REXX.

      Then PROFS lost is luster and TCP/IP became the rage. We had been using some of the first TCP/IP 370 interface boxes. So we created POSTv3, a fully SMTP compliant mainframe email system with a full screen interface. We made use of IBM's new REXX compiler on VM/CMS for this one.

      We also made our VM/CMS online user directory available to the TCPIP masses via finger and whois protocols. And later via a new application called WWW. The VM/CMS WEB server was written by someone outside the company and provided free. I'm sorry, but I can't recall his name now. All provided via REXX programs and some TCP/IP network interfaces. Suddenly we had email and a directory anywhere we had a network connection.

      Later, the directory was migragted to a X.500/LDAP directory system on UNIX. The VM/CMS directory was still faster for searches though, due to some creative programs and indexing on VM/CMS. Remember how VM/CMS files were record based? Remember the pipeline tool, also written by the author of REXX I believe? That is one tool I still sorely miss.

      Ah, the memories.

  75. NOOOO!!! EEEEVIL!!! EEEEEVIL!!! by cgreuter · · Score: 3, Informative

    No, REXX is shit. It sucks, it bites, it blows syphilitic goats through coffee stir-sticks. I'd compare it to the aborted offspring of third-generation addiction research monkeys if the Crackmonkey Defense League wouldn't picket me for it.

    Why, I hear you ask, am I so violently opposed to this allegedly powerful "scripting" "language"? It's because I once had to use it.

    I wrote a test harness with it. You know, one of those things that scripting languages are supposed to be good for? You'd think REXX would make such a task easy, wouldn't you? You'd be wrong.

    How do I hate REXX? Let me count the ways:

    1. REXX doesn't have procedures.

      You know? Procedures, aka functions aka subroutines? Those handy little things that let you subdivide your complex tasks into lots of simple ones? Ain't gottem'.

      What it has is a kind of GOSUB-with-arguments that it pretends are real procedures and look enough like them that they fooled me until it was too late.

    2. REXX's pretend procedures are just labels.

      See, when you find a procedure definition in a reasonable scripting language, it's a no-op, right? It's either an expression that creates the procedure then and there or it's a thing that the interpreter finds in the source code before it starts running the program. Either way, when running through the code, the interpreter just sort of does nothing immediate when it finds a procedure definition.

      So all we scripting hacks need to remember to do is to define our procedures before we use them, right?

      Well, in REXX, they're labels. As soon as the thread of execution reaches a fake procedure, it wanders right in, up until it hits the RETURN statement, at which point it's an error if you're lucky or a return from some unexpected function if you're not.

      And kazam! Good programming habits go unpunished.

      And let's not think about the sort of spaghetti code this, uh, feature can lead to. No, really, let's not.

    3. Local Variables Aren't.

      Since the pretend procedures are just labels, there has to be some way to monkey around with the scope to get something like local variables, right? There is. And it's vile.

      There's a command (whose name I've mercifully forgotten) which creates a new global scope. You call it in your pretend-procedure and ta-da, everything's local now. Hooray, unless you want to actually access a real global variable. But they thought of that--the command lets you list the variables from the previous scope that you want to access and they get stuck into the new scope.

      So far, so good, right?

      The problem is that these scopes nest. So if fake-procedure FOO needs to write to global variable BLAT and declares it in its scope-creation thingy, this works fine if you call FOO from the mainline.

      But what if function BAR calls FOO? Well then, the BLAT that FOO writes to will belong to BAR's scope unless BAR also declares BLAT to belong to the previous scope. And if QUUX calls BAR, the same thing happens.

      So if you want to modify a global variable from a function you have to make sure that every function that can conceivably be part of its call chain cooperates. And if you mess up and don't find all of those cases, there's no warning or error message.

    Y'know, there are other problems with REXX but they're not as bad. At least, I could have worked around them if I'd had a decent procedure system. A lot of language brokenness is tolerable if you only ever need to solve it once. REXX doesn't give me even that capability.

    To be balanced, I should say some nice things about it:

    1. It's much less horrible than OS/2 batch files. I'll even go so far as to say that if all you've got on hand is REXX and your program isn't going to be more than 60 lines or so, you're all set.
    2. When people complain to me about some of the irritations in Python or PHP or Perl, I just tell them about REXX and they go away.
    3. I'll never need to use it again.

    There we go. That's nice, isn't it?

  76. Re:The KEDIT editor - Compiled easily on Debian by Locutus · · Score: 1

    apt-get install regina3 regina3-dev

    tar -xzf THE-3.2B1.tar.gz
    cd THE-3.2 ./configure --with-rexx=regina --with-rexxincdir=/usr/include/regina

    make the ./the

    works as a curses application but I have no clue as to how to use it. But, it compiles pretty easy and seems to run.

    LoB

    --
    "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
  77. Re:ARexx, too bad Rexx didn't grab its featurelist by Anonymous Coward · · Score: 1, Insightful

    "If that miggy ever dies for good, we'll have to rewrite them in bash, and that will take a couple of weeks to translate I expect."

    Nah. Just run an Amiga emulation box and keep going:

    http://www.amigaforever.com/

  78. Re:Opera and Firefox [selective figures] by Jellybob · · Score: 1
    i cant remember what variables local to classes are though.

    @variable for an instance local variable.
    @@variable for an object local (static) variable.
  79. Open source Rexx available by Anonymous Coward · · Score: 1, Informative

    IBM open sourced Rexx. It's available here: oorexx.org.

  80. vi by hummassa · · Score: 1

    That's why God put the % symbol in the shift-5 key...

    --
    It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
  81. REXX is Easy to Learn by cybercreek · · Score: 2, Interesting

    I've worked in the computer programming trade since 1965 when I learned COBOL '65 in the Air Force. This year, in semi-retirement, in an equally demanding role, I taught three classes of Java Programming in a local high school. I enjoy Java but I must admit a love for REXX.

    I presented a paper on REXX at a REXX conference at Stanford University, May 1990. The topic of the paper was on the ease of portability between platforms. Subsequently to that, I working as a programmer at Bank of America's campus in Concord, CA, I trained all programmers there who wanted to stay late in how to program in REXX on MVS, VM, OS/2, DOS, and Windows platforms, the main differences being how I/O was handled.

    The course I taught at BofA was about three hours long, an hour and 1/2 for two late afternoon sessions. So the learning curve was quite low.

    In addition to teaching everything they needed to know, I also showed them how to code dynamic SQL statements in REXX code. I had already used REXX in a good bit of the code used for utilities and one-time jobs for the Cash Vault System that I was working on there.

    There are few languages that one can learn completely in 3 hours. The Java classes (one AP and two general) took an entire high school year and I only scratched the surface even though I covered all 19 chapters of Cay Horstmann's "Java Essentials".

    Those that turn their noses up at REXX I have found to be the same sort of people who think writing code is an IQ test and if they don't write code that no one else can maintain that they have somehow failed. I don't think programming has to be difficult and the best languages are those that are easy to learn and easy to program in while being able to get the job done and run efficiently. For quick and dirty code or seldom run utilities in production, REXX is an ideal language to use. Of course, for a program that is processing 10+ million records sequentially or updating a DB2 database for millions of transactions for real time access you want to use a compilable language.

    1. Re:REXX is Easy to Learn by cybercreek · · Score: 1

      I should have mentioned that I met the creator of REXX, Mike Cowlishaw, at the Stanford Univ. Conference in 1989. He was a thoroughly pleasant guy.

  82. Enlighten me? Scripting? Programming? WTF? by Anonymous Coward · · Score: 0

    I always though Rexx was a programming language and now I hear it called scripting? Which is it? And for what it's worth, what's the difference between either?

  83. Re:ARexx, too bad Rexx didn't grab its featurelist by Almost-Retired · · Score: 1

    I recall that for that to work, one must first format the number into a binary 10011001 style format, and that worked correctly.

    Later versions tightened up the perceived sloppiness a bit. By later, I'm refering to actually buying after commodedoor soured the relationship with Bill. Being 'on the scene' as a power user at the time, commie shoved it to Bill big time. According to the rumors then, Bill never actually saw a check from commie for all that...

    Strange, I see he has a directory on kernel.org, but its empty & dated many years ago now.

    Does anyone know what has become of William R. Hawes?

    --
    Cheers, Gene
    "There are four boxes to be used in defense of liberty:
    soap, ballot, jury, and ammo. Please use in that order."
    -Ed Howdershelt (Author)

  84. case sensitivity by try_anything · · Score: 1

    it doesn't match human readable languages or other human experience

    Not true! Case is important in many systems for writing natural languages. In English prose, case provides information for every letter except the first in a sentence.

    More importantly, specialized written notations tend to make case significant. Physics books don't arbitrarily switch back and forth between e and E to represent an electron, and no one writes CL to indicate chlorine. or hCl for hydrochloric acid. You'll fail math if you expect a to be the same as A.

    Examples abound: case is almost always significant.

    Case insensitivity makes reading code more cognitively challenging by forcing developers to mentally map a large set of possible names to a single entity. It's much easier if you know that each symbol has a unique name. Consider the task of scanning up from the line you're writing to find the previous call to a function named Buf_Check. In a case-sensitive language, you're looking for a single name with a unique shape and appearance. In a case-insensitive language, you're looking for any one of many representatives of a class of names that have many different shapes and appearances.

    That's a high price to pay just to avoid correcting typos.

    1. Re:case sensitivity by TheAncientHacker · · Score: 1

      On the contrary, case in human languages generally does not change meaning. A Chair is still a chair. It is not by it's case suddenly a fish.

      As for word shape, while that has great value in ludic reading it has virtually none in arbitrary names such as those used in coding where meaning is not identical to a symbolic shape learned by the brain to represent a concept. To use your example, there IS no learned shape memory for Buf_Check any more than there is for buf_check or for that matter BufCheck or bufcheck or BUFCHECK.

    2. Re:case sensitivity by Anonymous Coward · · Score: 0

      "Case insensitivity makes reading code more cognitively challenging by forcing developers to mentally map a large set of possible names to a single entity."

      If you are using a case insensitive language and reading code by some joker who's using "Variable" "VARIABLE" and "VaRiaBLe" then you just use your editor to select-all and convert-to-lower-case. In a case sensitive language the best you can do is a series of search-and-replace operations to rename the variables... more time consuming and more likely to cause a bug.

      Case insensitivity rules. We should dump cases from our language - after all we get along perfectly well without it when we speak. The amount of information it conveys just doesn't justify the trouble it causes. Mind you there are plenty of worse things about English (irregular verbs, not phonetic, excessive numbers of homonyms...).

    3. Re:case sensitivity by try_anything · · Score: 1
      If you are using a case insensitive language and reading code by some joker who's using "Variable" "VARIABLE" and "VaRiaBLe" then you just use your editor to select-all and convert-to-lower-case.

      So case insensitivity is a good feature, but it's a mistake to take advantage of it?

      Either you want to systematically vary case to convey information, or you want to be that careless joker who randomly types the same name in different ways. Which is it?

    4. Re:case sensitivity by try_anything · · Score: 1
      A Chair is still a chair. It is not by it's case suddenly a fish.

      When I read, "A Chair is...." I am prepared to read the rest of the sentence very differently than if I read, "A chair is...."

      A sentence containing "Chair" is assuredly different in meaning from a sentence that contains "chair" instead.

      As for learned shape memory, I suspect you're talking about reading. I'm talking about not needing to read. If you look through a page of case-sensitive code for Buf_Check, you won't read symbols like foo_this or BAR_THAT. In a case-insensitive language, you have to read those symbols to recognize that they aren't equal to Buf_Check.

    5. Re:case sensitivity by TheAncientHacker · · Score: 1

      Actually, if I look through a page of case-insensitive code for Buf_Check, I still won't read symbols like foo_this or BAR_THAT. The difference is that I won't have to worry about looking for Buf_Check and missing buf_Check.

  85. Good experiences using VXREXX by astrojetsonjr · · Score: 1
    Back in the days we ran OS/2, we used VXREXX (Visual Rexx) to do some development in. It was very easy to learn and use. It fit into the Workplace Shell environment. The clients loved us, we were able to develop and deploy small applications quickly.

    When they switched over to Windows on the desktop, one of the hard parts was moving the apps to VB. They ended up taking twice as long to port as they took to write and about four times the size.

    Thanks for the trip down memory lane :-)

  86. Pretty Neat Language by MightyMartian · · Score: 1

    I did a lot of coding in Rexx both in OS/2 and on Windows NT. I even did some CGI scripts in Rexx, and liked the language quite a bit. The reality is, however, that Perl has a far deeper penetration and if you're working on systems that others are going to have to maintain, using small players like Rexx isn't going to be too popular.

    --
    The world's burning. Moped Jesus spotted on I50. Details at 11.
  87. You misunderstand by Anonymous Coward · · Score: 0

    He's not fired. He's dead.

  88. REXX stuff by Kancept · · Score: 1

    I still use VXREXX and REXX daily. I've done a website backend and an interactive site in REXX...all run on a LDGW (Lotus Domino Go Web) Server running with DB/2 as well. I like using OS/2 to this day, and really don't feel compelled to move to anything else. It's what works for me and does what I need. Saw a previous poster list ZOC (Zap-O-Comm) as one of his old apps, well, that's on here too. For that occassional app I may need that doesn't run in OS/2, I can fire up Virtual PC and run that linux app or windows app. I see all you posters saying both OS/2 and REXX are dead, but it'll only die when noone uses it anymore, and not any sooner than that. I find it amusing folks say OSes are dead- esp because they know noone who uses them,or they aren't popular. But to each their own. REXX will contine to live on here.

  89. Configuration Control system written in Rexx by therexxman · · Score: 1

    The company I work for uses a configuration control system written in Rexx. It is a GUI application that enables a user to manage configuration control of items stored in CVS, RCS or MS Visual SourceSafe.

    Versions of applications can be compared, even across different source code control systems.

    It interfaces to an extract our change control system data stored in MySQL.

    On Windows it allows version numbers to be inserted into Word documents when they are released.

    The application runs on Windows, X11 and OS/2.

  90. Damning with faint praise by Julian+Morrison · · Score: 1

    Being as insecure as *sh is hardly a selling point! Shell scripts are either traditional and tested, small and heavily debugged, or never put into a position where they can be used for privilege elevation. Nobody sane writes serious user-facing apps in shell. People who put .sh files in their cgi-bin directory deserve to be hacked.

    Compare serious scripting languages. Perl supports taint mode, Ruby has $SAFE. They all force you to be explicit when you want to call a an OS command, even if only via backticks.

    REXX is worse than all of the above because it pretends to be a serious script language, then stabs you in the back with automatic handoff to OS commands.

  91. How old is your knowledge? by krischik · · Score: 1

    Honestly, if your knowlege of a programming language is older then 12 month you should not write a comment any more since programming language evolve rather fast.

    And the current version Rexx:

    does have procedures.
    does have local variables.
    is object orientated.

    Martin

    1. Re:How old is your knowledge? by Anonymous Coward · · Score: 0

      The version I was using back in 1993 had it, too.

      Diagnosis of the grandparent: moron.

      "Cars are crap! Mine keep running into trees! Stay away from them!!"

  92. Not an OS command by krischik · · Score: 1

    Actualy REXX does not call a OS command - Rexx established a two way communication with the parent process and passes the command on. So it's not an OS command but a command to the shell used.

    This is interesting if the Rexx interpreter is embedded inside an editor instead of an command line shell. In which case all un-recognised commands become editor instructions instead of shell commands.

    Martin

  93. REXX by os2fan · · Score: 1
    It is interesting that while i had REXX first with OS/2, it was the DOS versions of Quercus that i used mainly. I have since phased out quercus for regina, because the latter supports the ANSI extensions.

    REXX has good cross-platform support. That is, one can write a rexx script, and use it anywhere. It is also relatively tiny: the whole processor + script is tiny enough to fit on a floppy disk.

    None the same, it makes no system-derived registry or config.sys changes, so it's handy to run in a repair environment.

    With a couple of DLL files, one can do interesting and useful things to the OS/2 or Windows shell. I have a script that processes the OS/2 shell (replace long names with shorter ones), and a script that does Windows shells.

    Rexx scripts can be used as a target for the OS/2 "extproc" process, a process supported by Windows. Unix has the "/#" convention or something.

    This allows one to write rexx scripts as command processors, and write the input as batch files. REXX has some wonderful string handling, and makes then an ideal command processor language. Herein lies its power.

    You can write some interesting command languages, starting from the relatively straight forward "simple list" to a more complex language supporting subroutines etc.

    The simplest one has only one command, eg $$x. The idea here is that you insert lines into an RTF document, and then have rexx processs this as a batch. All lines are fed through to output, except for the $$x lines, which contain commands to calculate certian lines etc.

    A program like this was simple enough to use and write, and useful enough for handling form-letters.

    One can then do things like change the default action (handy, for example for stripping external comment), etc. So a nicely documented input file complete with debug elements becomes a single output text ready to run.

    And yet it is ultimately the capacity to handle strings much easier, to deal with binary data, and to deal with big numbers, that makes REXX intensly powerful.

    --
    OS/2 - because choice is a terrible thing to waste.
  94. I did a *lot* of work in REXX. by aug24 · · Score: 1

    We used to have substantial sysstems at Hampshire County Council which were REXX based. Users in the low thousands, spread all over the county.

    When we couldn't parse user input we used to print to the screen a simple error message readin "ERROR: Cannot parse input; you have entered ''

    Now, I sometimes used to parse user input into a variable called 'shit' because I was 23 and it amused me. Then one day I wrote a bug which missed out the read from console step, so the variable was never set. Now, REXX returns the upper case variable name if you reference an unset variable. So what did the user see? Yep, with the last word in upper case, just when it was coming to mean shouting, they got:

    ERROR: Cannot parse input; you have entered SHIT

    Didn't amuse me any longer, I can tell you.

    Justin.

    --
    You're only jealous cos the little penguins are talking to me.
  95. Idiot commentaryRe:NOOOO!!! EEEEVIL!!! EEEEEVIL!!! by Anonymous Coward · · Score: 0

    Stupid people can write rubbish code in any language.

    The more caffeine-influenced among them tend to complain about the system they used rather than face the fact that they are bad at programming.

    Among those poor programmers are a subset that so lack verbal skills that they resort to the kind of gibbering vulgarity of the poster, who obviously has experience of fellating syphillitc goats if he can make the comparison. I suggest he find one of those goats and stick his head up its rectum.

  96. REXX was a Great Alternative to EXEC2! by DwightMcCann · · Score: 1

    The value of REXX was as an alternative to EXEC2 which was all that was available in CMS prior to REXX. I'm not sure all this talk about functions and scope is terrifically important in a scripting language but to each his own. There was also a marvelous add-on for REXX, PIPES, with lots of superb prebuilt functions ... after all, CMS under VM was a mainframe system, not *NIX with lots of little programs lying around nor the inherent ability to pipe. I guess I'm just old and able to put things into perspective.

    --
    Nothing clever
  97. bash is a shell... by Cryptnotic · · Score: 1

    First of all, bash is not so much a general purpose programming language as it is an interactive shell program with scripting capabilities.

    Also, at the time he was talking about (perl 4), bash would probably not have existed (or at least not been common). csh or sh would have been more prevalent.

    --
    My other first post is car post.
  98. REXX on AS/400 and REXX on Java by A+Numinous+Cohort · · Score: 1

    REXX runs on the AS/400 (IBM's midrange server line); I believe it was originally intended to replace CL, the (command and) control language for As/400. However, the users objected to that as CL is a great language for utilities and such, so IBM added REXX and didn't take away CL. If you want an interactive interpreter you have to do a PRPQ to request one from IBM (or write your own) but OS/400 will happily run your REXX script even without one.

    Also, Mike Cowlishaw wrote NetREXX which is REXX running on the Java VM. It was featured in an IBM DeveloperWorks series on dynamic languages for the Java platform quite recently.

  99. Several good stories with Rexx by Anonymous Coward · · Score: 0

    But the best one is I think is this. On IBM's VM operating system there is an editor called kedit. It had all kinds of really usefull hooks that you could write scripts for to write macros etc. While we liked kedit, it was line oriented and several of us missed editing commands from other editors, like those on the VAX (delete word, end of line, cut and paste, etc). So we emulated the VAX EDT editor in REXX and assigned keys to the keypad. Was truly a life saver.

    If IBM had been smarter about REXX, I am not convinced we would have python and perl today. That said, I do like Python a lot.

  100. I knew if I read this topic enough... by rpjs · · Score: 1

    ...I'd encounter another ex-HANTSNET coder.

    I heard on the grapevine recently that HCC retired their last mainframe a couple of years ago, sadly.

    Back in the 80s and 90s HCC had an entire intranet coded in Rexx, back before anyone had ever thought of the word "intranet".

    1. Re:I knew if I read this topic enough... by aug24 · · Score: 1

      I was there 93-97, on FMS then the HantNet Forms project, and yeah, HantsNet rocked. Until people wanted pictures, not just functionality.

      I'm Justin Rowles. Who you?

      J.

      --
      You're only jealous cos the little penguins are talking to me.
    2. Re:I knew if I read this topic enough... by rpjs · · Score: 1

      Roy Stilling (ITCSRS) - I remember you well!

    3. Re:I knew if I read this topic enough... by aug24 · · Score: 1

      Hi Roy! Yep, I remember you too - should've guessed you'd be a /.er ;-)

      J.

      --
      You're only jealous cos the little penguins are talking to me.
  101. Os/2 by Ike_double_ot · · Score: 1

    We used to use REXX all the time in an OS/2 Client Server environmet. One of the first programs I wrote was usiing IBM's Comm mgr to do Ehllapi. I loved Rexx.