Murach's C++ Programming

Author: Joel Murach
Publisher: Mike Murach & Associates
Pages: 770
ISBN: 978-1943872275
Print: 1943872279
Audience:C++ developers
Reviewer: Mike James
C++ is a tough language and this is a very big book!

C++ is a controversial language that divides programmers. Some think it is a terrible mess of different ways of achieving anything and some simply embrace the mess and get on with it. What does this mean for the beginner? It is possible to present C++ as a very logical and very clean language and leave the confusion and complexity for later.

Murach books are generally logical and complete. That is, they are not "fireside chats" about a language, but detailed textbooks that proceed through the material as if it was all logical and connected, and so it is with this book.

The first section is about "Essential skills" which basically means that it is an introduction to programming using C++. This is hard to get wrong and the book makes its way through the usual topics - a first program, conditionals, loops, I/O, basic data types, functions and testing and debugging. I'm pleased that testing and debugging are included here as many books skip this all together. The descriptions of things are simple and mostly very clear. Included with each topic is a table of variations of the syntax and a list of very simple examples. In this case very simple is best. The IDE's used are Visual Studio and XCode. Personally, I think that NetBeans would have been a better choice as it runs under Windows, Linux and Mac. Essentially this part of the book is dealing with C++ as if it was C - no confusing objects except for using them where unavoidable, e.g. strings.


Section 2 is about more skills - in this case mostly using the STL - the Standard Template Library. In most books this is left until much later. The STL is generally considered to be advanced, but it isn't and putting it this early has lots of practical advantages. Having said this, it has to be admitted that the level increases at this point, but it still has the same very simple examples which make it easier. Towards the end of this section we also meet C-style null terminated strings - one of the disadvantages of C++ as a teaching language is that it has all of C within it and we have to deal with high level and low level programming.

Section 3 is about object-oriented programming, which can be avoided no longer. The idea of class and object is introduced by way of an example. Most of this part is illustrated by bigger examples because we have moved on from explaining single statements or features and are now discussing how the whole thing works together. There is just so much to master.

The final section is titled "Skills for legacy and generic programming". I'm not sure what legacy and generic have in common. It starts with a look at C-style pointers and memory management. It is sad that we have to go back to such low-level techniques in a language that is supposed to be high-level. The book does do a good job of explaining how best to use objects to make memory management less dangerous. We also learn how to create templates and this helps with understanding the STL.


Overall this is a good book aimed at the beginner who needs lots of simple examples - and who doesn't? As the book progresses it gets into deeper technical water and you are probably going to need time for it all to sink in. I would have liked a bit more general discussion of how things fit together and how to think about the more difficult concepts - the book tends to rely on bigger examples to demonstrate these ideas, but overall it does a good job. Unlike many books on the subject it does cover the lower-level aspects of using C++ and does attempt to integrate them with the higher-level aspects of the language. Notice that all of the examples are command line programs - the difficult problem of graphics and creating a GUI are not covered and this is perfectly reasonable.

As long as you are prepared to work your way through this book carefully and spend time making sure you understand, this book will get you there without gimmicks, tricks or over-excitement. It would make a good course textbook.

To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.


Lean DevOps

Author: Robert Benefield
Publisher: Addison-Wesley
Pages: 368
ISBN: 978-0133847505
Print:  0133847500
Kindle: B0B126ST43
Audience: Managers of devops teams
Rating: 3 for developers, 4.5 for managers
Reviewer: Kay Ewbank

The problem this book sets out to address is that of how to deliver on-demand se [ ... ]

Modern Software Engineering (Addison-Wesley)

Author: David Farley
Pages: 256
ISBN: 978-0137314911
Kindle: B09GG6XKS4
Audience: Software Engineers
Rating: 3.5
Reviewer: Kay Ewbank

This book is subtitled 'doing what works to build better software faster' - does it teach you how to achieve that?

More Reviews

Last Updated ( Tuesday, 13 August 2019 )