Go Back   AnandTech Forums > Software > Programming

Forums
· Hardware and Technology
· CPUs and Overclocking
· Motherboards
· Video Cards and Graphics
· Memory and Storage
· Power Supplies
· Cases & Cooling
· SFF, Notebooks, Pre-Built/Barebones PCs
· Networking
· Peripherals
· General Hardware
· Highly Technical
· Computer Help
· Home Theater PCs
· Consumer Electronics
· Digital and Video Cameras
· Mobile Devices & Gadgets
· Audio/Video & Home Theater
· Software
· Software for Windows
· All Things Apple
· *nix Software
· Operating Systems
· Programming
· PC Gaming
· Console Gaming
· Distributed Computing
· Security
· Social
· Off Topic
· Politics and News
· Discussion Club
· Love and Relationships
· The Garage
· Health and Fitness
· Merchandise and Shopping
· For Sale/Trade
· Hot Deals
· Free Stuff
· Contests and Sweepstakes
· Black Friday 2013
· Forum Issues
· Technical Forum Issues
· Personal Forum Issues
· Suggestion Box
· Moderator Resources
· Moderator Discussions
   

Reply
 
Thread Tools
Old 11-25-2012, 05:14 PM   #1
Carson Dyle
Senior Member
 
Carson Dyle's Avatar
 
Join Date: Jul 2012
Location: Colorado
Posts: 965
Default Getting started with Windows programming

I'm a professional programmer, going back 20 years or so. I have experience with C, some C++, and a handful of scripting languages like Perl. But I've never developed GUI apps for Windows. Mostly what I've done for the past 13 years is web programming. And, frankly, I'm sick of it.

What tools are considered standard for developing commercial Windows desktop applications? I've seen and used plenty of apps on Windows with oddball user interfaces, strange widgets, very unconventional ways of doing things, and I'm not interested in going there, even to start out. And then... what is the least expensive route to acquiring the tools? I would guess some kind of Microsoft Technet subscription or other.
Carson Dyle is online now   Reply With Quote
Old 11-25-2012, 08:34 PM   #2
Merad
Golden Member
 
Join Date: May 2010
Location: NC USA
Posts: 1,829
Default

The Visual Studio Express versions are free downloads. C# is probably the easiest way to go about GUIs at present. Should be easy to pick up if you aren't too rusty on the C/C++.
Merad is offline   Reply With Quote
Old 11-25-2012, 08:46 PM   #3
Markbnj
Moderator
Programming
 
Markbnj's Avatar
 
Join Date: Sep 2005
Posts: 10,564
Default

What Merad said. Once you have the environment look into Windows Forms (the older technology), or Windows Presentation Foundation (the newer whiz-bang technology). You can also look into Silverlight, which can create applications that run in either a browser plugin or on the desktop.
__________________
Everytime I try to tell you, the words just come out wrong

**
Some meaningless scribbling of no account

The 4th Realm

Arts and Letters Daily - Get some culture
Markbnj is offline   Reply With Quote
Old 11-26-2012, 08:34 AM   #4
EagleKeeper
Discussion Club Moderator
Elite Member
 
EagleKeeper's Avatar
 
Join Date: Oct 2000
Location: Bumps west of Denver
Posts: 42,600
Default

See, Mark is such a youngster that he considers Windows Forms old.

Completely forgetting about MFC and the underlying Win32 API for graphics. (1990's)
__________________
F15 Air Superiority Fighter - Never has one been lost in aerial combat (104 kills)
EagleKeeper is offline   Reply With Quote
Old 11-26-2012, 09:00 AM   #5
Markbnj
Moderator
Programming
 
Markbnj's Avatar
 
Join Date: Sep 2005
Posts: 10,564
Default

Quote:
Originally Posted by EagleKeeper View Post
See, Mark is such a youngster that he considers Windows Forms old.

Completely forgetting about MFC and the underlying Win32 API for graphics. (1990's)
Hah. Yeah, MFC I have actually removed from my memory via intensive therapy. The Win32 API is like the sewer system in NYC... it's there, but you don't think about it.
__________________
Everytime I try to tell you, the words just come out wrong

**
Some meaningless scribbling of no account

The 4th Realm

Arts and Letters Daily - Get some culture
Markbnj is offline   Reply With Quote
Old 11-27-2012, 05:40 PM   #6
Carson Dyle
Senior Member
 
Carson Dyle's Avatar
 
Join Date: Jul 2012
Location: Colorado
Posts: 965
Default

Most/all of the above is suggesting using .NET, correct? I admit that I haven't been paying attention much to Windows development over the years. Is .NET more of a 'quick and dirty' development environment, or are real life commercial software products utilizing it?
Carson Dyle is online now   Reply With Quote
Old 11-27-2012, 06:08 PM   #7
DaveSimmons
Elite Member
 
Join Date: Aug 2001
Location: Bellevue, WA
Posts: 36,854
Default

Quote:
Originally Posted by Carson Dyle View Post
Most/all of the above is suggesting using .NET, correct? I admit that I haven't been paying attention much to Windows development over the years. Is .NET more of a 'quick and dirty' development environment, or are real life commercial software products utilizing it?
Some high-performance programs like games still use "unmanaged" C/C++ without the .NET runtime, but a lot of commercial programing and most corporate programming is done with .NET these days.

.NET is now more than a decade old, so MS has had the 3 revisions needed to get it right (Actually C# is version 5 now, and .NET is v. 4.5)
DaveSimmons is online now   Reply With Quote
Old 11-30-2012, 08:35 PM   #8
Sureshot324
Diamond Member
 
Join Date: Feb 2003
Location: Ottawa, Canada
Posts: 3,359
Default

Quote:
Originally Posted by Carson Dyle View Post
Most/all of the above is suggesting using .NET, correct? I admit that I haven't been paying attention much to Windows development over the years. Is .NET more of a 'quick and dirty' development environment, or are real life commercial software products utilizing it?
Do you want to get a job developing commercial windows GUI apps, are are you looking to develop your own and possibly selling them?

High end commercial software that is also sold to consumers like photoshop, 3D modeling/animation, and audio production apps are not going to be using .NET anytime soon because customers won't be happy paying thousands for software that takes the easy but less efficient way and uses .NET, even if it's just for the UI. I think most of that software still uses straight Win32 API, or a library that sits on top of it like Qt or (shudder) MFC.

If you want a job developing Windows GUI apps, the vast majority are going to be C# .NET corporate apps, and this is not going to be much different from developing corporate web apps.

If I were going to get into developing desktop apps myself, I would use a library like Qt or GTK. This is more efficient than .NET and makes it easy to port your app to Linux/MacOS.
__________________
"My doctor says that I have a malformed public-duty gland and a natural deficiency in moral fibre and that I am therefore excused from saving universe."

Steam: Sureshot324
BF3: Sarev0k

Last edited by Sureshot324; 11-30-2012 at 08:50 PM.
Sureshot324 is offline   Reply With Quote
Old 12-01-2012, 12:41 PM   #9
Markbnj
Moderator
Programming
 
Markbnj's Avatar
 
Join Date: Sep 2005
Posts: 10,564
Default

Quote:
Originally Posted by Sureshot324 View Post
High end commercial software that is also sold to consumers like photoshop, 3D modeling/animation, and audio production apps are not going to be using .NET anytime soon because customers won't be happy paying thousands for software that takes the easy but less efficient way and uses .NET, even if it's just for the UI. I think most of that software still uses straight Win32 API, or a library that sits on top of it like Qt or (shudder) MFC.
I agree with your conclusion, but not with your description of the motivation. For the most part end users neither know, nor care, what framework a program is written on. Most of these kinds of apps have been around a long time and are built on huge legacy code bases. If someone were writing a new CAD package in Windows I wouldn't be surprised if they built the front-end on .NET. There would not be any "efficiency" downside to doing so, and it would be a lot faster to build.

The idea of using a cross-platform lib like Qt is a bigger decision. If you want to, or might want to, sell on those other platforms then it might make sense, but everyone who has done that knows that what you end up with is not the best of both worlds, and the result can be disappointing to users on all the platforms.
__________________
Everytime I try to tell you, the words just come out wrong

**
Some meaningless scribbling of no account

The 4th Realm

Arts and Letters Daily - Get some culture
Markbnj is offline   Reply With Quote
Old 12-01-2012, 08:13 PM   #10
Sureshot324
Diamond Member
 
Join Date: Feb 2003
Location: Ottawa, Canada
Posts: 3,359
Default

Quote:
Originally Posted by Markbnj View Post
I agree with your conclusion, but not with your description of the motivation. For the most part end users neither know, nor care, what framework a program is written on. Most of these kinds of apps have been around a long time and are built on huge legacy code bases. If someone were writing a new CAD package in Windows I wouldn't be surprised if they built the front-end on .NET. There would not be any "efficiency" downside to doing so, and it would be a lot faster to build.

The idea of using a cross-platform lib like Qt is a bigger decision. If you want to, or might want to, sell on those other platforms then it might make sense, but everyone who has done that knows that what you end up with is not the best of both worlds, and the result can be disappointing to users on all the platforms.
The .NET runtime is a virtual machine with a JIT (just in time compiler) similar to Java. .Net apps are compiled to byte code and when the application runs certain 'hotspots are compiled to native machine code and the rest of the byte code is translated as it runs. Like Java, this means higher startup time to compile the hotspots, and slower execution of the non hotspots.

There are are new windows apps still being made that use native GUI code. The windows version of Google chrome uses WTL. WTL is basically Microsoft's successor to MFC and is probably a good choice for the OP.
__________________
"My doctor says that I have a malformed public-duty gland and a natural deficiency in moral fibre and that I am therefore excused from saving universe."

Steam: Sureshot324
BF3: Sarev0k
Sureshot324 is offline   Reply With Quote
Old 12-01-2012, 09:37 PM   #11
Markbnj
Moderator
Programming
 
Markbnj's Avatar
 
Join Date: Sep 2005
Posts: 10,564
Default

Quote:
Originally Posted by Sureshot324 View Post
The .NET runtime is a virtual machine with a JIT (just in time compiler) similar to Java. .Net apps are compiled to byte code and when the application runs certain 'hotspots are compiled to native machine code and the rest of the byte code is translated as it runs. Like Java, this means higher startup time to compile the hotspots, and slower execution of the non hotspots.
The vast majority of GUI code sits in a message loop doing essentially nothing, waiting on the slowest component in the system, i.e. the user. The only aspect of performance that matters is the perceived "snappiness" of windows and controls, and .NET has no issues there, unless the code is poorly written.

Having written GUI applications in every flavor of the windows API from Win16 onward I would choose .NET in a heartbeat if I had to do a new one, and in fact the last one I did was a digital media manager/player in .NET 3.5/WPF. That app was written for a major media company, and has something like 3m users at this point. As far as I'm concerned the only downside to it was the necessity of the additional download/install of the framework, which has largely receded as an issue since vista.
__________________
Everytime I try to tell you, the words just come out wrong

**
Some meaningless scribbling of no account

The 4th Realm

Arts and Letters Daily - Get some culture
Markbnj is offline   Reply With Quote
Old 12-02-2012, 09:38 AM   #12
brandonb
Diamond Member
 
Join Date: Oct 2006
Posts: 3,123
Default

I'm really digging .Net with WPF while using MVVM patterns. But as a side note, I really hate the XAML. I do everything in code.

http://www.wpftutorial.net/Home.html
__________________
Computer Setup
Intel Ivy Bridge 3550, AsRock Z75 Pro3, 8 gig GSkill 1600 8-8-8-24 timing, Crucial m4 64gig, 500meg WD RE4, ATI 7970 3GB, LG IPS236V x 3, Windows 8, Antec Sonata Solo 2, Antec 550watt PS.

Last edited by brandonb; 12-02-2012 at 09:41 AM.
brandonb is offline   Reply With Quote
Old 12-02-2012, 02:36 PM   #13
Leros
Lifer
 
Leros's Avatar
 
Join Date: Jul 2004
Location: Austin, TX
Posts: 21,165
Default

Quote:
Originally Posted by brandonb View Post
I'm really digging .Net with WPF while using MVVM patterns. But as a side note, I really hate the XAML. I do everything in code.

http://www.wpftutorial.net/Home.html
Why do you dislike XAML? Laying out UI with XML makes much more sense to me than doing it in code. I wish there was something like XAML for Java.
Leros is online now   Reply With Quote
Old 12-02-2012, 04:22 PM   #14
Obsoleet
Platinum Member
 
Obsoleet's Avatar
 
Join Date: Oct 2007
Location: CHICAGO (South Loop)
Posts: 2,149
Default

"Getting started with Windows programming"

Simply put: don't.

Unless you're in the corporate world, already writing .Net apps, I don't know why you'd use .Net in this day and age.

The posterboy of .Net (C#) is taking steep dives in usage and popularity http://www.tiobe.com/index.php/conte...pci/index.html

MS is backing away from .Net http://arstechnica.com/information-t...ream-reborn/2/

I think .Net's partial abandon is also evidenced with the absence of a new XNA release (the latest is 2 years old discounting the 'refresh').

All signs outside of the corporate world are pointing more towards higher level languages to increase programmer productivity (Python and Ruby) or more low level (C / C++). Personally I'd pick something high level if you want a crossplatform GUI app. If you want to prepare yourself for a career in corporate enterprise, by all means... hop into a $500 copy of Visual Studio.
Not saying you can't do anything in .Net... just don't know why you'd pay for Visual Studio and wait for them to drop more technology..

I've seen things dropped from Silverlight, VB6, Sourcesafe, whatever you build your company on and become entrenched in, they'll drop it when no longer in their interests.
Rely on the open source world. If nothing else you can maintain your own product after MS decides you don't need it any longer by hiring a C/C++/Python programmer (or do it yourself).

All that said, to dissuade you from a platform being backed away from (.Net) from a sole-source providers (MS).. C# is a great language itself. Has nothing to do with the rest of my argument though.
Since GUI apps are becoming more and more legacy apps in the age of webapps, Python should be fine. If you need more performance (Photoshop-level, something hardcore), forget .Net/C#, go straight to C++ and be done with it.
__________________
Intel C2Q 9450@3ghz | Intel X25-M G2 160GB | MSI Radeon 5870 (on 12.10)
Ubuntu 12.04 + Win7Pro | 8GB Mushkin XP2-6400 (4-4-4-12) | Lian Li PC-A05NB
Asus P5Q-E (P45 / ICH10R) | Corsair HX650 | Asus U3S6 | Asus VS278Q-P + 2x Dell P2210s
+ Samsung PN50B650 | External Seagate GoFlex 1.5TB USB 3.0 + External LiteOn IHES208 BR
Obsoleet is offline   Reply With Quote
Old 12-02-2012, 04:31 PM   #15
Carson Dyle
Senior Member
 
Carson Dyle's Avatar
 
Join Date: Jul 2012
Location: Colorado
Posts: 965
Default

How many corporations are developing Windows based apps these days? I would think the vast majority of in-house apps today are browser based. Along with online browser apps, that's essentially what I've been doing for the past 15 years, and it's gotten old.

I'm a little more interested in developing shrink-wrapped applications. Perhaps some shareware, perhaps get involved with some open source projects.
Carson Dyle is online now   Reply With Quote
Old 12-02-2012, 04:33 PM   #16
Leros
Lifer
 
Leros's Avatar
 
Join Date: Jul 2004
Location: Austin, TX
Posts: 21,165
Default

Quote:
Originally Posted by Carson Dyle View Post
How many corporations are developing Windows based apps these days? I would think the vast majority of in-house apps today are browser based. Along with online browser apps, that's essentially what I've been doing for the past 15 years, and it's gotten old.

I'm a little more interested in developing shrink-wrapped applications. Perhaps some shareware, perhaps get involved with some open source projects.
There are ton's of companies that write purely Windows based applications. The corporate/enterprise world is still very Window's focused. But yes... things are moving towards are browser-based apps.
Leros is online now   Reply With Quote
Old 12-02-2012, 08:46 PM   #17
Markbnj
Moderator
Programming
 
Markbnj's Avatar
 
Join Date: Sep 2005
Posts: 10,564
Default

Quote:
Originally Posted by Leros View Post
Why do you dislike XAML? Laying out UI with XML makes much more sense to me than doing it in code. I wish there was something like XAML for Java.
Agreed, big time. It's a nice analog with the way ASP.NET decomposes web pages. It's also a hell of a lot faster to develop slick custom interfaces in XAML.
__________________
Everytime I try to tell you, the words just come out wrong

**
Some meaningless scribbling of no account

The 4th Realm

Arts and Letters Daily - Get some culture
Markbnj is offline   Reply With Quote
Old 12-02-2012, 08:49 PM   #18
Markbnj
Moderator
Programming
 
Markbnj's Avatar
 
Join Date: Sep 2005
Posts: 10,564
Default

Quote:
Originally Posted by Obsoleet View Post
The posterboy of .Net (C#) is taking steep dives in usage and popularity
Interesting that the top five languages on that chart are all C or derivatives of C.

If C# is dropping in popularity (I don't know how they come up with those numbers) then it is likely due to the shift toward mobile platforms and Microsoft's lack of a viable solution in that realm.
__________________
Everytime I try to tell you, the words just come out wrong

**
Some meaningless scribbling of no account

The 4th Realm

Arts and Letters Daily - Get some culture
Markbnj is offline   Reply With Quote
Old 12-02-2012, 09:42 PM   #19
Obsoleet
Platinum Member
 
Obsoleet's Avatar
 
Join Date: Oct 2007
Location: CHICAGO (South Loop)
Posts: 2,149
Default

Quote:
Originally Posted by Carson Dyle View Post
How many corporations are developing Windows based apps these days? I would think the vast majority of in-house apps today are browser based. Along with online browser apps, that's essentially what I've been doing for the past 15 years, and it's gotten old.

I'm a little more interested in developing shrink-wrapped applications. Perhaps some shareware, perhaps get involved with some open source projects.
A lot as Leros said. I've done both in different roles, webapp and local. It really depends on the need. I'd probably make something local if it wasn't used by a ton of people or needed to be reached by a lot of employees.
We have more advanced local apps that do some stuff that webapps aren't suitable for (software upgrades for example). Basic text input, stuff that would've been done with paper files years ago are webapps, at least the ones I've created.

I wouldn't start on .Net stuff today though, local or webapps. Unless its for financial incentive for a job, there's no shortage of MS stack jobs and there's nothing wrong with them or that fact. There's also no shortage of PHP jobs and nothing wrong with that either.
I use Mono (not much, but it's free). Why not install MonoDevelop and get your feet wet. Honestly, I prefer it for a lighter weight install than VS. Seems everytime I install VS there's no getting rid of it and it's heavy as can be. It's just invasive, its screwed up Windows installs of mine before. While its the best IDE out there, I just don't like it unless its on a company provided machine.

Quote:
Originally Posted by Obsoleet View Post
Since GUI apps are becoming more and more legacy apps in the age of webapps, Python should be fine. If you need more performance (Photoshop-level, something hardcore), forget .Net/C#, go straight to C++ and be done with it.
I'd like to expand on this comment. Instead of getting into C++ for a GUI app, I'd prefer to use Python + Cython, you'll still get the performance increase. Not sure on the limitations to Cython vs working on C++ but it's where I'd look. That's just me, it's always easier to use what you already know.

Quote:
Originally Posted by Markbnj View Post
Interesting that the top five languages on that chart are all C or derivatives of C.

If C# is dropping in popularity (I don't know how they come up with those numbers) then it is likely due to the shift toward mobile platforms and Microsoft's lack of a viable solution in that realm.
I'd guess it's because the mobile realm has no dominant player other than Objective-C, and since they won't use that, they adopted HTML5+JS. Brings in a lot more guys than just the C# crowd. No one's corporate backed language besides Obj-C is really taking off. In fact, unless the OP wants a corporate-drone job hacking away on C# GUI apps all day, ObjectiveC would probably be the better investment of time and effort.

Getting into ObjC, C# on Mono or Python costs nothing and 1st class apps are written with all 3. Paying to develop seems like a huge favor to company X both upfront, then with the dependence / lock-in later on, not to mention the validation you give their pay-to-develop platform.
__________________
Intel C2Q 9450@3ghz | Intel X25-M G2 160GB | MSI Radeon 5870 (on 12.10)
Ubuntu 12.04 + Win7Pro | 8GB Mushkin XP2-6400 (4-4-4-12) | Lian Li PC-A05NB
Asus P5Q-E (P45 / ICH10R) | Corsair HX650 | Asus U3S6 | Asus VS278Q-P + 2x Dell P2210s
+ Samsung PN50B650 | External Seagate GoFlex 1.5TB USB 3.0 + External LiteOn IHES208 BR
Obsoleet is offline   Reply With Quote
Old 12-02-2012, 09:44 PM   #20
Ken g6
Elite Member
 
Ken g6's Avatar
 
Join Date: Dec 1999
Location: Colorado
Posts: 8,339
Default

Apparently the ratings are calculated by search engine hits on "<language> programming". http://www.tiobe.com/index.php/conte...definition.htm I imagine C is at the top because so many other languages include it in their name.
__________________
Look for really BIG primes with TeAm AnandTech PrimeGrid!
Next race: April 20-23

vBulletin looking run down? Get your script fix here.
Ken g6 is offline   Reply With Quote
Old 12-02-2012, 09:50 PM   #21
Ken g6
Elite Member
 
Ken g6's Avatar
 
Join Date: Dec 1999
Location: Colorado
Posts: 8,339
Default

Quote:
Originally Posted by Obsoleet View Post
Getting into ObjC...costs nothing
Orly? Don't you need Apple stuff to do ObjC?
__________________
Look for really BIG primes with TeAm AnandTech PrimeGrid!
Next race: April 20-23

vBulletin looking run down? Get your script fix here.
Ken g6 is offline   Reply With Quote
Old 12-02-2012, 10:29 PM   #22
douglasb
Diamond Member
 
Join Date: Apr 2005
Posts: 3,156
Default

Quote:
Originally Posted by Markbnj View Post
Interesting that the top five languages on that chart are all C or derivatives of C.

If C# is dropping in popularity (I don't know how they come up with those numbers) then it is likely due to the shift toward mobile platforms and Microsoft's lack of a viable solution in that realm.
I think that some of you have a misunderstanding of what these statistics are. These are the most searched-for languages across several search engines. It is not necessarily a list of most-used languages. For example, C is at the top, followed by Java. Guess which 2 languages are used most by universities for teaching students Computer Science. Java and C. It stands to reason, then, that there are lots of Java and C "rookies" out there googling up a storm so they can complete their assignments. It doesn't mean that C is the most-used language in the real world, because clearly it is not.

This statistic is basically meaningless in terms of real-world usage.

Last edited by douglasb; 12-02-2012 at 10:31 PM.
douglasb is offline   Reply With Quote
Old 12-03-2012, 08:24 AM   #23
Markbnj
Moderator
Programming
 
Markbnj's Avatar
 
Join Date: Sep 2005
Posts: 10,564
Default

Quote:
Originally Posted by Ken g6 View Post
Orly? Don't you need Apple stuff to do ObjC?
Good point. You need at least a Macbook and a device, so a couple of grand.
__________________
Everytime I try to tell you, the words just come out wrong

**
Some meaningless scribbling of no account

The 4th Realm

Arts and Letters Daily - Get some culture
Markbnj is offline   Reply With Quote
Old 12-03-2012, 08:41 AM   #24
Nothinman
Elite Member
 
Nothinman's Avatar
 
Join Date: Sep 2001
Posts: 30,672
Default

Quote:
Originally Posted by Markbnj View Post
Good point. You need at least a Macbook and a device, so a couple of grand.
You can get into Objective-C with GCC for free and whatever OS and hardware you want. You only need Apple equipment if you want to use it to make iOS apps.
__________________
http://www.debian.org
Nothinman is offline   Reply With Quote
Old 12-03-2012, 10:45 AM   #25
Markbnj
Moderator
Programming
 
Markbnj's Avatar
 
Join Date: Sep 2005
Posts: 10,564
Default

Quote:
Originally Posted by Nothinman View Post
You can get into Objective-C with GCC for free and whatever OS and hardware you want. You only need Apple equipment if you want to use it to make iOS apps.
True, but I can't imagine any other reason for wanting to learn it.
__________________
Everytime I try to tell you, the words just come out wrong

**
Some meaningless scribbling of no account

The 4th Realm

Arts and Letters Daily - Get some culture
Markbnj is offline   Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 06:39 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.