I wish that this book had been available 3 years ago, when I started programming with Mathematica®. I was not then aware of the earlier edition, but in any case that edition related to Mathematica version 5, and versions 6 and 7 introduced many significant changes that made for compatibility problems with earlier code. Indeed this edition is slightly out of date because it covers Mathematica 8 and not the latest version 9.
However, as an introduction to the essentials of programming with Mathematica, it is excellent, and is particularly helpful in explaining the differences between Mathematica® and other languages. The author also introduces new topics using full notation and avoids the Mathematica shorthand that makes code much shorter but also much more difficult to comprehend. The differences between symbolic and numerical computing are made clear and the numerous worked examples and problems are especially relevant and useful.
I also have copies of Stephen Wolfram’s “The MATHEMATICA ® Book”, Version 5, and Heikki Ruskeepaa’s “Mathematica Navigator”, Third Edition. The former is now out of date, stopping at Mathematica version 5, and Paul Wellin is much more successful than Stephen Wolfram at explaining how to actually use Mathematica. “Mathematica Navigator” is a very good general reference and covers more Mathematica features, such as the data functions, but is basically written about Mathematica version 6, with addenda to cover version 7, and is not as good at explain the fundamentals of Mathematica programming.
None of these books provides a comprehensive reference to some very important features of Mathematica, and its own documentation is also deficient in these areas. Mathematica can import and export data from a very broad range of sources and in a wide range of formats, but actually processing imported data in a Mathematica notebook, or preparing data for export, must frequently be learned by trial and error. Similarly, of the more than 3000 functions in Mathematica, only the mathematical functions are explained in more than perfunctory detail, and then on a separate website, whilst general data functions, such as Country Data, Financial Data and Weather Data, have only rudimentary descriptions. These general references, descriptions and explanations may be outside the scope of an introduction to Mathematica programming, but there is an unfulfilled need for a set of books covering the broader aspects of Mathematica, and Paul Wellin has shown that he could be ideally qualified to satisfy that need.
This is an excellent book. It goes beyond just showing nice examples of Mathematica results, as many other books. It carefully builds up the readers programming skills. Early examples are revisited later in the book for more advanced programming techniques. The style of the text always focussed on the question at hand. The language is open and inviting to the reader, even for readers (like me) who are not native speakers of English. (A point often overlooked by authors!) I own several Mathematica books, but from now on Paul Wellin's book is the first one I consult whenever I run into a problem. Five stars, well deserved!