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.
atrás