Structure and Interpretation of Computer Programs



Yüklə 2,71 Mb.
Pdf görüntüsü
səhifə222/222
tarix08.08.2018
ölçüsü2,71 Mb.
#61085
1   ...   214   215   216   217   218   219   220   221   222

test-and-set!

, [2]


test-condition

text-of-quotation

Thatcher, James W.

THE Multiprogramming System

the-cars

 

    register, [2]



    vector

the-cdrs


 

    register, [2]

    vector

the-empty-stream

    in MIT Scheme

the-empty-termlist

, [2]

the-global-environment



, [2]

theorem proving (automatic)

 (f(n)) (theta of f(n))

thunk


    call-by-name

    call-by-need

    forcing

    implementation of

    origin of name

time 


    assignment and

    communication and

    in concurrent systems

    functional programming and

    in nondeterministic computing, [2]

    purpose of

time segment, in agenda

time slicing

timed-prime-test

timing diagram

TK!Solver

tower of types

tracing 

    instruction execution

    register assignment

transform-painter

transparency, referential

transpose

 a matrix

tree 


    B-tree

    binary, see also binary tree 

    combination viewed as

    counting leaves of

    enumerating leaves of

    fringe of

    Huffman



    lazy

    mapping over

    red-black

    represented as pairs

    reversing at all levels

tree accumulation

tree->list...

tree-map


tree-recursive process

    order of growth

trigonometric relations

true


true

true?


truncation error

truth maintenance

try-again

Turing machine

Turing, Alan M., [2]

Turner, David, [2], [3]

type field

type tag, [2]

    two-level

type(s) 


    cross-type operations

    dispatching on

    hierarchy in symbolic algebra

    hierarchy of

    lowering, [2]

    multiple subtype and supertype

    raising, [2]

    subtype

    supertype

    tower of

type-inferencing mechanism

type-tag


    using Scheme data types

typed pointer

typing input expressions

unbound variable

unev

 register



unification

    discovery of algorithm

    implementation

    pattern matching vs., [2]

unify-match

union-set

    binary-tree representation

    ordered-list representation

    unordered-list representation



unique

 (query language)

unique-pairs

unit square

univariate polynomial

universal machine

    explicit-control evaluator as

    general-purpose computer as

University of California at Berkeley

University of Edinburgh

University of Marseille

UNIX, [2]

unknown-expression-type

unknown-procedure-type

unordered-list representation of sets

unspecified values 

    

define


    

display


    

if

 without alternative



    

newline


    

set!


    

set-car!


    

set-cdr!


up-split

update-insts!

upper-bound

upward compatibility

user-initial-environment

 (MIT Scheme)

user-print

    modified for compiled code

V operation on semaphore

val


 register

value 


    of a combination

    of an expression, see also unspecified values 

value-proc

variable, see also local variable 

    bound

    free


    scope of, see also scope of a variable 

    unbound

    value of, [2]

variable


variable-length code

variable?

, [2]

vector (data structure)



vector (mathematical) 

    operations on, [2]

    in picture-language frame

    represented as pair

    represented as sequence



vector-ref

 (primitive procedure)

vector-set!

 (primitive procedure)

Venus

verbs


very high-level language

Wadler, Philip

Wadsworth, Christopher

Wagner, Eric G.

Walker, Francis Amasa

Wallis, John

Wand, Mitchell, [2]

Waters, Richard C.

weight

weight-leaf



Weyl, Hermann

‘‘what is’’ vs. ‘‘how to’’ description, see declarative vs. imperative knowledge 

wheel

 (rule), [2]



width

width of an interval

Wilde, Oscar (Perlis’s paraphrase of)

Wiles, Andrew

Winograd, Terry

Winston, Patrick Henry, [2]

wire, in digital circuit

Wisdom, Jack

Wise, David S.

wishful thinking, [2]

withdraw

    problems in concurrent system

without-interrupts

world line of a particle, [2]

Wright, E. M.

Wright, Jesse B.

xcor-vect

Xerox Palo Alto Research Center, [2]



Y operator

ycor-vect

Yochelson, Jerome C.

Zabih, Ramin

zero crossings of a signal, [2], [3]

zero test (generic)

    for polynomials

Zetalisp


Zilles, Stephen N.

Zippel, Richard E.




[Go to first, previous, next page;   contents;   index]

Document Outline

  • Structure and Interpretation  of Computer Programs
  • € Contents
  • € Foreword
  • € Preface to the Second Edition
  • € Preface to the First Edition
  • € Acknowledgments
  • Chapter 1 Building Abstractions with Procedures
        • Programming in Lisp
    • 1.1€€The Elements of Programming
      • 1.1.1€€Expressions
      • 1.1.2€€Naming and the Environment
      • 1.1.3€€Evaluating Combinations
      • 1.1.4€€Compound Procedures
      • 1.1.5€€The Substitution Model for Procedure Application
        • Applicative order versus normal order
      • 1.1.6€€Conditional Expressions and Predicates
      • 1.1.7€€Example: Square Roots by Newton's Method
      • 1.1.8€€Procedures as Black-Box Abstractions
        • Local names
        • Internal definitions and block structure
    • 1.2€€Procedures and the Processes They Generate
      • 1.2.1€€Linear Recursion and Iteration
      • 1.2.2€€Tree Recursion
        • Example: Counting change
      • 1.2.3€€Orders of Growth
      • 1.2.4€€Exponentiation
      • 1.2.5€€Greatest Common Divisors
      • 1.2.6€€Example: Testing for Primality
        • Searching for divisors
        • The Fermat test
        • Probabilistic methods
    • 1.3€€Formulating Abstractions with Higher-Order Procedures
      • 1.3.1€€Procedures as Arguments
      • 1.3.2€€Constructing Procedures Using Lambda
        • Using let to create local variables
      • 1.3.3€€Procedures as General Methods
        • Finding roots of equations by the half-interval method
        • Finding fixed points of functions
      • 1.3.4€€Procedures as Returned Values
        • Newton's method
        • Abstractions and first-class procedures
  • Chapter 2 Building Abstractions with Data
    • 2.1€€Introduction to Data Abstraction
      • 2.1.1€€Example: Arithmetic Operations for Rational Numbers
        • Pairs
        • Representing rational numbers
      • 2.1.2€€Abstraction Barriers
      • 2.1.3€€What Is Meant by Data?
      • 2.1.4€€Extended Exercise: Interval Arithmetic
    • 2.2€€Hierarchical Data and the Closure Property
      • 2.2.1€€Representing Sequences
        • List operations
        • Mapping over lists
      • 2.2.2€€Hierarchical Structures
        • Mapping over trees
      • 2.2.3€€Sequences as Conventional Interfaces
        • Sequence Operations
        • Nested Mappings
      • 2.2.4€€Example: A Picture Language
        • The picture language
        • Higher-order operations
        • Frames
        • Painters
        • Transforming and combining painters
        • Levels of language for robust design
    • 2.3€€Symbolic Data
      • 2.3.1€€Quotation
      • 2.3.2€€Example: Symbolic Differentiation
        • The differentiation program with abstract data
        • Representing algebraic expressions
      • 2.3.3€€Example: Representing Sets
        • Sets as unordered lists
        • Sets as ordered lists
        • Sets as binary trees
        • Sets and information retrieval
      • 2.3.4€€Example: Huffman Encoding Trees
        • Generating Huffman trees
        • Representing Huffman trees
        • The decoding procedure
        • Sets of weighted elements
    • 2.4€€Multiple Representations for Abstract Data
      • 2.4.1€€Representations for Complex Numbers
      • 2.4.2€€Tagged data
      • 2.4.3€€Data-Directed Programming and Additivity
        • Message passing
    • 2.5€€Systems with Generic Operations
      • 2.5.1€€Generic Arithmetic Operations
      • 2.5.2€€Combining Data of Different Types
        • Coercion
        • Hierarchies of types
        • Inadequacies of hierarchies
      • 2.5.3€€Example: Symbolic Algebra
  • Chapter 3 Modularity, Objects, and State
    • 3.1€€Assignment and Local State
      • 3.1.1€€Local State Variables
      • 3.1.2€€The Benefits of Introducing Assignment
      • 3.1.3€€The Costs of Introducing Assignment
        • Sameness and change
        • Pitfalls of imperative programming
    • 3.2€€The Environment Model of Evaluation
      • 3.2.1€€The Rules for Evaluation
      • 3.2.2€€Applying Simple Procedures
      • 3.2.3€€Frames as the Repository of Local State
      • 3.2.4€€Internal Definitions
    • 3.3€€Modeling with Mutable Data
      • 3.3.1€€Mutable List Structure
        • Sharing and identity
        • Mutation is just assignment
      • 3.3.2€€Representing Queues
      • 3.3.3€€Representing Tables
        • Two-dimensional tables
        • Creating local tables
      • 3.3.4€€A Simulator for Digital Circuits
        • Primitive function boxes
        • Representing wires
        • The agenda
        • A sample simulation
        • Implementing the agenda
      • 3.3.5€€Propagation of Constraints
        • Using the constraint system
        • Implementing the constraint system
        • Representing connectors
    • 3.4€€Concurrency: Time Is of the Essence
      • 3.4.1€€The Nature of Time in Concurrent Systems
        • Correct behavior of concurrent programs
      • 3.4.2€€Mechanisms for Controlling Concurrency
        • Serializing access to shared state
        • Serializers in Scheme
        • Complexity of using multiple shared resources
        • Implementing serializers
        • Deadlock
        • Concurrency, time, and communication
    • 3.5€€Streams
      • 3.5.1€€Streams Are Delayed Lists
        • The stream implementation in action
        • Implementing delay and force
      • 3.5.2€€Infinite Streams
        • Defining streams implicitly
      • 3.5.3€€Exploiting the Stream Paradigm
        • Formulating iterations as stream processes
        • Infinite streams of pairs
        • Streams as signals
      • 3.5.4€€Streams and Delayed Evaluation
        • Normal-order evaluation
      • 3.5.5€€Modularity of Functional Programs and Modularity of Objects
        • A functional-programming view of time
  • Chapter 4 Metalinguistic Abstraction
    • 4.1€€The Metacircular Evaluator
      • 4.1.1€€The Core of the Evaluator
        • Eval
          • Primitive expressions
          • Special forms
          • Combinations
        • Apply
        • Procedure arguments
        • Conditionals
        • Sequences
        • Assignments and definitions
      • 4.1.2€€Representing Expressions
        • Derived expressions
      • 4.1.3€€Evaluator Data Structures
        • Testing of predicates
        • Representing procedures
        • Operations on Environments
      • 4.1.4€€Running the Evaluator as a Program
      • 4.1.5€€Data as Programs
      • 4.1.6€€Internal Definitions
      • 4.1.7€€Separating Syntactic Analysis from Execution
    • 4.2€€Variations on a Scheme -- Lazy Evaluation
      • 4.2.1€€Normal Order and Applicative Order
      • 4.2.2€€An Interpreter with Lazy Evaluation
        • Modifying the evaluator
        • Representing thunks
      • 4.2.3€€Streams as Lazy Lists
    • 4.3€€Variations on a Scheme -- Nondeterministic Computing
      • 4.3.1€€Amb and Search
        • Driver loop
      • 4.3.2€€Examples of Nondeterministic Programs
        • Logic Puzzles
        • Parsing natural language
      • 4.3.3€€Implementing the Amb Evaluator
        • Execution procedures and continuations
        • Structure of the evaluator
        • Simple expressions
        • Conditionals and sequences
        • Definitions and assignments
        • Procedure applications
        • Evaluating amb expressions
        • Driver loop
    • 4.4€€Logic Programming
      • 4.4.1€€Deductive Information Retrieval
        • A sample data base
        • Simple queries
        • Compound queries
        • Rules
        • Logic as programs
      • 4.4.2€€How the Query System Works
        • Pattern matching
        • Streams of frames
        • Compound queries
        • Unification
        • Applying rules
        • Simple queries
        • The query evaluator and the driver loop
      • 4.4.3€€Is Logic Programming Mathematical Logic?
        • Infinite loops
        • Problems with not
      • 4.4.4€€Implementing the Query System
        • 4.4.4.1€€The Driver Loop and Instantiation
        • 4.4.4.2€€The Evaluator
        • Simple queries
        • Compound queries
        • Filters
        • 4.4.4.3€€Finding Assertions by Pattern Matching
        • Patterns with dotted tails
        • 4.4.4.4€€Rules and Unification
        • 4.4.4.5€€Maintaining the Data Base
        • 4.4.4.6€€Stream Operations
        • 4.4.4.7€€Query Syntax Procedures
        • 4.4.4.8€€Frames and Bindings
  • Chapter 5 Computing with Register Machines
    • 5.1€€Designing Register Machines
      • 5.1.1€€A Language for Describing Register Machines
        • Actions
      • 5.1.2€€Abstraction in Machine Design
      • 5.1.3€€Subroutines
      • 5.1.4€€Using a Stack to Implement Recursion
        • A double recursion
      • 5.1.5€€Instruction Summary
    • 5.2€€A Register-Machine Simulator
      • 5.2.1€€The Machine Model
        • Registers
        • The stack
        • The basic machine
      • 5.2.2€€The Assembler
      • 5.2.3€€Generating Execution Procedures for Instructions
        • Assign instructions
        • Test, branch, and goto instructions
        • Other instructions
        • Execution procedures for subexpressions
      • 5.2.4€€Monitoring Machine Performance
    • 5.3€€Storage Allocation and Garbage Collection
      • 5.3.1€€Memory as Vectors
        • Representing Lisp data
        • Implementing the primitive list operations
        • Implementing stacks
      • 5.3.2€€Maintaining the Illusion of Infinite Memory
        • Implementation of a stop-and-copy garbage collector
    • 5.4€€The Explicit-Control Evaluator
        • Registers and operations
      • 5.4.1€€The Core of the Explicit-Control Evaluator
      • 5.4.2€€Sequence Evaluation and Tail Recursion
        • Tail recursion
      • 5.4.3€€Conditionals, Assignments, and Definitions
        • Assignments and definitions
      • 5.4.4€€Running the Evaluator
        • Monitoring the performance of the evaluator
    • 5.5€€Compilation
        • An overview of the compiler
      • 5.5.1€€Structure of the Compiler
        • Targets and linkages
        • Instruction sequences and stack usage
      • 5.5.2€€Compiling Expressions
        • Compiling linkage code
        • Compiling simple expressions
        • Compiling conditional expressions
        • Compiling sequences
        • Compiling lambda expressions
      • 5.5.3€€Compiling Combinations
        • Applying procedures
        • Applying compiled procedures
      • 5.5.4€€Combining Instruction Sequences
      • 5.5.5€€An Example of Compiled Code
      • 5.5.6€€Lexical Addressing
      • 5.5.7€€Interfacing Compiled Code to the Evaluator
        • Interpretation and compilation
  • € References
  • € List of Exercises
  • € Index

Yüklə 2,71 Mb.

Dostları ilə paylaş:
1   ...   214   215   216   217   218   219   220   221   222




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə