Let's be clear about the options for ongoing discussion. I hope this is a nice summary for anyone who doesn't do this kind of work.
QMClient, MVSP,
UO.NETThese are all connectivity pipes that come in to MV through a socket with a proprietary server API. Each of them exposes a client/developer-side API for specific languages.
mv.NET
Includes as one of two libraries a completely unique interface for .NET developers. To connect to MV it uses either telnet or one of the above APIs, transparent to the developer.
So those options which we can term "bindings" allow for development outside of the environment, connecting in, which is familiar to ALL developers using any RDBMS or NoSQL platform. (Ignore SQL procs and C# stored procedures.)
Rocket Software's new "native" Python language support sits side by side with BASIC. It's built-in to the environment, doesn't connect in from outside. This is their approach to get new developers for the platform.
For the purpose of this discussion I'm just talking about outside language bindings coming in, not the Python-style native support as a sibling to BASIC. All of the bindings options come in through some pipe and then link into DBMS-side code that interprets requests and returns results. Bindings, also known as wrappers or mappings, exist for QMClient to facilitate development in various languages, so there is a .NET binding for QMClient, a Java binding, PHP, etc (if there's not there can be...)
So QMClient is a connectivity library with an API function to Read and someone has created a .Read method in each language that invokes the QMClient API, which then connects into QM with its own instruction (don't know or care what it is), which is then interpreted by code written by Martin. All of these interfaces work the same way for all of the DBMS platforms.
UO.NET and MVSP could be augmented with other language bindings as well. Just because a library is .NET doesn't mean it can't be used by a non-.NET mapping. And MVSP is actually two things in one: It's a low-level socket API that's wrapped by two bindings, .NET and Java. Another should be trivial.
As to the efficacy of bindings in general, this is a proven method of interfacing with the environment. All of these interfaces support core functions like Read and Write and dynamic array manipulation. So there is no question as to the value of any language binding, as long it will be used by someone.
The thing that's different between these external language bindings and BASIC, is that BASIC is close to the DBMS and all operations are local to the server. Whereas with the external interfaces, manipulation of data may require retrieval of raw data followed-by client-side (or middle-tier) manipulation. For this reason we prefer to have some operations performed in the server rather than outside. All of the interfaces allow for calling BASIC or TCL functions. This is exactly the same as stored procedures in RDBMS, where parameters are passed into the server for execution. So again, this is all not only common, but The way to do this, Everywhere.
So this is where I come back to :
Why don't more MV app developers code to MV with the tools that exist?
One could probably summarize that the one-man shop guys just know BASIC and aren't interested in learning anything else. Even when I take my rosey glasses off, I don't get that pessimistic. Sure there are a lot of these guys, but I'm not even talking about them.
I'm talking about the majority of end-users and VARs that do have someone with non-MV programming experience, but they still don't know how to get in from outside, and some don't even know that they can.
For decades now the MV industry has seen third-party products that cater to the lack of initiative on the part of MV developers. DesignBais is a prime example of a fine product that claims you don't need to know anything outside of MV to put a GUI on your app. All of the other bindings have been available for years - Raining Data even took the approach of "look, we'll not only provide the binding but we'll explain what the technology is so that you know why you want to adopt it". And here I am saying: JavaScript is now the most commonly used language on the planet in web pages and now on servers with Node, kids can be competent in days of playing with a game, we can use it with MV, and Still I don't think that anyone would be interested!
One problem is that we have our entire applications written in BASIC within the DBMS - which RDBMS people never do as they separate the UI from data access as a matter of course. The essence of the complaint is that people don't know how to move from that mess to a multi-tier topology. I've written a number of articles on that to define the path. If they knew how to do it And they knew how to use the language bindings, we would probably see a lot more "mainstream" people interfacing with the platform with no problem at all. And if MV developers would hire/partner with others to help and learn, they could do it too.
We're Not talking about the capabilities of external languages.
We're ignoring people who will retire and take their application with them.
I'm talking about application owners who do want to breathe some new life into their apps - and I'm wondering after all this time, what Is it that stops them.
The world won't get much easier for us than it is now.
Why do I care about any of this? Because frankly I'm sick of hearing every day about some company dumping their VAR and platform for another offering. I do Not enjoy getting calls from end-users who say their VAR told them they can't do things. I get more calls now from companies asking for assistance in migration than for consultation for options about what they can do with their existing system. And I'm confounded why the MV DBMS companies aren't all aggressively informing their end-user base that all things are possible - without a costly migration - and linking their Demand channel with a Supply channel that can help with those annual renewals.
Ahem.
So uh, what do you guys think? LOL
T