| Preface |
|
xiii | |
| Running the Example Programs |
|
xxix | |
|
Introduction to Programming Concepts |
|
|
1 | (26) |
|
|
|
1 | (1) |
|
|
|
2 | (1) |
|
|
|
2 | (2) |
|
|
|
4 | (3) |
|
|
|
7 | (2) |
|
|
|
9 | (1) |
|
|
|
10 | (1) |
|
|
|
11 | (2) |
|
|
|
13 | (1) |
|
|
|
14 | (1) |
|
|
|
15 | (1) |
|
|
|
16 | (1) |
|
|
|
17 | (1) |
|
|
|
18 | (2) |
|
|
|
20 | (1) |
|
|
|
21 | (1) |
|
Where do we go from here? |
|
|
22 | (1) |
|
|
|
23 | (4) |
|
I GENERAL COMPUTATION MODELS |
|
|
27 | (650) |
|
Declarative Computation Model |
|
|
29 | (82) |
|
Defining practical programming languages |
|
|
30 | (12) |
|
The single-assignment store |
|
|
42 | (7) |
|
|
|
49 | (7) |
|
Kernel language semantics |
|
|
56 | (16) |
|
|
|
72 | (7) |
|
From kernel language to practical language |
|
|
79 | (11) |
|
|
|
90 | (6) |
|
|
|
96 | (11) |
|
|
|
107 | (4) |
|
Declarative Programming Techniques |
|
|
111 | (122) |
|
|
|
114 | (4) |
|
|
|
118 | (6) |
|
|
|
124 | (3) |
|
Programming with recursion |
|
|
127 | (39) |
|
Time and space efficiency |
|
|
166 | (11) |
|
|
|
177 | (18) |
|
|
|
195 | (15) |
|
|
|
210 | (8) |
|
Program design in the small |
|
|
218 | (12) |
|
|
|
230 | (3) |
|
|
|
233 | (112) |
|
The data-driven concurrent model |
|
|
235 | (11) |
|
Basic thread programming techniques |
|
|
246 | (10) |
|
|
|
256 | (16) |
|
Using the declarative concurrent model directly |
|
|
272 | (6) |
|
|
|
278 | (26) |
|
Soft real-time programming |
|
|
304 | (4) |
|
|
|
308 | (5) |
|
Limitations and extensions of declarative programming |
|
|
313 | (13) |
|
|
|
326 | (11) |
|
|
|
337 | (1) |
|
|
|
338 | (7) |
|
Message-Passing Concurrency |
|
|
345 | (60) |
|
The message-passing concurrent model |
|
|
347 | (3) |
|
|
|
350 | (3) |
|
|
|
353 | (9) |
|
Program design for concurrency |
|
|
362 | (3) |
|
|
|
365 | (12) |
|
Using the message-passing model directly |
|
|
377 | (9) |
|
|
|
386 | (8) |
|
|
|
394 | (5) |
|
|
|
399 | (6) |
|
|
|
405 | (84) |
|
|
|
408 | (2) |
|
State and system building |
|
|
410 | (3) |
|
The declarative model with explicit state |
|
|
413 | (6) |
|
|
|
419 | (16) |
|
|
|
435 | (5) |
|
|
|
440 | (10) |
|
Program design in the large |
|
|
450 | (13) |
|
|
|
463 | (16) |
|
|
|
479 | (3) |
|
|
|
482 | (7) |
|
Object-Oriented Programming |
|
|
489 | (80) |
|
|
|
491 | (1) |
|
Classes as complete data abstractions |
|
|
492 | (10) |
|
Classes as incremental data abstractions |
|
|
502 | (16) |
|
Programming with inheritance |
|
|
518 | (19) |
|
Relation to other computation models |
|
|
537 | (8) |
|
Implementing the object system |
|
|
545 | (6) |
|
The Java language (sequential part) |
|
|
551 | (5) |
|
|
|
556 | (11) |
|
|
|
567 | (2) |
|
|
|
569 | (52) |
|
The shared-state concurrent model |
|
|
573 | (1) |
|
Programming with concurrency |
|
|
573 | (9) |
|
|
|
582 | (10) |
|
|
|
592 | (8) |
|
|
|
600 | (15) |
|
The Java language (concurrent part) |
|
|
615 | (3) |
|
|
|
618 | (3) |
|
|
|
621 | (56) |
|
The relational computation model |
|
|
623 | (4) |
|
|
|
627 | (4) |
|
Relation to logic programming |
|
|
631 | (10) |
|
|
|
641 | (9) |
|
|
|
650 | (4) |
|
|
|
654 | (6) |
|
|
|
660 | (11) |
|
|
|
671 | (6) |
|
II SPECIALIZED COMPUTATION MODELS |
|
|
677 | (100) |
|
Graphical User Interface Programming |
|
|
679 | (28) |
|
The declarative / procedural approach |
|
|
681 | (1) |
|
Using the declarative / procedural approach |
|
|
682 | (7) |
|
The Prototyper interactive learning tool |
|
|
689 | (1) |
|
|
|
690 | (13) |
|
Implementing the GUI tool |
|
|
703 | (1) |
|
|
|
703 | (4) |
|
|
|
707 | (42) |
|
Taxonomy of distributed systems |
|
|
710 | (2) |
|
|
|
712 | (2) |
|
Distribution of declarative data |
|
|
714 | (6) |
|
|
|
720 | (3) |
|
|
|
723 | (1) |
|
Common distributed programming patterns |
|
|
724 | (8) |
|
|
|
732 | (7) |
|
|
|
739 | (4) |
|
|
|
743 | (2) |
|
|
|
745 | (1) |
|
|
|
746 | (3) |
|
|
|
749 | (28) |
|
|
|
750 | (5) |
|
|
|
755 | (3) |
|
The constraint-based computation model |
|
|
758 | (4) |
|
Defining and using computation spaces |
|
|
762 | (10) |
|
Implementing the relational computation model |
|
|
772 | (2) |
|
|
|
774 | (3) |
|
|
|
777 | (36) |
|
|
|
779 | (34) |
|
The general computation model |
|
|
780 | (24) |
|
|
|
804 | (2) |
|
|
|
806 | (2) |
|
Semantics of common abstractions |
|
|
808 | (1) |
|
|
|
808 | (1) |
|
|
|
809 | (4) |
|
|
|
813 | (40) |
|
A Mozart System Development Environment |
|
|
815 | (4) |
|
A.1 Interactive interface |
|
|
815 | (2) |
|
A.2 Command line interface |
|
|
817 | (2) |
|
|
|
819 | (14) |
|
B.1 Numbers (integers, floats, and characters) |
|
|
819 | (5) |
|
B.2 Literals (atoms and names) |
|
|
824 | (1) |
|
|
|
825 | (3) |
|
B.4 Chunks (limited records) |
|
|
828 | (1) |
|
|
|
828 | (2) |
|
|
|
830 | (1) |
|
|
|
831 | (2) |
|
|
|
833 | (10) |
|
C.1 Interactive statements |
|
|
834 | (1) |
|
C.2 Statements and expressions |
|
|
834 | (2) |
|
C.3 Nonterminals for statements and expressions |
|
|
836 | (1) |
|
|
|
836 | (3) |
|
|
|
839 | (1) |
|
|
|
839 | (4) |
|
D General Computation Model |
|
|
843 | (10) |
|
D.1 Creative extension principle |
|
|
844 | (1) |
|
|
|
845 | (1) |
|
|
|
846 | (3) |
|
D.4 Different forms of state |
|
|
849 | (1) |
|
|
|
850 | (1) |
|
D.6 Layered language design |
|
|
850 | (3) |
| References |
|
853 | (10) |
| Index |
|
863 | |