Book Reviews

Thinking Forth by Leo Brodie

ISBN-13: 978-0976458708
Publisher: Punchy Publishing
Pages: 316

Forth has the characteristics that make a language attractive to me: expressiveness, minimal syntax, immediate feedback, and a natural way to grow. Combining these properties sets the stage for good design by iteratively letting us build the language towards concepts in the current problem domain. Forth also puts the constraints where they should be; on the skill and creativity of the programmer. Thinking Forth describes a way to think about programming as a creative process. And it does so in an entertaining and pedagogical way. The result is a brilliant work that stands as some of the best software writing I've read.

Thinking Forth never quite made it to the true classics of programming books. When discussing the book, it is often pointed out that the concepts transcends Forth. I partly agree on that. The initial chapters pretty much concentrate on analysis and design. And good design principals are relevant independent of programming language. However, approximately one third of the book requires a working knowledge of Forth and there, many recommendations are Forth-specific. A good starting-point for Thinking Forth would be Leo's other book Starting Forth .

Another selling point of Thinking Forth is its claimed pioneering of practices later rediscovered in eXtreme Programming (XP). To me, there's simply no such connection. Let's face it; XP is a wild collection of ideas. Some of them improve any software project (simplicity, clean and incremental design, refactoring), others work only in a certain context (like Test-Driven Development), and some of the practices are speculative and potentially dangerous (mandatory pair-programming, user stories). Thinking Forth focuses on the first group. These are, I believe, timeless principles that of course aren't unique to Forth or XP. Thinking Forth also puts more emphasis on the initial design than XP, by focusing on actually understanding the problem before coding out a solution (although this understanding may, and typically does come from, actual prototyping in Forth).

Leo's writing style deserves special mention; this is simply brilliant stuff! Clear writing spiced with entertaining illustrations that all make an excellent point and eases the understanding and memorization of the core concepts. Leo also includes interviews with several Forth thinkers. The interviews are skillfully blended with the text and are one of the highlights. If you're interested in Forth, this is a must-read. I also recommend Thinking Forth to anyone writing about software - Leo's way is the way to do it!

Reviewed November 2008