What to learn?

cuemasterfl

Supreme [H]ardness
Joined
Jul 5, 2001
Messages
4,181
I've been away from programming for a very long time. The last stuff I did was VB.Net and WinForms. I want to get back into it, but with C#. Are WinForms still viable? Or should I put my time into WPF? I'm talking Desktop programs, not web programming. I might even write stuff for the Windows Store. I just need a pointer in the right direction. TIA!
 
Well, MS hasn't abandoned WinForms nor VB.Net. If you were using a MVVM pattern before (even more so if you were strictly using XAML for UI), then the choice (WinForms, WPF, etc.) really only affects the presentation (UI) layer.

Under the hood, the only thing that's dramatically changed is the .NET Framework itself (at v4.7.2 currently) which has built up some nice tools depending on how long ago you touched it. Off the top of my head, the Task Parallel Library and Asynchronous models are considered major improvements to the framework. I really like the concurrent collections added recently. In 4.7, Dictionary initializers were added which I love. I could be here all day listing all the welcome things they keep adding to the framework itself.

Within the last ten years, MS has added official language support for F#, although I don't see it replacing C# anytime soon. C# is still by far the most popular, and just browsing StackOverflow is proof of that.

I still consider WPF a solid choice if your goal is to do (or learn) Windows-only apps. However, if you're entertaining designing an app from scratch to put on the Windows store, you need to look into Universal Windows Platform. It's the new kid on the block (introduced around the launch of Windows 10). It's very much in the same vein as WPF, but it uses a completely different set of tools and design philosophy. Basically, you'll be learning a new toolset for UI/UX design (although it is very XAML oriented). Compared to WPF, it opens up a few more things for UI design such as Javascript and HTML. You'll still be using the core .NET/C++ languages for your back-end.

Also worth mentioning is Xamarin, which is now a part of MS. Xamarin is a great way to leverage C# and .NET experience onto Android and iOS. This is something UWP fails to address currently, which is why I see it going nowhere.

Looking forward, .NET Core 3 is promising to deliver Windows development (.NET specifically) onto alternate (i.e. cross) platforms such as Linux, iOS, etc. MS has the compiler ready, but has yet to deliver the UI frameworks needed to build rich apps. If they pull it off, it will be interesting to see existing Windows apps running on Linux.

This all excludes the 3rd party frameworks, such as React and Electron, which if done right, look identical to any WPF/UWP app. Those are very Javascript and HTML oriented, so if that's your thing.

To sum things up:
  • C# is always your friend.
  • WinForms is the legacy way of designing and presenting a Windows application.
  • WPF has been from the start the replacement of both MFC and WinForms when it comes to modern Windows applications.
  • The growth of mobile platforms and popularity of material design has introduced challenges that MS has initially addressed via UWP apps. It remains to be seen if this will replace anything, as it seems to only be popular if you want to put something on the Windows Store. Adoption has been slow.
I'd say going from WPF to UWP is a small jump in learning. Going from WinForms to anything modern is a much larger jump, especially if you've avoided XAML at this point. Regardless of your target, C# will always be your friend and is always a good choice for Windows development.
 
Last edited:
Thank you for the replies, I really appreciate the time and effort. I've done some more research and I agree that C# is going to be my friend going forward, even if it means learning it pretty much from scratch.
 
@cuemasterfi I know I am late in responding but just read this thread.

Maybe you would like to have a look at Delphi---it is one of the best and complete solutions for Windows programming
 
I recommend learning crossplatform languages like Javascript.

By using Javascript you'll be able to develop front-end website, also you can develop web servers (back end) using Nodejs.

And you can develop android an IOS apps using react native.

Microsoft also has adopted react, so you can develop windows apps using javascript

As you can see, learn once and develop everywhere .

Good luck
 
Back
Top