Un compilador traduce un programa escrito en un lenguaje de alto nivel a código de máquina, mientras que un intérprete traduce y ejecuta el programa línea por línea. Los programas compilados se ejecutan más rápido pero son más difíciles de depurar, mientras que los programas interpretados son más fáciles de depurar pero más lentos de ejecutar. Un traductor es una máquina teórica que toma como entrada un lenguaje y produce como salida otro lenguaje, usualmente llamados lenguaje fuente y