Computer Programmers Master Nine Orders of Magnitude

In his lecture, The Humble Programmer Dijkstra argues that programming is the only activity in which humans have to master nine orders of magnitude of difference between the lowest level of detail and the highest:

Hierarchical systems seem to have the property that something considered as an undivided entity on one level, is considered as a composite object on the next lower level of greater detail; as a result the natural grain of space or time that is applicable at each level decreases by an order of magnitude when we shift our attention from one level to the next lower one. We understand walls in terms of bricks, bricks in terms of crystals, crystals in terms of molecules etc. As a result the number of levels that can be distinguished meaningfully in a hierarchical system is kind of proportional to the logarithm of the ratio between the largest and the smallest grain, and therefore, unless this ratio is very large, we cannot expect many levels. In computer programming our basic building block has an associated time grain of less than a microsecond, but our program may take hours of computation time. I do not know of any other technology covering a ratio of 1010 or more: the computer, by virtue of its fantastic speed, seems to be the first to provide us with an environment where highly hierarchical artefacts are both possible and necessary.

A computer programmer codes to the microsecond of processing time it takes for a line of code to execute, and to the hours of processing time an entire program may take to accomplish its task. In fact, in today’s world of computing, with applications like SETI@home and concepts like cloud computing we are talking about an even greater scope than Dijkstra imagined in his 1972 lecture.


Posted

in

by

Tags: