|Murach's C++ Programming|
Author: Joel Murach
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.
|Last Updated ( Tuesday, 13 August 2019 )|