Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a beginner and have only little knowledge about programming.

Would it be good if I directly learn C++ from books which cover new C++11 or should I study through the old best C++ books?

Should I have little knowledge about C++ before learning C++11? or I can start directly from there?

Would it cause problem if I directly start from C++11? If no, then suggest some books on c++11.

share|improve this question
3  
Why those negative points? Has this questions already been answered? Aren't newbies allowed to question? Hoes does someone reasearch in this matter? I think one of the best ways is to ask to ones with more experience. +1, as newbies also deserve to be guided – adosaiguas Aug 28 '12 at 14:54
@adosaiguas well... from the faq: Programmers — Stack Exchange is a site for professional programmers who are interested in getting expert answers on conceptual questions about software development. – Simon Aug 28 '12 at 15:37
4  
@Simon this sounds to me as a conceptual question about software development: Where do I start? And how do you know he is not a professional programmer? ;) – adosaiguas Aug 28 '12 at 15:44
@adosaiguas touché :-) – Simon Aug 28 '12 at 15:48
2  
@MSalters Talking about books; Accelerated C++ is an awesome book, albeit a bit simplified. Barbara E. Moo is an awesome writer and her influence on the book is easily noted. But the book in question indeed is "old". However not all hope is lost - there's a highly-rated book called C++ Primer by Lippman, Lajoie and Barbara E. Moo, the fifth edition was published this month(August 2012) and from the first few chapters I've been reading from my copy, this is an excellent book covering C++11. Moo's influence is present, again. She's a goddess when it comes to technical writing. – zxcdw Aug 28 '12 at 17:43
show 5 more comments

5 Answers

up vote 19 down vote accepted

There are a lot of usability enhancements that make C++11 more comprehensible to a beginner, especially one who has experience in other languages with those features. Other changes in C++11 are only of interest to advanced users, so you're likely to get overwhelmed if you pick up a book that is designed to mostly teach the differences. Make sure any book you get is designed for complete beginners to C++.

That being said, you'll probably have to learn the old way eventually, as there is a lot of existing code out there, and even new C++11 code will contain the old way of doing things if the programmer so chooses. I write C++ for a living, and my company still hasn't even gotten around to evaluating C++11-compatible compilers, let alone using one in production.

share|improve this answer
1  
thanx alottttttttttt.it helped me ♥♥♥♥ – Dhananjay Aug 28 '12 at 18:24
i m learning from c++ primer 4th edition. good book to start with ?? – Dhananjay Aug 28 '12 at 18:28
It gets good reviews and looks to be at the right level, but I haven't looked at beginner-level C++ books in a long time, so I'm not the best person to ask. I think you'll need the 5th edition if you want C++11 covered, though. – Karl Bielefeldt Aug 28 '12 at 19:19
its ok and yah i know that 5th edition cover c++11 . – Dhananjay Aug 29 '12 at 6:20

You do not need to use old C++ to start using C++ 11, there are new features in C++ 11 but there use is optional. Knowing how to use C++ 11 features could be an advantage, it certainly wouldn't be a disadvantage when working with legacy (pre 11) code-bases once you knew the idiosyncrasies of the older versions.

Learn C++ would be a good place to start learning and Appendix B will teach you the C++ 11 features after you have learnt the basics.

I can see why some people have suggested Java/CSharp etc. as easier alternative languages but I learnt a bit of C++ before moving onto CSharp and I'm not a worse programmer because of it, to the contrary programming skills go much deeper than language syntax/functionality and with a solid foundation in C++ you could learn any other imperative OOP language easily.

share|improve this answer
hmmmm i will follow – Dhananjay Aug 28 '12 at 18:25

It's hard to say.

Old C++ is more of a minefield, and it's nice to learn how to navigate such a best. It will also make you understand why things are done how they are, and what are the implications of different constructs.

Then again, old C++ is not what you want when you write code.

But then, yet again, old C++ is what a lot of industry will be churning on for 20 more years.

I love C++ 11, but it is only usable in startups for now. Not in large legacy code bases. And jumping straight to C++ 11 might leave you with undeveloped skills in nasty C++ parts. Which will backfire once some advanced C++ 11 construct leaks, or crashes because it's used in syntactically correct, but logically incorrect way.

share|improve this answer
Why would major parts of industry not update there compilers, besides the niche embedded systems field? Risk (even with unit tests)? Conservatism? – TheLQ Aug 28 '12 at 15:55
1  
@TheLQ: I guess... But when I think what I would do if I were a boss, it's highly likely I would do the same thing. Unless there are some noticeable cost savings vs. migration costs. – Coder Aug 28 '12 at 16:03
@TheLQ: It takes yeas for code bases to move to a newer version of the compiler. It is rare that a project will adapt a new compiler version willy nilly. A new project is more likely to use a new compiler (as long as it does not interact with old code). – Loki Astari Aug 28 '12 at 16:08
@Coder: What makes C++11 that different from C++03 that learning it will not translate directly to C++03. There are a couple of new features that make things easier to write but nothing that prevents you stepping in those minefields. – Loki Astari Aug 28 '12 at 16:10
@LokiAstari Sorry, I'm not super familiar with C++ compilers, but is there really that many backwards incompatible changes between C++ standards? I know in other languages (IE Java) you install the new compiler, run unit tests, and do some basic usability tests and bam, you can now use the new compiler with many new optimizations – TheLQ Aug 28 '12 at 16:13
show 3 more comments

Take a deep breath and read this article by Peter Norvig.

Have you read that? Ok, if you are a beginner, you need to start in small steps. -insert language here- can come later, check out Coursera or Udacity for some beginner computer science introduction courses.

Having completed that, I would advise slowly working your way through K&R's The C programming language if you are set on a 'C' language.

Work on the basics, the rest will come in time.

share|improve this answer
4  
I don't see how this is answer to the question asked. C isn't even same language as C++. – vartec Aug 28 '12 at 15:27
But C++ is based on C, and is largely backwards-compatible: the vast majority of modern C syntax is directly applicable to C++. Since C is simpler than any version of C++, learning C first gives you a nice coherent education in the basic C++ syntax and semantics -- and helps explain some of the otherwise incomprehensible warts on the larger language... – comingstorm Aug 28 '12 at 18:13
usefull links thanx – Dhananjay Aug 28 '12 at 18:32

Why do you wanna start with C++?

I personally recommend against C++ as a first language. It is tricky, complex, difficult... simply much lower level and more "unsafe" than most other programming languages.

I advise to pick c#, java, python or javascript ...and a good book along the way. You'll have a much more enjoyable time with these.

share|improve this answer
2  
I do disagree on that as a generalization. Going from the easy life of java/C#/python etc. to a more complex world of C and C++ is not that easy. If you are really set on learning a programming language, learning C and C++ is hard, but will give so much back. If you later wants to program in java, C#, python etc. that change is a lot easier than going from them to C or C++. Summary: C/C++ will be harder to start with, but will make changing to any other OO language easier. – martiert Aug 28 '12 at 15:22
2  
C++ is the best foundation to start. Programming is complex, and in the end you have to work with a hardware. C++ is an amazing way to start learning that without false sense of security. – Coder Aug 28 '12 at 15:24
The op's question completely rely on his/her purpose with development. – Independent Aug 28 '12 at 15:43
1  
I disagree with this. Learning C++ has several advantages and makes it easier to learn other languages like Java and C# to name a few. – Anthony Aug 28 '12 at 16:22
lol i use to thought that java is hard.here in india they teach mostly c then c++ then java. i lovw c++ . i will learn it first – Dhananjay Aug 28 '12 at 18:31
show 1 more comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.