Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Implicit parallel programming in pH
Nikhil R., Morgan Kaufmann Publishers Inc., San Francisco, CA, 2001. 508 pp. Type: Book (9781558606449)
Date Reviewed: May 15 2002

Graduate or advanced undergraduate students are the target audience for this book, which covers the two topics of functional programming and parallel functional programming. Although it assumes the reader is a competent programmer, no previous knowledge of either topic is assumed. It contains sufficient material to give the reader a solid background in the semantics of the declarative language pH (a dialect of Haskell), an understanding of the basic concepts of parallelism, and a deep insight into the ability of such a language to support parallelism.

Structured as 11 chapters, plus appendices, the book commences by introducing the basic concepts of parallelism and summarizing the material that follows. Functional programming is presented to the reader as a potential solution to the problems of constructing parallel programs in a procedural language. Chapter 2 concentrates on the fundamentals of functional programming, including material on the lambda calculus, reduction, recursion, type checking, and the syntax of the pH language. Type classes, polymorphism and overloading fill chapter 3, and in chapter 4, the reader is introduced to lazy and strict reduction strategies and their implications for parallelism. Chapters 5 and 6 cover abstract and algebraic types and lists. The remaining chapters cover the language structures specific to pH that enable effective parallel programming. Arrays and input and output issues are covered in chapters 7 and 8. Chapters 9 and 10 look in detail at updateable cells and implicit synchronization using I-structures and the non-deterministic M-structures. Chapter 11 concludes, places the work in context and discusses recent and current research in the area. The two appendices describe the lambda calculus and rewrite rules in pH. A list of 77 references is provided.

At 500 pages, it is not a short book, but the amount of material included is substantial, and has been developed from teaching materials used by the authors over the last ten years. No supporting materials are included, although many exercises are provided throughout the text. Although the authors consider the material suitable both for advanced undergraduates and junior graduates, I would feel uncomfortable recommending it in an undergraduate module. However, it is ideal for a Master’s course on computer science, or as basic reading for a research student interested in the topics. My only regret is the lack of availability of an implementation of pH suitable for student use. Although versions are downloadable from MIT, they are very much “works in progress,” and the book does not seem to encourage their use.

While declarative programming is represented on many degree courses, it is often presented to students as a topic of theoretical rather than practical interest. The rise of Java and C++ and the availability of affordable multiprocessor machines have seen the teaching of parallelism focused on threaded sequential languages and conventional architectures. The ability of a declarative language to support parallelism, underpinned with clean semantics, has not been diminished by this trend, and research into the topic, although perhaps not as high profile as it has been recently, is important and will continue. This is an area of study that will interest computer scientists for a long time to come, and this work is timely.

This is a fascinating and exceptionally well-written book, which covers a gap in the market that has existed for several years. The authors are highly respected researchers in the field, and the book contains state-of-the-art material in this specialized area of computer science.

Reviewer:  Mike Joy Review #: CR125951 (0205-0240)
Bookmark and Share
 
Parallel Programming (D.1.3 ... )
 
 
Arrays (E.1 ... )
 
 
Concurrent, Distributed, And Parallel Languages (D.3.2 ... )
 
 
Haskell (D.3.2 ... )
 
 
Lambda Calculus And Related Systems (F.4.1 ... )
 
 
Parallelism And Concurrency (F.1.2 ... )
 
  more  
Would you recommend this review?
yes
no
Other reviews under "Parallel Programming": Date
How to write parallel programs: a first course
Carriero N. (ed), Gelernter D. (ed), MIT Press, Cambridge, MA, 1990. Type: Book (9780262031714)
Jul 1 1992
Parallel computer systems
Koskela R., Simmons M., ACM Press, New York, NY, 1990. Type: Book (9780201509373)
May 1 1992
Parallel functional languages and compilers
Szymanski B. (ed), ACM Press, New York, NY, 1991. Type: Book (9780201522433)
Sep 1 1993
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy