By Robert W. Sebesta
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