C. Compiladores e intérpretes
Un archivo fuente es el que contiene el texto del código del
programa que ha sido escrito por el equipo de programadores. Las
computadoras solamente pueden ejecutar instrucciones que estén en
código máquina, así que los programas en código fuente no se pueden
ejecutar directamente en la computadora. Un compilador debe,
en primer lugar, convertir el archivo fuente en un archivo
intermedio que se llama archivo objeto o archivo código
objeto (figura 24). El archivo objeto contiene una traducción
del código del programa en lenguaje máquina, pero aún no se
considera un programa ejecutable.
Una división común para describir los compiladores, como menciona
Torben AEgidius Mogensen en [5], es como se describe enseguida,
aunque el orden puede cambiar, algunas fases se pueden combinar o
dividir en otras fases o aún otras fases se pueden insertar, pero
en general, los compiladores siguen estas tareas:
· Análisis léxico. Es la parte inicial de leer y
analizar el código fuente. El texto es leído y dividido en tokens,
cada uno de los cuales corresponde a un símbolo en el lenguaje de
programación, por ejemplo, el nombre de una variable, una palabra
reservada o un número.
· Análisis sintáctico. En esta fase se toma una lista de
tokens producida por el análisis léxico y los acomoda en una
estructura de árbol llamada árbol sintáctico que refleja la
estructura del programa. Esta fase también se llama parsing.
· Verificación de tipos. En esta parte se analiza el
árbol sintáctico para determinar si el programa viola ciertos
requerimientos de consistencia, es decir, si una variable se
utiliza pero no se declara, o si se usa en un contexto que no tiene
sentido por el tipo de variable, tal como un string para utilizar
un valor booleano como una función apuntador.
· Generación de código intermedio. El programa se traduce
a un lenguaje simple independiente de la máquina.
· Ubicación de registros. Los nombres simbólicos de las
variables utilizadas en el código intermedio se traducen a números,
cada uno de ellos corresponde a un registro en el código máquina
objetivo (de la máquina que va a ejecutar finalmente el
programa).
· Generación de código máquina. El lenguaje intermedio se
traduce al lenguaje ensamblador (una representación textual de
código máquina) para una arquitectura de máquina específica.
· Ensamblado y Enlazado. El código en lenguaje
ensamblador se traduce a una representación binaria y se determina
la dirección real de las variables, funciones, etc.

Figura. 24. Historia de la compilación de un programa, desde el
código fuente hasta el código ejecutable.
Un programa linker (enlazador), combina todos los módulos en
el archivo objeto para formar un archivo ejecutable (figura 24). Un
archivo ejecutable sí es un programa completo en sí mismo, es
decir, no requiere hacer referencia al código fuente original. Esto
significa que correrá más rápidamente, comparado con la ejecución
del mismo programa cuando aún no es ejecutable.
Un intérprete traduce un código fuente en lenguaje máquina
también. El intérprete difiere del compilador en que ejecuta cada
orden una vez que se traduce. Este proceso puede hacer más lenta la
ejecución del programa, así que los intérpretes se utilizan menos
que los compiladores. Un intérprete es otra manera de implementar
un lenguaje de programación. La interpretación comparte muchos
aspectos con el compilador. Los análisis léxico, sintáctico y
verificación de tipos son exactamente los mismos que en un
compilador.
Pero en lugar de generar código del árbol sintáctico, el árbol
sintáctico se procesa directamente para evaluar expresiones y
ejecutar sentencias, y así hasta terminar. Un intérprete puede
necesitar evaluar la misma parte del árbol sintáctico varias veces
(por ejemplo cuando se hacen ciclos), por eso la interpretación
puede ser más lenta que la ejecución de un programa compilado. Pero
escribir un intérprete es más fácil de mover a una máquina
diferente, así que para aplicaciones donde la velocidad no importa,
lo mejor es utilizar un intérprete.
Es muy útil sabe cómo se hace un intérprete o un compilador, porque
esto permite a los programadores tener una idea de lo que hacen los
programas de alto nivel, lo que a su vez, ayudará a los
programadores para crear código más eficiente. Otras razones. Los
errores que devuelven los compiladores proporcionan una manera
fácil de entender el código fuente; además, se conoce la diferencia
entre errores léxicos, sintácticos, errores de tipos, y así.
Hay 2 opiniones. Opina sobre este curso.
| Cursos | Valoración | Alumnos | Vídeo | |
|---|---|---|---|---|
|
Bases de Datos en C# El curso incluye el código necesario para acceder a las bases de datos y realizar consultas de selección y de acción.... [05/04/07] |
|
4.826 | ||
|
Aprende Word Este curso está destinado a los principiantes. A todos aquellos que necesitan una introducción detallada para moverse dentro de este programa. Está basado en ejercios prá... [27/09/05] |
|
3.974 | ||
|
Cómo vuelan las aves y los aviones En este curso de no muy larga duración explicaré sencillamente como vuelan aves, aviones y toda cosa que se eleve por los aires.... [14/02/07] |
|
866 | ||
Publicar en
del.icio.us
digg
meneame