On 08.01.2022 01:52, David Crayford wrote:
> On 7/1/22 7:53 pm, Rony G. Flatscher wrote:
>>> Here is my list of must haves for a scripting language. Does REXX or ooRexx 
>>> meet the requirements?
>>>
>>> 1. Short circuit evaluation
>>> 2. Functions as first class objects
>>> 3. Mutli-threading
>>> 4. Dynamically typed, preferably with type hints
>>> 5. co-routintes
>>> 6. A module system
>>> 7. Support for object oriented programming
>>> 8. Regular expressions
>>> 9. Libraries for web programming, pegs, JSON/YAML parsing etc
>> You also mentioned in your follow up: "Forgot to mention. Support for 
>> functional programming map,
>> reduce, filter etc."
>>
>> This list reads a little bit like a wish list for concepts found in 
>> different programming languages.
>> Sometimes such features are specific for a particular language (e.g. 
>> functional programming) and
>> then sometimes made available in other languages.
>
> Umm, nope. Here is a list of programming languages that I use that support 
> all of my requirements.
>
>  * Javascript
>  * Typescript
>  * Lua
>  * Python
>  * Ruby
>  * Kotlin
>  * Groovy
>
> I could go on. Even Java supports functional programming since Java 1.8 and 
> which introduced the
> streams API. It's unusual to see and old school loop in modern Java code. 
> Even C++ has lambda's.
>
> I missed "closures" on my list which code hand in hand with "functions as 
> first class objects".
> Very powerful, for example in Kotlin you can easily create type safe builders 
> (DSLs)
> https://kotlinlang.org/docs/type-safe-builders.html.

Well all of your languages miss the support for the message paradigm. So, does 
this invalidate all
of your languages? Probably not, as each may serve and prove useful for the one 
or other
purpose/problem. However it means that e.g. in situations where the message 
paradigm becomes
helpful, none of your programming languages/skills qualify. (The same pattern 
you use in your
argument, just turned around a little bit. :) )

None of the above programming languages are human centric by design, such that 
it is not possible to
teach them as quickly as REXX or ooRexx and become productive quickly and 
relevant for as long as a
professional life lasts...

You must not overlook the fact, that IBM was very lucky in having a gentleman 
hired by the name of
Mike F. Cowlishaw who has turned out to be an ingenious language designer, and 
much more. The
history of how REXX got developed and how it became so successful also explains 
why it still is in
professional use and still serves as a beautiful language to teach and to use.

(And as you may know, Mike F. Cowlishaw has been very seminal in quite 
different IT related areas.)


> That's why I have absolutely no interest in NetRexx. I have far better 
> options on the JVM. 

Well, you mention in another post that you were/are an expert REXX programmer, 
love Lua, use Python
in your shop because of your teams coming with that knowledge from the 
colleges, but nowadays you
would mainly code in Java/Kotlin. Kudos!

What appears to be a little bit strange with such a background is that you have 
obviously never
really assessed NetRexx, as otherwise you could not possibly have come to such 
wrong conclusions.

To explain:

  * Mike F. Cowlishaw's (see above) Java expertise has been impressive from the 
early days of Java
    which many do not know

  * NetRexx got designed by Mike F. Cowlishaw, and as a matter of fact it is 
the first JVM language,
    believe it or not, many years before others have appeared (and many years 
before .Net/clr
    languages came into existence too)

  * NetRexx allows REXX programmers to take advantage of their Rexx skills as 
NetRexx follows the
    Rexx philosophy, or with other words REXX programmers can quite easily 
create real Java programs
    using NetRexx without a need in coding in Java itself, interestingly REXX 
programmers do not
    know and realize that (including yourself it seems)

  * NetRexx programmers, if need be, can create Java classes and Java methods 
that other programs
    can exploit and use, hence it becomes possible to create Java class 
libraries not in Java, but
    in NetRexx only which can be programmed by REXX programmers (whereas the 
learning curve for Java
    is probably too steep)

To demonstrate the "difficulty" of creating and understanding NetRexx programs, 
here a simple
example which probably everyone on this list can understand without any further 
explanation, so here
is a NetRex program:

    parse version v         /* get the NetRexx version    */
    say "parse version:" v
    parse source s          /* get the source information */
    say "parse source: " s

    say "1/3:" 1/3          /* demo Rexx arithmetics      */
    numeric digits 100
    say "numeric digits now:" digits
    say "1/3:" 1/3
    say

    numeric digits 1000
    say "numeric digits now:" digits
    sum=0
    loop i=1 to 10000
       sum=sum+1
       sum=sum*i
    end
    say "sum:" sum
    say
    say "sum/123456789:" sum/123456789
    say

    say "using a Java class from NetRexx:"
    dim=java.awt.Dimension(123,456)  /* create a value of type Dimension */
    say "dim:" dim
    say "dim.width :" dim.width   /* access field 'width' */
    say "dim.height:" dim.height  /* access field 'height'*/

If you were to download NetRexx (https://www.netrexx.org, you may check out the 
documents directory
which includes the language specifications/explanations) and follow the 
"read.me.first" directions
you can save the above NetRexx program e.g. as "hi.nrx" and then compile it to 
a Java class and
immediately run it with:

    NetRexxC.bat -run hi.nrx

which will yield the following output:

    parse version: NetRexx 4.01 20 Mar 2021
    parse source:  Java method hi.nrx
    1/3: 0.333333333
    numeric digits now: 100
    1/3: 
0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333

    numeric digits now: 1000
    sum: 
7.736935969712469619151651477554396939520513287393986175334653566730869651801086564369479958064722713899396967001861352624682
    
5891215847753257250320279897104393906617152735839319941764550748080956718722289678378323298784610059217677757356954522140036192390
    
4049839280690087786339692749299935124528137143751837005231585673849980611344761437273477853592569030307359999423627042239749545273
    
8059487993597949354821431475341953508042319805901872835603980197669360500030780444598140230671120626545538783721813724171382805898
    
8423516525739103184616117008128739522056723495424699379091271191253364564688512189708532851094054189954846455906865383944900886686
    
6224631061105811823775753971217861822189285256508005847845137009771398810859276041023023362369536193745800774766641369366806880385
    
4879692745959247996051540379695463003040977756884207224780403921976688227227785961342888241576864775282480683471864660600729635815
    
115929309041531964123184013000863936300931250923209567131854636472009507870027938546253097930789E+35659

    sum/123456789: 
6.26691819249605594322694678018427722068853847105482888862001227549411612495533685423284413955130706817540586366770
    
1055002072497707343397150662190013697594580554546672417977703918880034272402869373082616759000456694105709331158586811889053304483
    
7280023855476254066569809116478778072650175206203373485094597511784595796821670180596124319843883016720333543609931406803689592334
    
9950034156328129350067410983353975898023878906168725950413457848446388816873356434050036765867783928081194516289058739711901443036
    
1851389070909945383865370351128775672930286524952201980194438669475784858721164744102368658697945955089926580704674447340993566902
    
5784306350801382908242155222729448598506629054007656497246822598621541745247513185431971346753804147811550176778516471440597841028
    
1517106674050925846286124288883905799598875279596084242631987393158297995420623504733124555940207406623613447072763303723367101391
    
2997231618518710468843906157419325083046558044127432514807435634124466526074973088656977737000962416032697E+35651

    using a Java class from NetRexx:
    dim: java.awt.Dimension[width=123,height=456]
    dim.width : 123
    dim.height: 456

Now one of the cool things is, that the compilation of the NetRexx program 
"hi.nrx" yields a Java
(!) class file named "hi.class", which is a plain Java class file. It can from 
now on be directly
executed via Java in this way (note that one must not supply ".class" to 
java[.exe]):

    java hi

The output will be identical to the above.

---

So in a nutshell: NetRexx allows REXX programmers to easily create Java (!) 
programs, but not with
the Java syntax, but with the NetRexx syntax which is easy, and especially easy 
for REXX
programmers, no matter on which platform.

One needs to know that NetRexx exists in the first place and what it can do in 
order to be able to
take advantage of it. So now you know! ;)

It is worthwhile to download NetRexx and try it out. The documentation is great 
and also the wealth
of samples in the "examples" directory which demonstrate what can be done how 
the Java world can be
easily exploited (and enriched with one own's Java classes created with NetRexx 
programs at any time).

---rony


-- 
--
__________________________________________________________________________________

Prof. Dr. Rony G. Flatscher
Department Wirtschaftsinformatik und Operations Management
Institut für Wirtschaftsinformatik und Gesellschaft
D2c 2.086
WU Wien
Welthandelsplatz 1
A-1020  Wien/Vienna, Austria/Europe

http://www.wu.ac.at
__________________________________________________________________________________






----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to