#96810 - Iteo - Sat Aug 05, 2006 5:18 pm
I'm learning C++, I'm a pretty quick learner, and I have Basic experience. About How long would it take me to learn C++ and be fluent in it? Thanks for the help.
_________________
Homebrewer! Programmer! Graphic designer!
All in one for lots of touching is good fun!
#96932 - col - Sun Aug 06, 2006 5:38 pm
Learn the _whole_ of C++ and be fluent in all of it?
5...10...15 years... maybe never
#96944 - Bowser - Sun Aug 06, 2006 7:40 pm
One week? Hehe....
I'd say maybe one year, or alot longer.
#96950 - agentq - Sun Aug 06, 2006 9:08 pm
Depends what you mean by 'learn C++'. I've been using it professionally for about 4 years and I wouldn't say I know all of it, although I have gained a good working knowledge of it.
#96955 - Iteo - Mon Aug 07, 2006 12:08 am
How long until I'll be able to use it efficiently?
_________________
Homebrewer! Programmer! Graphic designer!
All in one for lots of touching is good fun!
#96961 - wintermute - Mon Aug 07, 2006 12:24 am
Iteo wrote: |
How long until I'll be able to use it efficiently? |
depends how much effort you put into learning it. Somewhere around 4-5 years.
Programming is a continual learning experience.
_________________
devkitPro - professional toolchains at amateur prices
devkitPro IRC support
Personal Blog
#96965 - PeterM - Mon Aug 07, 2006 12:52 am
You will never completely learn C++. But it will take you at least 5 years to be "good" at it.
_________________
http://aaiiee.wordpress.com/
#96979 - naleksiev - Mon Aug 07, 2006 3:44 am
Come on!!!
Nobody is asking for programming here. The question is how much time you need to learn a language.
For the people that is saying you need 5-10 year: So right now if you start learning a new language you will need 5-10 more year???
1-2 weeks - just to learn the language (for example if you want to get some C++ test, about the language it self)
if you want to use your C++ knowiges to write for example games you need to learn a lot of algorithms and than you will need to learn how to use them. I agree that this can take 5 year.
#97003 - keldon - Mon Aug 07, 2006 10:19 am
It depends on your route. If you start already know algorithms, data structures and software engineering then c++ wouldn't take more than a week or two.
If you know nothing about programming, then if taught properly then it might take about a year.
5 years might be a realistic figure if you are talking about learning c++ from scratch as your first language with the intention to churn c++ out of your arse while sitting down eating sandwiches.
Me personally, I did learn "c++" years ago, but not properly. I wouldn't even count that time. In fact a lot of what I did before uni I wouldn't count as time, it was inefficient and unschooled. I formally learned algorithms in university, and when c++ came about it didn't take more than a week to use it efficiently. I wouldn't say I know it inside and out, so I guess I need plenty more practical experience, but I can do what I need to do efficiently, I just occasionally need to check a reference for some syntax, or library functions.
#97005 - PeterM - Mon Aug 07, 2006 10:30 am
The problem isn't only algorithms, it's that C++ has lots and lots of gotchas. And unless you know them you will write buggy code.
Try reading Guru of the Week - it may be an eye-opener.
http://www.gotw.ca
Books like Effective C++, More Effective C++, Exceptional C++ and so on are also very good, and not too expensive.
If you plan on writing C++ code and getting paid for it, you need to know it properly - and there's no way I would want to work with someone who'd just been using C++ for a year. Not unless I want to spend some late nights debugging their code.
Here's a hint which may tell you how well you know a language - when you look back on your old code, what do you think?
_________________
http://aaiiee.wordpress.com/
#97110 - keldon - Tue Aug 08, 2006 1:13 am
You can learn to speak 5 languages fluently in the space of a year. Trial and error will probably be the worst way to learn all of the ins and outs of c++ and use it safely at a professional level.
But say there was a comprehensive guide(whether there is one or not), then how would it take more than a year?
Quote: |
Here's a hint which may tell you how well you know a language - when you look back on your old code, what do you think? |
Isn't that more dependant on how you wrote your old code? If anything, I feel that I have a better picture of the possible choices and alternatives that could have been taken, and possible problems if there are any.
#97169 - Spaceface - Tue Aug 08, 2006 8:53 am
Hmm find it a rather hard poll... I started with my first C/C++ commandline prog back in '98, and in the meanwhile I've done some simple stuff, but nothing really important. And as of now I'm really starting to get to know C++... so you could say it took me 7 years or two months, your call ;)
#97226 - sajiimori - Tue Aug 08, 2006 7:11 pm
Another problem is that people virtually always answer with a time less than the amount of time they've spent with C++.
A couple years ago, I would have said, "Sure, I know C++, besides some of that weird stuff that real people don't use."
Of course, I was very wrong. People almost invariably use terms like "weird" to describe features and techniques more advanced than their level of understanding.
#97278 - keldon - Tue Aug 08, 2006 11:46 pm
Good point sajimori, but I wouldn't really count my years of working with c++ as learning time. If you did then I've spent over 7 years with it, and I've only really started learning it in the last 10 months. Anything before that was mostly c, in fact I think I didn't even use many, if any any c++ features before then apart from an engine a few years ago. I knew c++ features, but it's like driving a car - we all know the gas pedal from the brakes, but after a few lessons you realize there's more to it than just pushing and lifting the pedals.
#97336 - Spaceface - Wed Aug 09, 2006 9:24 am
keldon wrote: |
Good point sajimori, but I wouldn't really count my years of working with c++ as learning time. If you did then I've spent over 7 years with it, and I've only really started learning it in the last 10 months. Anything before that was mostly c, in fact I think I didn't even use many, if any any c++ features before then apart from an engine a few years ago. I knew c++ features, but it's like driving a car - we all know the gas pedal from the brakes, but after a few lessons you realize there's more to it than just pushing and lifting the pedals. |
<3
best metaphor ever =)
#97369 - Iteo - Wed Aug 09, 2006 2:14 pm
Thanks. BTW I have a great C++ book called something like Beginning Visual C++.
_________________
Homebrewer! Programmer! Graphic designer!
All in one for lots of touching is good fun!
#97392 - dj-ceejay - Wed Aug 09, 2006 3:37 pm
What I found that really helps is to get the example code from books and not just read it - play around with it, change values, add features to it. Also find useful problems to solve and write proper projects not just little demos.
I'm still learning new ways to do things - keep on learnin' I say.
Good luck Iteo.
_________________
Fruit Machine Games:
http://www.fmsoftware.info/
#97511 - poslundc - Thu Aug 10, 2006 5:34 am
I would say there are two pivotal elements to "mastery" of a language like C++:
- Understanding the encapsulation design issues that can be aided by the use of an object-oriented language, and
- Understanding how to apply the features of C++ to handle those problems.
Lots of people can throw together a bunch of inherited classes and even use things like templates without knowing how to effectively break apart their systems in a maintainable and reusable fashion.
Likewise, lots of people may know how to design a system in a very effective and maintainable way without always knowing which C++ features are best applied where in order to implement those strategies. A lot of the aforementioned "advanced" features are where this can get really tricky (and where you also start to see the limitations of C++ as a language, when you realize that often there just isn't a "best" way).
Generally speaking, you need to learn the first before you can learn the second. The first may take as little as days or as long as years, depending on your prior knowledge and experience.
The latter usually takes several years, and tends to be an iterative process... I know most larger systems I've written I would do differently if I could do them again. (Fortunately the more I design, there's less and less I would go back and change.) There is really no point of "mastery", though, because styles evolve, adapt and change depending on both the needs of the immediate problem and the needs of the surrounding larger problems.
A simple test program shouldn't take more than a couple of hours. And depending on your skill with hardware-level programming you may be able to do neat stuff with sprites or backgrounds or 3D (on the DS) inside of day. But building an engine or a game without at least the former skill would be problematic at best. Building one with the former but without the latter is possible, but will probably take an order of magnitude longer as you have to keep going back and iterating over your code while you learn how to exploit the language's features.
Dan.
#97534 - kusma - Thu Aug 10, 2006 10:10 am
I'd say it takes a lifetime. At least I feel that no matter how fluent I am in C++, there's always quirks I don't quite master. It's kinda like learning English. You never stop doing it.