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-***@listserv.ua.edu> on behalf of David Crayford <***@GMAIL.COM>
Sent: Monday, May 14, 2018 1:52 AM
To: IBM-***@listserv.ua.edu
Subject: Re: Heretic alert: I really detest TSO REXX (the language)
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
________________________________________
Sent: Friday, May 11, 2018 10:09 PM
Subject: Re: Heretic alert: I really detest TSO REXX (the language)
Post by Tony ThigpenThe 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.
Post by Tony ThigpenLack 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.
Post by Tony ThigpenPerl 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
Post by Tony ThigpenI'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.
Post by Tony ThigpenAfter 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.
Post by Tony ThigpenTony Thigpen
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN