La implementación de un lenguaje es la que provee una
manera de que se ejecute un programa para una
determinada combinación de software y hardware. Existen
básicamente dos maneras de implementar un lenguaje:
Compilación e interpretación. Compilación es la
traducción a un código que pueda utilizar la máquina.
Los programas traductores que pueden realizar esta
operación se llaman
compiladores. Éstos,
como los programas ensambladores avanzados, pueden
generar muchas líneas de código de máquina por cada
proposición del programa fuente.
Se puede también 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 código objeto que se produce durante
la compilación para utilizarlo en una ejecución futura,
el programador sólo carga el programa fuente en la
computadora junto con los datos que se van a procesar. A
continuación, un programa
intérprete, almacenado
en el sistema operativo del disco, o incluido de manera
permanente dentro de la máquina, convierte cada
proposición del programa fuente en lenguaje de máquina
conforme vaya siendo necesario durante el procesamiento
de los datos. El código objeto no se graba para
utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se
la deberá interpretar otra vez y traducir a lenguaje
máquina. Por ejemplo, durante el procesamiento
repetitivo de los pasos de un ciclo o bucle, cada
instrucción del bucle tendrá que volver a ser
interpretada en cada ejecución repetida del ciclo, lo
cual hace que el programa sea más lento en tiempo de
ejecución (porque se va revisando el código en tiempo de
ejecución) pero más rápido en tiempo de diseño (porque
no se tiene que estar compilando a cada momento el
código completo). El intérprete elimina la necesidad de
realizar una compilación después de cada modificación
del programa cuando se quiere agregar funciones o
corregir errores; pero es obvio que un programa objeto
compilado con antelación deberá ejecutarse con mucha
mayor rapidez que uno que se debe interpretar a cada
paso durante una ejecución del código.
