compiler

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.