Customer Reviews


80 Reviews
5 star:
 (48)
4 star:
 (13)
3 star:
 (7)
2 star:
 (5)
1 star:
 (7)
 
 
 
 
 
Average Customer Review
Share your thoughts with other customers
Create your own review
 
 

The most helpful favorable review
The most helpful critical review


226 of 234 people found the following review helpful
5.0 out of 5 stars Not what I was expecting
For some reasons, I had expected a book on reflections on Stroustrup's philosophy of C++ programming aimed at experienced practitioners. I was quite surprised by the heft of the book, but much more so by the content. It's a book for non-programmers or beginners to teach them how to program with C++ as the vehicle and it's structured for use as a textbook for a first year...
Published on December 25, 2008 by Claudio Puviani

versus
22 of 26 people found the following review helpful
3.0 out of 5 stars A good companion book to accompany another C++ learning book
This book differs from all of the other beginner programmer books that I've read. First and foremost, this is a book about how to design solutions to problems in the way that a professional programmer might approach them. It just happens that C++ is the language used; many of the ideas expressed in this book will apply equally well to a number of other languages. There...
Published on April 5, 2010 by D. J. M. Scott


‹ Previous | 1 28 | Next ›
Most Helpful First | Newest First

226 of 234 people found the following review helpful
5.0 out of 5 stars Not what I was expecting, December 25, 2008
Verified Purchase(What's this?)
This review is from: Programming: Principles and Practice Using C++ (Paperback)
For some reasons, I had expected a book on reflections on Stroustrup's philosophy of C++ programming aimed at experienced practitioners. I was quite surprised by the heft of the book, but much more so by the content. It's a book for non-programmers or beginners to teach them how to program with C++ as the vehicle and it's structured for use as a textbook for a first year college course.

Physically, the book is massive, weighing in at over 1200 pages. It is printed on good quality semi-glossy paper and the extensive use of color will remind some of the Deitel & Deitel series, at least superficially.

The prospective student will probably benefit from a comparison of this book to the existing leading tutorial books. The leaders, by popularity or quality, are (in no specific order): Lippman, Lajoie, & Moo's C++ Primer (4th Edition), Eckel's Thinking in C++: Introduction to Standard C++, Volume One (2nd Edition) (Vol 1) and Thinking in C++, Volume 2: Practical Programming, Dietel & Deitel's C++ How to Program (6th Edition), Koenig & Moo's Accelerated C++: Practical Programming by Example (C++ In-Depth Series), Lippman's Essential C++ (C++ In-Depth Series), and Prata's C++ Primer Plus (5th Edition). These all share the common purpose of teaching the C++ language, so an effort is made to cover the features and concepts, with examples that were constructed to illustrate them. This is NOT Stroustrup's approach.

Stroustrup isn't trying to teach the C++ language. He's teaching how to program. C++ is the tool he uses to do so. This isn't a subtle difference. It's the difference between teaching you about a wrench and making up fake car parts to fix with the wrench and teaching you auto repair and giving you a wrench to do so. You still learn the tool as you go along, but it's a side effect.

The overall direction of the book is to teach students how to program solutions to real problems in a way that one would in the real world. Things that other books consider "extraneous to illustrating the principle" aren't swept under the carpet. Inputs are validated. Code is tested. Errors are detected. Exceptions are thrown and caught. They're not incidental details, they're part of the solution, and that's how Stroustrup presents them. Yet, these "details" don't detract from the readability or understandability of the code. In fact, they preempt the stream of "but what about..." questions that students will inevitable have when presented incomplete toy code.

Chapters 6 and 7 are gems. They develop an expression evaluator, walking the student through a tokenizer, parser, and interpreter without bogging the student down with deep theory that will be learned in later courses and is unnecessary to get started (though many will be inspired to go read up on it). Besides showing some interesting and useful techniques, understanding an expression evaluator goes a long way toward understanding programming languages in general.

The discussion on containers and iterators explains how one would go about designing them, not just using them. Once the development of a vector-like container is described, the other standard containers are presented for the student to use. No time is wasted trying to teach data structures, for which other classes and books already exist. The same applies to sorts and other basic algorithms. The standard ones are presented for immediate use by the student.

There are chapters on basic I/O, GUI and graphics (using FLTK), data formatting, and numerical programming (this is my least favorite). There is also some cursory coverage of upcoming C++ features as they are found in boost, such as regular expressions. Because this book deliberately targets beginners, you won't find advanced topics like template metaprogramming. There are entire books (three of them!) dedicated to that.

Finally, there is some brief discussion of the history of C++, on its own and in the context of the evolution of programming languages in general. I would have enjoyed more of this.

If I were to teach a course, this book would be my first choice. A disciplined self-learner would also be well served by this book.

However, it does not try to target those who already know how to program and wish to migrate to C++, though they would doubtless find this book interesting and well written. For them, I would recommend "Accelerated C++" or "Essential C++" to bring them up to speed quickly or ""C++ Primer" to study the language more in depth. For those coming from a language that is conceptually different from C++, the two "Thinking in C++" volumes do a good job of aiding in the paradigm shift. I am deliberately omitting non-tutorial books like the "Effective C++" and "Exceptional C++" series, though they are certainly essential.

Everyone -- beginner and migrating expert -- should avoid C++ How to Program (6th Edition). Notwithstanding the pretty presentation, this book teaches abysmal programming practices, such as blatant and amateurish violations of the Liskov Substitutability Principle.

Naturally, every C++ programmer should own The C++ Programming Language: Special Edition (3rd Edition) and C++ in a Nutshell is a marvelous one-stop reference.

As a side note, there is a long running debate over which language is most suitable for teaching an introduction to programming. C++ is usually one of the first to be eliminated. This book puts C++ back in the running and and shows that it's more about the teacher than it is about the language.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


50 of 53 people found the following review helpful
5.0 out of 5 stars No better place to start C++ than here..., April 23, 2009
By 
This review is from: Programming: Principles and Practice Using C++ (Paperback)
I had just finished reading Herbert Schildt's book C++: The Complete Reference and had resolved not to read another door stop before devoting much more time to practising the new techniques I had learned. Then I got wind of Bjarne Stroustrup's new book for beginners: Programming Principles and Practice Using C++. Now Dr Stroustrup occupies a very elevated position in the panoply of C++ deities; his words are cast in stone and he is often referred to as "the creator" of C++ (read: he invented it). Most programming tutorials have shortcomings of one kind or another, so I was intrigued to discover what sort of a job BS had done. I was not disappointed.

Firstly, his approach is not to treat learning C++ as a purely language-technical issue, but to talk about programming as a means to the solving of problems, and use C++ (the most versatile and widely used programming language we have) as a vehicle to do this.

After a dedication to Lawrence Petersen, his collaborator on this project, there is an interesting chapter concerning the place of computer systems in modern life.

Programming is introduced in the conventional way with the simplest concepts, then the learning curve becomes progressively steeper (a feature which is required of a reasonably complete introduction to the subject, even given the 1264 pages of this book).

BS uses several techniques that I had not seen before. All the code is printed in a bold typeface in blue. That makes it easier to distinguish code terms from other, possibly similar words within the body text. He does not use unnecessary spaces in his code. This helps to clarify where spaces are actually required by the syntax as opposed to merely beautifying the code. It also allows more characters per line, but the downside is that the code tends to look more crowded.

Nearly every chapter ends with a set of drills (short exercises), a review of all the new material introduced in the chapter, a list of the new terms, a very comprehensive and well thought out set of more substantial exercises and a postscript giving final thoughts. If students were to take on these exercises in a conscientious way I have no doubt that the learning curve would be flattened to a great extent and they would rapidly gain proficiency in programming.

Having prepared the ground thoroughly, BS raises the level of activity by introducing programming techniques which produce graphical output, and devotes 160 pages in five chapters to it. An independently produced lightweight graphical user interface package called FLTK has to be downloaded and installed for this purpose (its free of charge). FLTK was chosen partly because it is a cross-platform system (cross platform functionality being one of BS's hobby horses, although one which is justified). I found this part of the book a bit tedious, mainly because I am not greatly interested in graphics at present and partly because I did not have the time to play with the system sufficiently.

Two thirds of the way through the book is a refreshing and fascinating chapter dealing with the history of programming and some of the personalities involved; something I had not thought of investigating in any detail before. Colour photographs are another feature of this book which adds to its appeal.

An important theme of the book is the idea that its all too easy to make mistakes when programming, but there are ways to mitigate this. BS owns up and highlights many mistakes he made (some of them deliberate, for pedagogical reasons) when writing programs for the book. I find that both endearing and encouraging. Major sections deal with debugging and system testing, including the recording of run-time.

The last chapter is an introduction to the C programming language. I was very pleased to see that since you cannot go very far in the world of C++ without tripping over branches of C code, and it helps a lot if you can understand it. There are five appendices which provide useful reference material and some extra ideas for anyone who has stayed the course.

The book is supported by some excellent web pages with supporting material including an errata list and well designed tutorial materials for teachers.

I found this book generally very revealing and rate it not only excellent, but inspiring. It provides the means to become a good programmer if you are prepared to do the work, and the encouragement to do so.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


31 of 32 people found the following review helpful
5.0 out of 5 stars Very good, but not simple., May 26, 2009
By 
This review is from: Programming: Principles and Practice Using C++ (Paperback)
I agree with Hubert above. This book is great for the "advanced beginner". I too have been through several of the shorter, more to the point, "teach yourself C++"-style books. I am glad that I did those first. I am totally self-taught and unfortunately have no mentor to ask anything. This is the first book that has spent any time on data validation and parsing and has introduced catching errors as part of the bigger picture rather that a discrete subject. This is the way it should be be done.

Chapters 6 introduces parsing. This has been the missing link for me. As soon as you start writing anything beyond the simplest of programs you run into the problem of needing to validate and make sense of user input. You always just knew that there had to be a "standard" way of doing this because the problem is so fundamental, however, the answer is not obvious. I developed a far simpler "home-grown" parser for an ip address calculator program I wrote but using token objects is FAR superior. (which makes me wonder about how many other things I know nothing about) It is not simple and I spent a lot of time reading and trying to truly internalize the chapter and doing the exercises. However, I do wish that more of the answers were published on his site for those of us working at home alone without the benefit of a professor.

Also, graphics and GUIs are given some coverage. This is also unusual for a beginner book. None of the others that I have does this. I think it is important to show that C++ is graphics friendly early on otherwise the ignorant get the impression that only newer languages like VB can handle such things.

So, basically I see this book as a cornerstone in your self-education. It you are working alone it is going to take some time and effort to plow through this monster. (Especially if you do the in-chapter exercises and problems.) But it is a very good book and will likely serve as a nice gateway to more advanced books on the subject.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


22 of 26 people found the following review helpful
3.0 out of 5 stars A good companion book to accompany another C++ learning book, April 5, 2010
This review is from: Programming: Principles and Practice Using C++ (Paperback)
This book differs from all of the other beginner programmer books that I've read. First and foremost, this is a book about how to design solutions to problems in the way that a professional programmer might approach them. It just happens that C++ is the language used; many of the ideas expressed in this book will apply equally well to a number of other languages. There are lots of interesting ideas relating to the design of solutions that I never picked up during my computer science course at university. It is for this reason that I think this book makes a great complimentary text.

That said, I very much doubt the average "beginner" with no programming experience could learn C++ from it; it just isn't suited to complete beginners. You really need to have done some elementary programming already or at least be using it in conjunction with a formal course of education and/or alongside a better book for novices.

As readers are probably aware, the author is the architect of C++ so who is better to understand the ins and outs of his language. Unfortunately, being one of the best professional programmers in the world doesn't necessarily make you a master teacher. I've seen this time and time again at university; some lecturers just aren't able to truly start at the beginning. Others just can't find elementary examples. If you don't get a foundation example you can understand, everything that follows will be gibberish. I suspect that is what will happen when you get to Chapter 5 and start building a calculator.

The first five chapters are interesting and easy enough to follow. Chapter 5 will very much determine whether or not the book as a whole will be useful for you. The way the author chooses to develop his solution for the problem of building a calculator might be the industry accepted "standard" but simple it is not. It very quickly becomes complicated and confusing. What the author is trying to do is show the reader how you start with a prototype, discover its faults, then move on to subsequent improved versions. Unfortunately, this approach doesn't really work for this example because it is too big an example for a novice programmer.

As I stated above, this book is extremely useful. There is a wealth of ideas that you probably won't get anywhere else. By itself, however, this is not a learn-to-program book. It is about the problem solving aspect of computer science. It is not for absolute beginners. Buy it in conjunction with another beginner book or come back to this after you gain some basic programming skills.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


15 of 17 people found the following review helpful
5.0 out of 5 stars The new standard for learning C++, April 28, 2009
Verified Purchase(What's this?)
This review is from: Programming: Principles and Practice Using C++ (Paperback)
This is the best introduction to C++ I've read (and I've read a few, including Accelerated C++ and C++ Primer). For a start the book is beautifully presented with color used liberally throughout and even color photographs in places. There are also plenty of pictures and diagrams to illustrate techniques.

It's big at over 1200 pages. But the text is not dense so you can actually read chapters fairly quickly. There are 4 parts as follows:

1. Basics
2. Input and Output
3. Data and algorithms
4. Broadening the view

Part one contains the fundamentals of C++ and also describes designing a parser to calculate arbitrary expressions. This is surprisingly complex, involving tokenizing a grammar.

The I/O section is excellent because it describes how to design GUI classes and also how to use the real-world FLTK GUI library to produce windowed programs. Of course it also describes traditional text mode programming using iostreams.

Part 3 contains an excellent chapter on designing a vector class, then discusses how the STL vector template solves a lot of the problems. This is a theme of the book - Stroustrup attempts to explain the underlying reasons why things work the way they do, rather than let the reader rely on "magic".

The book describes a lot of good techniques like RAII, regexes (using boost and which will also be in the next C++0x standard) and exception handling. The goal is to give the reader the skills to be able to create robust modern C++ programs that can be used by other people. Hence the emphasis on correct exception-safe code.

Part 4 discusses numeric programming and embedded programming. These are interesting chapters but possibly niche. There is also a chapter on test harnesses and unit testing, which is something a lot of intro books leave out. There are also a couple of "trivia" chapters related to the history of programming which I found very interesting.

So, in summary I'd say this book is an excellent resource for the beginning C++ programmer (or even an existing one who needs a refresher).
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


21 of 25 people found the following review helpful
5.0 out of 5 stars Perfect for advanced beginners, January 24, 2009
By 
Hubert Dupont (Créteil, France) - See all my reviews
(REAL NAME)   
Verified Purchase(What's this?)
This review is from: Programming: Principles and Practice Using C++ (Paperback)
I'm an "advanced beginner" (and a self-learner and English is not my first language).

By "advanced beginner" I mean I've read 4 beginner's books, so I'm at last almost comfortable with elementary things such as function, class, object, loop, nested loops, pointer, recursion, libraries, etc. (By almost comfortable I mean I'm not afraid any more)

I would not recommend this book to a total beginner, at least not to the below average beginner I was, because he probably would have been left mystified or bewildered by this book. But I would definitely recommend it to an "advanced beginner" or a gifted beginner or a beginner who have access to some kind of teacher or mentor.

I like books that are clear, concise, accurate, technical, and especially who aren't afraid to introduce what may seems to be complex subject (because if it is done step by step and clearly the complexity fades away). This book meets all these requirements. I mean one of the first program is a parser, a PARSER! what a wonderful thing to learn at the beginning of your programming career. You learn about grammar and parsing and stream before page 200 (I'm actually at the beginning of chapter 7, that is page 219)

Wonderful book, thank you Professor Stroustrup.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


9 of 10 people found the following review helpful
5.0 out of 5 stars Had the rough draft of this book as a textbook., January 8, 2010
This review is from: Programming: Principles and Practice Using C++ (Paperback)
Bjarne Stroustrup was a guest lecturer at my intro to C++ class (ENGR 112) at Texas A&M University. He would come in 3-4 lectures a month and teach us. He is a very fun and interesting person to be around as well as easy to talk to. Very humble despite the feats his invention created.

Back in 2006, he was still writing this book and using my class as a testing ground for it. We'd have to go to the copy store every week or two to get the next chapter. Sometimes the chapters were error free...sometimes not. We were very vocal about grammar and compile errors using his code line-by-line. Regardless, this is quality material. The only reason why I'd by this book again is so that I don't have to lug around a 4" binder full of loose-leaf paper.

I had tried all throughout high school to learn C++. Everything I did failed, but his material and my main professor got me going. This book proves that if you are going to learn C++, you got to learn from its father. I just wish there was a Kindle edition. Big reference books aren't as easy to read as something like a Kindle.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


5 of 5 people found the following review helpful
5.0 out of 5 stars A Flawed Masterpiece, October 3, 2013
Verified Purchase(What's this?)
This review is from: Programming: Principles and Practice Using C++ (Paperback)
This book is an excellent guide to programming and the C++ language, but it is not without its faults. There are a few exercises and general moments where you will become frustrated for lack of a solution, dearth of information, or both. Not that this book is lacking in information - quite the contrary - but there will be times when Stroustrup seems to withhold information that you want or need until after you need it; you might find yourself skipping ahead or googling a thing a too. Thankfully, these moments are few and far between, but frustrating none the less.

This is a challenging book for the true beginner, although not an impossible read. It took me about six months of reading the book and doing nearly every exercise before I felt that I had a fundamental grasp on C++ programming. If this book is a companion to a class, it might take you less time, but be prepared to spend a few months with it, especially if you are a truly new to programming. Just doing the exercises will take you many weeks, but the beauty of this book is that it is extensive and covers almost everything you need to know about C++ programming. It is not a reference library, but after reading this book there won't be much about C++ you don't know (or at least won't know how to find out) and that, to me, is the hallmark of a good text. Stroustrup guides you through things like template functions and memory allocation, shows you how certain containers are created (lists and vectors), covers much of the standard template library (STL), classes, object oriented programming...really, it is a solid foundation for the C++ programmer and programming in general. There are a few caveats; I don't think operator-overloading is explained in enough depth, for one. But this is truly an extensive subject and it's incredible how much the man is able to cover. This book sits somewhere above a beginners book that doesn't go into enough detail, and somewhere below a pure reference manual that doesn't tell you how to do anything. I haven't read his other C++ book - The C++ Programming Language - but I imagine that book and this are probably about all you will ever need when it comes to C++.

Despite its flaws, I have rated it 5 stars, as recently I have begun to see just how poorly books like this can be written - this book blows them away. It has enabled me to program a VST plugin relatively easily. There's even some subtle nerdy humor in it. It accomplishes its task beautifully.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


7 of 8 people found the following review helpful
5.0 out of 5 stars Thanks, Bjarne, October 6, 2009
By 
Verified Purchase(What's this?)
This review is from: Programming: Principles and Practice Using C++ (Paperback)
What can I say? This book is by far the best choice for a "introduction to programming" college class or for self study for anyone serious about learning programming. It offers depth, clearness, vision, wisdom and raw technical skill far beyond the reach of any of its competitors..
What really amazes me is that Stroustrup has managed to write a book that's really, essentially about learning what programming is and how to do it best, using C++ just as a useful tool avoiding the trap of cherishing and exalting his "creature" bringing it to center stage and instead letting it do its quiet work in the background.
Seeing someone with caliber, history, skills and reputation of Stroustrup, who could just go on being revered writing highbrow terse articles, taking the time and exercising the patience necessary to write a beginner book is really a testimonial to the value of this guy.
As an added value, his approach contributes to fight off from the very beginning the confusion that exists in many aspiring ( and unfortunately even is some experts..) programmers about knowing a programming language or knowing the art and science of programming. I find it quite ironical that it should be the job of the creator of a language to underline so effectively the difference between a "language lawyer" and a good programmer.
It is true that the text has many typos and imperfections, as the long errata shows, but being realistic, how many long, clear, detailed, deep technical text don't have mistakes? Even here the author deserves some credit for being so strict and efficient on error correction. Some more proofreading would have surely helped anyhow, that s' a fact, but this issue is largely insignificant compared to the overall quality of the text.
There are only two things that I would have loved to see done in a different way. First, I agree with the idea that introducing polymorphism with the classic toy examples reduces the appreciation for its power and usefulness at first, but I think this fault is inevitably and gradually eliminated later on when the students end up applying the concept to more realistic and complex problems. Presenting it while also teaching computer graphics application concepts might end up making polymorphism seem more complex and obscure than what it actually is, unless the student has already been extensively exposed to the graphics techniques that are being used. I do believe that a clear, immediate, simple even if a bit primitive grasp on a concept is key to fully internalizing it.
I also think that using an established and powerful graphics library like OpenGL would have made the computer graphics section much more fascinating and useful.
What else to say, do yourself a favor and read this book. It has something to tell you, even if you are an expert programmer.
And.. ah yes, thanks Bjarne.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


12 of 15 people found the following review helpful
5.0 out of 5 stars Stroustrup's Masterpiece, January 30, 2009
By 
Bob Nelson (Frisco, TX United States) - See all my reviews
(REAL NAME)   
Verified Purchase(What's this?)
This review is from: Programming: Principles and Practice Using C++ (Paperback)
Different from other fine technical books in terms of heft and its use of color, Professor Stroustrup has achieved a remarkable balance of both accessibility and accuracy.

As other reviewers have noted, this book is not musings on the evolution of C++ nor is it meant as a means to transition to C++ from some other language. Instead, it starts from a tabula rasa and teaches programming concepts using C++ as the medium of expression. (He even explains what a screen cursor is. :-))

I've been using C++ since 1992 and it's the language I chose for our company's major project back in 1999, a decision that proved to be prudent as the application has grown in complexity over the years. In spite of my long C++ experience, I'm still finding gems in this book, some of which are of the ``Oh yeah, I forgot about that!'' variety.

Another point not yet made by other reviewers is the sheer joy that shines throughout the pages. It's clear that Bjarne Stroustrup is still jazzed about programming after all this time and considers it fun. This book happened to arrive when I was perplexed and frustrated with a problem (in an application written in another language). Reading this book helped to ignite my fire and made me remember just why I became a programmer in the first place.

There are a few things we purists may not like such as casting the return value from ``malloc()'' and using ``exit 2'' but those few nits are outweighed (pun intended) by the overall quality of this outstanding book.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


‹ Previous | 1 28 | Next ›
Most Helpful First | Newest First

Details

Programming: Principles and Practice Using C++
Programming: Principles and Practice Using C++ by Bjarne Stroustrup (Paperback - December 25, 2008)
$74.99 $48.38
In Stock
Add to cart Add to wishlist
Search these reviews only
Send us feedback How can we make Amazon Customer Reviews better for you? Let us know here.