+-----------------------------------------------------------------------------+ | | | Book Reviews: C++ | | | | by D!99y Dud3 | | | +-----------------------------------------------------------------------------+ Gr33tz, and welcome to another phun-philled issue of the D!99y Philes! At some point in the last few months, I came to the conclusion that my embedded C++ programming skills needed to evolve beyond the over-simplified (and resource-intensive) Arduino hobbyist dialect and into the realm of efficient real-time application programming. I had previously read a few beginner's books on C++ in the early 1990s, and thought I had a fairly good handle on it. To that end I bought Christopher Kormanyos' "Real-Time C++" and jumped right in. Well, C++ has changed quite a bit since the 90s, so as to barely resembles the language I became familiar with back then. Consequently, I found Kormanyos' code examples incomprehensible. It was time for a refresher course in the fundamentals of C++ programming. Consulting Kormanos' own suggested reading and several programming-related Web forums, I quickly settled on two books: Bjarne Stroustrup's "A Tour of C++" and Scott Meyers' "Effective C++". Those are the two books I'll be reviewing today. I'll review "Real-Time C++" when I return to it later. Stroustrup is the inventor of C++. He originally called it C with Classes, but a colleague started calling it C++, a moniker that stuck and soon became the official name of the language. While Stroustrup's manner is cheery enough, he's still a scientist and professor, and his matter-of-fact writing style tends to reflect that. I'm not saying "A Tour of C++" is a dry or boring book, but it is a very slender volume aimed at introducing basic concepts of C++ to programmers coming from other languages, and it mostly succeeds at that. However, it is not intended to be a C++ tutorial. As Stroustrup himself points out, there are plenty of other books that fulfill that role. Consequently, you're not likely to learn how to program in C++ from reading it. It's a fine book that serves its purpose, as long as you don't get unrealistic expectations about what that purpose is. The material in "A Tour of C++" is a condensed version of parts of Stroustrup's much more comprehensive work, "The C++ Programming Language", which I haven't read but presume to be the authoritative volume on this subject matter. It's likely you'll have a better chance of becoming a competent C++ programmer if you read the latter, but before you do that, read on and learn why the next book under review may be a better deal. Meyers' book is where I really started to grasp the concepts introduced by Stroustrup. Meyers is a leading expert on C++, but his real gift lies in his ability to teach it in a clear and concise manner. "Effective C++" and its sequels not only tell you what to do and what not to do, they dig down into the nuts and bolts of C++ and its libraries, compilers, and linkers to explain why some programming habits will result in robust programs while others are a sure ticket to debugging hell. Meyers wastes no time getting down to brass tacks, and "Effective C++" is a brisk read as a result. I could tell almost from the first page that I was about to learn the straight dope. I highly recommend this book to every C++ programmer, regardless of skill level -- although I suspect that most advanced C++ programmers already have a well-thumbed copy. I intend to purchase the sequels, "More Effective C++" and "Effective STL" the first chance I get. As I said, I took a detour from "Real-Time C++" to read the two books reviewed here, and I'll be reviewing it in a future textphile. ------------------------------------------------------------------------------- If this phile gripped you more than a muddy old river or reclining Buddha, please re-upload it to as many BBSes as you can. Danke schoen! Oh, and tell them you stole it from one of these fine boreds: Agency BBS Borderline BBS Sysop: Avon Sysop: Balzabaar telnet://agency.bbs.nz telnet://borderlinebbs.dyndns.org:6400 -------------------------------------------------------------------------------