> You have to write some of the code in Assembler whether you like it or not.
As it happens, I like. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 ________________________________________ From: IBM Mainframe Discussion List <IBM-MAIN@listserv.ua.edu> on behalf of David Crayford <dcrayf...@gmail.com> Sent: Monday, May 14, 2018 1:52 AM To: IBM-MAIN@listserv.ua.edu Subject: Re: Heretic alert: I really detest TSO REXX (the language) On 14/05/2018 3:16 AM, Seymour J Metz wrote: > OOREXX solves many of the problems in classic REXX. And it retains many of them. Like being typeless and lacking lexical scoping. > I never found writing REXX function packages to be difficult. Maybe not difficult for some but it's significantly more complex when compared to writing language bindings for modern languages. You have to write some of the code in Assembler whether you like it or not. If you require an LE environment you have to write glue code using CEEPIPI. For most of the stuff I'm interested in I require LE because I want to bind C++ libraries. REXX function packages seem promising but retaining state is tricky and requires stashing an environment pointer using name/token services. Not to mention function names are limited to a maximum of 8 characters! Better to use a command processor environment, but then you have to write a command parser. Been there, done that it's a lot of work. Now compare that to Lua where the entire I/O package in the standard library is less than 1000 lines of code [1] [1] https://secure-web.cisco.com/1fAE1FRpOV9ojUJunEHUBCFVOD9Cq2OCD86vgyzOiIsHIwBDb6-WW2lyfEwSKGyQjD5o4R0Qn78nIchAmYSESFM2sAr-IcGGPoOLpNrcSwqwecpV77BFCMgzRwn5CrNe7u4x-r4I-c4ssCj1JvexeCG-yfyQOwMEU_NB5i42tPvDGI0AW3N53li50oydNGIIEUdo1BgECp7fP9iSg41phwOf7EPgu5jDNi9Pzhe7VFSiF6XKfSo_rIhhexeJGpb9PDlbgHGTz7jcu5yM1fP-788ENVRxM4MMJmO3IBllVauhb_8XQMD9y05xA0FGb3YtIklpbfiiPlM_8QZmdeJ5mLV8SrO4QTi1qiQGDDSapHElDxYj1np6rEu-4KE7MXoxVFdcL48lEeu9CQnE5kwcDaw/https%3A%2F%2Fgithub.com%2Flua%2Flua%2Fblob%2Fmaster%2Fliolib.c%2A.%2A > I don't care for Perl syntax, but between its expressive power and the > massive CPAN I find myself using it regardless. I can do without the expressive power of Perl! It shone briefly as a CGI language and it's good for text processing but with the emergence of powerful PEG parser libraries [1] I can easily do more with less using much cleaner languages. [1] http://secure-web.cisco.com/1EEbpMNm2VKYWvGNw5YBUs_RbBqZHENUg8e4xfBd0hdeQnWk5Klw_AteQx0Iq_99PxUyJCYwDngm7XZP8PJUlNtNfe8WlpvHFmqKAxgJ56YZAjPdP-wawZEzOP6zmn0RNikkWsevN6cxtGxeZ9dmZrEuFnjg90BwCtrEZSBhKClU3CuFE_lPeYqLQX6dTqickTnVzO0ABt2x9OdyCroqjjFvO17_Y5Oq-dUMp0V2oN2O-iXDZBvvxC2Bm0PAA_Thjdojx6i7gfGu_9Q4_BdEV-wCHwWGS8ilRNbz3Ln9reaWkwZCfQ-SxEc81SF1nmN0iTR4E7JpTNura2ZW2och9sqEQmdpIeDxow9pCjfMxY5t39Ekt9skUCvYMjTZWPuXxyRlv35qSxKDG7QIIet6bKQ/http%3A%2F%2Fwww.igordejanovic.net%2FArpeggio%2Fgrammars%2F https://secure-web.cisco.com/1F9OM8QJ2XyavxlCLH586mfiSbel08ataY-oMZl78K1kDEFa3mHAXcWbfBmgYlN4jA_uiEvHb5Lu4q2r0Dp-bBIcn9_CfEQYyFQqQ3CesYfaUiAd0qFTNf3u7sCVBMo4lIPgheolAmshmCXDHszAkEmkTfY-Oiu0YrSTJdzCKs0TeDbH3Oum_8XOJbIUpcZ4Xv3OvNvn46Ow-MzTWcvIdtbEqbeDyPmZrGiQ6o5_yo5Q5pk5_NJuwBu7DmSsI8Op7MHsntg3juJO8rNKmjwSE48xdtKxTT-sA_VtA74WWdZhbSiAj8qv7HvwASQdCSeGJYTBF847xdjxFVT6yvk8N6TNisUhlFPHAk394zmMQr3kpW-N4l-Qe6EZ2vY2uxzyDF1wq8P7-it9_bCieSmG8IA/https%3A%2F%2Fgithub.com%2Fpegjs%2Fpegjs http://secure-web.cisco.com/1h6h6skXopckK2hfFJ6m_0QAMj7zePQQAeo23EPud_hD5YxAFCNFaNByYW5t7guGOst5nVvW_SzYMwWllW8jIeTCVAHUdqW8D9B9ZYplMSj9aXWibQEWTX-A-U4W0XUYaBY9ymbl6TO4WbJMMMC92k9XawDN0cy_fH5cJVNaLxuKoYXrzHSJIaEdmvPeen3PbgQc1zSUD7sCTBLUYwCqdsmnwmINZBtNPlnBnhjJA0p3l29aToCBAFylp8DLO0VLd6xeMDNsf9BY52jBMTFZxE0OLdfSsvr_CwGqpLKYd8p55zo_lVr9tue9c-3s2DA52hLBZBQbSyAoOvl5iou8uiTs-Xkkzythad1MFlo1ZJ9SjqdrenwQ6tV2ZzEVFONpK/http%3A%2F%2Fwww.inf.puc-rio.br%2F%7Eroberto%2Flpeg%2F https://secure-web.cisco.com/10pTPbff4_0BbOMkG9LCpI2KXGAXoH5XiQyt2PIAk5v9UOd04uiRc8SYnkKUCFleCzcDYgHYCV2DRjn6jWnyEQ__eZFnDDxHKioZ6jsadxVUgZIFQg4-5sFjlg9JmqACIserqEL3pkCEPgfRIGSh651z152lFdYZ9L_mtyjDR3nLAXnHF7PUcjR3N8OKaUg9mq_byrtlnbSI-V9u4C_sP0_VlpXbyP5OxXkT0rrlsKmMXTV8TIjWxe0GaFomx5hp9PLsxcoVo-Wyxaw30wV8J5xQdZp-h11YI06Rb2ClqEw0m768kLmlrZL8DAwB14qfJvWF1TRKbD08UckOSvoXDvAyv_L4gFdP1h8y1BUKn8tiYqLhRvwSmzsqeXZnErSaXs5ze45Eb6EaNPSM5x9jtCA/https%3A%2F%2Fgithub.com%2Fevanphx%2Fkpeg > That said, I find that REXX has a much cleaner syntax for scripting OS > commands Agreed. Processing command strings is much cleaner in REXX then any other language I know. But not by much. > > -- > Shmuel (Seymour J.) Metz > http://mason.gmu.edu/~smetz3 > http://secure-web.cisco.com/1d2-ayEOq0ufqQVN67vXwQwfMwSZgP6Y1Z6HtAyVsCBFOpBrST89wKlEFsyomHH4OzuHssEe1HaqUy2pdgoh5MkrMFXqQF8Hy91XE-eKbhUM4Ec6W7nolRa41s4dLfBnWBEtjX-LBx55vLW1xCsU1PTRU87_N9AuYwygQviLNXbKb5WGf7xrTRqBMMlBk83GKfZnaPsYKpNlr67j0rdV0tiPPnNT-Z9BYD2Vt51yZs1deHpzOdvnwIN_S5wLsV8KQadTPL4_auilFNvuOSy4Iec23zSBEjViEa23GKsuJwF0_S8QKEN15H30dDCDP8NNH1eltdHJn3_X4P2UZl98Dyw3BfdPFw3gXN36bwYvxp1gcoJ_TJjLBpvWgbCqE_ugZ/http%3A%2F%2Fwww.rexxla.org%2FNewsletter%2F9812safe.html > http://secure-web.cisco.com/1yKXKkvheTyHbkEEvq631b7xdeJZpD7rJoar6OHKLyP2Ua9x6zz7BiTmpoTTGhEzPJA8oxs2DjHzHsyA-lGVDqoUIwKAGQwKOrcOlX5-cn5_Txv-QFwitRk3RMj0ItP7zLEJFY11eCoVPU7k2qF77yfq2gM6C8N21ccen9sRDmnwC3__70eP059jkLmYpuWEUWt9gx59D2JY_kuVXNXAwcHYm0Au9maSFYRVYzX5kXffdLy4py-8rn8W_yWqiH9eh2SnxazK1e11SZHixaNo8OkyTmMBjrojZEIl8V4Aac0U85PoUcFBn_fcrFFqTh_hn8qeXZJZ94HeZ1pfHytodFs7rAV44yEGGjOltz8lGwaNwOVb_1F21MLIyH9XcJenl/http%3A%2F%2Fwww.rexxla.org%2FNewsletter%2F9901safe.html > > > ________________________________________ > From: IBM Mainframe Discussion List <IBM-MAIN@listserv.ua.edu> on behalf of > David Crayford <dcrayf...@gmail.com> > Sent: Friday, May 11, 2018 10:09 PM > To: IBM-MAIN@listserv.ua.edu > Subject: Re: Heretic alert: I really detest TSO REXX (the language) > > On 12/05/2018 6:23 AM, Tony Thigpen wrote: >> Come comments on other posts: >> >> David Crayford wrote on 05/11/2018 02:22 PM: >>> The fact that REXX does not have native support for VSAM >>> data sets is a shocking omission. >> This is available on s/VSE. >> > z/VM and z/VSE seem to have lots of features that z/OS lacks, like pipes. > >> David Crayford wrote on 05/11/2018 02:22 PM: >>> Lack of variable scoping is one of my biggest gripes. It means >>> REXX doesn't scale. Of course, you can add "procedure expose" >>> to functions but that soon turns into an intractable mess. >> I disagree. This sounds more like you are trying to use programming >> habits/methods designed for another language. Any programming >> 'language' should be used as it was designed, not as some other >> 'language' was designed. Are you trying to make REXX look like Perl, >> Java, PHP or bash? >> > Not at all! My opinion is based upon 30+ years of using REXX. The > inability to pass aggregate types (objects) in REXX (stem variables) to > functions makes it unsuitable for large programs. This is especially > true for external functions. > REXX also lacks modules or packages so reusing code is hard. The "expose > stem." construct doesn't cut it IMO. Once the code grows large it takes > a lot of mental gymnastics to remember what's been exposed. Lexical > scoping is > an absolute must in modern programming languages. > >> David Crayford wrote on 05/11/2018 02:28 PM: >>> Perl excels at one thing, regular expressions. Its syntax is ugly >>> and it suffers from language bloat. >> I equate regular expressions with vi. It takes a lot of use to get >> where you can use it without looking things up, and if you get to that >> point, you have lived a hard life. :-) > I have to admit that the parse instruction in REXX is elegant and one of > it's redeeming features. But it lacks the power of regular expressions. > I missed regular expressions in REXX so much I wrote a command processor > [1]. > Extending REXX is difficult and requires writing assembler code. In the > case of my regex API I needed to use CEEPIPI to glue together the > assembler code and LE C++ code. Extending languages like Python, Ruby, > Lua, Node.js > is trivial in comparison. But of course the language bindings for those > languages are written in C/C++, which is ok for me as I know those > languages. > > [1] > https://secure-web.cisco.com/1hl2S1kpirFFJW9IvenEuaa4EAGxduLA8veYSk-oplRc6Kst7sAdKMuWYMRxwh9TxWDln5kMQtW4nFoVsM6fNGpYmpBnRSL6ok280lKYp25zEIK4njlXHFylhgoLjzzJD9dGWh2Bmk0bTKbkne1Ycwn3JnZY7ugfrWBToNL2__OfEaFxvtYiP9c29Lpg_sb-BwxmDSmQEUnyn5vldeqVaeuaT3k2GX-M8WtSK7TJ8rAlDvXLD8FLIgnjdh_egoly8LgYVNjgLfraPfIFxepNbD6ZVziom8nUgvP2GNxJNfpQNp0PombTDtVzJnVtLsYeeRCCqQdkXiepdzXKAvrjaVdVE1lX2oA3YgQjfGxxdOEtDIQsG-wGayObGxLUDx8X0xGI53_kCoAYXlQppYqpVhg/https%3A%2F%2Fgithub.com%2Fdaveyc%2FRTK > >> David Crayford wrote on 05/11/2018 02:30 PM: >>> I'm at a loss as to why anybody would use OOREXX on platforms where >>> there are a multitude of better languages to chose from. If it's >>> because of familiarity coming from z/OS or z/VM then I would >>> advise them to take the time to learn something new. Most modern >>> scripting languages can be picked up in less then a day. >> And the code produced is usually crap for the first 5,000 or 10,000 >> lines of code written in a new language. I had rather know a few >> languages well than many languages 'so-so'. Bringing your existing >> skills into play is always a good thing. Bringing your poor skills >> into play for a production code is just stupid. (I am not against >> using your poorer skills for one-off, one-time use code. That is the >> best place to learn new skills.) >> > But with modern languages you have to write less code. There are > libraries to do just about everything you can imagine. I was reading > about the new web services for REXX to create JSON. It really did hammer > home > just how difficult it is to do things in REXX that is one line of code > in modern languages. And to install libraries in modern languages you > use an installer like pip, gem, npm, luarocks which takes care of > dependencies etc. > It's a cliche but if the only tool you have is a hammer the whole world > looks like a nail. > >> After all the cut-n-paste, I noticed that the biggest complainer is >> David. That's ok. You hate Rexx, I hate 'C', and Perl and PHP and .... >> > I hate Perl and PHP too. I'm not a fan of Ruby either. I don't much like > C but it's a useful language to know. > I have been accused before on this list of pathologically hating REXX. > That's not true, I appreciate it for what it's good at. But I have found > over the years that I prefer other languages. I'm a software developer > and write > code for a living so having the best tools available is important to me. > >> Tony Thigpen >> >> ---------------------------------------------------------------------- >> For IBM-MAIN subscribe / signoff / archive access instructions, >> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN