Básicamente, existen dos grandes formas de ejecutar programas: programas compilados (previamente pasados por un compilador) y programas interpretados (necesitan pasar por un intérprete para ejecutarse en tiempo real).
Características de un compilador
Generalmente un compilador se divide en dos partes:
* Front End: parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Parte que suele ser independiente de la plataforma o sistema operativo para el que funcionará.
* Back End: parte en donde se genera el código máquina exclusivo para una plataforma a partir de lo analizado en el front end.
Por lo general el resultado del back end no puede ser ejecutado directamente, se necesita pasar por un proceso de enlazado (linker).
Existen varios tipos de compiladores: Compiladores cruzados, Compiladores optimizadores, Compiladores de una sola pasada, Compiladores de varias pasadas, Compiladores JIT (Just In Time).
Interprete
Usando un
intérprete, un solo archivo fuente puede producir resultados iguales incluso en
sistemas sumamente diferentes (ej. una PC y un PlayStation 3).
Usando un compilador, un solo archivo fuente puede producir resultados iguales
solo si es compilado a distintos ejecutables específicos a cada sistema.
programas interpretados suelen ser más lentos que los compilados debido a la
necesidad de traducir el programa mientras se ejecuta, pero a cambio son más
flexibles como entornos de programación
y depuración (lo que se traduce, por
ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o
añadir módulos completamente nuevos), y permiten ofrecer al programa
interpretado un entorno no dependiente de la máquina donde se ejecuta el
intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina
virtual).
Para mejorar
el desempeño, algunas implementaciones de programación de lenguajes de
programación pueden interpretar o compilar el código fuente original en una más
compacta forma intermedia y después traducir eso al código de máquina (ej. Perl, Python, MATLAB, y Ruby). Algunos aceptan los
archivos fuente guardados en esta representación intermedia (ej. Python, UCSD Pascal
y Java).
Comparando
su actuación con la de un ser humano, un compilador equivale a un traductor
profesional que, a partir de un texto, prepara otro independiente traducido a
otra lengua, mientras que un intérprete corresponde al intérprete humano, que
traduce de viva voz las palabras que oye, sin dejar constancia por escrito.
En la
actualidad, uno de los entornos más comunes de uso de los intérpretes
informáticos es Internet,
debido a la posibilidad que estos tienen de ejecutarse independientemente de la
plataforma.
No hay comentarios:
Publicar un comentario