II. Notes on Data Structuring * - Cornell University
II. Notes on Data Structuring * - Cornell University II. Notes on Data Structuring * - Cornell University
84 c.A.R. HOARE he can predict the speed at which a falling object will hit the ground, although he knows that this will not either cause it to fall, or soften the final impact when it does. The last stage in the process of abstraction is very much more sophisticated; it is the attempt to summarise the most general facts about situations and objects covered under an abstraction by means of brief but powerful axioms, and to prove rigorously (on condition that these axioms correctly describe the real world) that the results obtained by manipulation of representations can also successfully be applied to the real world. Thus the axioms of Euclidean geometry correspond sufficiently closely to the real and measurable world to justify the application of geometrical constructions and theorems to the practical business of land measurement and surveying the surface of the earth. The process of abstraction may thus be summarised in four stages: (1) Abstraction: the decision to concentrate on properties which are shared by many objects-or situations in the real world, and to ignore the differences between them. (2) Representation: the choice of a set of symbols to stand for the abstrac- tion; this may be used as a means of communication. (3) Manipulation: the rules for transformation of the symbolic represen- tations as a means of predicting the effect of similar manipulation of the real world. (4) Axiomatisation: the rigorous statement of those properties which have been abstracted from the real world, and which are shared by manipulations of the real world and of the symbols which represent it. 1.1. NUMBERS AND NUMERALS Let us illustrate this rather abstract description by means of a relatively concrete example--the number four. In the real world, it is noticed that objects can be grouped together in collections, for example four apples. This already requires a certain act of abstraction, that is a decision to ignore (for the time being) the differences between the individual apples in the collectionqfor example, one of them is bad, two of them unripe, and the fourth already partly eaten by birds. Now one may consider several different collections, each of them with four items; for example, four oranges, four pears, four bananas, etc. If we choose to ignore the differences between these collections and concentrate on their similarity, then we can form a relatively abstract concept of the number four. The same process could lead to the concept of the number 3, 15, and so on; and a yet further stage of abstraction would lead to the development of the concept of a natural number.
NOTES ON DATA STRUCTURING 85 Now we come to the representation of this concept, for example scratched on parchment, or carved in stone. The representation of a number is called a numeral. The early Roman numeral was clearly pictorial, just four strokes carved in stone:
- Page 1: II. Notes<
- Page 5 and 6: NOTES ON DATA STRUCTURING 87 capabl
- Page 7 and 8: NOTES ON DATA STRUCTURING 89 easy f
- Page 9 and 10: NOTES ON DATA STRUCTURING 91 possib
- Page 11 and 12: NOTES ON DATA STRUCTURING 93 this s
- Page 13 and 14: NOTES ON DATA STRUCTURING 95 In the
- Page 15 and 16: NOTES ON DATA STRUCTURING 97 values
- Page 17 and 18: NOTES ON DATA STRUCTURING 99 where
- Page 19 and 20: NOTES ON DATA STRUCTURING 101 subra
- Page 21 and 22: NOTES ON DATA STRUCTURING 103 else
- Page 23 and 24: NOTES ON DATA STRUCTURING 105 are r
- Page 25 and 26: NOTES ON DATA STRUCTURING 107 In in
- Page 27 and 28: NOTES ON DATA STRUCTURING 109 The m
- Page 29 and 30: NOTES ON DATA STRUCTURING 111 Every
- Page 31 and 32: NOTES ON DATA STRUCTURING 113 ways
- Page 33 and 34: NOTES ON DATA STRUCTURING 115 6. TI
- Page 35 and 36: 6.1. MANIPULATION NOTES ON DATA STR
- Page 37 and 38: NOTES ON DATA STRUCTURING 119 shift
- Page 39 and 40: NOTES ON DATA STRUCTURING 121 The c
- Page 41 and 42: NOTES ON DATA STRUCTURING 123 floor
- Page 43 and 44: NOTES ON DATA STRUCTURING 125 (11)
- Page 45 and 46: NOTES ON DATA STRUCTURING 127 each
- Page 47 and 48: end NOTES ON DATA STRUCTURING 129 n
- Page 49 and 50: NOTES ON DATA STRUCTURING 131 littl
- Page 51 and 52: NOTES ON DATA STRUCTURING 133 can b
NOTES ON DATA STRUCTURING 85<br />
Now we come to the representati<strong>on</strong> of this c<strong>on</strong>cept, for example scratched<br />
<strong>on</strong> parchment, or carved in st<strong>on</strong>e. The representati<strong>on</strong> of a number is called a<br />
numeral. The early Roman numeral was clearly pictorial, just four strokes<br />
carved in st<strong>on</strong>e: <str<strong>on</strong>g>II</str<strong>on</strong>g><str<strong>on</strong>g>II</str<strong>on</strong>g>. An alternative more c<strong>on</strong>venient representati<strong>on</strong> was IV.<br />
The arabic (decimal) representati<strong>on</strong>s are less pictorial, but again there is<br />
some choice: both 4 and 04 (and indeed 004 and so <strong>on</strong>) are all recognised as<br />
valid numerals, representing the same number.<br />
We come next to a representati<strong>on</strong> which is extremely c<strong>on</strong>venient for<br />
processing, providing that the processor is an electr<strong>on</strong>ic digital computer.<br />
Here the number four is represented by the varying directi<strong>on</strong>s of magnetisa-<br />
ti<strong>on</strong> of a group of ferrite cores. These magnetisati<strong>on</strong>s are sometimes repre-<br />
sented by sequences of zeros and <strong>on</strong>es <strong>on</strong> line printer paper; i.e., the binary<br />
representati<strong>on</strong> of the number in questi<strong>on</strong>.<br />
A simple example of the manipulati<strong>on</strong> of numerals is additi<strong>on</strong>, which<br />
can be used to predict the result of adjoining of two collecti<strong>on</strong>s of objects<br />
in the real world. The additi<strong>on</strong> rules for Roman numerals are very simple<br />
and obvious, and are simple to apply. The additi<strong>on</strong> rules for arabic numerals<br />
up to ten are quite unobvious, and must be learnt; but for numbers much<br />
larger than ten they are more c<strong>on</strong>venient than the Roman techniques.<br />
Additi<strong>on</strong> of binary representati<strong>on</strong>s is not a task fit for human beings; but<br />
for a computer this is the simplest and best representati<strong>on</strong>. Thus we see that<br />
choice between many representati<strong>on</strong>s can be made in the light of ease of<br />
manipulati<strong>on</strong> in each particular envir<strong>on</strong>ment.<br />
Finally we reach the stage of axiomatisati<strong>on</strong>; the most widely known<br />
axiom set for natural numbers is that of Peano, which was first formulated<br />
at the end of the last century, l<strong>on</strong>g after natural numbers had been in general<br />
use. In the present day, the axiomatisati<strong>on</strong> of abstract mathematical ideas<br />
usually follows far more closely up<strong>on</strong> their development; and in fact may<br />
assist in the clarificati<strong>on</strong> of the c<strong>on</strong>cept by guarding against c<strong>on</strong>fusi<strong>on</strong> and<br />
error, and by explaining the essential features of the c<strong>on</strong>cept to others. It is<br />
possible that a rigorous formulati<strong>on</strong> of presuppositi<strong>on</strong>s and axioms <strong>on</strong> which<br />
a program is based may reduce the c<strong>on</strong>fusi<strong>on</strong> and error so characteristic of<br />
present day programming practice, and assist in the documentati<strong>on</strong> and<br />
explanati<strong>on</strong> of programs and programming c<strong>on</strong>cepts to others.<br />
1.2. ABSTRACTION AND COMPUTER PROGRAMMING<br />
It is my belief that the process of abstracti<strong>on</strong>, which underlies attempts to<br />
apply mathematics to the real world, is exactly the process which underlies<br />
the applicati<strong>on</strong> of computers in the real world. The first requirement in<br />
designing a program is to c<strong>on</strong>centrate <strong>on</strong> relevant features of the situati<strong>on</strong>,<br />
and to ignore factors which are believed irrelevant. For example, in analysing<br />
the flutter characteristics of a proposed wing design of an aircraft, its elasticity