There’s been at least one more edition of Stan Lippman’s C++ Primer since I purchased and used it, and for all I know, three or four editions. First, a little background. I attended university at the University of Idaho‘s Computer Science Department. At the time (1987), the school used Pascal to teach most of it’s computer classes. However, some of the upper-division classes were taught using C. In particular, I remember Dickinson‘s operating systems class used C. Now, unless the freshman classes, they didn’t bother to teach C. They taught operating systems programming. You were expected to learn C along the way through your own efforts. That isn’t particularly difficult though. Now, here’s where we get to the connection to the book. And the connection is that I never took a class that used C++ that I can remember. I’m pretty sure I bought this book when I worked for Pacific Simulation. The original version of I.M.A.S., the software on which I worked, was written in C by Luke Sheneman and myself. After Luke left, I became enamored of C++ and wanted to adopt it for subsequent versions of I.M.A.S. I used this book to teach myself C++. Sad to say, I cringe at the quality of the code I wrote. I was green as far as being a programmer goes, though I thought myself quite experienced. And my use of C++ features was choppy. Read about a feature, then find some way to use it in the product. Read about another feature, and then find some way to use it in the product. Lippman’s primer is great for learning C++. It made me a near expert in the language. However, programming is much more than knowing language features. Broader design & architecture issues are needed. Things like what you will find in design patterns.
C++ Primer was unique for me in that it is one of the few books on programming languages that doesn’t try to teach the basics of programming (sequence, condition, iteration). Nor does it try to teach object-oriented design or programming. It teaches the language in the context of those ideas. Which somewhat explains my initial fumbled C++ code. I don’t know whether it’s better to learn object oriented first, and then try to teach C++, or whether to go the other way around. University classes try to teach such things hand-in-hand. I learned both through trial and error. Anyway, getting back to the book, the other thing I really liked about it is that it’s written somewhat textbook-like, but without condescending and space-eating end-of-chapter problem sets. I used it by semi-randomly poking around and reading about a feature and then trying it. Or I’d look up a feature and then read the tutorial-fashion description and try it. At that stage, a reference manual would have been too dense for me, but I needed something more comprehensive than most C++-in-seventeen-days style tutorials. Those ones always leave me without in-depth knowledge of the subject.
I browsed through the 3rd edition of C++ Primer at a bookstore after it came out, but it’s length put me off. There will be a few features in later C++ standards that are better covered by that and other C++ tutorials. However, the basics of the language aren’t going to change. And I believe this edition will be one of the better (and cheaper) ways to learn the language.