Despite over a decade of C++ programming skill I am still impressed by what the language has to offer despite fierce competition from other languages like C#, Java, Python and Ruby. So the opportunity to review C++ books that go past the basic language constructs and delves into the nitty-gritty in a practical and useful way are always worth a read. This book on the Boost libraries is no exception.
Boost offers a brilliantly throughout collect of programming libraries that were not integrated into the C++ standard and so they were crafted as an add on to provide exceptional versatility for the intermediate to advanced programmer. This cookbook does a great job at presenting many of the features available in Boost but requires the reader to be above novice level, that’s not a bad thing because once you get past being a novice, your object design skills improve and you seek out more ways to maximize the power of your application in as small a code base as possible.
The cookbook provides 80+ topics that give enough of a taste of the workings and functionality available in the library without being a reference manual. Because of the extensive nature of the Boost libraries (over 90 different libraries available), almost every topic can be expanded upon in a book on its own with topics such as Boost ASIO and Boost Threads as examples.
It did take me a long time to read and get my head around the book, many sections I had to re-read two or three times, partly because I wanted to be accurate when quoting anything in the review but also because the concepts and implementation on offer from the library was new and interesting and led me to further research.
The book does a good job at wetting your appetite on what is available in the library, the list below (derived from the index of the book) is just a very small example of what is available:
- Converting Data – string to numbers and vice versa as well as parsing
- Managing Resources – pointer manipulation
- Compile Time Tricks – types & templates
- Multithreading – Introduction to threading and locking
- Manipulating Tasks – timers, networking, parralle processing, exceptions and signals.
- Manipulating Strings – advanced ways to manipulate strings
- Metaprogramming – vectors and meta functions
- Containers – Comparing and usng different containers.
- Platform Information – Runtime type information, code size, exporting functions
- Working with the System – File system oriented tasks
- Scratching The Surface – Maths, Graphs and images.
I found the content of the book raised my interest level enough that I followed the “See also” links to more in-depth information. In all, the book is an excellent resource to point you in the right direction for relevant information to solving real world tasks. I can see myself using this cookbook as a reference and first point when looking for a solution to a programming problem.
If I was to say anything negative about the book it would be the orientation towards implementing templates, the book does use a lot of references to them,but its not aimed at a novice so an advanced C++ programmer comfortable with templates would have no issues.
In all, its a book to have on the desk during a complex C++ project!