Comparative Programming Languages: Third Edition

cover

Welcome to the support pages for the new third edition of Comparative Programming Languages by L.B. Wilson and R.G. Clark, updated by R.G. Clark. The book is published by Addison-Wesley (2001, ISBN 0-201-71012-9).

Information ( USA , Europe, Middle East, Africa ) from Addison Wesley Longman and Pearson Education is available.

This page is being developed incrementally. So, do return to see what additions have been made. There are links to supplementary information from the Table of Contents.

Summary

This book considers the principal programming language concepts and how they are dealt with in object-oriented languages such as Java and Delphi, in traditional procedural languages such as Pascal, C and Fortran, in hybrid object-oriented or object-based languages such as C++ and Ada 95, in functional languages such as ML and in logic languages like Prolog.

The approach is to find common ground between languages and to identify the underlying principles. Although the top-level organisation of a program written in an object-oriented language is different from that of one written in a procedural language, their underlying principles are the same. Similarly, although the approach of logic languages and functional languages is different from that of procedural and object-oriented languages, there are many areas of similarity, and seeing these helps us to understand the differences better.

There have been major developments in programming languages and their use since the second edition was published in 1993 and the changes in the new edition reflect this. Although object orientation was a major paradigm in 1993, object-oriented languages had not achieved the central position that they enjoy today. Secondly, features to support Graphical User Interfaces (GUIs) have only recently become an integral part of language design. This has meant that topics such as event-driven programming have moved from being advanced to being taught in introductory courses.

Key features of the third edition include:

  • Java joins Pascal and C++ as one of the central languages used in the book.
  • The object-oriented approach plays a central role.
  • Discussion of language support for graphical user interfaces and event-driven programs.
  • Scripting languages such as Perl.
  • The discussion of concurrency is centred on Ada 95 tasks and Java threads.
  • Internet programming, including applets, CGI programs and CORBA.
  • Concise end-of-chapter summaries, numerous exercises and many practical examples as well as detailed language references.
  • This web site which will provide course support and executable program examples.

Origins of the Book

The book was developed from a course given at the University of Stirling. The course syllabus and related information from the Spring 2004 presentation of the course is available.

The second assessed assignment for this course requires a student to write a report on one of a list of topics.

Table of Contents

Chapters 1 to 6 introduce the basic concepts and are best read in the given order. Chapters 7 onwards build on earlier material and, as they are largely self-contained, can be taken in any order. Each chapter contains a synopsis, outlining the major topics to be covered, a concise end-of-chapter summary, exercises and an annotated bibliography. Solutions to selected exercises are given at the back of the book.

  1. Introduction
    1. The diversity of languages
    2. The software development process
    3. Language design
    4. Languages or systems?
    5. The lexical elements

  2. Historical Survey
    1. Early machines
    2. Fortran
    3. Algol
    4. Business data processing languages
    5. General or multipurpose languages
    6. Developing programs interactively
    7. Special-purpose languages
    8. Systems programming languages
    9. Modules, classes and abstract data types
    10. Functional and logic languages
    11. Conclusions

  3. Types, values and declarations
    1. Names
    2. Declarations and binding
    3. Type definitions
    4. Numeric data types
    5. Logical types
    6. Character types
    7. Enumeration types
    8. Reference and pointer variables

  4. Expressions and statements
    1. Expressions
    2. Statements
    3. Sequencing and control
    4. Iterative statements
    5. goto statement
    6. Exception handling

  5. Program structure
    1. Introduction
    2. Procedural and object-oriented architecture
    3. Alternative program architectures
    4. Separate Compilation
    5. Larger units

  6. Procedures, functions and methods
    1. Introduction
    2. Parameters
    3. Functions
    4. Storage management
    5. Recursion
    6. Forward references
    7. Subprograms as parameters

  7. Structured data
    1. Introduction
    2. Arrays
    3. Records and classes
    4. Dynamic data structures
    5. Parameterized types
    6. Strings
    7. Sets
    8. Files

  8. Inheritance and dynamic binding
    1. Introduction
    2. Inheritance
    3. Polymorphism and dynamic binding
    4. Comparing the procedural and object-oriented approach
    5. Abstract methods and classes
    6. Multiple inheritance
    7. Problems with inheritance
    8. Behavioural inheritance
    9. Conclusion

  9. Functional languages
    1. Introduction
    2. Lisp
    3. FP Systems
    4. Modern functional languages
    5. Concluding remarks

  10. Logic programming
    1. The Prolog approach
    2. The basics of Prolog
    3. Data objects
    4. Efficiency in Prolog
    5. A Prolog example
    6. Concluding remarks

  11. Concurrency and networking
    1. Introduction
    2. Process synchronization and communication
    3. Internet programming
    4. Real-time programming

  12. Syntax and semantics
    1. Syntax
    2. Semantics

  13. Input, output and GUIs
    1. Introduction
    2. Input and output of text
    3. Graphical user interfaces
    4. Binary and direct access files
    5. Multimedia

  14. The future
    1. Introduction
    2. Procedural and object-oriented languages
    3. Declarative languages
    4. Language design
    5. Implementation considerations
    6. Development methods
    7. Conclusions
  • Appendix 1 Language summaries
  • Appendix 2 Language texts
  • Solutions to selected exercises

Page created: December 5, 2000 by Robert Clark. Last revised: February, 2004.
Please send any comments, feedback or error reports by email.