On 1/12/21 11:58 pm, René Jansen wrote:
David,
Thank you for mentioning these plugins, I am certainly going to have a look at
them.
There are some things in your mail I feel I have to correct.
On 30 Nov 2021, at 22:55, David Crayford <[email protected]> wrote:
On 1/12/21 1:55 am, Seymour J Metz wrote:
I just wish that they would acknowledge their abandoned child OREXX.
IBM certainly haven't abandoned ooRexx. It's my understanding that Rick McGuire
works on it almost full time. The mailing lists still get quite a bit of
traffic and the Github repo shows recent commit activity. If you're referring
the fact that ooRexx hasn't been ported to z/OS then unfortunately I don't see
IBM committing resources to a language in decline.
IBM has abandoned ORexx; the source code was given to the Rexx Language
Association (of which I am, coincidentally, president) in 2005 already and we
have to thank Rick that he still works on it in his own time, not IBM; as do
lots of other people. It is very much alive, and at the moment better than it
ever was. I’ll leave the remark “language in decline” without comment here, but
allow me to say that if Rexx would fail at this moment, it would mark the end
of civilisation as we know it. Rexx might wel be the most under-the-radar
programming language there is, because it is very often used by systems staff
(who were never allowed to program) to save applications of otherwise
questionable architecture and implementation.
Thanks Rene, I stand corrected. I appreciate you taking the effort to
write such an insightful response.
Some people from IBM have told me that there was an Object Rexx implementation
for z/OS (well, it might have been MVS/ESA or OS/390) that was finished and
ready, and was scrapped through company polittics. In this sense, I agree with
Seymour.
If you look through the oorexx-dev archives you will my name attached to
a z/OS port of ooRexx about 15 years ago. I got it working but it was
buggy and it wasn't easy to port as the UNIX code used nefarious hacks
such as using integers for pthread_t which isn't portable. Once it
became obvious that integration with the MVS file system and TSO/ISPF
was a very heavy lift I abandoned it. A couple of years later I ported
Lua which was easy to port and inteegrates into z/OS very nicely. It
supports all MVS data set access methods such as VSAM which REXX doesn't
https://lua4z.github.io/Lua4z/. ooRexx is a massive code base. I didn't
like the architecture very much. Everything is a C++ class, including
language constructs such as If/Else etc that all use an abstract base
class. The amount of dynamic dispatch going on makes it bloated and
slow. Lua compiles to bytecode and uses a highly optimzed VM that is
tiny and can fit in L2 cache which is why it's so fast and commonly
embedded into larger applications such as video games. Lua on z/OS is an
order of magnitude faster than native REXX.
As RexxLA, we did not receive this codebase; the same goes for the OS/2
Object Rexx codebase, which apparently was encumbered copyright-wise. Where the
OREXX for MVS implementation has the status of a rumour, the mishandling of the
Linux/Windows/AIX codebase (which would be open sourced, then not, then ‘free’
for Linux, cheap for Windows and expensive for the ’toolset’ - and some decade
later open sourced again (for which we are grateful, of course, because even
open sourcing is costly business) is public knowledge and can be found on the
net.
For this list, it would go too far to go into the ‘LotusScript’ and ‘DataBasic’
circumstances that probably influenced these decisions. Rexx in decline? Not
really - who would be making Microsoft Visual whatever extensions for it if
that were true.
It makes much more sense to port modern languages like Go, Python and runtimes
like Node.js. Docker is going to be important for z/OS and it's written in Go
so it's a no-brainer. We've been beta testing IBMs new clang LLVM z/OS port
which is exciting in the fact that LLVM can be used to build a plethora of
different languages. I particularly like Julia which has a similar syntax to
Lua but can be strongly typed and is compiled and bench-tests show it runs at
near C speeds.
I have some trouble to see Go and Python as more modern languages. A recent
book tells me there are ‘100 Go Mistakes to Avoid’ - I think I am going to
avoid only one. Python bases structure on indentation - I have trouble calling
that modern, it actually reminds me of A and B margins and BAL sheets. And lots
of ugly double underscores, if I may say.
It's all subjective. I could pick holes in any language. I much prefer
languages that support anonymous functions to Pythons puny lambda
syntax. I don't think ooRexx supports functions as first class objects?
What I do appreciate about Python is it's colossal standard library and
eco-system.
The LLVM for z/OS port actually is the best news there is here: it means we can
base an Object Rexx version on that in a number of years from now. Also, the
mainframe has gotten so fast that you probably can write an ooRexx in Classic
Rexx for it without seeing slowdown.
As we are discussing z/OSMF and REXX I thought I would mention the Z Open
Editor plugin [1] for the VS Code editor. This includes the REXX LSP plugin [2]
written by Broadcom which supports auto-completion, syntax checking as you type
and symbol outlines.
That is great news. Although I use ISPF, LEXX or XEDIT for serious work, and
Emacs for all other platforms, I would love to see what they made, especially
for an MS platform, the company that was very hostile to REXX in the OS/2 days
- remember it initially was only in IBM’s OS/2 EE (Extended Edition).
It's not your fathers Microsoft. Don't forget that MS owns Github! I'm a
Vim man myself when I dwell in the shell ;) Steep learning curve but
incredibly powerful when mastered.
Of course, this new tooling is mainly targeted at the new generation of
mainframers and not at folks who don't like learning curves. But there is a lot
of value to be had if you don't mind trying new things. The Zowe explorer VS
Code extension has 46K downloads so it's quite popular. Although when you
compare that to 46M for Python [5] you can appreciate why IBM ported Python to
z/OS :)
I - personally - feel that people would be missing out when they are not
learning ISPF and JCL (and REXX!) like we did. If I was starting out in this
field, I’d rather learn something that is a nice niche instead of the standard
fare that millions of young people must have in their repertoire. Which mostly
lasts the lifetime of a JavaScript framework. Also, with all the ‘modern’
interfaces, I never saw someone use them without having a small 3270 window to
that same box open - and asking me questions every time I passed their rooms in
the hallway.
I agree but the truth is they don't really need to. I work with a lot of
really smart millennials who have a deeper knowledge of MVS internals
then REXX and JCL. At work most of us work in a bash shell and only use
ISPF for SDSF and to submit jobs.
I feel the same goes for Python on z/OS - admittedly not having looked at it.
Does it have the same TSO, batch, console, SDSF etc interfaces as Rexx has?
Not native APIs but all of that's supported using the z/OSMF APIs
wrapped in a scripting CLI
https://docs.zowe.org/stable/user-guide/cli-usingcli/. This has the
advantage of being cross-platform. I think z/OSMF is terrific but I only
use the REST APIs.
[1] https://marketplace.visualstudio.com/items?itemName=IBM.zopeneditor
[2] https://marketplace.visualstudio.com/items?itemName=broadcomMFD.lsp-for-rexx
[3] https://docs.zowe.org/stable/user-guide/install-overview
[4]
https://marketplace.visualstudio.com/items?itemName=Zowe.vscode-extension-for-zowe
[5] https://marketplace.visualstudio.com/items?itemName=ms-python.python
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN
Best regards,
René.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN