From the reviews: “In Drawing Programs, Tom Addis (Univ. of Portsmouth, UK) and Jan Addis (Clarity Support, UK) teach readers how to program a computer using a special language they have developed called Clarity. … Drawing Programs is both a work on programming and a manual for the language. … The numerous illustrations are helpful. Summing Up: Recommended. Researchers and faculty.” (S. L. Tanimoto, Choice, Vol. 47 (11), July, 2010) “The book presents the notion of schematic functional programming and demonstrates not only the concept but also how schematic functional programs can be processed … . A reader … can go through the book quite easily and try to use the constructs and typical patterns of schematic programming, and, in such a way, learn how to use schematic programming and become familiar with it. … a skilled programmer using several programming paradigms can get through the notion of the book in a short time.” (Dušan Kolář, Journal of Functional Programming, Vol. 22 (2), 2012)
Visual programming systems have had a large uptake in industry. However the visual components of such systems have tended to focus on the structure, properties and behaviour of graphical user interfaces and their relationship to textually represented, predominantly imperative, code fragments.
Functional programming has historically appeared to have been more prevalent in the academic computing community. However, it seems to be gaining wider adoption with popular languages such as Python and Ruby supporting the functional paradigm, albeit in an impure form.
The main part of this book is about functional programming and in particular the use of the authors’ graphical functional programming system ‘Clarity’. In Clarity, and in contrast to mainstream ‘visual’ languages, programs are expressed as schematics. The authors argue that functional programming lends itself to graphical schematic representation more advantageously than imperative approaches.
Through the ten chapters of the book, the authors cover, in varying degrees of depth, a wide range of computer programming-related topics, with a natural bias towards functional programming and Clarity. Much of this book is a practical demonstration of the Clarity system and of how the benefits of graphical representations of (functional) computer programs over their textual counterparts may be gained.
There are practical sections describing how to run and use the Clarity system, how to implement distributed systems using Clarity and how to develop extensions to the Clarity system. In addition, the authors describe approaches to the design and development of functional programs and functional programming concepts, such as head and tail recursion, folds and so forth. These sections are supported by extended working examples.
In contrast, there are sections that discuss philosophical topics such as computer program semantics, and more theoretical sections that discuss topics such as functional thinking, artificial intelligence, Bayesian classification and programming systems that deal with uncertainty.
The book is an engaging read and is likely to be of value to anyone interested in computer programming, functional or not. The authors reinforce learning by lots of review questions, and worked through projects and examples. My only criticism is that, on occasion, I thought better signposting was required in order to make clearer the purpose of some of the diversions.
The Clarity system and examples from the book are available for free download.
--8 out of 10, Patrick Hill MBCS CITP, July 2010