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.


The Pragmatic Programmer (2e)

Author: David Thomas, Andrew Hunt
Publisher: Addison-Wesley
Pages: 352
ISBN: 978-0135957059
Print: 0135957052
Audience: Programmers
Rating: 5
Reviewer: Mike James
This is a classic and its 20th Anniversary edition, its second edition, give us a chance to catch up with it.

Scratch Programming In Easy Steps (2e)

Author: Sean McManus
Publisher: In Easy Steps (2019)
Pages: 216
ISBN: 978-1840788594
Print: 1840788593
Kindle: B00IDDZL78
Audience: Kids, their parents and teachers
Rating: 5
Reviewer: Lucy Black

What's Scratch all about and how do you use it? This book has the answer.

More Reviews

Last Updated ( Tuesday, 13 August 2019 )