about summary refs log tree commit diff stats
path: root/js/games/nluqo.github.io/~bh/61a-pages/Lib/review
blob: 63a4837149eae83dabefe57d4ff89e29b4a98ec8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
CS 60A			Course summary


You aren't expected to understand this yet, but keep it for reference
during the semester and see if it starts to make sense!

------------------------------

ABSTRACTION:
    voluntary submission to a discipline
    in order to gain expressive power

------------------------------

1.  FUNCTIONAL PROGRAMMING
	focus:	repeatable input-output behavior
		composition of functions to layer complexity
	hidden:	side effect mechanisms (assignment)
		internal control structure of procedures

2.  DATA ABSTRACTION
	focus:	semantic view of data aggregates
	hidden:	actual representation in memory

3.  OBJECT ORIENTED PROGRAMMING
	focus:	time-varying local state
		metaphor of many autonomous actors
	hidden:	scheduling of interactions within the one computer
		procedural methods within an object

4.  STREAMS
	focus:	metaphor of parallel operations on data aggregates
		signal processing model of computation
	hidden:	actual sequence of events in the computation

5.  PROGRAMMING LANGUAGES
	focus:	provide a metaphor for computation
		embody common elements of large groups of problems
	hidden:	technology-specific implementation medium
		storage allocation, etc.

6.  LOGIC PROGRAMMING
	focus:	declarative representation of knowledge
		inference rules
	hidden:	inference algorithm


Note: each of these abstractions can be approached "from above," focusing
on the view of computing that the abstraction provides, or "from below,"
focusing on the techniques by which the abstraction is implemented.  In
the metacircular evaluator we emphasize the view from below, since we've
been working all along with the view from above.  In the query evaluator
we emphasize the view from above, barely mentioning the implementation
techniques.  In our discussion of object programming both views are used.