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

Reply via email to