Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am 17 years old and have been programming in c# for around a year. I have some basic understanding of c but the whole win32 api is confusing to me at the moment. At this point in my life, do the experienced programmers think i would be better off learning win32 or keep on learning c# and xaml and mvc (newer technology)? I am about to buy a book on amazon and am wondering if I should buy a C#/wpf book or Charles Petzold's "Programming Windows" from 1995.

*edit: My goals in life are to eventually program professionally using Microsoft technology.

share|improve this question
2  
WPF is more interesting (to my opinion) – Gilad Naaman Oct 11 '11 at 8:39
oh. Is there any way I could pose the question in a more constructive manner? – Mein Luck Oct 11 '11 at 8:53
This answer of mine from a few years back still holds (imho) stackoverflow.com/questions/5507/… – OJ. Oct 11 '11 at 9:34
1  
Win32 is still useful knowledge. WPF is useful to know too. Learning either would benefit you. – David Heffernan Oct 11 '11 at 12:05

migrated from stackoverflow.com Nov 1 '11 at 3:44

2 Answers

There is always an advantage to knowing how things work under the covers. If you obtain that knowledge by building from lower levels to higher ones, the process is almost painless. I can't speak from experience about doing it the other way around, but it certainly wouldn't be a wasted effort.

To realize why learning the lower level underpinnings is a good idea, you should read this article by Joel Spolsky: The Law of Leaky Abstractions.

share|improve this answer

As a (future) professional programmer, you should accumulate as much background knowledge as you can. The more you know, the broader your culture, the more helpful it will be to you in the long term.

For instance, I'd suggest that even if today, you barely never have to program in assembly language, you should still have a basic understanding of how a processor works. When you are stuck with an odd bug, getting very low level can save your day. So also learn to use and understand tools, such as a kernel debugger.

For me, learning Win32 follows the same logic: when programming .NET, the API is just buried very deep under the framework, but it is still there.

Learn to know the beast ;-) and also read a book like Raymond Chen's Old New Thing, for instance, to get some better understanding of why things are the way they are; and read a book such as Mark Russinovich's Windows Internals to get a grasp on the Windows building blocks.

Petzold's book is old, but it still provides some very useful insight into the building blocks of Windows.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.