Recent discussions about machine language and the myth of mandatory HLL performance degradation prompted this note. The idea: HLL code can manipulate low-level constructs in a strongly typed regime.
High-level programming languages such as ML and Java allow programmers to program in terms of abstractions such as pairs, records, and objects, which have well-defined semantics but whose realizations in terms of the underlying concrete machine are left unspecified and unobservable. Sometimes, it is necessary to program without these [high-level] abstractions.
Traditionally, [such machine-oriented] needs have been addressed in an un-typed, or a weakly typed fashion. Languages such as C give programmers relatively precise control over data layout and initialization at the expense of type and memory safety. Traditional compilers represent programs internally using un-typed languages, relying on the correctness of the compiler to preserve any safety properties enjoyed by the source program.
An important contribution of this work is ... the possibility ... that even programs requiring detailed control of memory layout could be written in a typed, high-level language.
Posted to theory by Mark Evans on 5/12/04; 10:23:05 AM