Author: Anthony S. Briggs
Publisher: Manning Publications, 2012
Aimed at: The Python Novice
Cons: Covers too much for beginners book
Reviewed by: Ian Elliot
Python is a great language for the beginner because, while it is object oriented, you can ignore this in the intial stages. What does a book that claims to be "something completely different" have to offer?
The back jacket copy implies that this book is suitable for the complete beginner:
"No experience with Python needed. Exposure to another programming language helpful but not required."
However, in most cases it really is required that you already know a language. The reason is that it presents far too much new material in too short a time and it has a habit of using terminology and ideas that haven't been introduced.
Chapter 1 starts us off with how to find and install Python on Windows, Mac and Linux. The instructions are clear, but when it comes to testing the installation we resort to the command prompt and a text editor. Why not use Idle, Python's own IDE? Nothing more is said about the best way to create your programs, so my guess is that you are expected to carry on with Notepad or whatever text editor you picked. The fact that there are a lot of easy to use Python IDEs and that these make program creation and debugging easier, especially for the complete beginner, makes the omission all the worse.
Chapter 2 introduces Python via an example Hunt the Wumpus program. This may start out introducing the print statement with "Hello World" but four pages on we have looked at loops and variables and encountered even more advanced ideas in boxouts. For example, variables are described as being capable of storing floating point values - not a term that is explained and not one a complete beginner is likely to have encountered.
The approach to teaching seems to be to tell the reader as much as possible and show it in action in a moderately complex program example. If this is how you like to learn, then you will like this book but most complete beginners are going to be left wondering what is going on.
By the end of Chapter 2, which is fairly long, you have encountered more language features than most beginners books attempt to explain in many chapters and many more pages. Chapter 3 continues the pace with a look a libraries - again not the first thing you need to look at when trying to master the fundamentals of the language. Chapter 4 is on unit testing, which is the last straw if you really are a beginner. It might be a good thing to introduce programming methodologies early, but not everyone thinks that unit testing is the way to go and to do so before getting to grips with objects is simply crazy.
Chapter 5 is called Business-oriented programming and it covers reading files and data interchange. In describing CSV file format we have the line:
Finally, it also maps reasonably well onto most data - you can even think of it as a SQL table -
I think this is the first time I've been offered a SQL table as a way of simplifying the idea of a CVS format. There will be many an experienced programmer wanting to learn Python who has never really worked with a SQL table.
Chapter 6 finally introduces classes and objects but again via a fairly complicated example. Chapter 7 moves on to advanced classes including mixins, overriding, iterators, generators and other advanced stuff.
From here on the book moves off to consider topics that are outside of the fundamental language. Great if you want to extend your use of Python but not much help if you are travelling the long road from non-programmer to programmer. Chapter 8 is on Django, a Python web framework, Chapter 9 is on Pyglet for games, then Twisted for networking. Chapter 10 is on advanced Django and the book rounds out with a look at where next. After the range of topics covered in this introduction there isn't much that hasn't been touched on.
This isn't so much a "hello" Python, more a "Python in depth" written in very simple style, complete with cartoons. The examples are all fairly difficult to follow unless you are already happy with Python and programming in general.
The book has a basic mismatch between the attempted level of explanation and the material covered.
As a result this book isn't going to suit a complete beginner. But if you already know another programming language reasonably well, and have a reasonably good background - say enough to know what a floating point number is and a SQL table - then you might find it helpful.