Shop now Shop now Shop now  Up to 50% Off Fashion  Shop all Amazon Fashion Cloud Drive Photos Shop now Learn More Shop now Shop now Shop Fire Shop Kindle Learn more Shop now Shop now

Customer Reviews

4.3 out of 5 stars36
4.3 out of 5 stars
Format: Paperback|Change
Price:£36.99+ Free shipping with Amazon Prime
Your rating(Clear)Rate this item


There was a problem filtering reviews right now. Please try again later.

on 19 January 2014
This is not a book for novice programmers. It's also not a book about the differences between C++98 and C++11. Neither is it a traditional style tutorial or just reference book, though it has an index good enough to make it usable as such.

So what is it then?

Its avowed purpose is to provide intermediate and advanced C++ programmers with a thorough grounding in modern C++ defined as being post 2011 ISO standard. The book makes few concessions to how things were done in C++98, its purpose is to show you how they should be done in C++11.

The book is divided into four main parts - A Tour of C++, Basic Facilities, Abstraction Mechanisms, and The Standard Library. I'll look at each of them in turn.

The first section is, at first sight, a bit odd. It's a 100 page rapid look at how things fit together in C++ without going into too much detail at any point. I wasn't sure at first, but after a while I realized that I could start to see how the new facilities would be used, even though the setting was relatively simple.

You can do this sort of thing when you write for developers who already use the language, because you don't have to worry about using common facilities that haven't yet been formally introduced. Some people may not like it, but if it's not your cup of tea it can be skipped without causing too many problems later on.

In the second part we start to cover the basics in more detail. I found the section on references particularly useful, covering, as it does, both lvalue and rvalue references. As readers probably know rvalue references were introduce in the latest standard, but their treatment in this book is typical of the treatment all the ways through - as part of a whole, not something bolted on afterwards.

One thing this section has that I haven't seen in most books is a chapter on source files and programs which covers not only linkage, but headers, ODR, and initialization.

The third part covers abstraction mechanisms - broadly speaking classes, templates, generic programming and metaprogramming. Much of the material in this section is hard work. That's not the fault of the author. He is dealing with complex, abstract, concepts which require concentration to understand. You can't simplify them, or you lose the essence of the ideas. Be prepared to give the material your undivided attention, or you will get lost.

The fourth and final part of the book covers the Standard Library. It's only about 400 pages long (though I have whole books shorter than that!) but it's packed with useful material ranging over the whole library. The problem is that the library is big, and this is perhaps the one place where you will find it necessary to have some more specialist books on your shelf in addition to this one.

It's not that there is anything wrong with the section. Quite to the contrary, there is much in it that is excellent, but it just doesn't have the space to cover everything with enough examples. The most obvious need is in the concurrency chapters. The library concurrency material is all there, but there simply isn't space to deal in depth with how to use it safely. I think that the part of my programming shelf dealing specifically with C++ will not only have this book on it but also 'The C++ Standard Library' by Nico Josuttis and 'C++ Concurrency in Action' by Anthony Williams.

Overall there are a couple of things which I particularly liked. One is the 'Advice' sections at the end of each chapter, one or two liners which make some suggestions about the best way to go about doing the things covered in the chapter. They aren't proscriptive but they represent good advice to bear in mind.

Second, I, for one, found particularly useful the brief examples given in the book. The way they are constructed makes no concessions to pre-C++11 code, and shows how one of the minds behind the standard intended the new material to be used. I'm sure that some of those who follow the work of the standards bodies closely will recognize echoes of arguments in some of the book's explanations of various features!

I got a lot out of this book. More than I expected, and I suspect I'm a better programmer for that. I would be careful who I recommend it to, because, as I said at the start of this review, it's not for beginners.

Coda: This book is physically HEAVY. It's 1,300+ pages, including the index (which as I said earlier, is good enough to make it useful as a reference). I have the paperback edition, I imagine the hardback is even heavier. There have been reviews suggesting that the book is not well constructed. I carried it back and forth to work on the tube and train for a month, and it's still fine, a little battered, perhaps, but certainly not coming apart. I think that any early problems there may have been must have been fixed.
0Comment|26 people found this helpful. Was this review helpful to you?YesNoReport abuse
VINE VOICEon 11 April 2014
I found even as an experienced developer, and C++ user, whenever a new language standard definition is released it takes a long time to bring ones way of thinking around to leverage the new language features to their best effect. That is until with C++11 and reading this tome, every little detail of the language is covered, allowing one to convert from old styles and patterns to new technology and new ways of thinking easily.

Turning every other page one could find someone new to learn, for the seasoned of beginner, so long as you know how to use a C++ compiler going through this tome and some of it's examples is a real insight into not just how the language now stands, but how it has evolved.

Coming straight from Bjarne too one finds reading the text almost akin to talking to him in person, he explains so clearly and concisely what he is aiming to do, never over stepping the bounds of the current chapter of section, but always referring you onto other topics.

If you're an absolute beginner, or have never programmed in C++ before, this book is perhaps not for you, check out "A Tour of C++" which is a much more accessible companion to this book and also by Bjarne. Once you're happy with the Tour, then it is time for this, the main event, book to enter your development career.

Excellent throughout.
0Comment|2 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 23 February 2015
An explanation of C++'s core features, from the man that created the language. The book covers the most general parts of C++, avoiding domain-specific concerns. It drills down in great detail to the nuts and bolts of the language syntax and semantics, explaining the rationale for the features that were included in the language and the reason they were implemented as they are.

Much of the book covers the new features that were added in C++11, with an explanation of when and how to use them. Stroustrup explicitly does not spend much time discussing how things have changed since earlier versions of the language, and how this changes the best way to approach certain problems, preferring instead to write as if C++11 is the only C++ (with a few exceptions). I think this is a mistake, because there are a lot of programmers who are used to the older versions of C++ and used to doing things in a certain way - more explanation of what has changed, rather than just what is recommended practice now, would have been useful. Perhaps that's a subject for a separate book though.

This is a serious book about C++, absolutely not an introductory programming book. It is for people that want to know how C++ works, to a very fine degree of detail. Arguably too much detail in some places - unless you are implementing a C++ compiler you probably don't need to know the precise mechanisms of function template instantiation and overload resolution, for instance. If you're writing code that depends upon such detailed knowledge, you're probably writing bad code.

The first edition of the book was a great read, an in depth explanation of the ways in which C++ differed from C. It really helped to get inside the head of C++'s designer and understand the best way to use the language. The fourth edition comes into a different world - no longer are new C++ programmers most likely to be coming from a C background, but from a C# or Java background. As such, Stroustrup's tone now seems more defensive - less "here are these cool new features you should use", more "yeah it's a pain in the ass, what are you going to do about it?"

This is probably not a book you want to read if you are just coming to C++ at all, to be honest. It's more of a book for programmers that are somewhat familiar with the language and are actively using it, and want to understand it better to take their coding up to "master" level. If you're an experienced C++ programmer who wants to learn what's new in C++11 then this book will tell you, but as observed above it may not be the best way to learn it (I plan to try "Effective Modern C++" next, which I'm guessing will take a more practical approach)
0Comment|10 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 16 August 2014
I keep coming back to this book all the time!

The only one thing I can say that's bad about it is the paper is very thin and doesn't like to be written in or used with a highlighter; I've had to resort to sticky notes throughout the book to mark my own points of interest.

As all the other reviews have said, it's not the best book for a beginner, nor is it a reference to the language, but it covers all the core components that is easy to read and understand for an intermediate programmer.
0Comment|One person found this helpful. Was this review helpful to you?YesNoReport abuse
on 21 December 2015
Although the structuring of the chapters is a bit chaotic and random, the language features and the reasoning behind them are laid out very well and detailed. As mentioned by others, this book is definitely not for beginners - it explains all what C++ is, just not in a very systematic and tutorial oriented manner.
If you are looking just to catch up the newest C++11 and C++14 standards and nothing else, there might be better options - there are chapters devoted specifically to the new features introduced in the latest standards, but the book overall strives to present a unified, up-to-date vision of what the best coding practices in C++ are, with little historical context.
There are some negative remarks in other reviews about the code coloring - surely we all like good coloring in our IDEs, but for a book I think it would be much more distracting to have multiple colors for code segments, not to mention - more expensive.
Regarding the bookbinding quality - whatever issues were present, they were likely solved, because my hardcover edition feels really sturdy and well put. I also like the paper - thin, semi-glossy, which enables this 1350 page book to be rather compact for the content inside.
0Comment|Was this review helpful to you?YesNoReport abuse
on 3 February 2014
An intimate treatise on the essence of C++ by the one who can really do that. Reading through this book I really feel like I'm getting a sense of the language from the roots. This is only something that can be conveyed from a clear sight of the details, history and current development. Let's face it this is a collectors item just because of the timing and the man himself taking the time to keep us all in the loop.
0Comment|One person found this helpful. Was this review helpful to you?YesNoReport abuse
on 6 March 2015
When I was teaching myself C++ many many years ago, this was the book I used. Now that I find myself updating my knowledge to include the myriad of changes that have become enshrined into C++11, this is the book I return to, albeit the 4th edition to my ancient 2nd edition.

Learning any computer language thoroughly requires wading through a lot of detail. If you only want to learn the gist of a language, buy another book. The book is enormous, which is good, because it is organised in a way that introduces the language in layers. Most novice programmers will probably leave the standard library reference material in the latter half of the book until they need to look something up.

Is it a book for novice programmers? It depends. It is not a book for someone that is learning to program, but for programmers wishing to learn C++, it is the undisputed authority.
0Comment|Was this review helpful to you?YesNoReport abuse
on 11 June 2015
What can you say its by Bjarne - you cant argue with a C++ deity!

Update:
Have now spent some time trying to read this book and its very (very) hard going. Makes you want to give up C++
The acid test is read a part it that you already know and understand, do you understand what you are reading. If no then its badly written.
Unfortunately this book fails this test..

Buy all means buy the book as homage to the master, but not if you want to learn or have a reference book on C++
Reverting to Professional C++ (Wrox). C++14 edition

In fairness some styles of writing suit different people, this style is just not for me. Even the way highlighted code examples are done find distracting on the eye!

Sorry master, humble grasshopper no likes!
0Comment|Was this review helpful to you?YesNoReport abuse
on 25 July 2015
Code listings on the kindle version are useless, you have to view the images which makes reading painful along with the writing style. I would suggest Professional C++ Marc Gregoire this book is one of the best I have read.
0Comment|One person found this helpful. Was this review helpful to you?YesNoReport abuse
on 25 June 2013
There is a lot of great content in this book however the organization and presentation is a little messy. What are relatively advanced concepts are introduced too early in the text. Like the C++ programming language itself a little more thought should have gone into its design and structure. But saying that there is a considerable amount of useful information in the book and as Stroustrup says you can't learn every last detail about a language like C++.
0Comment|Was this review helpful to you?YesNoReport abuse

Send us feedback

How can we make Amazon Customer Reviews better for you?
Let us know here.

Sponsored Links

  (What is this?)