Shop now Shop now Shop now Up to 70% off Fashion Shop All Amazon Fashion Cloud Drive Photos Amazon Fire TV Amazon Pantry Food & Drink Beauty Shop now Shop Fire Shop Kindle Shop now Shop now Shop now

Customer Reviews

4.2 out of 5 stars33
4.2 out of 5 stars
Format: PaperbackChange
Price:£37.13+ 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.
0Comment23 of 24 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.
0Comment2 of 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)
0Comment9 of 10 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 23 January 2016
I am a C++ developer with 15+ years of professional experience.

I normally read an old version of this book before job interviews as it contains everything what is most frequently asked and sometimes even the interview questions are obviously based on this book. The original versions of the book gave a very detailed description about all areas of C++, including every little detail (these little things are normally targeted by interview the questions, so every little sentence needs to be carefully read) almost like a reference book in a very readable format. If you knew everything from that book and you could also use it when you needed to, you could make almost any interviewer believe you are a quite strong C++ developer.

Now this version of the book with the C++11 is a different cup of tea. The ad says about C++11 "The new C++11 standard allows programmers to express ideas more clearly, simply, and directly, and to write faster, more efficient code". If you've worked a few years in development, I am sure you already know where these kind of words normally lead.

The "old" C++ is almost the perfect balance between assembly and higher level languages, it is quite convenient to use, but still sufficiently low level to be fast and does not to hide anything from the developer. Still you can make quite well structured programs with using classes. Why change something what is not broken?

Look at this book, it is two times the size of the original one. Does anyone seriously think that a language which now needs two times the explanation just to be able to use will be more efficient? I doubt it. Even the original C++ is too confusing sometimes and no one really knows every little trick, now that we have two times more to learn, it is going to be even worse.

Knowing every little thing about a language does not really help you to write better code, the language is only a tool, maybe 10% of your skills, 45% is to know the system you working on, another 45% is to be able to structure the code well, if it is C++, that means good object oriented thinking. Invest in the latter two, especially the third one and you will rock, make the tool too complicated, add a lot more fancy thing and there will be mess everywhere.

Reading through the new C++11 changes, that is exactly what happened and I doubt this is going to be a new standard anytime soon and will ever be as widely used as basic c++.

None of these above are the books fault though. What is the books fault is that the old and new parts are not clearly separated, so even if you wanted you couldn't invest more energy to understand the much more widely used basics. With these C++11 parts mixed in, the book is too long and not easy to comprehend.

Hence I've returned the book and I still use the old version when necessary. When the day comes and someone asks me about C++11 (never happened yet), I will just counter him/her asking to tell me a real life example where C++11 would make my job substantially easier. Or even better, please tell me an example where my new C++11 skills will make our development departments life easier and won't confuse my colleagues (and let's say 90% percent of C++ developers in the world) who do not have a slightest clue about how I just "expressed my ideas more clearly".

All in all I suggest to buy the former versions of the book without C++11 - especially if you are a beginner - (you can get used copies for 2-3 GBP) those are very well written and easier to understand, still covers 99% what you will ever need.
0CommentWas 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.
0Comment1 of 1 people 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.
0CommentWas 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.
0Comment1 of 1 people 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.
0CommentWas 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.
0Comment1 of 1 people 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++.
0CommentWas this review helpful to you?YesNoReport abuse