Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Concepts of programming languages
Sebesta R. (ed), Benjamin-Cummings Publ. Co., Inc., Redwood City, CA, 1988. Type: Book (9789780805370119)
Date Reviewed: Jan 1 1992
Comparative Review

Since the last comparative review of texts in programming languages, several changes have been wrought. The functional, logic, and parallel programming paradigms have come into fairly widespread use; the C language and the UNIX operating system have influenced system design; and the ACM/IEEE Joint Curriculum Task Force has issued its report [1]. This review concentrates on selected texts issued since the last report and uses as metrics the Knowledge Units and themes of that report.

Of the books reviewed, only one has been published since the issuance of the report. However, it is not the content of the study of programming languages that has changed so much as the way that the content may be viewed and structured into courses within the curriculum. There is no longer one course recommended by the ACM. Instead, a program can use the knowledge units to formulate the program that best suits its students and objectives. The course that was called CS8 in Curriculum 78 may no longer exist in some schools. It is doubtful that the study of comparative programming languages as a course will completely disappear, but portions of the material once covered in CS8 may be covered in other ways.


This book gives equal weight to imperative and declarative language paradigms, while emphasizing theoretical foundations for different language types.… It includes 10 tutorials on underlying mathematical theory, 15 historical vignettes on prominent language innovators and 23 laboratory assignments employing nine different languages. (p. xv)

This text is the first to explicitly follow the recommendations of the Task Force. In addition to the text, five “low-cost” mini-manuals written by separate authors are, or soon will be, available: one each for Ada; C and C++; Pascal and Object Pascal; Scheme; and Prolog. The complete laboratory assignments are in the instructor’s guide, not in the student text.

The author lists the ability to program well in at least one high-level language as the only necessary prerequisite, but suggests assembly language as helpful. More than a nodding acquaintance with notation systems as studied in discrete math would be helpful. The author believes that “students learn languages by studying exemplary programs and making modifications as well as writing their own programs” (p. xix).

This text is a superb example of the importance of ancillary materials. The mini-manuals are a welcome sight for those who have felt the coverage of new languages is too slight in most programming language texts, and that to require their students to purchase separate texts is too expensive and detailed. The laboratory exercises are detailed in their specifications, and the mini-manuals concentrate on the language features needed to complete the labs. The instructor’s guide also includes answers to all the exercises integrated within the text chapters.

The text includes superb notes on the end-of-chapter references. The paradigm organization encourages the integration of the programming projects. Students should appreciate the depth of background presented as well as the excellent index.

Table 1: Coverage of Knowledge Units from Computing Curricula 1991
ApplebyFried- manSebestaWilson and ClarkDershem and JippingMayerSethiWattGelernter and Jagannathan*
PL1: history
Early languagesextencovercovercoverminimminimminimminimexten
Non-procedural paradigms:
PL2: virtual machines
virtual machinesminimcoverdefinenonenonenonenonenonedefine
actual vs. virtualminimcoverdefinenonenonenonenonenonenone
hierarchy up to OSminimcoverdefinenonenonenonenonenonenone
binding timescoverminimcoverextencovernoneminimextencover
PL3: data representation
PL4: sequence control
expressions, order of evaluationcoverminimcovercovercoverminimcoverextencover
exception handlingcoverdefinecovercovercovercovercovercovernone
PL5: data control/sharing/typechecking
static vs. dynamiccovercovercovercovercoverminimcovercoverminim
parameter passingcovercovercovercovercovercovercovercovercover
varieties of checkingcovercovercovercovercovercovercovercovercover
PL6: runtime storage management
static allocationcovernonecovercoverdefinecovernonecovernone

This book is not without its drawbacks, however. The second printing has rectified many of the typos found in the first, but many await correction in a second edition.

The goals of the book are laudable, but perhaps overly ambitious for a second- or third-year course. The book lends itself well to selection and omission of material, however. The clarity of presentation varies from wonderfully lucid to downright confusing. For example, the excursion on formal languages uses a semi-formal descriptive approach. The tutorial is weakened by starting at a level too high for the uninitiated reader and too imprecise for the sophisticated one. The language examples may be somewhat complicated for the novice programmer. A program written in B (the predecessor of C) uses \0 and \n, which are not described as the keyboard representations of single characters.


This book is designed to help us [problem solvers working within the programming function…] to become better programmers, program developers, systems analysts (p. xi).

This is one of the few texts designed specifically for an information systems curriculum as opposed to pure computer science. As such, it has many differences from the other texts in the field. The first two hundred pages of the book are organized around the themes of structure and abstraction of language characteristics. It has an excellent historical approach to the study of programming languages. Friedman includes an unstated emphasis on the contribution of women to the development of programming languages. Her bibliography alone makes this an invaluable reference guide.

This text is not theory based, but it does contain clear definitions for features common to programming languages. The chapter ends are strong; they include a summary, a list of terms introduced in the chapter, and a nicely annotated bibliography.

Table 1: Coverage of Knowledge Units from Computing Curricula 1991 (con’t.)
ApplebyFried- manSebestaWilson and ClarkDershem and JippingMayerSethiWattGelernter and Jagannathan*
PL7: finite state automata
deterministic/ nonminimnonenonenonenonenonenonenonenone
Reviewer:  B. B. Owens Review #: CR115764
1) Computing curricula 1991. Report of the ACM/IEEE-CS Joint Curriculum Task Force, Association for Computing Machinery, New York, NY, 1990.
2) Pratt, T. W. Programming languages: design and implementation, 2nd ed. Prentice-Hall, Englewood Cliffs, NJ, 1981. See <CR>, Rev. 8405-0327.
Comparative Review
This review compares the following items:
  • Concepts of programming languages:
  • Programming languages: concepts and constructs:
  • Programming languages:
  • Comparative programming languages:
  • Programming language concepts and paradigms:
  • Programming languages: paradigm and practice:
  • Programming languages:
  • Comparative programming languages:
  • Bookmark and Share
    Would you recommend this review?
    Other reviews under "General": Date
    Online programming languages and assemblers: a reference
    Birnes W. (ed), McGraw-Hill, Inc., New York, NY, 1989. Type: Book (9780070053953)
    Mar 1 1990
    An introduction to analysis of financial data with R
    Tsay R., Wiley Publishing, Hoboken, NJ, 2013.  416, Type: Book (978-0-470890-81-3)
    Mar 25 2014
    Respectful Type Converters
    Wing J., Ockerbloom J. IEEE Transactions on Software Engineering 26(7): 579-593, 2000. Type: Article
    Aug 1 2001

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