Lenguajes compilados
Naturalmente, un programa
que se escribe en un lenguaje de alto nivel tambien tiene que traducirse a un
codigo que pueda utilizar la maquina. Los programas traductores que pueden
realizar esta operacion se llaman compiladores. Estos, como los programas
ensambladores avanzados, pueden generar muchas lineas de codigo de maquina por
cada proposicion del programa fuente. Se requiere una corrida de compilacion
antes de procesar los datos de un problema.
Los compiladores son aquellos cuya funcion es traducir un programa escrito en un
determinado lenguaje a un idioma que la computadora entienda (lenguaje maquina
con codigo binario).
Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual
Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya
errores, sino hasta que luego de haber compilado el programa, ya no aparecen
errores en el codigo
Lenguajes interpretados
Se puede tambien utilizar una alternativa diferente de los
compiladores para traducir lenguajes de alto nivel. En vez de traducir el
programa fuente y grabar en forma permanente el codigo objeto que se produce
durante la corrida de compilacion para utilizarlo en una corrida de produccion
futura, el programador solo carga el programa fuente en la computadora junto con
los datos que se van a procesar. A continuacion, un programa interprete,
almacenado en el sistema operativo del disco, o incluido de manera permanente
dentro de la maquina, convierte cada proposicion del programa fuente en lenguaje
de maquina conforme vaya siendo necesario durante el proceso de los datos. No se
graba el codigo objeto para utilizarlo posteriormente.
La siguiente vez que se utilice una instruccion, se le debe interpretar otra vez
y traducir a lenguaje maquina. Por ejemplo, durante el procesamiento repetitivo
de los pasos de un ciclo, cada instruccion del ciclo tendra que volver a ser
interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea
mas lento en tiempo de ejecucion (porque se va revisando el codigo en tiempo de
ejecucion) pero mas rapido en tiempo de diseno (porque no se tiene que estar
compilando a cada momento el codigo completo). El interprete elimina la
necesidad de realizar una corrida de compilacion despues de cada modificacion
del programa cuando se quiere agregar funciones o corregir errores; pero es
obvio que un programa objeto compilado con antelacion debera ejecutarse con
mucha mayor rapidez que uno que se debe interpretar a cada paso durante una
corrida de produccion.