|  About  |  Archives  |  Log in  | 

Archive for September, 2004

Software complexity

… Hierarchical systems seem to have the property that something considered as an undivided entity on none 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 programs 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. …

Expert from Edsger Dijkstra's ACM Turing Award Lecture, "The Humble Programmer" (EWD340), given in 1972.

If you enjoyed this post, make sure you subscribe to my RSS feed!