June 5, 2020

Programming Python

This is a review of the book "Programming Python" by Mark Lutz. I have the first edition of the book (circa 1996). The book it available in a fourth edition. I have the third edition on order and am curious to see if some of my complaints have been addressed. Edition 3 covers Python 2.5 -- Edition 4 covers Python 3.

All told, I would give the book a hesitant 3 out of 5 stars. These days, if you want to learn Python, you are probably better served using online resources.

The book is by no means a reference, which is sort of what I wanted and expected. It is more of a long and rambling tutorial. Being so long and rambling, it doesn't serve well as a tutorial. You can most definitely learn a lot about Python from the book, but you will have to accept doing it by wandering around and being subjected to a lot of repetition.

The books feels 20 years old. I remember when GUI programming using scripting languages was new and amazing, and this book seems to invest a fair bit of energy on that. The same could be said about using as an example a set of scripts to expedite the transfer of a collection of files over a modem.

So the book fails at being either a tutorial or a reference. So what is it good for exactly? It probably serves best to take a person from being a beginner with the language to being skilled at an intermediate level. If you are writing simple Python programs and want to get to the next level, this book could be a useful tool.

The book is poorly organized. This manifests itself in two ways. Concepts are used before they are explained (such as exceptions). Detailed explanations are continually postponed as we are told over and over that a certain topic will be addressed in detail later. Without question this is a challenge for anyone writing a book like this, but we expect the challenge to be addressed and overcome.

Some peeves

I wish there was less Python fanboy talk. I want to learn how to use Python, not be subjected to a bunch of Python advocacy. If I wasn't already convinced that Python was worthwhile, I wouldn't be learning the language and wouldn't have bought the book.

I find some of the terminology peculiar and antiquated. What are "shell tools" -- nobody uses this term. It turns out that they are simple system administration scripts. So, just call them scripts. But what are scripts anyway other than short programs you write in whatever language is handy to help you get your job done? When does a script become a program? Just call them programs and get on with it.

Sometimes Lutz calls Python a "rapid development language". I am not sure what this really means. It straddles the fence between some kind of advocacy (the word "rapid") and an apology -- as if you will generate a prototype in Python and then when you get time, recode it in some "real language", whatever that may be. This phrase should simply be lost, forgotten, and avoided.


Feedback? Questions? Drop me a line!

Tom's Computer Info / tom@mmto.org