Un compilador convierte un programa de alto nivel a código máquina, mientras que un intérprete traduce y ejecuta línea por línea. Un traductor es una máquina teórica que convierte de un lenguaje a otro. Las fases de un compilador incluyen análisis léxico, sintáctico, semántico, generación de código intermedio, optimización de código y generación de código final.