Book Reviewsiscience Oj Computer Programming 32 (1998) 211-220
Book Reviewsiscience Oj Computer Programming 32 (1998) 211-220
terms, closed under convertibility are recursively inseparable) with as corollary that the
set of lambda terms with (head) normal form is not recursive.
Chapter III is about intersection type systems, first the system with a constant Omega,
next without Omega (system D). Interestingly, various properties such as solvability,
finiteness of head reduction are obtained via typability in D. The highlight of this
chapter is the theorem (independently found by S. van Bakel) that a term is strongly
normalizable iff it is typable in system D.
Chapter IV is about normalization and standardization. Section 2 contains a nice
proof of Finite Developments due to Parigot, using the main theorem of the previous
chapter about strong normalizability. In Section 3, standard reduction is discussed.
Remarkably, the definition of ‘standard’ employed here is not the standard one, as e.g.
in Barendregt’s book; it actually is a weaker one that suffices for the purpose of this
book’s treatment. Maybe it should be called differently, for instance ‘weakly standard’.
Chapter V covers Boehm’s classical theorem that states that two closed normal
forms, not beta-eta convertible, can be separated (i.e. a context can be found mapping
the terms to e.g. 0 and 1).
Chapter VI is about Combinatory Logic and combinatory algebras, including Curry’s
equations and Scott-Meyer’s axioms.
Chapter VII: Models of lambda-calculus. Apart from the classical models of Scott,
Plotkin, Engeler the chapter also discusses qualitative domains and stable functions,
coherence spaces.
Chapter VIII: System F, including strong normalization for system F, and including
a section on data types in System F.
Chapter IX: Second order functional arithmetic. This chapter treats second order
predicate calculus, second order functional arithmetic, realizability, data types.
Chapter X: Representable functions in System F.
Summarizing: a very valuable addition to the literature on typed lambda calculi and
their models, highly useful for researchers and (advanced) students.
J.W. Klop
CWI and Vrije Universiteit Amsterdam
Amsterdam, The Netherlands
Nan C. Shu, Visual Programming, Van Nostrand Reinhold, 1988 (reprinted in 1992
in paperback) ISBN 0 442 11644
In a time where the term ‘visual’ appears in almost every software context it is
useful to have a book such as Shu’s Visual Programming which clearly and elegantly
describes the various applications of visual approaches in computer science. Visual
Programming by Nan C. Shu provides a very well written record of the pioneering
Book reviews I Science of Computer Programming 32 (1998) 21 I-220 219
work on visual programming with the aim to provide a foundation for understanding
this area.
The book demonstrates how visual methods are applied in carrying various activities
during the programming process - from the creation to execution and debugging of
programs.
The book provides a very nice overview of the visual programming approaches used
in a wide range of programming activities. It also serves as a nice survey of different
methods utilized by the visual programming community. The book starts with a nice
motivation for visual languages and discusses topic by topic issues involved in various
aspects of visual programming. Shu provides a taxonomy of visual approaches that
provides a foundation for understanding the use of the term ‘visual’ in the different
contexts it appears.
Shu examines all aspects of programming from specification to the verification of
programs and how visual approaches can be applied in each of these aspects of pro-
gramming. Shu distinguishes two main categories of use of visual methods for pro-
gramming: visual environments and visual languages. The former deal with the use of
visual approaches in supporting the programming process, such as the visualization of
programs themselves, their data structures, and the visualization of the software design.
The latter deals with visual content, such as languages that deal with visual information
and languages that are ‘visual’ themselves.
The book starts with an introduction motivating visual programming. This is followed
by three chapters that discuss the visualization of data, programs and execution, and
software design. A chapter on “Visual Coaching” discusses visual environments that
support the creation of programs with assistance, such as programming by example.
The remainder of the chapters deal with languages that are about visual programming.
In Chapter 6 Shu talks about languages that process visual information. Chapter 7 ad-
dresses languages for supporting visual interaction. Chapters 8 through 11 make up the
major part and the most interesting portion of the book, which introduces and describes
‘visual’ programming languages. These chapters discuss the various approaches to vi-
sual programming: diagrammatic, iconic, and form-based visual languages. The book
concludes with interesting thoughts on the future directions for visual programming.
This book is very well written and provides extensive examples, which are most
useful in understanding the visual programming field. Shu carefully relates topics to
well-known textual languages as well as less familiar but very well documented visual
programming languages and environments. The book is very easy and enjoyable to
read. Throughout her book Shu provides illustrated examples and original references
that accompany her discussions. She also provides a list of references at the end of
each chapter pointing the reader to other useful publications.
The book is about a decade old and the reader will need to consult other sources
to catch up with the body of work that has taken place since then. However, it is
still very useful in understanding the fundamentals of visual languages. Each of these
chapters could be a book in their own right. It would be interesting to see an updated
edition of this book in light of the work that has been done in the last decade. Anyone
220 Book review I Science of Cornpurer Programming 32 (1998) 21 I-220
wanting to become familiar with visual programming would well be advised to read it
as a first book.
T.B. Dinesh
CWI
Amsterdam, The Netherlands