REVIEW - C++ from Scratch

Title:

C++ from Scratch

Author:

Jesse Liberty

ISBN:

0789720795

Publisher:

Que Publishing (1999)

Pages:

417pp

Reviewer:

Francis Glassborow

Reviewed:

February 2000

Rating:

★★☆☆☆

There is a lot that I like about this book. I approve of the general approach to learning by introducing syntax on a basis of need to know etc. However I think there are two big caveats, this book is not for the programming virgin because it assumes the reader can make sense of a number of technical issues. It sometimes fails to stick with the criterion of only introducing things on a basis of need.

What sort of sense do you think a pv would make of:

When I have constants that belong together, I can create enumerated constants. An enumerated constant is not quite a type, it is more of a collection of related constants.

Even if you know what the author is getting at you would probably be unhappy with those two sentences. Just look at that second sentence where one suddenly becomes a collection of several.

Then, all through the book we can see places where the author is pre-occupied with something he found difficult without stopping to ask if the reader has any need to know. For example in chapter 5 he spends a bundle of time on pre-processor macros. Eventually a programmer probably needs to know about these because s/he will come across them in other people's code but surely not at this stage. And there is no reason for creating ASSERT as a macro function in C++. There are other ways that substantially avoid using a macro function.

Chapter 6 (irritatingly there is a typo in the header for pages in that chapter so it gets highlighted as 'Chapter 1') is about linked lists. The author knows about the STL so why is he spending a whole chapter on this subject at this stage, rolling his own linked list. Remember this is a C++ beginner's book. Yes, every programmer should once in their lives write their own implementation of a linked list, but not at this stage.

Chapter 13 is on persistence. This is another very difficult topic that I contend has no place in a book for novices.

In summary, the author understands the learning process and makes all the right noises. However he does not understand the need for simplicity that the genuine novice has. I can imagine most readers getting quickly lost in trying to work from this book. If they have enough experience to cope with this book they could happily use such works as The C++ Programming Language 3rd ed or The C++ Primer 3rd ed and get a fuller and more rounded view of the language. If they can benefit from what Liberty set out to write then the irrelevant and overly complicated material needs to be cut out.


Book cover image courtesy of Open Library.