Sunday, November 24, 2013

2013-11-24 Sunday - Book Review: Python In Practice

I recently had an opportunity to read Python in Practice, by Mark Summerfield as a reviewer for Pearson Education.

Two noteworthy points:
- The code samples are based on Python 3.x
- The author's web site provides sample code download

The very first thing I noticed about this book is that the sample bits of code are very concise - without extraneous fluff.

This book is an excellent addition to any software craftsman's library that needs a quick dive into practical hands-on Python coding.  Each page has a feeling of being written from the perspective of someone who has lived in the trenches producing production-quality python code for over a decade. This book has the feeling of a friendly mentor's guiding hand.

To help you understand the impression that this book left in my mind, let me share another word that arose unbidden in my mind as I made my way through the pages of this book: In Japanese, the phrase "Sensei" is often translated as "teacher", but also has a literal meaning of "One Who Has Gone Before". Mark's transmission of his depth of experience to the printed word is given in that same spirit of a Sensei teaching lessons gleaned from years of practice.

Another unexpected pleasure discovered within the pages of Mark's book: An emphasis on patterns. The first three chapters provide an excellent overview of the python-esque approach to implementing the various patterns that were described in the book Design Patterns: Elements of Reusable Object-Oriented Software.

I also found Chapter 5. Extending Python to be very interesting for focusing the discussion on Python's ctypes and Cython - techniques which are often needed to solve high performance problems.

One minor criticism is the author's choice in focusing on XML-RPC style in Chapter 6. High Level Networking [versus RESTful web service based integration strategies]

Chapter 1. Creational Design Patterns
1.1 Abstract Factory Pattern
1.2 Builder Pattern
1.3 Factory Method Pattern
1.4 Prototype Method Pattern
1.5 Singleton Pattern
Chapter 2. Structural Design Patterns
2.1 Adapter Pattern
2.2 Bridge Pattern
2.3 Composite Pattern
2.4 Decorator Pattern
2.5 Facade Pattern
2.6 Flyweight Pattern
2.7 Prox Pattern
Chapter 3. Behavioral Design Patterns
3.1 Chain of Responsibility Pattern
3.2 Command Pattern
3.3. Interpreter Pattern
3.4 Iterator Pattern
3.5 Mediator Pattern
3.6 Memento Pattern
3.7 Observer Pattern
3.8 State Pattern
3.9 Strategy Pattern
3.10 Template Method Pattern
3.11 Visitor Pattern
3.12 Case Study: An Image Package
Chapter 4. High-Level Concurrency
4.1 CPU-Bound Concurrency
4.2 I/O Bound Concurrency
4.3 Case Study: A Concurrent GUI Application
Chapter 5. Extending Python
5.1 Accessing C Libraries with ctypes
5.2 Using Cython
5.3 Case Study: An Accelerated Image Package
Chapter 6. High-Level Networking
6.1 Writing XML-RPC Applications
6.2 Writing RPyC Applications
Chapter 7. Graphical User Interfaces with Tkinter
7.1 Introduction to Tkinter
7.2 Creating Diaglogs with Tkinter
7.3 Creating Main-Window Applications with TKinter
Chapter 8. OpenGL 3D Graphics
8.1 A Perspective Scene
8.2 An Orthographic Game

No comments: