Learn more Shop now Shop now Shop now Shop now Shop now Learn More Shop now Shop now Learn more Shop Fire Shop Kindle Learn More Pre-order now Shop Women's Shop Men's

Customer Reviews

4.3 out of 5 stars
4.3 out of 5 stars
Format: Paperback|Change
Price:£51.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| 31 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 27 February 2003
I've learned C++ from this book first, a few years ago, so my experience is the that of a novice.
On the writing style, I agree with those who say that it could have been written in a clearer way. The reading sometime had to proceed slowly, and sometime turn back a few pages and restart.
On the content, instead, I think that no other book brings the same knowledge in both quantity and quality.
It comes as no surprise that being Stroustrup the first inventor of C++, few people knows it better than him. Through this thousand of pages it is possible to learn plenty and plenty of details about the language. But should is stop here, it would be just another Kernigan & Ritchie. Indeed, the book brings much more. The language is explained through the use of a lot of examples that in reality are true insights on programming techniques. Perhaps you'll follow the classic path of buying this or some other big reference on C++, and then some other lighter book on tecniques and/or coding strategies. I did it, passing through exceptional books (Coplien, Koeing, Meyers). Now, looking back, I realize that much of the stuff I've learned through these latter books, could have been learned through Stroustrup's as well. All this stuff is there. The problem is that you learn them together with the language and the OO notions, so if you are a novice they could not receive the deserved attention (and perhaps they don't have the deserved space in the book. But, after all, I find they are "add-in"s, not the main subject).
And there's still something more. Through the chapter Stroustrup exposes his view on the OO subject. It's a personal view (that lead to the language development as a support), but it's a good one, on my opinion. One that, among the many, deserves respect and that can get a direct match on the most widely used language, together with C.
0Comment| 24 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 15 February 2001
A number of people who have submitted reviews on this book seem to be missing the point. This is NOT a 'Teach Yourself' book, it's a reference work. If you need a book that covers every aspect of C++ in detail, this is the one to go for. It is written by the man who created C++ after all. If you don't know C++ and want a book to learn from, try elsewhere!
0Comment| 13 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| 11 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 22 July 2001
Without doubt, the most comprehensive explanation and critique of C++ as a language that is available.
Not for beginners, and not an easy read, but this text, above all others, will answer your C++ questions.
The style of writing is particularly good, and if you understand the contents of this book, you understand C++.
It is as 'simple' as that.
THE book for anyone serious about C++, but not necessarily the only one. :)
0Comment| 16 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 22 August 2005
I don't know where Amazon got their title for this book from: It's simply "The C++ Programming Language." Nothing about "tutorial" which seems to have been the impression a lot of other reviewers have got.
As such it's not a tutorial - don't buy this as a first taste of C++ or even of programming as a whole. Perhaps have a gawp at Koenig and Moo's "Accelerated C++" instead.
This is the book to use if you want to know how the language and standard library behaves without having a dig around in the language standard itself. While there are more complete references to the standard library, this book is the best I've seen on the language itself.
0Comment| 11 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 19 June 2001
It's not a tutorial book. It's not going to teach you to program in C++. It's not going to tell you how to step-up from another language to C++. But that's because it's a reference book. And as a reference work, it's very, very good. Well, you'd expect it to be, really - it's written by the guy who created C++.
It covers the whole of the language and the standard libraries pretty exhaustively. Pretty well every concept is explained with the assistance of code examples and diagrams where appropriate. As well as raw technical information, every chapter concludes with a set of hints on how to best make use of the features of C++ presented in the chapter - useful, as it's easy to abuse C++ and end up with messy code - and a set of exercise questions to work through.
On the minus side, the typesetting of the book isn't wonderful - a few of the diagrams have lines that don't join up, and the text isn't particularly easy on the eye. However, it's a reference work, not a coffee table book - if you want something that looks nice, buy a book with "21 days" in the title, or something.
This is a serious book for serious programmers.
0Comment| 9 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 8 September 2002
Probably the most useful book on c++ ever written, by the creator of c++. However it is not intended for people new to programming - a familiarity with c and the basic programming concepts is neccesary. It is very thorough, more a computer science text-book than a handbook or tutorial. The book explores the architecture of c++ and how it is implemented as well as how to use it (which other books usually concentrate on). Many good tips on style and how you should structure programs as well as broader concerns useful to large scale projects.
0Comment| 9 people found this helpful. Was this review helpful to you?YesNoReport abuse
on 13 April 1999
The C++ Programming Language is without a doubt the most comprehensive and well presented C++ book I have read.
While not really suited to the novice programmer, anyone with a background in structured or object oriented programming (particularly C) will find this an effective learning guide. It is also a useful reference book and rarely (if ever) sees the bookshelf!
Whether you're an experienced C++ programmer or new to the language, Buy this book!
0Comment| 7 people found this helpful. Was this review helpful to you?YesNoReport abuse

Sponsored Links

  (What is this?)