How does one learn a language? Well, when I learned C++, I read two books:
Then I looked at some existing systems (ET++, SGI's Inventor) to see how they had implemented some of the constructs that I wanted to use, and I was off. Now it is only practice, and ``sharpening the saw'' - researching how others use the language to improve my usage.
- Lippman's Book gave me the basics of the language - the syntax - and a small amount of semantics. It enabled me to see how to use the language to accomplish what I wanted to do.
- Scott Meyer's Book gave me a set of concrete ideas that enabled me to get started quickly with the language, and, most importantly, avoid many pitfalls.
I still reference these basic books frequently. But along with these books there are several others that I utilize, and these are all described below.
Coplien, James O., Advanced C++ : Programming Styles and Idioms, Addison-Wesley Publishing Company, Reading MA, 1992, ISBN 0-201-54855-0.
This is a fine book for the programming language enthusiast - not from the new language viewpoint, but in implementing constructs from other languages in C++. Unfortunately, much of the material is beyond scope of what most applications programmers need to produce with C++, but his definition of the Orthodox Canonical Class Form, utilizing ``boiler plate'' member functions came very close to the ``complete class'' paradigm, that I developed from Meyer's book with. These notes utilize his term of a ``concrete data type'', which describes well the concepts that I attempt to utilize.
Lippman, Stanley B., C++ Primer, 2nd Edition, Addison-Wesley Publishing Company, Reading, MA, 1991, ISBN 0-201-54848-8.
This is my favorite C++ language book. It contains a straightforward treatment of the language, from elementary principles to templates. I find it is the first book that I look at when I need to know something about the language. I find things easy to find through the index and, whereas I may not get my question directly answered, It puts me onto a track where I can get my problem solved. I note that this was the first book I read on the language and so I seem to be partial to it. The other good language reference book on C++ is, of course, Bjarne Stroustrup's book, which I also recommend and which many of my students and colleagues prefer.
Meyers, Scott, Effective C++ : 50 Specific Ways to Improve Your Programs and Designs, Addison-Wesley Publishing Company, Inc., Reading, MA, 1992, ISBN 0-201-56364-9.
This is my favorite book on how to improve your C++ programming. Meyers presents 50 ideas on how to improve your use of the C++ language. His work focuses on techniques that, when correctly utilized, allows the programmer to generate classes that act like built-in types in the language. This means that any class defined through these principles can be utilized exactly as would a built-in type in the language. I have utilized these principles extensively in my implementations and it has improved my production tremendously.
Stroustrup, Bjarne, The C++ Programming Language, 2nd Edition, Addison-Wesley Publishing Company, Reading MA, 1992, ISBN 0-201-53992-6.
This is the second edition of the first good language book on C++ - written by the designer of the language. In general it is a very good reference book but, as with many of the researchers who do the original work in the field, this author seems to get caught up in too many of the details of the language, and it is more difficult for those who wish to produce with the language to find the information in his book. It should be noted that this book has been greatly expanded from the first edition (from which most of my difficulties came), and I do have it on my reference shelf (actually, both editions) and use it frequently. I typically use it as the ``last resort'' - that is, when I cannot find some detail anywhere else, I typically find it here.
Gamma, E., R. Helm, R. Johnson, and J. Vlissides, Design Pattern: Elements of Reusable Object-Oriented Software, Addison-Wesley Publishing Company, Reading, MA, 1995, ISBN 0-201-63361-2.
This is actually an advanced software engineering book, but has many incredible ideas of how to design classes in C++. It is written by the authors of the ET++ package, which I initially reviewed as a good example when I was first learning the language. For the C++ programmer who wants to find out about advanced ideas in an easily accessible format, this is the book.
This document maintained by Ken Joy.
Comments to the author : email@example.com
All contents copyright (c) 1998
Computer Science Department, University of California, Davis
All rights reserved.