sábado, 15 de agosto de 2009

Compilación vrs Interpretación

Cuando escribiamos un programa en un lenguaje de programación generamos un archivo conocido como código fuente, para que éste pueda ser entendido y ejecutado por la computadora deberá ser compilado o traducido a código binario (ceros y unos). A esto se le conoce como proceso de compilación.

Mucho se ha dicho en el tema de programación sobre la desventaja que tienen los interpretes frente a los compiladores. Y es que los compiladores tradicionales generaban código binario ,el cuál la computadora puede entender y ejecutar velozmente pues se trata del lenguaje que la computadora entiende de forma nativa.
Este proceso de compilación era necesario realizarlo solamente una vez y luego generabamos un archivo .exe y la computadora no necesitaba nunca mas de un interprete para ejecutarlo pues es un archivo con lenguaje nativo.

Los interpretes tradicionales sin embargo tienen la función de traducir linea por linea de un programa para que pueda ser ejecutado y esto es siempre que el programa quiere ejecutarse, por consiguiente produce un retardo (que hoy en dia es perceptible relativamente a la velocidad del CPU de cada máquina).

El modelo de compilación/interpretación que tienen los lenguajes modernos como los lenguajes .NET (C#, VB, J#) y Java, parece haber retrocedido tomando la idea de combinar un compilador con un intérprete.

Pero cual es la razón? siemplemente hoy en dia se busca que un programa pueda ser ejecutado en cualquier plataforma de sistema operativo (Windows, Linux, Solaris, etc.)
y para ello los compiladores de hoy en día generan lo que es llamado código intermedio (en el caso de Microsoft) o ByteCodes (en el caso de Java), para luego buscar un intérprete adecuado que pueda traducir este código intermedio en código binario justo en el timpo (Just In Time, JIT) que se intenta ejecutar.

Con esto se logra el objetivo de poder distribuir nuestros programas en cualquier sistema opertativo.

Todo en la vida tiene un costo y en este caso, el retardo que se ocasiona por interpretar un código intermedio en lugar de ejecutar directamente un código binario nos provee una ventaja : La independencia del sistema operativo o programas multiplataforma.

Ing. Alex Jiménez.

No hay comentarios:

Publicar un comentario