A program that translates high-level language into absolute code, intermediate code, or sometimes assembly language. The input to the compiler (the source code) is a description of an algorithm or program in a problem-oriented language; its output (the object code) is an equivalent description of the algorithm in a machine-oriented language. See also JIT compiler.