I have this big book that basically covers all the main aspects of the C++, the problem is that is pretty old according to the C++ standards of today, it's ok to use it?
|
It's fine to use it. You won't get the most up-to-the-minute information, but the large majority of C++ is the same language that it was in 1998. If you're just learning the basics, go right ahead. Just keep in mind that there have been some refinements, and look for resources that explain the differences so that you're aware of them. Here are a few of those resources:
|
|||||||||||||||||||||
|
|
C++11 is a pretty big deal- not to mention that many books back in 98 taught C with Classes, rather than C++. I'd look for something newer. We have a question on Stack Overflow which supplies recommendations for books worth possessing. Edit: Of course, there are also many new C++ techniques which simply did not exist previously, especially where templates are concerned, and there are some idioms which are no longer, like checking for self-assignment, not to mention global changes in the software industry like pushes for parallelism. |
|||||||||||||||
|
|
It's probably better to learn the old version first:
At any rate, if you don't learn the old version first, you may have a hard time figuring out how to write for any system that doesn't fully support the new one. For that matter, I would recommend learning C first, before learning the old version of C++: it will save you many agonizing moments of "why the hell did they do it like that?" |
|||||||||||||
|
|
I am going to advocate learning C++11, not older versions. It's true that the large majority of the language syntax and semantics will be the same and it's true that there's virtually no C++ 11 codebases in the roughly gazillion lines out in the wild. So, yes, it's true that you're essentially learning a new and not-yet-common dialect and that may be a disadvantage if you are quickly charged with doing something with an older dialect. But the new dialect is better and simpler. The problem, I think, is that when you do go and deal with an older codebase, you may be confused by "Why didn't they just use...?" thoughts. But the flipside is that if you learn an old dialect, as a beginner you are poorly prepared to know "Oh, okay, this template thing is replaced by a much simpler lambda thing..." and you can find yourself dealing with some really hairy-looking code. It's true that compiler support is still patchy, but I think everyone has (It's true, though, that if you're just using a book, you probably won't be exposed to the full glorious melange of idioms you see in a legacy codebase.) |
|||
|
|
|
The book itself isn't bad, but it is not a "language" book, but much more a "software engineering book". It should not be used to learn a "language" but to learn "design techniques". The language is just a tool to implement the samples. That said, we have to consider that in '98 C++ had a flawed template support and that many techniques where not been discovered/invented yet. You must hence be conscious about some potential risks:
Moral: when talking about C++, books that predate 2003 should not be anymore considered. |
|||||||||||
|
C/C++. It exists only in your mind. – DeadMG Jun 30 '12 at 1:15