Cut) Operation (In Prolog), 662, 666, 669 ! (Escaped Variable Marker
Total Page:16
File Type:pdf, Size:1020Kb
Index ! (cut)operation (in Prolog), 662, < (strictlyless) comparison, 55, 830 666, 669 <= (optional method argument) oper- ! (escaped variable marker), 500, 509 ator, 500 !! (read-only) operation, 206, 799 > (strictly greater) comparison, 55 " (double quote), 53, 821 >= (greater or equal) comparison, 55 $ (nesting marker), 53, 83, 355, 365 \ (backslash), 821 ´ (single quote), 35, 52, 821, 824 \ (backslash) notation (in Haskell), ’ (single quote) operation (in Lisp), 311 39 \= (inequality) comparison, 55 * (multiplication) operation, 54, 821 \=: (inequality) constraint, 756 */ (comment end), 841 ˜ (tilde) minus sign, 820 + (addition) operation, 54, 821 ` (backquote), 50, 821, 841 - (subtraction) operation, 54, 821 ‘ (backquote) operation (in Lisp), 39 . (field selector) operation, 54, 826 | (list pairing) constructor, 52 .:= (dictionary/array assignment) Abelson, Harold, 42 statement, 436, 437, 838 absolute error, 120 .:= (dictionary/array exchange) ex- abstract data type (ADT), 195–210, pression, 838 419 / (floating division) operation, 54, abstract machine, 41, 56–78, 92–94, 821 239–241, 282–283, 348–349, /* (comment start), 841 416–417 :: (membership) constraint, 751 relation to semantic rules, 786 := (state assignment) statement, 494, substitution-based, 126–127 497 abstract syntax tree, 163 := (state exchange) expression, 497 abstraction, xviii, see control abstrac- = (binding) operation, 44, 45, 47, 99 tion, see data abstraction =: (equality) constraint, 751 active object, 556 =<: (less or equal) constraint, 753 class, 492 == (equality) comparison, 55 collection, 435 =< (less or equal) comparison, 55 collector, 189, 325, 435, 484 ? (output argument), 57, 841 connector, 326 @ (state access) operation, 494, 497 database, 654 # (tupling) constructor, 140, 826, 831 encapsulated search, 625 % (comment to end of line), 841 hierarchy in object-oriented pro- % (modulo) operation (in Java), 617 gramming, 546 & (inlinecharacter) operator, 820 iteration, 122 864 Index life cycle, 40 IP, 207 Linda (tuple space), 586 URL, 211 linguistic, see linguistic abstrac- adjacency list, 464 tion Adjoin operation, 161, 437, 438, 533, list comprehension, 301 550, 695, 826 lock, 582, 598 AdjoinAt operation, 378, 437, 438, loop, 181, 258 826 mailbox, 391 adjunction (environment), 62 monitor, 592 ADT (abstract data type), 420 pipe of stream objects, 561 advanced exercise, xxiv port object, 350 adversary, 208 procedural, 178 agent, 350 protector, 325 concurrent component, 362 replicator, 326 message-passing approach, 576 software component, 220 Alarm operation, 304, 393 specialization hierarchy, xviii alarm clock, xv stream object, 265 algebra, xxiii, 113 termination detection, 382 algorithm transaction, 600 breadth-first traversal, 156 tuple space, 586 compression, 177 access (cell operation), 17, 414 concurrent composition, 276 ACCLAIM project, xxvi copying dual-space garbage col- accumulator, 138–141 lection, 78 breadth-first traversal, 156 Dekker’s algorithm for mutual declarative state, 408 exclusion, 570 depth-first traversal, 155 depth-first traversal, 155 for loop, 189 distributed, see distributed algo- limit of declarative model, 315 rithm loop abstraction, 185, 258 elevator, 376 parser, 161 Flavius Josephus problem, 558 Prolog, 140 Floyd-Warshall, 470 relation to difference lists, 142 garbage collection, 76 relation to fold operation, 185 Hamming problem, 293 tree traversal, 192 linear congruential generator, ACID properties, 600 474 action (in GUI), 683 mergesort, 137, 166 active memory, 74 mergesort (generic), 181 size, 172, 314 Newton’s method for square roots, ActiveX, 462 119 actor model, 345 nonalgorithmic programming, 622 adder parallel transitive closure, 469 n-bit, 341 Pascal’s triangle, 10 full, 268 queue, 145 address persistent, 297 Index 865 priority, 614 array, 436 quicksort, 232, 524 extensible, 440 random number generation, 472 usage trade-offs, 438 simulation, 476 ASCII (American Standard Code for termination detection, 382 Information Interchange), thread scheduling, 240 219, 458, 459, 715 transaction manager, 605 Ask operation, 768 transitive closure, 464 ask operation, 782, 790 tree, 151 assert/1 operation (in Prolog), 656, tree-drawing, 158, 273 662 unification, 101 assertion, 444 word frequency, 198 assignment alias (in QTk), 680 axiomatic semantics, 446 aliasing, 418, 449 cell operation, 17, 414 allocation, 75 in-place, 314 always true (in temporal logic), 603 Java, 552 Anderson, Ross J., 744, 843 monotonic, 849 Andrews, Gregory, 582 multiple, 849 andthen operator, 83 single, 42, 849 Append operation, 829 to iteration variable, 189 apple, 489 association, 531 Apple Corporation, xxvi association list, 486 applet, 718 asynchronous communication, 332 application active object, 558 FlexClock example, 698 component interaction, 456 ping-pong example, 305 distributed object, 726 standalone, 222 distributed port, 713 Java, 555 distributed semantics, 383 video display, 321 Erlang, 386 applicative order reduction, 330 error reporting, 359 arbitrary precision arithmetic, 3 failure detection, 739 arbitrary precision integer arithmetic, GUI, 685 821 message passing, 345 arch, xviii port, 347 arithmetic, 54 receive, 332 Arity operation, 54, 826 relation with dataflow, 726 arity, 826 RMI, 356 case semantics, 67 send, 332, 719 method head, 499 slow network, 578 Prolog, 661 trade-off with fault detection, record memory consumption, 174 745 record performance, 438 ATM(Asynchronous Transfer Mode), Armstrong, Joe, 582 387 Arnold, Ken, 537 atom, 52, 824 866 Index defining scope, 508 blank space (in Oz), 841 predicate calculus, 633 Blasband, Darius, 642 propositional logic, 632 block atomic action, 579–615 file, 292 approaches to concurrency, 573 imperative language, 486 reasoning, 581 memory, 74, 76 when to use, 576 Smalltalk, 543 atomicity, 21, 600 blocking operation, 239 AtomToString operation, 824 blue cut (in Prolog), 666, 668 attribute book final(in Java), 544, 551 Component Software: Beyond initialization, 498 Object-Oriented Program- object, 497 ming, 462 availability, 711 Concurrent Programming in Er- AXD 301 ATM switch, 387 lang, 582 axiom Concurrent Programming in Java, axiomatic semantics, 441 581 Horn clause (Prolog), 635 Concurrent Programming: Prin- logic programming, 406, 634 ciples and Practice, 582 predicate calculus, 633 Object-Oriented Software Con- axiomatic semantics, 38, 440–450, struction, 491 632 Software Fundamentals, 462 Structure and Interpretation of Backus, John, 32 Computer Programs,xix backward chaining, 662 The Art of Prolog, 666 bagof/3 operation (in Prolog), 626, The Mythical Man-Month, 462 670 Transaction Processing: Concepts Bal, Henri E., 334 and Techniques, 582 basic constraint, 759 boolean, 52 batching Borges, Jorge Luis, 621, 707 distributed stream, 719, 724 bottom-up software development, 451 object invocations, 540, 565 bound identifier occurrence, 64 Baum, L. Frank, 1 bounded buffer, 263 Bernstein, Philip A., 600 data-driven concurrent version, billion dollar budget, 521 263 binary integer, 819 lazy version, 290 binding monitor version, 593 basic and nonbasic, 788 brand, 498 dynamic, 506 Brand, Per, xxvi static, 506 breadth-first traversal, 156 variable, 787 break (in for loop), 190 variable-variable, 47 break statement, 486 binomial theorem, 4 bridge building, xvi, xvii bistable circuit (digital logic), 270 Brinch Hansen, Per, 592 Index 867 Brooks, Jr., Frederick P., 462 forward, 674 Browser tool, see Mozart Program- channel ming System asynchronous, 348, 385 bundling, 420 component interface, 456 by-need execution, 281–284, 795 dataflow variable, 332 Multilisp, 337 many-shot, 363 Oz 3, 809 one-shot, 363, 368 WaitNeeded operation, 795 port, 347 WaitQuiet operation, 798 synchronous, 619 ByNeed operation, 282 character, 820 definition using WaitNeeded, 795 alphanumeric, 50, 841 byte (in Java), 553 Java, 553 bytestring, 831 China, 707 choice statement, 623, 772 calculator, 1 choice point, 623, 767 calculus binary, 654, 762 analysis, 170 constraint programming, 755 first-order predicate, 633 dynamic, 654 foundational, xvii implementation, 772 λ, xvii, 41, 97, 331, 344, 792, 805, memory leak, 668 811, 846 Choose operation, 654, 767 π, xvii, 41, 54, 805 chunk, 828 calendar widget, 691–693 use in object reflection, 517 call/1 operation (in Prolog), 661, Church-Rosser theorem, 331 662 Churchill, Winston, 450 call by ..., see parameter passing Clarke, Arthur C. call graph, 318 second law, 104 capability, 208 third law, 314 declarative, 210 class, 413, 491, 496, 546 method label, 510 abstract, 523, 546 revocable, 434, 483 active object, 558 Cardelli, Luca, 722 common limitations, 539 cascading abort, 604 complete definition, 492 case statement, 67, 790 concrete, 523, 525, 546 catch clause (in try), 94 delegation, 511 causality diagram, 528, 534 concurrency, 238 encapsulation control, 506 message-passing events, 353 event manager example, 563 Ceil operation, 822 final, 492, 497, 543 cell (explicit state), 409, 414–417, forwarding, 511 794, 848 generic, 524 cellular phone, xv, xviii higher-order programming, 525 chaining implementation, 548 backward, 662 incremental definition, 502 868 Index inheritance, 502 comics, 482 inner(in Java), 540, 552 comment (in Oz), 841 introduction, 18 Commit operation, 769 member, 497 common self, 511 metaclass, 547 compaction, 76 mixin, 566 comparison, 55 parameterized, 524 compilation patching, 521 separate, 105 programming techniques, 518 standalone, 228 reflection of object state, 517 ping-pong example, 305 structure view, 519 unit, 221, 412, 454, 816 substitution property, 518, 521, compiler,