Murach's C++ 2008
by Prentiss Knowlton
Rating: 4 out of 5 stars
In the current computing era of language runtimes, virtual machines, and scripting hosts, a new book on programming C++ may seem as exciting as learning COBOL. However, C++ has steadily improved over time and continues to remain the language of choice for many Windows application developers. Even with some of the dramatic performance improvements made to the managed code languages like C#, C++ is still relevant due to its granular ability to manage memory and pointers. Of course, with great power comes great responsibility, and volumes have been written on such responsibilities of C++ programmers.
Whether the desire to learn C++ is a result of a working project or the good intentions of expanding programming language diversity and understanding, Murach's C++ 2008 is an excellent teaching pedestal to gain fundamental proficiency in the language. First-time Murach-published author Prentiss Knowlton is the right teacher for the task. Not only is Mr. Knowlton a C/C++ and Java instructor at UCLA, but he also used C/C++ professionally to write modeling software for the Spirit and Opportunity Mars Rovers! Unfortunately for NASA enthusiasts, none of that code is included as part of the tutorials :-). Instead, more practical, Earth-bound, real-world examples instruct readers through the construction of a simple invoice application demonstrating most of the popular principles that C++ and Microsoft Visual C++ offer to developers.
The book consists of 19 chapters aggregated into four sections, as well as an appendix on downloading and executing the book's companion source files. The first section on writing C++ programs using the Visual Studio IDE can be quickly skimmed over for those already writing ASP.NET, C#, and VB.NET applications. The second section on C++ language essentials consists of the largest number of chapters (eight in all) for obvious reasons. Over 200 pages are dedicated to working with C++ primitives, strings, flow control, methods, events, arrays, collections, and more. The section concludes with a chapter on debugging Visual C++ programs using breakpoints and call stacks among other tools.
Section 3 covers the language's most celebrated feature, object-oriented programming. From classes, indexers, delegates, events, and operators to inheritance, interfaces, and generics, this section's five chapters describe each of these features with concrete examples, easy-to-follow code snippets, and large diagrams, screenshots, and illustrations where appropriate. The final section consists of three chapters on working with files (including XML file handling) and data streams, as well as incorporating and upsizing legacy C and C++ native code projects into the Visual C++ 2008 environment. Even though this chapter is short, I was very pleased with its inclusion, since the author has diligently considered his target audience and anticipated one of the highly probable reasons why a programmer new to C++ would consider purchasing the book in the first place.
For those interested in further considering the purchase of this book, PDFs of chapters 2 and 3 are available online at http://www.murach.com/books/pls8/chapters.htm. Although they offer a decent representative sample of the book's style, nothing beats the high-bandwidth and tactilely rewarding printed format. I am a big supporter of reading technical books in electronic book format (with EPub, the successor to the Open EBook Format, being my EBook format of choice), but Murach's titles simply wouldn't work well within today's EBook reading device screen constraints. The effortless flow of information that Murach's page layout formula delivers simply can't be replicated as effectively in electronic format. Murach has built a sizable library of titles based on this approach for a reason—the book design simply works. As such, I eagerly look forward to new Murach titles because of their high-quality writing, presentation, and packaging. Murach's C++ 2008 continues to reinforce this high expectation.
In summary, developers seeking to learn, expand, or sharpen their C++ Windows coding skills will find this book to be a worthwhile financial and time investment that will pay dividends toward better understanding and practical application use in their future projects and professional careers.
Mike Riley is an advanced computing professional specializing in emerging technologies and new development trends. He also is a contributing editor for DevConnections. Readers may contact Mike at [email protected].