Programming for Non-Programmers Book

date:2007-05-31 17:02:37
category:Building Skills

The more time I spend coaching and teaching programmers, the more I am convinced that the bulk of programming is a core set of skills coupled with translations to a target language.

However, not everything that’s covered in ordinary Computer Science books is a core skill.  Some subtleties are features of specific languages or architectures; they aren’t applicable across the board to all other languages.

For example, you can spend some quality time wrapping your brain around call-by-name and call-by-value semantics.  In C, and C++, this is A Big Deal™.  In Java, it’s a subtlety that helps show the slight differences between primitive types and reference types [Types, Values and Variables ].  In Python, it can be taught as a simple feature of objects: some are mutable, some are not.

Some design patterns are important in Java, but moot in Python.  Since Python has multiple inheritance and Duck typing, the use of Strategy and other kinds of mixins isn’t as important as it is in Java.  Similarly, Python has many different flavors of Singleton, each with a distinct purpose.

Somewhere, there’s a Platonic Ideal programming language, and it has mappings into each existing language.  Each language, additionally, has some unique features that supplement this ideal language.  Some of those features are junk, but most are extensions that help solve problems in a particular domain.

Programming for Non-Programmers is my attempt at covering the core programming skills with a mapping of those skills into Python.

The book is available with a Creative Commons Attribution-Noncommercial-No Derivative Works (by-nc-nd ) license.

Previous topic

Java-related skills - response to a question

Next topic

Web Services and Architecture

This Page