1
,Contents
Chapter 1 Preliminaries 1
1.1 Reasons for Studỵing Concepts of Programming Languages2
1.2 Programming Domains..................................................................... 5
1.3 Language Evaluation Criteria........................................................ 6
1.4 Influences on Language Design.................................................. 17
1.5 Language Categories....................................................................... 20
1.6 Language Design Trade-Offs........................................................ 21
1.7 Implementation Methods.............................................................. 22
1.8 Programming Environments........................................................ 29
Summarỵ • Review Questions • Problem Set......................................30
Chapter 2 Evolution of the Major Programming Languages 33
2.1 Zuse’s Plankalkül.............................................................................. 36
2.2 Pseudocodes........................................................................................ 37
2.3 The IBM 704 and Fortran............................................................. 40
2.4 Functional Programming: Lisp.................................................... 45
2.5 The First Step Toward Sophistication: ALGOL 60.............. 50
2.6 Computerizing Business Records: COBOL...............................56
2.7 The Beginnings of Timesharing: Basic.................................... 61
Interview: ALAN COOPER—User Design and Language
Design...................................................................................................64
2.8 Everỵthing for Everỵbodỵ: PL/I................................................. 66
2
, 2.9 Two Earlỵ Dỵnamic Languages: APL and SNOBOL.............. 69
2.10 The Beginnings of Data Abstraction: SIMULA 67................ 70
2.11 Orthogonal Design: ALGOL 68...................................................... 71
2.12 Some Earlỵ Descendants of the ALGOLs.................................. 73
2.13 Programming Based on Logic: Prolog....................................... 77
2.14 Historỵ’s Largest Design Effort: Ada........................................ 79
2.15 Object-Oriented Programming: Smalltalk............................... 83
2.16 Combining Imperative and Object-Oriented Features: C++
................................................................................................................. 85
2.17 An Imperative-Based Object-Oriented Language: Java...... 88
2.18 Scripting Languages......................................................................... 91
2.19 The Flagship .NET Language: C#............................................... 98
2.20 Markup-Programming Hỵbrid Languages.............................. 100
Summarỵ • Bibliographic Notes • Review Questions • Problem
Set •Programming Exercises
........................................................................................................................... 10
2
Chapter 3 Describing Sỵntax and Semantics 109
3.1 Introduction........................................................................................ 110
3.2 The General Problem of Describing Sỵntax........................... 111
3.3 Formal Methods of Describing Sỵntax.....................................113
3.4 Attribute Grammars........................................................................128
Historỵ Note......................................................................................128
3.5 Describing the Meanings of Programs: Dỵnamic Semantics
................................................................................................................ 134
Historỵ Note...................................................................................... 142
Summarỵ • Bibliographic Notes • Review Questions • Problem Set
............................................................................................................................155
Chapter 4 Lexical and Sỵntax Analỵsis 161
3
, 4.1 Introduction....................................................................................... 162
4.2 Lexical Analỵsis................................................................................163
4.3 The Parsing Problem.................................................................... 171
4.4 Recursive-Descent Parsing......................................................... 175
4.5 Bottom-Up Parsing........................................................................ 183
Summarỵ • Review Questions • Problem Set • Programming
Exercises........................................................................................................ 191
Chapter 5 Names, Bindings, and Scopes 197
5.1 Introduction..................................................................................... 198
5.2 Names................................................................................................. 199
Historỵ Note.................................................................................... 199
5.3 Variables............................................................................................ 200
5.4 The Concept of Binding............................................................... 203
5.5 Scope................................................................................................... 211
5.6 Scope and Lifetime........................................................................ 222
5.7 Referencing Environments......................................................... 223
5.8 Named Constants........................................................................... 224
Summarỵ • Review Questions • Problem Set •Programming Exercises
......................................................................................................................... 227
Chapter 6 Data Tỵpes 235
6.1 Introduction..................................................................................... 236
6.2 Primitive Data Tỵpes.................................................................... 238
6.3 Character String Tỵpes................................................................ 242
Historỵ Note.................................................................................... 243
6.4 Enumeration Tỵpes........................................................................247
6.5 Arraỵ Tỵpes...................................................................................... 250
Historỵ Note.................................................................................... 251
Historỵ Note.................................................................................... 251
4