On 10/1/22 8:34 pm, Rony G. Flatscher wrote:
On 09.01.2022 16:29, Seymour J Metz wrote:
Well all of your languages miss the support for the message paradigm.
What do you mean by "the message paradigm"? How does it differ from sending 
method invocation and response messages to objects?
The message paradigm as set forth by Smalltalk explicitly defines a class for 
messages, allows for
intercepting messages, rerouting messages at the will of the programmer and 
much more, as messages
themselves become objects that the programmer can interact with, if needed.

ooRexx implements the message paradigm in full, something that is easily 
overlooked as usually it is
not necessary to be aware of it.

If it's not necessary then why did you make such a big deal about it?

As you can see, if there should be need for adding external functions and/or 
methods to ooRexx, this
can be done with the powerful and easy to use C++ API of ooRexx. As a matter of 
fact BSF4ooRexx and
dbusoorexx are using those native C++ APIs allowing high speed and using all 
that is available in
and via the C++ world.

ooRexx will never be high speed because it's implementation is fundamentally ineffecient. Most scripting languages compile to bytecode which is then processed by a VM. For example, the Lua VM is less tha 2K lines of code and can fit into L2 cache which is why it's blistering fast https://www.lua.org/source/5.1/lvm.c.html. ooRexx chose to use a graph of C++ classes with abstract base classes for every instruction and clause. OMG, dynamic dispatch for every instruction!

https://github.com/ooRexx/ooRexx/tree/master/interpreter/instructions

It's gigantic clump of inefficient code based upon inheritance. The GoF Design Patterns book which dates back to the 90s was a groundbreaking, seminal work which had a central theme of introducing patterns to avoid inheritance. Modern languages like Rust don't even support Inheritance.

If you want high speed then use a JIT compiler. The Lua Functional library used with LuaJIT can boil a chain of method calls down to a dozen instructions with no linkage overhead https://luafun.github.io/intro.html. The Julia programming language can do the same with similar syntax. If I wanted to use REXX
I would use NetRexx to take advantage of the JVM JIT.



Again it is fairly straight-forward and easy to add external routines and 
external methods to ooRexx
if need be.

---rony



----------------------------------------------------------------------
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