Python in Practice: Create Better Programs Using Concurrency, Libraries, and Patterns (2014)

A. Selected Bibliography

C++ Concurrency in Action: Practical Multithreading

Anthony Williams (Manning Publications, Co., 2012, ISBN-13: 978-1-933988-77-1)

This challenging book covers concurrency in C++ but is valuable because it describes many of the problems and pitfalls that can afflict concurrent programs (regardless of language) and explains how to avoid them.

Clean Code: A Handbook of Agile Software Craftsmanship

Robert C. Martin (Prentice Hall, 2009, ISBN-13: 978-0-13-235088-4)

This book addresses many of the “tactical” issues in programming: good naming, function design, refactoring, and similar. The book has many ideas that should help any programmer improve their coding style and make their programs more maintainable. (The book’s examples are in Java.)

Code Complete: A Practical Handbook of Software Construction, Second Edition

Steve McConnell (Microsoft Press, 2004, ISBN-13: 978-0-7356-1967-8)

This book shows how to build solid software, going beyond the language specifics into the realms of ideas, principles, and practices. The book is packed with examples that will make any programmer think more deeply about their programming.

Design Patterns: Elements of Reusable Object-Oriented Software

Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (Addison-Wesley, 1995, ISBN-13: 978-0-201-63361-0)

This is one of the most influential programming books of modern times. The design patterns are fascinating and of great practical use in everyday programming. (The book’s examples are mostly in C++.)

Domain-Driven Design: Tackling Complexity in the Heart of Software

Eric Evans (Addison-Wesley, 2004, ISBN-13: 978-0-321-12521-7)

This is a very interesting book on software design, particularly useful for large, multiperson projects. At heart it is about creating and refining domain models that represent what the system is designed to do, and about creating a ubiquitous language through which all those involved with the system—not just software engineers—can communicate their ideas.

Don’t Make Me Think!: A Common Sense Approach to Web Usability, Second Edition

Steve Krug (New Riders, 2006, ISBN-13: 978-0-321-34475-5)

This is a short and practical book on web usability based on research and experience. Applying the easy-to-understand ideas in this book will improve any web site of any size.

GUI Bloopers 2.0: Common User Interface Design Don’ts and Dos

Jeff Johnson (Morgan Kaufmann, 2008, ISBN-13: 978-0-12-370643-0)

Don’t be put off by the slightly whimsical title; this is a serious book that every GUI programmer should read. You won’t agree with every single suggestion, but you will think more carefully and with more insight about user interface design after reading this book.

Java Concurrency in Practice

Brian Goetz, et. al. (Addison-Wesley, 2006, ISBN-13: 978-0-321-34960-6)

This book provides excellent coverage of concurrency in Java. The book contains many tips on concurrent programming that are applicable to any language.

The Little Manual of API Design

Jasmin Blanchette (Trolltech/Nokia, 2008)

This very short manual (available for free from www21.in.tum.de/~blanchet/api-design.pdf) provides ideas and insight into the design of APIs and draws most of its examples from the Qt toolkit.

Mastering Regular Expressions, Third Edition

Jeffrey E.F. Friedl (O’Reilly Media, 2006, ISBN-13: 978-0-596-52812-6)

This is the standard text on regular expressions. It is written in an accessible manner with lots of fully explained and practical examples.

OpenGL® SuperBible: Comprehensive Tutorial and Reference, Fourth Edition

Richard S. Wright, Jr., Benjamin Lipchak, and Nicholas Haemel (Addison-Wesley, 2007, ISBN-13: 978-0-321-49882-3)

This is a good introduction to 3D graphics using OpenGL, suitable for programmers without prior 3D graphics experience. The examples are written in C++, but the OpenGL APIs are pretty faithfully reproduced in pyglet and other Python OpenGL bindings, so the book’s examples can be used without too much adaptation.

Programming in Python 3: A Complete Introduction to the Python Language, Second Edition

Mark Summerfield (Addison-Wesley, 2010, ISBN-13: 978-0-321-68056-3)

This book teaches Python 3 programming to people who can program in any other conventional procedural or object-oriented language (including Python 2, of course).

Python Cookbook, Third Edition

David Beazley and Brian K. Jones (O’Reilly Media, 2013, ISBN-13: 978-1-4493-4037-7)

This book is full of interesting and practical ideas covering all aspects of Python 3 programming. It is an excellent companion to Python in Practice.

Rapid GUI Programming with Python and Qt: The Definitive Guide to PyQt Programming

Mark Summerfield (Prentice Hall, 2008, ISBN-13: 978-0-13-235418-9)

This book teaches GUI programming using Python 2 and the Qt 4 toolkit. Python 3 versions of the examples are available from the author’s website, and almost all of the text applies to PySide as well as to PyQt.

Security in Computing, Fourth Edition

Charles P. Pfleeger and Shari Lawrence Pfleeger (Prentice Hall, 2007, ISBN-13: 978-0-13-239077-4)

This book provides interesting, useful, and practical coverage of the broad range of computer security issues. It explains how attacks can be made and how to protect against them.

Tcl and the Tk Toolkit, Second Edition

John K. Ousterhout and Ken Jones (Addison-Wesley, 2010, ISBN-13: 978-0-321-33633-0)

This is the standard text on Tcl/Tk 8.5. Tcl is an unconventional, almost syntax-free language, but this book is useful to learn how to read the Tcl/Tk documentation, since this is often necessary when writing Python/Tkinter applications.