This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
<pre>Author/s : D. Ryan Stephens, Christopher Diggins, Jonathan Turkanis, Jeff Cogswell Publisher : O'Reilly Category :Other Review by : Lasse Koskela Rating : 8 horseshoes</pre> I haven't done much professional work with C++ and I've stayed away from doing anything really difficult with it outside work as well. To my delight, I found "C++ Cookbook" to be rather easily approachable even with a weaker command of the intricacies of the language. I wouldn't say that knowledge just absorbed from the pages to my head but the authors also didn't make it any harder than necessary.
The book starts with a quite thorough coverage of a topic I was surprised to see in a book with this title--building C++ applications. The authors spend some 90 pages for showing how to build libraries and applications from the command line (with seven different compiler toolsets!), and using both Boost.Build as well as GNU make build tools. Those 90 pages effectively make up chapter 1.
In part due to the authors covering so many compilers and platforms, the beginning of the book gives me a bit "shattered" perception. Even though I did get the first compilation examples working (with GCC on Linux), my patience simply stopped with Boost.Build which seems quite interesting on the surface but was pure hell to get working purely based on the examples in the book. Even though the discussion following each recipe does contain a lot of useful information, really explaining some things rather well, I'd perhaps still suggest learning this kind of basics from a dedicated textbook rather than from a "cookbook" like this one.
The rest of the book's 15 chapters take on a bit more specific topics and show how to tackle certain common problems or tasks--the usual Cookbook style stuff. What's perhaps more interesting about these chapters is how well the problems the authors have captured match the problems the reader is facing. From my perspective, they've done a pretty good job. Instead of showing off how to parse custom syntax into an abstract syntax tree, the authors have picked real world topics such as how to randomly shuffle data.
Even as an inexperienced C++ programmer, I could tell that there would've been a lot more ground to cover about organizing your code, for example, as well as about algorithms, internationalization, and XML. Having said that, the bits that the authors have chosen to deal with within the constraints of the page count seem quite appropriate from my perspective. Furthermore, as a reader I wouldn't expect a general cookbook to cover everything under the Sun but to focus on the most common problems. All in all, quite a good reference for a beginning C++ programmer.