Author: Terry McNavage
Publisher: Apress, 2011
Cons: Disorganised and confusing
Reviewed by: Ian Elliot
The author of this book tries very hard to be user friendly but really hasn't much idea what a beginner needs. Its the equivalent of speaking slowly but not really changing what is said.
Chapter 2 jumps in with type conversion and we have longer and longer boring examples and screen dumps that are very difficult to read. This makes it harder but why deal with type conversion at a point were the beginner hasn't even got a clear idea of type and hasn't been introduced to flow of control or anything that even looks like a program? By page 32 we are using string functions to find substrings and so on but still don't know about functions, for loops or ifs. Chapter 3 focuses on operators and is complete, exhaustive and for a beginner exhausting.
At Chapter 4 we finally reach controlling flow - but we suddenly take a huge jump in that we are now using functions. As the chapter opening says - Chapter 6 more fully covers functions - true but why introduce them in Chapter 4 where they are quite unnecessary to explaining the flow of control?
Chapter 5 is on member inheritance - we have no clear idea of an object and the book deals with inheritance. It's not even as if the chapter sticks to simple inheritance - it introduces mixins using deep copy! Chapter 6 deals with functions and arrays which is an interesting coupling. Despite the fact that the book has been using functions as examples and as constructors in the previous chapter we are back to square one with why use functions.
At this point it is clear that the book has morphed into an advanced text book with an occasional "speaks slowly" introduction. Conditional advance loading, lazy loading, closure and recursion are not subjects that a beginner needs to deal with when learning the basics of functions. There is also a lot of mixing of concepts - basic fundamentals like closure and recursion are mixed in with practical considerations like lazy loading. It's simply confusing.
You can probably work out that I don't like this book. It's not that I don't like it, more that it is completely unfit for its stated purpose and would probably put a beginner off programming for life. If you are a beginner - avoid it.
So beginner or expert alike - go find a different book.