Just so I have an estimate, how many years has taken you guys to get a good understanding of C++?
If you work and can only devote a couple hours a day to learn it (like me), what's a realistic time frame to start feeling you really know the language?
It depends on how fast you learn and the quality of the resources you use. I've heard of people who have devoted all their free time to it and written their first games within a year.
I can only use free software, as I cannot afford professional expensive tools.
I'm reading Stroustrup's books on C++, but sometimes it's hard to understand.
I use CodeBlocks, gcc, gdb and the GNU tools under Windows.
I've read most of the tutorial here and it's great.
I think that it would be fantastic if some expert could walk us beginners through the creation of a project, but that's probably too much to ask!
get the Visual Studio Express version. It's a very slim down version, but all the important things are included - like the most awesome debuggers around. And it's free.
About how long it takes: I'd say about 2 years until you start to feel comfortable, although it depends much on your learning ability, whether you already know another one or two programming languages, whether you just do it next to something completely else or devote main focus on it (like actively programming in some project) etc..
From what I was told, it certainly doesn't take 24 hours like " Sam's Teach yourself claims".
C++ is a very vast language and has been in existence for a while now (following from C ). I don't think 2 years is an unrealistic time frame like limi said if you devote a few hours to it everyday. However, if you devote time to it like a full-time job, I don't see you shouldn't have mastered any computer language within 6 months.
I must say though, IMO, the term "learning C++" is a very vague term. You can learn how to write a simple calculator in C++ within 10 days. You might be able to learn GUI for C++ in 1 month. However, experts who have been working in C++ for a while still refer to STL' s doc and say there's still a lot to learn in this language..... Point being that it depends on to what extent do you want to learn this language.
It took me 2 months to learn all I could about C++ and all its standard library from MSDN, including proper usage of dynamic_cast, template, operator, extern, volatile, friend, virtual, and static.
However, I have been messing around with computers since my infancy (or so my parents told me), so I expect learning C++ was a little bit easier for me than it was for some other people in this forum. At the same time, some others in this forum may have had it easier than me.
It's going to be hard for us to give you an estimate, since we realize that we are all different. Do you have an extensive background with computers? Any previous programming languages? What learning materials are you using (never mind, that was answered earlier)? Any background in computer science?
All of your opinions are greatly appreciated.
What I mean, just for clarifying, is when you start feeling able to make your own semi-complex programs, not just hello world things or practice.
I have no computer science background but I work as a system admin, I also have tried python, perl, lpc and the various linux shells.
I mean a program that can actually be released and that someone can use for getting real work done ... I don't know, it's difficult to define. I mean something you can actually watch and say, gee, I did this and I never thougt I had it in me, sort of thing.
Last year, I began my epic adventure with ProjectEuler.net. You do programming challenges there, and you learn a lot. But seeing as I'm still just a teenager and has nothing better to do, you'll probably have a lot more things on your hands. Obviously, that means that it will probably take more than just 3 months.
And that's not all, either. I'd say that I'm fairly used to C++. I know my way around it, and know how to use google. But the truth is, I'm still very much a beginner. I can make C++ solve math problems, but I can't make a GUI. Well, except if I spend a couple of hours googling, like I said I knew how to use. =O
Nah, I don't agree with "real knowledge will be gained due to practical experience." You can gain knowledge through hypothetical/impossible situations, which is basically what Project Euler is.
Example: You know way back in middle school, your algebra teacher taught you about parabolas, and gave you those annoying word problems where a boy wants to know the peak of his ball throw? Well, who the helk wants to do that? I mean, I'm not going to wake up one day and tell myself, "Hmm, lemme call up my friend and ask him to help me measure how high my ball went." But you learned, right?
Non sequitur. Project Euler is not designed to teach you C++--it even explicitly says that you can use any language of your choice. It's about problem solving. All of the problems on Project Euler can be solved knowing nothing about OO, inheritance, polymorphism, templates, or STL containers.