tags:

views:

610

answers:

11

C++ is a great language (imho).

But starting off with C++ as a completely new language to learn, which formative path would you suggest?

Books, websites, anything that could speed up learning without trading in knowledge and understanding for memorization and confusion. A path indeed, which leads to C++ knowledge and understanding in a structured way.

Is it possible?

I'm asking this question because a friend of mine (php programmer) asked me how to properly (and better) start learning C++.


Edit:

Thanks everybody for your interest and your competent answers. I'm picking up the Phil's one, because in my opinion it very much reflects the ideal of what's gonna be a better approach.

But really thanks everybody for the links, opinions and answers. They're great.

+1  A: 

Given you already know C and basic algorithms and data structures the best way is to get an internship at a company that has high competence developing in C++.

C++ is very complex and has a lot of confusing features - take a look at this question for examples, so it's better if you learn it under guidance of really competent people.

sharptooth
+5  A: 

"Accelerated C++" is widely considered to be one of the best introductions to C++ to get you off to a good start.

Then follow up with Scott Meyers' Effective C++ series, then on to Sutter's Exceptional C++ series.

Join the ACCU and follow Boost (but don't join boost-dev until you're pretty competent already).

Phil Nash
+2  A: 

Read the book C++ Primer by Lippman and Lajoie.

Actually do the exercises.

Dan Olson
...and Moo, that has joined the two other authors for the lastest edition.
Luc Hermitte
+1 When I started learning I tried several books and found C++ Primer to be the best.
Steve Rowe
+2  A: 

Programming: Principles and Practice Using C++ by Bjarne Stroustrup might be worth checking out, even though (or maybe because) the focus is on programming, not on C++. It doesn't seem to go too deep, though.

js
Which may be the right thing to start with. I haven't gotten too far into it myself, but it looks good. There's always something nice about learning from the master.
David Thornley
+1  A: 

Judging by your post, your friend already has some experience in programming.

This thread might help.

Holysmoke
Thank you, the accepted answer is very helpful.
Scarlet
+1  A: 

After you get the basics down, I recommend finding a copy of the Ellis and Stroustrup Annotated C++ Reference Manual. It's not up to date with the latest libraries, but it's the only thing I've ever read that gives you an in-depth look at how and why C++ is the way it is. It explains things like how vtables might be laid out in memory, and how that influenced the language design.

Michael Kohne
That's advanced stuff, and there's a more modern Stan Lippman book (Inside the C++ Object Model?) that I'd recommend first. If you're interested in how C++ evolved, don't forget Stroustrup's "Design and Evolution". Read both of those before starting on the ARM.
David Thornley
+1  A: 

When I learned C++ way back when (mid 90's), I used the book C++ from the Ground Up by Herbert Schildt. I found it to be clear and easy to follow and I still refer to it occasionally.

dagorym
+2  A: 

Gosh!, it's amazing how in a programming site the people still, doesn't read the whole text and question. He already says that he knows c++.

"I'm asking this question because a friend of mine (php programmer) asked me how to properly (and better) start learning C++."

I would say "Accelerated C++", it's clear and you start programming right from the beginning of the book, so he won't get bored or frustrated.

Cheers.

Fabman
Thank you for your understanding ;). Any tip about what after that? My friend needs to start w/o feeling frustrated or overwhelmed,but immediately after I would suggest him to move to Stroustrup's C++ programming language. Do you agree? (indeed I can't understand why my question was voted down, btw)
Scarlet
+1  A: 

Look at the C++ FAQ site:

http://www.parashift.com/c++-faq-lite/ & click the link Learning OO/C++. You find some useful info there.

How I learnt C++?

I just picked up the book The C++ Primer by Lippman and Lajoie. And I also reffered to the classic text by inventor of C++ (Bjarne Stroustrup) The C++ Programming Language, 3rd Edition - I still refer to this for my day to day needs.

Learnt lot from Scott Meyer's Effective C++, More Effective C++ & Effective STL books.

Already someone did mention about www.boost.org (Boost libraries). They are a good place to start looking at what would be the future of C++ libraries look like. You can download the source code & have a look & follow the C++ style from there. It's one place to start.

Finally follow someone who has already worked extensively in C++ & who can effectively guide you learning this complex language.

Good luck to you.

placidhacker
+1  A: 

I would to point out, again, the new book by Bjarne Stroustrup, Programming: Principles and Practice Using C++, for beginners. Its absolutely great and I wish I had this when I was starting with C++.

Nikhil
Sure it worths reading. +1.
Scarlet
+1  A: 

Learn Qt. Trust me on this; I develop all kinds of C++ app for a living. C++ with Qt makes you infinitely more productive. I used to combine so many different libraries (Boost, Intel's, database connectors, etc..) just to achieve the kind of stuff we do (high-performance/real-time computing). At the end, I found that more than 80% of what I need is already included in Qt.

Not to mention, imo, Qt has the best documentation on any framework/library I've worked on, which makes it very easy to just learn everything on your own.

Try it, and see for yourself.

Disclaimer: I'm just a developer--I dont work for Nokia. =p

ShaChris23