Explains the concepts underlying programming languages, and demonstrates how these concepts are synthesized in the major paradigms: imperative, OO, concurrent, functional,  logic and with recent scripting languages. It gives greatest prominence to the OO paradigm.
- Includes numerous examples using C, Java and C++ as exmplar languages
- Additional case-study languages: Python, Haskell, Prolog and Ada
- Extensive end-of-chapter exercises with sample solutions on the companion Web site
- Deepens study by examining the motivation of programming languages not just their features
Preface.
PART I: INTRODUCTION.
1. Programming Languages.
1.1 Programming linguistics.
1.1.1 Concepts and paradigms.
1.1.2 Syntax, semantics, and pragmatics.
1.1.3 Language processors.
1.2 Historical development.
Summary.
Further reading.
Exercises.
PART II: BASIC CONCEPTS
2. Values and Types.
2.1 Types.
2.2 Primitive types.
2.2.1 Built-in primitive types.
2.2.2 Defined primitive types.
2.2.3 Discrete primitive types.
2.3 Composite types.
2.3.1 Cartesian products, structures, and records.
2.3.2 Mappings, arrays, and functions.
2.3.3 Disjoint unions, discriminated records, and objects.
2.4 Recursive types.
2.4.1 Lists.
2.4.2 Strings.
2.4.3 Recursive types in general.
2.5 Type systems.
2.5.1 Static vs dynamic typing.
2.5.2 Type equivalence.
2.5.3 The Type CompllSd