hello everyone. i am at such a stage where i need to make a decision. i have gained enough basic programming skills withn c++ and now i want to start with something a little professional. i dont like web programming and i would love to do system programming or game programming. i need advice that which one of these technologies will be most fruitful (in terms of money :D )for me? should i stick to visual c++? or start with mfc? how about .net framework and c#? i aim to do freelancing stuff and am currently reading a mfc book (professional mfc with visual c++ 6 by WROX). i just wanna know if the mfc is still popular and i'll get projects to develop in mfc (freelancing). if mfc is not in business now then i'll start with c# and .net. so what do u guys say?

Recommended Answers

All 10 Replies

Good Day,
From my personal expirience, i think that you should go to the .NET side,and begin learning c#. C++ is another option, if you're pointing to work in the game industy, cause it has many features that will help you, plus , its a portable language, since you dont have to install any additional features ( talking about .NET). As it comes from MFC, i dont think that this language is considered to be useable these days.

From a little search that i've done for different opinions, i found these:
C++ vs C#

MFC vs .NET

Hope i helped :)

>>am currently reading a mfc book (professional mfc with visual c++ 6

Top reading that book! The compiler is old, non-c++ compliant, and the version of MFC that it teaches is also obsolete. If you want to learn MFC then get a book that teaches it from VC++ 2010 compiler.

If you want to do professional programming then you will want to learn a lot of languages, but learn C and C++ very well (become an expert in those languages). After that I'd learn C# and C++/CLI both are .NET languages. MFC would be my last choice today because C# and Windows Forms are modern and easier to learn.

i started c# with .net and will go for c++/CLi too

Top reading that book! The compiler is old, non-c++ compliant, and the version of MFC that it teaches is also obsolete. If you want to learn MFC then get a book that teaches it from VC++ 2010 compiler.

I respectfully disagree with that; I found the best MFC book I ever read really didn't care much about what compiler or dev environemnt you were using - it was the first edition (the second edition wasn't bad, but was not as good as the first) of Jeff Prosise's "Programming Windows 95 With MFC". Yes, it's now 15 years old. It says "Windows 95" in the title, but that's really just because Windows 95 was all big and happening then. It's agnostic to which version of Windows you're using, and doesn't actually care what your development system is (although if you've got the MFC dev libraries, you've got Visual Studio, so you might as well use it) so long as you can link to the libraries. The pictures in the book clearly use some version of Visual Studio, but every line in each program is typed in by hand with a clear explanation of what the code actually does, so there's no reliance on anything other than your ability to type. Hang on, let me find something I wrote earlier...

Moschops, earlier: "MFC has been around for a long time, though. You can buy a genuine copy of Visual Studio from yesteryear on eBay (anything after VS6 will probably do) for a pittance and get started with that. I bought a copy of VS2003 for just this purpose a couple of years ago; it cost less to buy than to have it posted to me. I wouldn't be surprised if it was quite easy to install it and then just use the MFC headers and link to the relevant libraries from whatever more recent IDE you like to use.

I learnt MFC from Jeff Prosise's excellent, excellent book "Programming Windows 95 with MFC". For getting a solid understanding of what you're doing it's second to none, as that edition doesn't bother with the wizards and starts you off making really minimal but fully functional MFC programmes, such that you know what every line of code there does. I had a disagreement with someone once who thought I was wasting my time and that rapid-prototyping with wizards and what have you was the way to go. I'm sure there's a place for that, but it's not how I like to learn and understand code. Also, my programming day job tends to have projects that run over the best part of a decade, so saving a fortnight to get a rapid-prototype pales in comparison to the cost of ten years of not really understanding how it works; other people have different needs, of course, and you have to go with what best suits your circumstances.

There is a second edition, "Programming Windows with MFC" which is a bit thicker and uses wizards, but to my mind it's actually not as good. Becuase MFC is quite mature, the basics in his first edition hold true now; development over the years since then has added lots that is useful, but the basics of putting it together as he explains are still valid. If you're just wanting to learn it, you probably won't even be interested in some of the really fancy bits for quite a while anyway.

Best bit; you can buy a second-hand copy of "Programming Windows 95 with MFC" online for literally pennies. I paid less than a pound for my copy. It cost more to post it to me. For the cost of a fiver's worth of postage, I had excellent book and a copy of VS2003 ready to go. Having had a quick look on eBay, I see a copy of VS2005 currently at two pounds. Bargain, and perfectly adequate for learning.

This is also really worth a read: http://www.microsoft.com/msj/0795/dilascia/dilascia.aspx


Even if you don't understand it yet, read what you can and come back to it every so often. It's really helpful for understanding the message pump, and if you understand the message pump you're half-way there.

Disclaimer: I am not Jeff Prosise, nor am I his agent :p "

Anyway, there you go. A different point of view. Since you can buy a copy of he first edition second hand online for pennies, might be worth a look to see if it's your thing.

>> i would love to do system programming or game programming.

System programming: Learn C and get some basics in assembly.

Game programming: Learn C++. The computer game industry is entirely dominated by C++ (and it is probably good to know C and assembly as well).

>> i dont like web programming

Then, why bother with .NET?

>> should i stick to visual c++?

Stick with C++, period. This is a language worth mastering, regardless of what you actually want to end up doing (as long as it is still programming-related).

>> or start with mfc?

MFC is old and being deprecated. You can still learn it and use it, and it will probably be backwardly supported for at least a decade still. But there is no need to learn it at this point. The thing with GUI tools (like MFC, VCL, Qt, WinForms, etc.) is that they are all pretty similar, and using one or the other is as hard as driving a different car from time-to-time (i.e. you just have to adjust the seat, get used to the clutch and stick, locate the buttons and the wiper thingy, and you're good to go). Personally, I worked a lot with VCL (Delphi) in the past, when I started to use Qt instead, the time it took me to get comfortable using Qt was about one hour. So, to learn to do GUI programming, it doesn't matter much which tool you learn, but I would recommend using a fairly recent one, and a good one, like Qt or WinForms.

>> how about .net framework and c#?

Well, my opinion is pretty known on that, I despise managed programming languages like Java, C# and C++/CLI (which are all pretty much the same, differences are trivial).

>> i aim to do freelancing stuff

Aren't we all.

>>am currently reading a mfc book (professional mfc with visual c++ 6 by WROX)

You are _currently_ reading a book on a deprecated GUI tool that suggests a sub-standard old IDE? That's not great.

>> i just wanna know if the mfc is still popular

No.

>> and i'll get projects to develop in mfc (freelancing).

There is a lot of code to maintain and build upon that is probably still using MFC.

>> if mfc is not in business now then i'll start with c# and .net. so what do u guys say?

I didn't realize that these were the only options. Also, you seem to be camping yourself pretty strongly into the area of GUI programming, which isn't necessarily that dominant as a programming job (usually what goes on under-the-hood is more important, like running servers, system programming, database programming, web-applications, security, game logic, graphics programming, numerical analysis, etc.). Few people would say they're an expert in "GUI programming" or something like that, most programmers are more or less skilled at making GUIs but their real expertise lies elsewhere (you hear people say: "I'm a database expert", "I'm a web-service expert", "I'm a parallel processing expert", etc.). GUI tools are generally designed to make it easy for programmers to make the link between the user and the underlying processing, so, a GUI tool that would require a lot of knowledge and expertise to use is a very bad GUI tool, the programmer should worry mostly about the underlying processing, not waste time making the GUI (if one is needed).

Anyways, that's my opinion, I'm not the best to talk about job perspectives in programming since it is not my field at all, programming is just a tool for me.

yea im gonna do the databases and stuff. i was just concerned about the programming language. anyways thanks for ur detailed answer :D it really was nice.

System programming: Learn C and get some basics in assembly.

c is still dominate the field of system programming
so many programmers would reject c++ when refer to system programming.
"slow", "code bloat", "waste of memory", "over complicated" and so on

Many of those system programmers believe that "c++ must be less efficient than c",
but I don't know the reason.

ps : I discover one thing, many of those system programmers don't know c++ very well
even worse than a newbie like me.Many of them believe that c++ must bind with oop
and c++ would bring burdens to the hardware because of oop.When refer to template,
they believe that template is slow and would cause code bloat(even you handle it
properly).

Hi Everyone,

I was just browsing the net, to get some related to VC++(MFC). Upon reading ur threads, am bit confused about the relationship between VC++ and MFC. Is MFC a separate domain, similar to C and C++?. Also, Please suggest a book for VC++(MFC)

kavishan, if you want to learn MFC then grab two books: programming with windows 95 by Jeff Prosise (yes very old but this is the basics) and for full understanding get MFC internals by Shepherd Wingo

I would suggest a small project in each.
You will learn a tremendous amount examining the differences.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.