DataVersusProgram

 

Computer science offers a useful metaphor in the distinction between "data" and "program" — which applies with nice parallelism to facts and methods. Data is static, information at rest, like ink on paper in patterns. Program is dynamic. It is process, motion, transformation, and flow. Both data and program are in some ways interchangeable; each is an aspect of the other, like yin and yang. Programs when not executing are mere patterns of bits, data. Data when interpreted tells the computer what to do, and is program. Programs can be written to take other programs in as data and produce other programs as output — as is the case with compilers, that take instructions written in one computer language and convert them into another.

The book Structure and Interpretation of Computer Programs by Abelson and Sussman explores this dichotomy in its discussion of the "eval" and "apply" functions. To do anything, the computer must evaluate the quantities that are to be worked with, and then apply the chosen transformations to the resulting data.

In the same way, when we think, we need to take hold of our problems, evaluate the facts that are at hand in our particular circumstances, and then apply the appropriate methods to what we know, to move toward a solution. There are a host of methods that have proved to work on problems in the past. If we build up our mental arsenal of methods, we will have a better chance of having the right tool close at hand to solve new problems as they occur.

Saturday, May 01, 1999 at 07:27:50 (EDT) = 1999-05-01

TopicProgramming - TopicThinking


(correlates: ApprovedMethods, SolublesInsolubles, DiffuseConsciousness, ...)