A program that converts another program
from some
source language (or
programming language) to
machine language (object code). Some compilers output
assembly language which is then converted to
machine language by a separate
assembler.
A compiler is distinguished from an assembler by the fact that
each input statement does not, in general, correspond to a
single machine instruction or fixed sequence of instructions.
A compiler may support such features as automatic allocation
of variables, arbitrary arithmetic expressions, control
structures such as FOR and WHILE loops, variable
scope,
input/ouput operations, higher-order functions and
portability of source code.
AUTOCODER, written in 1952, was possibly the first primitive
compiler.
Laning and Zierler's compiler, written in
1953-1954, was possibly the first true working algebraic
compiler.
See also
byte-code compiler,
native compiler,
optimising compiler.