Review of Thinking in C++ Vol. 1, 2nd ed. by Bruce Eckelavailable free online .Thinking in C++ may be the perfect introductory book to C++ for the experienced C programmer. For someone comfortable (or even lightly experienced) with C syntax, this book does everything right. It explains all the new functionality of C++ one feature at a time, such that after reading each chapter, you have a new tool or two to add to your toolbox. While not being overly verbose, it doesn't fall into the trap of oversimplifying the language or relying on useless metaphors to explain how things work. It explains how the new features work directly on the machine--from explaining how virtual function calls find the correct code to be executed to how, when, and where various declarations allocate memory. This may seem like unnecessary detail for a new C++ programmer and may indeed be hard to grasp at first. However, since we're assuming the reader knows a good bit of C, explaining the evolution of C++ from C shows why and how many features came to be (ie, if efficiency is of no concern, many features in C++ seem needless). Providing these reasons makes features easier to remember, gives background on the appropriate use of various facilities, and gives the reader that extra bit of low-level knowledge that may someday help track down some insidious bug that would otherwise mystify the would-be C++ programmer. Despite the attention to detail, this is not simple a C++ syntax reference: Eckel goes into great care to show how and when each feature should be used, and thus, introduces the reader to object oriented programming while teaching him or her C++. After all, classes, virtual functions, and inheiritance all make little sense outside the context of OOP. While another C++ introductory text may teach the reader all the same concepts in much less time, the reader of Thinking in C++ will be much better equipped to immediately starting hacking out code using the concepts of C++ and OOP. Readers of more basic texts would often be more inclined to use advanced C++ features incorrectly, inefficiently or inappropriately. Bottom LineThis book (and its brother, Vol. 2) is recommended for
anyone (especially C hackers) serious about learning and using the fulll power
of C++ in the most efficient manner possible. That said, if the reader is
already proficient in the design of programs in some other object-oriented
language (say, most Rice CS students who are quite proficient in Java), this
book may be a little dry, and the reader may have a difficult time extracting
the information he or she wants (the C++ syntax and correct usage) from the
integrated information on OOP. An experienced Java programmer really just
needs to know how to map the C++ language onto their existing understanding of
OOP and Java, and for that purpose, a much shorter text, such as Brown
University's Java
to C++ Transition Tutorial may suffice and bring the reader up to speed much
more quickly. The section on templates, however, would be useful for
anyone since Java (except GJ or DrJava) doesn't contain a similar facility.
Written by Jacob Mundt, last modified 1/28/02 |