Language-Based Models
It would be useful to bridge the gap between the low-level machine models
used in algorithms research and the high-level languages used in software de-
6
velopment. It seems clear that the performance of practical programs could be
greatly improved by greater use of sophisticated algorithmic techniques. But, as
mentioned earlier, the use of higher-order programming impedes the expression
and analysis of algorithms written in these languages.
One important ingredient in addressing this problem is the development of
cost semantics for realistic languages. The importance of a machine model in
algorithms is simply that it provides a means of counting space and time usage
of a program: one instruction, one unit of time; one word, one unit of space.
Rather than dening complexity at the level of the machine, it is possible to
assign cost measures to the constructs of a high-level language directly, so that
the analysis can be made in terms of the high-level code, rather than in terms
of how it is compiled to a low-level machine. The high-level costs are separately
validated by proving that they can be realized on various machine models, with
bounds in
uenced by platform parameters. This separation improves scalabil-
ity as technology changes, and admits more abstract notions of cost than the
individual steps of a machine. Moreover, by working at the language level one
may consider more abstract notions of cost than are easily expressible at the
machine level.