Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction by Daniel Shiffman
Publisher: Morgan Kaufmann
Born in the MIT Media Lab, Processing is a language and environment for creative coding. With a simple and visually responsive environment, Processing targets artists and designers. The feedback loop is short and the language allows interesting creations with a minimum of overhead. Given its flat learning curve, Processing also serves remarkably well as an introduction to programming in general. And that's the intended audience of Daniel Shiffman's book. Learning Processing is aimed at absolute beginners.
Processing may not be the most elegant language. Beneath the hood Processing compiles to Java and uses the same syntax. What Processing offers is some initial convenience by implicit imports, a large set of functions for creative coding and a bunch of globally available context such as mouse events and window dimensions. Obviously this is a trade-off. That initial convenience becomes a burden once your programs start to grow. But somehow I'm still hooked on Processing. The rapid feedback loop with visually compelling results is quite addictive. And since Processing is possible to interface from other languages I usually play around with it from Clojure. Using Clojure allows me to get rid of much boiler plate (e.g. wrapping transformations of the coordinate system in paired calls of pushMatrix and popMatrix respectively). The resulting solutions are often remarkably short and expressive (I hope to publish some code on these pages some day).
Given that I'm already a fairly experienced programmer (at least for some definition of experienced), what did I gain from an introductory book on Processing? Initially not much. Although Daniel Shiffman made an excellent job with Learning Processing the book is a bit too basic once you've working experience with some other object-oriented language. At least the first half of the book. Later chapters became more interesting, particularly the ones on image and video manipulation.To a designer or student with little programming knowledge, Learning Processing is an excellent choice. Daniel Shiffman has a gift for making fairly advanced topics accessible. He skillfully blends illustrations with the text and makes sure to explain all the details that many other books leave out. Every code listing is carefully augmented with explanations and clarifications. Would I recommend it to an experienced programmer? I'm not sure. The reason I checked it out was through my adventures in Shiffman's other book, The Nature of Code. The Nature of Code is a more advanced text with a faster pace. It assumes a working knowledge of Processing. Although I followed along with relative ease I did notice my limited knowledge of the very basics of the language. Processing do have some quite good online tutorials. They are probably enough to learn the basics. But I've found that I learn best from more in-depth texts such as this one. I skimmed through most of Learning Processing and read the more interesting chapters in detail. That did pay-off. As I returned to more advanced texts on Processing such as The Nature of Code and Generative Design I could focus on the techniques with out the distraction of looking-up language constructs. Getting a solid foundation for future learning is always a good choice. Daniel Shiffman is a great teacher with an excellent command of both the technology and the english language. As a result, Learning Processing is a pedagogical and fluent text on an exciting subject.
Reviewed May 2013