a program to turn one computer program representation into another. usually this means [source_code] or [intermediate_representation] ([IR]) into [machine_code] or [assembly]. or source code into [IR]. or source code of one language into source code of another language.
two types of compilers are [AOT] (ahead of time) and [JIT] (just in time).