In my OOP class, we’ve had brief introductions on both MFC and C#. I have to admit that C# was extremely easy to pick up, especially after having practiced writing in MFC.
However, I’m told that in industry, MFC is still preferred since a lot of proprietary software was written in MFC and it would cost a lot and take time to rewrite in C#.
Long time Microsoft developer here. I’ve done a lot of MFC, and a little C#. For years I’ve been hearing “Microsoft is getting rid of MFC” but guess what - it’s still around. Search the jobs on Dice.com and you’ll see lots of companies looking for MFC experience - because there’s a lot of “legacy” applications written in MFC. Who knows what will happen with C# - even as a fan of Microsoft, it looks to me like an attempt to destabilize the Java camp by offering an alternative.
Unfortunately, I’d say your best strategy is to hedge your bets - learn enough MFC that you can be useful with it, learn enough .NET/C# that you can be productive without too much ramp-up time.
Let’s be a bit more precise here. If this is an Object Oriented programming course, than your choices are C++ and C#. MFC is a hodgepodge of APIs specifically for use on Windows platforms, while C++ is a programming language that can be compiled and run on any computing platform that provides a C++ compiler.
This is actually a significant distinction because APIs, in general, seem to have a pretty short lifetime, and they change and evolve very quickly. It’s useful to go through the pain of learning the APIs in one computer system because then you can generalize to others as your career requires.
C++ is a standardized language (albeit one with a pretty ghastly syntax). C# is, as far as I know, a Microsoft proprietary language. Right now, C++ would be the more useful language to know. The value of C# has yet to be determined – many a company has introduced their own programming languages with varying degrees of success .
Bottom line – learn the concepts. If you’re a computer professional, you’re going to end up learning a dozen or so programming languages in the course of your career.
Excellent advice. As a professional who’s been in the industry for quite a while, and seen many “technolgies du jour” come and go, I couldn’t agree more with this statement.
Don’t try and become an MFC whiz. MFC is wonky and funny looking when compared to whats around today. Its the way it is because it was designed back in the early 90s. Still works though.
Learn C. Know C. If you’ve got that, you can jump to all the other procedural languages easy.
Learn C++. Understand what generic programming and object oriented programming are. Use them, realize whats good about them.
Then learn VB and get the feeling of bring trapped in a funny little box with bright lights flashing in your eyes. Learn how to make components in C++ so you can stay the hell away from VB.
Then learn Java and go “oh, this is sorta like C++, but they took away all the fun bits”.
Then learn C# and go “Oh, this is like Java but they tried to put the fun bits back as well as tie me to Microsoft.”
And then go to your boss or customer and have him tell you what you’re programming in, which will probably be none of those. Whatever it is though, you can hack it.
C will never die: it’s too popular. And with good reason–it’s a really nice language.
However, people who know C/C++ will become less common. The wave of the future will be programs that translate higher-level languages into C/C++. But somebody’s still gotta write those…