> To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
> For more options, visit http://groups.google.com/group/mvdbms
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
>> > To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
>> > For more options, visit http://groups.google.com/group/mvdbms
>>
>> --
>> You received this message because you are subscribed to
>> the "Pick and MultiValue Databases" group.
>> To post, email to: mvd...@googlegroups.com
>> To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
>> For more options, visit http://groups.google.com/group/mvdbms
>
>
>
>
> --
> Dawn M. Wolthuis
>
> Take and give some delight today
>
> --
> You received this message because you are subscribed to
> the "Pick and MultiValue Databases" group.
> To post, email to: mvd...@googlegroups.com
> To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
> For more options, visit http://groups.google.com/group/mvdbms
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
>> > To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
>> > For more options, visit http://groups.google.com/group/mvdbms
>>
>> --
>> You received this message because you are subscribed to
>> the "Pick and MultiValue Databases" group.
>> To post, email to: mvd...@googlegroups.com
>> To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
>> For more options, visit http://groups.google.com/group/mvdbms
>
>
>
>
> --
> Dawn M. Wolthuis
>
> Take and give some delight today
>
> --
> You received this message because you are subscribed to
> the "Pick and MultiValue Databases" group.
> To post, email to: mvd...@googlegroups.com
> To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
> For more options, visit http://groups.google.com/group/mvdbms
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
If you're serious about the product(s), hire a professional to do the website and marketing materials. It's money well spent.
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
To unsubscribe, email to: mvdbms+un...@googlegroups.com
The key thing I think I am downplaying with the messaging is that the transpiler produces code that really runs in .NET. Your full MV environment is right there in .NET. It is, effectively, a .NET implementation of MultiValue. When you start using MV# instead of MV, your application runs in the .NET CLR.
In response to other comments in this thread, while we could have made it a compiler direct from MV BASIC to CIL, having C# in the mix add in a positive way to the efforts. Yes, to Kevin that you can (optionally) have the C# there to inspect or use for debugging.
Application software companies often have their own proprietary way of doing screen generation. If you have a screen generator written in MV BASIC, well, now you have one for .NET. Sure, your team will be doing some things differently than the software company down the road, but that is always the case. Your .NET developers will not only know C#, they will know your .NET tool set. That's the norm. That yours includes the MV BASIC language makes it a highly productive environment for highly useful green screen apps. That everything runs in .NET (and with SQL Server) makes it highly usable.I'm all ears on how to say this so that it resonates. I'll work on it some more too. Thanks. --Dawn
On Tue, Nov 1, 2016 at 3:05 PM, Tony Gravagno <bacj8...@snkmail.com> wrote:
Lots of thoughts. Please don't take this as being critical. This is just what I'm thinking, no evaluation of fitness or quality intended.
1) If I understand what's being done, I disagree with the description "Compile your MV BASIC application to run in Microsoft C#" .
This isn't running IN C#. There's no such thing as running IN C#. If the BASIC code is being converted TO C#, then it IS C#, and this is the literal definition of the word "transpile".
2) The problem with such tools is that when they fail we often don't know what happened. If the C# source is a black box, perhaps deleted after compilation, then a developer will need to do a lot of guessing to figure out why something went wrong: Should I modify my BASIC source and re-transpile? Is the translation incorrect? Did they generate invalid C#? Is it valid C# but something invalid in the query/execution? So unless the C# source is available I would consider this extremely limited. I have no doubt that this is the reason why "to date our customers have all opted to acquire the tools with the source code".
3) It seems obvious that the first task is to ensure the BASIC code is MVON-compatible. If that doesn't work then it doesn't seem likely that a translation to C# will work in the same environment. So this presents another tier of effort to an adopting developer.
4) As with all such efforts, the UI needs to be stripped out. While this is clear and obvious to any of us who do this kind of work it might not be to someone new to the game. More specifically, INPUT and CRT statements have no place in this code unless the C# renders a character UI. PRINT statements are OK but only where they generate a report. A parser will probably not understand this. So common code may need to be prepared, replacing PRINT with CRT for screen output - so that the CRTs can get stripped anyway.
5) C# is object-oriented. MV BASIC code is not. I'm really hoping that the implementation doesn't do line for line translation, creating a single monstrous C# method from a BASIC program, with all of the tasty GOTO goodness included.
6) And what about GOSUB? Are subroutines abstracted out into methods? If so, how is variable scope managed? BASIC variables are globally scoped but C# variables are private to their methods - unless the transpiler globally scopes all vars.
7) And what about data typing? Nuff said.
8) "SQL Server is optional. MV# works with MultiValue DBMS products too." OK, so we convert MV BASIC to C# and then run that back against MV? OK, there is some advantage there but it really does take the rules further from the DBMS, which is opposite of what's being done with SQL Server where C# code can now be run in the DBMS as stored procs. That one quote can't be picked apart in a brochure but there's a huge discussion that goes behind it about Why we would want to do that.
9) Implied in the site but not emphasized is the benefit where BASIC>C# code can take advantage of the wealth of other .NET code (doesn't even need to be C#). That said, what this implies is that once the code is moved to C# and enhanced to take advantage of the benefits of .NET, that the BASIC code could be deprecated. Or there will be this weird hybrid of "we need to stay with the C# here but the rest of it there is still BASIC". What's happening here is that there may never really be a full transition from BASIC to C# for some/most apps. So what's the point of the effort if both skillsets are still required? This is some of the challenge that InterSystems had, where they encouraged developers to recode into a OOP/BASIC hybrid.
What this all comes down to is that crappy BASIC code will transpile to a pile of crappy C# unless there is a lot of preparation done on it. Without the C# source, it stays crappy. Aside from my point #2, one could say "why do we care about the C# source? we write BASIC code, it runs in a RDBMS, we're done!" But if we just run BASIC code in a RDBMS we have MVON (a fine offering) - why bother with the C# and this whole MV# concept?
So I'm wondering what the MV#/C# part is buying us. And I really hope this isn't yet another "this will do it all for you...except for that whole slew of things that it doesn't do", which is the same problem that every other similar offering in this space has had.
And as an aside, I find a huge sense of irony that the MV person most fervently against anything Microsoft and .NET is now involved in this fascinating offering.
HTH
T
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+un...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
One thing to clarify, Ross, is that with ONE & DONE, you get all of the source to MV running in .NET. In other words, you no longer need an MV vendor at that point as you have it all.
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
To unsubscribe, email to: mvdbms+un...@googlegroups.com
To unsubscribe, email to: mvdbms+un...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
Yes, yes, perfect, Kevin! You've got it. It does not require switching the DBMS out if you want to stick with an MV DBMS, so the options are broad, especially options for how to step into these tools. MV# is the name of the MV BASIC language and also used to refer to all of the "MV source" you have. Instead of writing in MV, you write in MV# where the MVON# implementation of MV is right there in .NET.UniBASIC is to the UniData p-machineasMV# is to the .NET p-machine with MVON# toolsUniBASIC running in a UniData p-machine is to the UniData DBMSasMV# running in .NET is to SQL Server or an MV DBMS (we started with U2 as options)I'm definitely looking over your wording again, Kevin. I think you have made some things very clear. Thanks! --Dawn
... and I do have an acknowledgement from Joe Celko in one of his SQL books).
No, we would not expect you to then maintain the C# code directly. MV# would be the language for the screens written in MV#. C# would be the language for a corresponding mobile app, perhaps
Dawn, there seems to be a contradiction. Kevin said this is another MV implementation. You say yes, yes, but then it does not require switching the DBMS out. I think you mean it still communicates with "A" MV DBMS, just not the same one you started on. Or if it does we're back to why would we want to do that when our BASIC code is already running within the MV virtual machine. What does .NET and now a networked connection to slow down data access buy us here?
--You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
I see it as a progression of MultiValue. It was a proprietary operating system, typically now a proprietary p-machine on common operating systems, with a natural progression to tools that now run with a common runtime environment. .NET and the Common Language Runtime fit the bill, turning MV into .NET managed code.
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
Yes, in either situation there is something proprietary. In one case, you are using .NET and in the other case a less common run machine.
If you opt to get MVON# with all of the source code for the tools, that changes the risk assessment too.
i see it more like the progression from Prime Information to UniData. It just made sense at some point in time to run in a common O/S and for some software companies and end-customers, it just makes sense now to run applications in the common language runtime.
Does that analogy resonate with you?
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
Hi Dawn,
I have so far stayed out of this conversation as a database vendor but there are some questions puzzling me that I haven’t seen anyone else ask.
Ok, so this product converts Basic to C# but which of the multivalue Basic variants is it? If it is only the core features common to all multivalue products, this seems to prevent use of the proprietary features of some products such as QM’s data collections and OO programming or the unique features found in U2 or D3. Even simple things like LOCATE have different semantics across products.
Also, if I use for example Oracle as the underlying data store how will indices work? Oracle itself would have no concept of indexing a multivalued field so indices must have to be managed separately in some way. But if that is done, any update to the Oracle data from outside this environment would not be reflected in the index. And having got an index, where is the query processor in this system? And dictionaries? And encryption? And…..
Martin Phillips
Ladybridge Systems Ltd
17b Coldstream Lane, Hardingstone, Northampton NN4 6DB, England
+44 (0)1604-709200
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+un...@googlegroups.com
Hi Dawn,
I have so far stayed out of this conversation as a database vendor but there are some questions puzzling me that I haven’t seen anyone else ask.
Ok, so this product converts Basic to C# but which of the multivalue Basic variants is it? If it is only the core features common to all multivalue products, this seems to prevent use of the proprietary features of some products such as QM’s data collections and OO programming or the unique features found in U2 or D3. Even simple things like LOCATE have different semantics across products.
Also, if I use for example Oracle as the underlying data store how will indices work? Oracle itself would have no concept of indexing a multivalued field so indices must have to be managed separately in some way. But if that is done, any update to the Oracle data from outside this environment would not be reflected in the index. And having got an index, where is the query processor in this system? And dictionaries? And encryption? And…..
0001 Program Test
0002 Url = "http://www.myurl.com/post.php"
0003 HtmlResult=""
0004 [USING]
0005 System.Net
0006 [/USING]
0007 [CSHARP]
0008 string myParameters = "param1=value1¶m2=value2¶m3=value3";
0009 using (WebClient wc = new WebClient())
0010 {
0011 wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
0012 HtmlResult = wc.UploadString((string)Url, myParameters);
0013 }
0014 [/CSHARP]
0015 NoOfDivs = Count(HtmlResult,"<div>")
0016 Crt @(10,10):"The html document contains ":NoOfDivs:" <div> elements"
0017 End
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
--
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
The users connect to a server just like all other MV systems. The application runs on the server and there is no need for the .Net runtime on the client. The MVON# suite comes with a Telnet client similar to Wintegrate and also a .net library equivalent to Uniobjects
Hope this helps
Thanks for the positive feedback. Working off my phone right now (10:45 pm) so am unable to provide some more details and examples. I will send you some more code details and the info on our sql integration in morning
Cheers
Hi KevinThe users connect to a server just like all other MV systems. The application runs on the server and there is no need for the .Net runtime on the client. The MVON# suite comes with a Telnet client similar to Wintegrate and also a .net library equivalent to Uniobjects
This discussion was transpiled over into the other thread which had nothing to do with MV or this new offering. I HIGHLY suggest you bring it back home.
The whole discussion about CLR, C#, .NET, open source, proprietary etc is SUCH a turn off to me as someone who uses this stuff every day.
There's way too much nit picking on terminology and nuances that mean absolutely nothing in the real world.
PLEASE STOP.
--
You received this message because you are subscribed to
the "Pick and MultiValue Databases" group.
To post, email to: mvd...@googlegroups.com
To unsubscribe, email to: mvdbms+unsubscribe@googlegroups.com
For more options, visit http://groups.google.com/group/mvdbms
Gene thanks again for the Petzold reference. I have just watched a presentation on XMAL at the Xamarin conference, he answered practically all my general questions in the first few seconds.