Compiler

Definition and stakes

Guy L. Steele, Jr.,  Rabbit: A Compiler for Scheme (1978)

“ The only defined operation on a function is invocation. (Note Operations on Functions) we draw this sharp distinction between environment and control constructs on the one hand and data manipulation primitives on the other because only the former are treated in any depth by RABBIT, whereas much of the knowledge of a "real" compiler deals with the latter. A PL/I compiler must have much specific knowledge about numbers, arrays, strings, and so on. ”
Source: Wikisource

Guy L. Steele, Jr.,  Rabbit: A Compiler for Scheme (1978)

“ The COMPILE function is the main top-level function of the compiler. It is responsible for invoking each phase of the compiler in order. NAME is the name of a function (an atomic symbol) , and LAMBDA-EXP the corresponding lambda-expression; these are easily extracted, for example, from a SCHEME DEFINE-form.
SEE-CRUD is NIL for normal processing, or T for debugging purposes. OPTIMIZE is a switch controlling whether the optimization phase should be invoked; it can be T, NIL, or MAYBE (meaning to ask the (human) debugger) .
The overall flow within COMPILE is as follows: check number of arguments
”
Source: Wikisource

The Jargon File, Version 4.0.0…

“ The percentage of `extra' code generated by a compiler over the size of equivalent assembler code produced by {hand-hacking}; i.e., the space (or maybe time) you lose because you didn't do it yourself. This number is often used as a measure of the goodness of a compiler; slop below 5% is very good, and 10% is usually acceptable. With modern compiler technology, esp. on RISC machines, the compiler's slop may actually be *negative*; that is, humans may be unable to generate code as good. This is one of the reasons assembler programming is no longer common. ”
Source: Gutenberg

Get perspective with Kwize: daily news enlightened by great literature