Un compilador traduce un programa escrito en un lenguaje de programación a otro lenguaje, generalmente lenguaje de máquina. El proceso de compilación incluye análisis léxico, sintáctico y semántico, así como generación y optimización de código. Los primeros compiladores fueron desarrollados en los años 1950 para permitir programar en lenguajes de alto nivel en lugar de lenguaje máquina.