|
|
|
1 | (36) |
|
1.1 Reasons for Studying Concepts of Programming Languages |
|
|
2 | (3) |
|
|
|
5 | (3) |
|
1.3 Language Evaluation Criteria |
|
|
8 | (12) |
|
1.4 Influences on Language Design |
|
|
20 | (3) |
|
|
|
23 | (1) |
|
1.6 Language Design Trade-Offs |
|
|
24 | (1) |
|
1.7 Implementation Methods |
|
|
25 | (6) |
|
1.8 Programming Environments |
|
|
31 | (6) |
|
Chapter 2 Evolution of the Major Programming Languages |
|
|
37 | (68) |
|
|
|
38 | (3) |
|
2.2 Minimal Hardware Programming: Pseudocodes |
|
|
41 | (3) |
|
2.3 The IBM 704 and FORTRAN |
|
|
44 | (5) |
|
2.4 Functional Programming: LISP |
|
|
49 | (6) |
|
2.5 The First Step Toward Sophistication: ALGOL 60 |
|
|
55 | (6) |
|
2.6 Computerizing Business Records: COBOL |
|
|
61 | (5) |
|
2.7 The Beginnings of Timesharing: BASIC |
|
|
66 | (2) |
|
2.8 Everything for Everybody: PL/I |
|
|
68 | (5) |
|
2.9 Two Early Dynamic Languages: APL and SNOBOL |
|
|
73 | (1) |
|
2.10 The Beginnings of Data Abstraction: SIMULA 67 |
|
|
74 | (1) |
|
2.11 Orthogonal Design: ALGOL 68 |
|
|
75 | (2) |
|
2.12 Some Important Descendants of the ALGOLs |
|
|
77 | (7) |
|
2.13 Programming Based on Logic: Prolog |
|
|
84 | (1) |
|
2.14 History's Largest Design Effort: Ada |
|
|
85 | (6) |
|
2.15 Object-Oriented Programming: Smalltalk |
|
|
91 | (3) |
|
2.16 Combining Imperative and Object-Oriented Features: C++ |
|
|
94 | (3) |
|
2.17 Programming the World Wide Web: Java |
|
|
97 | (8) |
|
Chapter 3 Describing syntax and Semantics |
|
|
105 | (50) |
|
|
|
106 | (1) |
|
3.2 The General Problem of Describing Syntax |
|
|
107 | (2) |
|
3.3 Formal Methods of Describing Syntax |
|
|
109 | (14) |
|
3.4 Recursive Descent Parsing |
|
|
123 | (2) |
|
|
|
125 | (7) |
|
3.6 Describing the Meaning of Programs: Dynamic Semantics |
|
|
132 | (23) |
|
Chapter 4 Names, Bindings, Type Checking, and Scopes |
|
|
155 | (40) |
|
|
|
156 | (1) |
|
|
|
157 | (2) |
|
|
|
159 | (3) |
|
4.4 The Concept of Binding |
|
|
162 | (8) |
|
|
|
170 | (1) |
|
|
|
170 | (2) |
|
|
|
172 | (3) |
|
|
|
175 | (8) |
|
|
|
183 | (1) |
|
4.10 Referencing Environments |
|
|
183 | (2) |
|
|
|
185 | (2) |
|
4.12 Variable Initialization |
|
|
187 | (8) |
|
|
|
195 | (64) |
|
|
|
196 | (1) |
|
|
|
197 | (4) |
|
5.3 Character String Types |
|
|
201 | (5) |
|
5.4 User-Defined Ordinal Types |
|
|
206 | (4) |
|
|
|
210 | (13) |
|
|
|
223 | (1) |
|
|
|
224 | (5) |
|
|
|
229 | (6) |
|
|
|
235 | (3) |
|
|
|
238 | (21) |
|
Chapter 6 Expression and the Assignment Statement |
|
|
259 | (28) |
|
|
|
260 | (1) |
|
6.2 Arithmetic Expressions |
|
|
261 | (8) |
|
|
|
269 | (2) |
|
|
|
271 | (3) |
|
6.5 Relational and Boolean Expressions |
|
|
274 | (3) |
|
6.6 Short-Circuit Evaluation |
|
|
277 | (1) |
|
6.7 Assignment Statements |
|
|
278 | (5) |
|
6.8 Mixed-Mode Assignment |
|
|
283 | (4) |
|
Chapter 7 Statement-Level Control Structures |
|
|
287 | (42) |
|
|
|
288 | (1) |
|
|
|
289 | (1) |
|
|
|
290 | (12) |
|
|
|
302 | (13) |
|
7.5 Unconditional Branching |
|
|
315 | (3) |
|
|
|
318 | (4) |
|
|
|
322 | (7) |
|
|
|
329 | (48) |
|
|
|
330 | (1) |
|
8.2 Fundamentals of Subprograms |
|
|
330 | (6) |
|
8.3 Design Issues for Subprograms |
|
|
336 | (1) |
|
8.4 Local Referencing Environment |
|
|
337 | (1) |
|
8.5 Parameter-Passing Methods |
|
|
338 | (19) |
|
8.6 Parameters That Are Subprogram Names |
|
|
357 | (2) |
|
8.7 Overloaded Subprograms |
|
|
359 | (2) |
|
|
|
361 | (4) |
|
8.9 Separate and Independent Compilation |
|
|
365 | (1) |
|
8.10 Design Issues for Functions |
|
|
366 | (1) |
|
8.11 Accessing Nonlocal Environments |
|
|
367 | (3) |
|
8.12 User-Defined Overloaded Operators |
|
|
370 | (1) |
|
|
|
370 | (7) |
|
Chapter 9 Implementing Subprograms |
|
|
377 | (34) |
|
9.1 The General Semantics of Calls and Returns |
|
|
378 | (1) |
|
9.2 Implementing FORTRAN 77 Subprograms |
|
|
379 | (2) |
|
9.3 Implementing Subprograms in ALGOL-like Languages |
|
|
381 | (18) |
|
|
|
399 | (1) |
|
9.5 Implementing Dynamic Scoping |
|
|
400 | (4) |
|
9.6 Implementing Parameters That Are Subprogram Names |
|
|
404 | (7) |
|
Chapter 10 Abstract Data Types |
|
|
411 | (24) |
|
10.1 The Concept of Abstraction |
|
|
412 | (1) |
|
|
|
413 | (1) |
|
10.3 Introduction to Data Abstraction |
|
|
414 | (3) |
|
|
|
417 | (1) |
|
|
|
418 | (11) |
|
10.6 Parameterized Abstract Data Types |
|
|
429 | (6) |
|
Chapter 11 Support for Object-Oriented Programming |
|
|
435 | (54) |
|
|
|
436 | (1) |
|
11.2 Object-Oriented Programming |
|
|
436 | (5) |
|
11.3 Design Issues for Object-Oriented Languages |
|
|
441 | (5) |
|
11.4 Overview of Smalltalk |
|
|
446 | (1) |
|
11.5 Introduction to the Smalltalk Language |
|
|
447 | (11) |
|
11.6 Smalltalk Example Programs |
|
|
458 | (5) |
|
11.7 Large-Scale Features of Smalltalk |
|
|
463 | (2) |
|
11.8 Evaluation of Smalltalk |
|
|
465 | (1) |
|
11.9 Support for Object-Oriented Programming in C++ |
|
|
466 | (8) |
|
11.10 Support for Object-Oriented Programming in Java |
|
|
474 | (2) |
|
11.11 Support for Object-Oriented Programming in Ada 95 |
|
|
476 | (4) |
|
11.12 Support for Object-Oriented Programming in Eiffel |
|
|
480 | (3) |
|
11.13 Implementation of Object-Oriented Constructs |
|
|
483 | (6) |
|
|
|
489 | (44) |
|
|
|
490 | (3) |
|
12.3 Introduction to Subprogram-Level Concurrency |
|
|
493 | (5) |
|
|
|
498 | (5) |
|
|
|
503 | (4) |
|
|
|
507 | (10) |
|
12.6 Concurrency in Ada 95 |
|
|
517 | (3) |
|
|
|
520 | (6) |
|
12.8 Statement-Level Concurrency |
|
|
526 | (7) |
|
Chapter 13 Exception Handling |
|
|
533 | (34) |
|
13.1 Introduction to Exception Handling |
|
|
534 | (6) |
|
13.2 Exception Handling in PL/I |
|
|
540 | (5) |
|
13.3 Exception Handling in Ada |
|
|
545 | (6) |
|
13.4 Exception Handling in C++ |
|
|
551 | (4) |
|
13.5 Exception Handling in Java |
|
|
555 | (12) |
|
Chapter 14 Functional Programming Languages |
|
|
567 | (38) |
|
|
|
568 | (1) |
|
14.2 Mathematical Functions |
|
|
569 | (2) |
|
14.3 Fundamentals of Functional Programming Languages |
|
|
571 | (2) |
|
14.4 The First Functional Programming Language: LISP |
|
|
573 | (3) |
|
14.5 An Introduction to Scheme |
|
|
576 | (15) |
|
|
|
591 | (2) |
|
|
|
593 | (2) |
|
|
|
595 | (3) |
|
14.9 Applications of Functional Languages |
|
|
598 | (1) |
|
14.10 A Comparison of Functional and Imperative Languages |
|
|
599 | (6) |
|
Chapter 15 Logic Programming Languages |
|
|
605 | (36) |
|
|
|
606 | (1) |
|
15.2 A Brief Introduction to Predicate Calculus |
|
|
606 | (4) |
|
15.3 Predicate Calculus and Proving Theorems |
|
|
610 | (2) |
|
15.4 An Overview of Logic Programming |
|
|
612 | (2) |
|
15.5 The Origins of Prolog |
|
|
614 | (1) |
|
15.6 The Basic Elements of Prolog |
|
|
614 | (14) |
|
15.7 Deficiencies of Prolog |
|
|
628 | (6) |
|
15.8 Applications of Logic Programming |
|
|
634 | (2) |
|
|
|
636 | (5) |
| Bibliography |
|
641 | (12) |
| Index |
|
653 | |