Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Programming languages (2nd ed.)
Sethi R., Addison Wesley Longman Publishing Co., Inc., Redwood City, CA, 1996. Type: Book (9780201590654)
Date Reviewed: Dec 1 1997

Sethi’s “teddy bear book” is one of the popular undergraduate texts on comparative programming languages. Like the first edition [1], this second edition is intended for use in a third- or fourth-year course on programming languages whose prerequisite is an introductory programming course. The author also indicates that it could serve in a graduate course if the material were supplemented.

This new edition differs from the original mainly in organization, and is definitely stronger than the first, in part due to its use of language paradigms as its organizational framework. In addition, the coverage of the major paradigms uses fewer languages and goes into more depth. Other parts of the book have benefited from minor reorganization. For example, the section on techniques for syntax description has been improved through a more detailed early introduction and the inclusion of more examples. In the first edition, that material was divided between the introductory chapters and the concluding chapters, neither of which developed it completely. However, the end-of-chapter material on syntax and proof of correctness is still spotty.

The book contains six parts. The two chapters of Part 1 introduce the role of programming languages through a discussion of historical perspectives and current paradigms, and extend the student’s background through a discussion of language syntax description techniques. The coverage of grammar is more complete and is accompanied by more examples than in the first edition. The delightful introduction to functional programming using Sethi’s little language example for quilt design has been moved from this part of the book to the section on functional programming.

Part 2 concentrates on the core concepts of the imperative programming paradigm. It contains three chapters: one that highlights structured programming through discourse on proofs for partial correctness; one on data type representation; and one on procedure activations. Whereas the first edition used Modula-2 and C to illustrate these concepts, the new edition uses the instructional language Pascal--which is more widely known, but declining in popularity--along with C.

Part 3 extends the coverage of the object-oriented paradigm. The first of two chapters in this section deals with object-oriented constructs, especially in C++, that serve to group data and operations. The second concentrates on inheritance and uses both C++ and Smalltalk.

Part 4 presents a much more unified approach to the functional paradigm in three chapters. The first uses the little language for quilting to introduce the powerful functional concepts embodied in ML, which follow in the second chapter of this part. The third chapter explores the notion of Lisp through the Scheme dialect.

Two other paradigms are briefly discussed in Part 5. One chapter addresses the logic paradigm through Prolog. The other is devoted to an overview of the issues surrounding concurrent processes and programming, using Ada for  illustration. 

Part 6, “Language Description,” is a hodgepodge of concepts related to programming languages that do not seem to fit elsewhere. One chapter addresses semantic methods, and features an application developed in Scheme. The second chapter looks at static types and their relation to the lambda calculus. The final chapter resembles an appendix. It lists the languages used throughout the book--Pascal, C, C++, Smalltalk, Standard ML, Scheme, and Prolog--and describes their salient features.

The design of the book, including its choice of typefaces and wide margins, makes it much more pleasant and easier to read than the first edition. However, many of the figures are not conveniently placed, and readers will be forced to turn pages (away from what they illustrate) in order to find them.

In my review of the first edition, I noted that the “text is weakened by an awkward index in which…some terms are used without being defined (such as `first-class functions’.)” That shortcoming has not been fixed. The reference to “procedure declaration” cites two groups of pages (148–154 and 169–171), without a clear definition of the term. As in the first edition, the end-of-chapter exercises are creative and challenging, but the author still does not provide any answers, and few of the answers are obvious. This edition updates many of the 200 bibliographic citations at the end of the book (though fewer than 10 percent of the references are less than six years old), as well as the bibliographic notes at the ends of the chapters.

Newer language design issues prompted by Web technologies and the explosion in the use of Java and other languages have not been addressed in this edition. However, that in itself does not make this book out of date. It remains a strong contender for use as an undergraduate text.

Reviewer:  B. B. Owens Review #: CR120243 (9712-0960)
1) Sethi, R. Programming languages: concepts and structures. Addison-Wesley, Reading, MA, 1989.
Bookmark and Share
 
General (D.3.0 )
 
 
Formal Definitions And Theory (D.3.1 )
 
 
Language Classifications (D.3.2 )
 
 
Language Constructs and Features (D.3.3 )
 
Would you recommend this review?
yes
no
Other reviews under "General": Date
Programming languages: paradigm and practice
Appleby D., McGraw-Hill, Inc., New York, NY, 1991. Type: Book (9780075579045)
Jan 1 1992
Programming languages
Dershem H. (ed), Jipping M., Wadsworth Publ. Co., Belmont, CA, 1990. Type: Book (9780534129002)
Jan 1 1992
Comparative programming languages
Friedman L., Prentice-Hall, Inc., Upper Saddle River, NJ, 1991. Type: Book (9780131554825)
Jan 1 1992
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