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