Grant - always great to exchange notes with you.
I wrote a response a few days ago but set it to the side to think.
As I said in my first response, mixing Python with BASIC in .NET requires a bridge like IronPython, some kind of magic sauce that's not really in there by default. You've confirmed that that's what you're using.
It's great that you're using the DLR to marshal data types between languages. The other platforms are passing around variables and references to objects in a way that's much less elegant, more bolted-on than builted-in.
While it seems like Marketing fodder to go on about the methods used by these tools to integrate components, I think in reality that's not relevant as it only becomes a matter of syntax. Consider:
* Made up, but close to actual BASIC syntax with Python integration
INPUT NAME
CUST.REC = getPyObj("customer",ID)
RESULT = pyFunc("setCustField",CUST.REC,"Name",NAME)
If that can be used in an existing MV system then it doesn't resonate with the average BASIC developer that all they need to do is to change their database platform and write code in Visual Studio with Iron Python to get "ALREADY HERE" functionalty. In MVON# there is elegant syntax between BASIC and C# in the same code module. I suspect you can do the same as elegantly with Python or
VB.NET, something like:
* Again, made up syntax
NAME = "Jane" ; * start with BASIC in MVON#
[C#]
doSomething(TEST);
[/C#]
[Python]
def doSomething(info)
print("Hi " + info)
[/Python]
CRT "That was cool!"
The only difference here is syntax.
I'm not criticizing or negating the claim that doing this is easier with MVON#, once someone is using it. I'm suggesting that now that other providers have done this in the traditional MV environments, that app developers don't need to port to a new platform for this functionality.
And (kinda OT) I'm sorry that the other DBMS providers don't understand their own offering well enough to recognize that they didn't need to come up with completely new syntax for their Python implementations when existing syntax would have been fine:
Consider:
HANDLE = getHandle("Foo") ; * prepend % for D3
RESULT = func(HANDLE,"myFunc",123,"ABC")
It shouldn't matter if that's a handle to Python, Java, C++, or Foo. I should be able to use the exact same syntax to invoke functions regardless of the underlying technology. Do we really need a new set of pyFunctions() with unique syntax? Will an implementation for Java really need to be done from scratch with changes to the BNF? Has anyone thought yet that the exact same structures can now be used to support any language? (Where I believe they're persisting state in handles in phantoms)
Meh, that's the result of some high-octane coffee. Time to get back to work.
Best,
T