There's so much in C++ that is specific to C++ that it doesn't even begin to make sense. If you want someone to learn OO, send them to Ruby or Smalltalk. If you want them to learn about performance and deep machine magic (pointers and such), send them to C. In either case, they can learn what they need to know without getting bogged down in a really obtuse pile of bolted-on features and syntax. It's not a bad systems language, but it's not a learning language and never will be.
And the whole "you'll never be able to blah blah" crap is just a hugely stupid idea. Don't think of your learning process as preparing to do something. Pick a project and start working on it--Open Source gives you access to millions of lines of code. There is no better way to learn to program than through working on programs. Be useful as soon as you possibly can, and you'll find that people are willing and eager to help you learn, because they see that the better you become the more useful you are to their project.
There's so much in C++ that is specific to C++ that it doesn't even begin to make sense. If you want someone to learn OO, send them to Ruby or Smalltalk. If you want them to learn about performance and deep machine magic (pointers and such), send them to C. In either case, they can learn what they need to know without getting bogged down in a really obtuse pile of bolted-on features and syntax. It's not a bad systems language, but it's not a learning language and never will be.
And the whole "you'll never be able to blah blah" crap is just a hugely stupid idea. Don't think of your learning process as preparing to do something. Pick a project and start working on it--Open Source gives you access to millions of lines of code. There is no better way to learn to program than through working on programs. Be useful as soon as you possibly can, and you'll find that people are willing and eager to help you learn, because they see that the better you become the more useful you are to their project.