Johan,
I am curios, is the code below standard X#? If so, how do you anticipate the VFP code version to work, a converter or modifications so that it can use standard VFP? And will there be a way to easily update types (i.e. a search for not typed, week typed, etc.) so that we can then choose to specify a type?
Also, VFP uses a lot of classes and forms, mostly built on a UI builder. Will X# be able to convert the VFP classes/forms to code that can then be rendered using the VS form builder?
I did notice that you defined dStartas, but didn't use it - not that it would have any effect on the performance.
This is not meant to be judgmental, I think what you are doing is great, I am just curious.
Thanks,
Fletcher
Fletcher Johnson FletcherSJohnson@Yahoo.com LinkedIn.com/in/FletcherJohnson twitter.com/fletcherJ strava.com/athletes/fletcherjohnson 408-946-0960 - work 408-781-2345 - cell
-----Original Message----- From: ProFox [mailto:profox-bounces@leafe.com] On Behalf Of Johan Nel Sent: Sunday, April 14, 2019 10:29 PM To: profox@leafe.com Subject: X#: To type or not to type
Hi all VFP'ers,
As you probably know by now X# plans to have VFP syntax support by October 2019.
A question I am asked a lot by VFP coders is: Do I have to strict type my code in X#? Well, X# allows both lazy declaration and strict declaration.
Here is a small benchmark to compare the results:
function Start( ) as void
local nWeak local nStrongas int local dStartas DateTime
System.Console.WriteLine("Starting, non typed")&& The .NET way of "? <Expressions>" dStart :=DateTime.Now for nWeak := 1to 10000000 nop&& A X# way of saying No operating procedures, will not produce a compiler warning message next System.Console.WriteLine("Terminated, non typed, duration " + (DateTime.Now - dStart ):ToString() ) System.Console.WriteLine("Starting, typed") dStart :=DateTime.Now for nStrong := 1to 10000000 nop next System.Console.WriteLine("Terminated, typed, duration " + (DateTime.Now - dStart ):ToString() ) return
&& Results: && Starting, non typed && Terminated, non typed, duration 00:00:00.6469739
&& Starting, typed && Terminated, typed, duration 00:00:00.0210397
&& A speed improvement of 30.75 times
Hope this is of interest to some.
Johan Nel George, South Africa FOX member: Friends of XSharp X# Website: https://xsharp.info https://xsharp.info/ X# Runtime: https://github.com/X-Sharp/XSharpPublic X# VFP forum: https://www.xsharp.info/forum/public-vfp
[excessive quoting removed by server]
Good day Fletcher,
On 2019/04/15 23:56, Fletcher Johnson wrote:
I am curios, is the code below standard X#? If so, how do you anticipate the VFP code version to work, a converter or modifications so that it can use standard VFP? And will there be a way to easily update types (i.e. a search for not typed, week typed, etc.) so that we can then choose to specify a type?
Yes the code is standard X#. It basically comes in layers, X# core which is basically c# in XBase syntax, then you can add references to open up functions/procedures, then lazy var declaration, DBF commands etc. The VS IDE also have an option to allow you to set your language syntax e.g. VO/Vulcan/XBase++/Harbour, VFP etc. There is a compiler switch to force strict type variable declaration, hence all your lazy declarations will be thrown as errors when this is set.
Also, VFP uses a lot of classes and forms, mostly built on a UI builder. Will X# be able to convert the VFP classes/forms to code that can then be rendered using the VS form builder?
I am part of a community project with VFP developers to take all the .??x repos and covert them to .NET UI designers. We currently already able to take the .scx and have it open up inside the VS Form designer with standard X# code behind. The DevTeam's task is to focus on language features that is not part of other XBase languages, e.g. TEXT /END TEXT, SCAN/END SCAN etc.
I did notice that you defined dStartas, but didn't use it - not that it would have any effect on the performance.
Sorry, after I posted I only realized the email got messed up a bit, the dStartas should actually read dStart AS .... The same post was also done on Foxite, you can see the correct code in this message: https://www.foxite.com/archives/x-to-type-or-not-to-type-0000465183.htm
This is not meant to be judgmental, I think what you are doing is great, I am just curious.
I do not think of your message as judgemental. I see a person investigating a future for his existing codebase with minimal changes. That is the promise and goal of X#.
Hope that answers (most) of your questions. Feel free to ask if there are more.
XBase greetings from the X# community,
Johan