In case it isn’t clear, I heartily recommend that anyone interested in learning Python or .Net purchase this book. It certainly has its idiosyncrasies, but it still manages two roles very successfully: 1) introductory text and 2) reference manual. While novice readers (like myself six months ago) will find tremendous value in reading the book from cover to cover, more experienced hands will find value in skimming individual chapters. As someone who has written technical documentation, I can testify that such a feat is extremely difficult to pull off.What is unusual is that he took away something from the book that was quite unanticipated by Christian and myself: "While I initially set out with a desire to learn a skill, I instead received an education. In the process, I got excited about programming, Python, and Open Source". Rob feels that instead of just showing how to use IronPython, the book caused him to examine his approach to programming. In fact he starts his review by asking: Is IronPython valuable for people who are new to Python or .Net programming? More to the point, can it be used to teach a novice “how to fish?”.
This reaction wasn't as a result of a deliberate agenda on our part, we simply wanted a book that would be relevant to both Python programmers interested in .NET and .NET programmers interested in dynamic languages. Naturally this meant that the book needed to start with a Python tutorial (chapter 2) and an introduction to .NET (chapter 3) that also shows how IronPython integrates with the underlying platform.
It is however no secret that I'm particularly enamoured of the lightweight approach to object-oriented programming that Python affords. Although the main goals of chapters 4-6 are to introduce new Python features to .NET programmers (lambdas, properties, first-class functions, etc) and new .NET libraries to Python programmers (XML, Windows Forms, .NET serialization, etc), there is a reason I chose a structured application using several object-oriented design patterns as the example.
Developers who have mainly worked with statically typed languages often have an odd idea about dynamic languages; that they make it harder to create large scale maintainable applications. Meanwhile, developers who mainly use dynamically typed languages like Python think the opposite - and feel that creating large projects in more verbose languages is a maintenance nightmare waiting to happen! (Even though the IDE will help you write the code, you typically spend more time reading code than writing code - so verbosity imposes a cognitive burden even if you can write the stuff just as fast.) By showing off the features of both Python and the .NET framework through building a well structured (if rather small) example, I hoped to demonstrate that dynamic languages make clean and elegant designs possible.
Rob ends the review with:
To answer my own question: Can IronPython in Action be used to teach a novice how to “fish?” Most definitely.