-- on the ForthLanguage
Flawed, opinionated, brilliant. This book, subtitled "A Language and Philosophy for Solving Problems" was written for the programming community as a whole, using ForthLanguage
as the basis for teaching its concepts, including nuggets of wisdom from various Forth advocates (including Forth's inventor Chuck Moore).
The book was originally published in 1984, re-published in 1994, and once again in 2004, both online (http://thinking-forth.sourceforge.net/
) and in print forms (new ISBN 0976458705
). It proves every bit as relevant today as it did back then. Some argue that it feels a bit dated. It gives fascinating insight into the minds of Forth programmers while solving various kinds of problems.
This book offers a collection of idioms (called simply 'tips' in the book) that offer solutions to common design/coding problems using Forth. Lucidly written, Brodie shows us how Forth programmers dealt with rapid prototyping, encapsulation and other software techniques now considered mainstream. The format of these examples would later come to be known as patterns
(not necessarily design patterns, but also programming behavioral patterns as well). Indeed, it would be very easy to rewrite this book using PatternLanguage
(Part of an ongoing PatternPerson BookList
originally, updated by: Charles Childers, Bernd Paysan, and finally, SamuelFalvo?
I absolutely loved the cartoons/illustrations in this book. They were crudely drawn, but normally struck a chord somehow. For example, one cartoon showed a guy working very intensely to unlock his car door using a coat hanger. He was totally oblivious to the fact that the door on the other side of the car was open. The cartoon was labelled "Intent on a complicated problem".
Another good one is "An overgeneralized solution" which pictures a Universal Processor(R) with settings for data, word and food!
It's been years since I've read the book but one tip that has stayed with
me is "Go back to the problem before the user tried to solve the problem".
Here are some more ThinkingForthTips