Está en la página 1de 5

Compilador

Son programas que traducen código fuente a código objeto. EL compilador


deriva su nombre de la manera en que trabaja, buscando en todo el código
fuente, recolectando y reorganizando las instrucciones. Un compilador difiere
de un intérprete en que el intérprete toma cada línea de código y la analiza y
ejecuta mientras que el compilador mira el código por completo.

Los compiladores requieren de un tiempo antes de poder generar un


ejecutable, sin embargo, los programas creados con compiladores se ejecutan
mucho más rápido que un mismo programa ejecutado con un intérprete.

Cada lenguaje de programación de alto nivel (excepto los estrictamente


imperativos) viene con un compilador.

Dado que los compiladores traducen código fuente a código objeto, el cual es
único para cada tipo de máquina, existen múltiples compiladores para un
mismo lenguaje. Por ejemplo, lenguaje C tiene un compilador para PC, otro
para Apple Macintosh, además existen muchas casas que desarrollan
compiladores para una misma plataforma y un mismo lenguaje, por ejemplo,
Microsoft y Borland tienen sus compiladores propios para lenguaje C.

Proceso de compilación:
1. Cuando un código es leído por un compilador este entra al análisis léxico donde se
verifica dónde empieza y termina cada instrucción, esto se hace tomando como
referencia los espacios en blanco.
2. Una vez hecho esto el analizador sintáctico llama de manera repetida al analizador
léxico para que este le envié cada línea de código para ser verificada si está bien
escrita en el lenguaje. Para realizar esta verificación se realiza por medio de una
estructura llamada Árbol gramatical. Ejemplo:

1. Después entra en la etapa del analizador semántico, esta se encarga de la


construcción de las instrucciones del lenguaje, revisando que sean iguales a las
definidas.
2. Luego entramos al proceso de síntesis, donde se generas el código intermedio,
este para ser utilizado en la memoria de forma temporal.
3. Ahora este código generado pasa por el optimizador para ser ejecutado de forma
más rápida.
4. En esta última etapa se genera un código que sea entendible por la máquina para
ser ejecutado por la computadora.
Otros conceptos
Tabla de símbolos: es una lista o tabla en la memoria que se utiliza para
almacenar variables definidas por el código fuente. Su objetivo es facilitar la
consulta de información referente a las variables, para evitar la regresión en el
código.
Detección e información de errores: durante la compilación, la detección de
errores es una tarea que se realiza en cada fase, esto con el fin de buscar el
mayor número de errores existentes en el código antes de que termine la
compilación.
Gráfico procesos y fases de un compilador

Traductores e Intérpretes UCAB: Definiciones Básicas

Lenguaje de Programación

Un lenguaje de programación permite al usuario crear programas que serán


entendidos por el ordenador (directa o indirectamente) con el objetivo de
realizar alguna tarea.

A grandes rasgos podemos clasificar los lenguajes de programación en tres


categorías: máquina, bajo nivel (ensamblador) y alto nivel.

Lenguaje de máquina

Los lenguajes máquina son aquellos cuyas instrucciones son directamente


entendibles por el ordenador sin la necesidad de traducción alguna. Sus
instrucciones no son más que ristras de ceros y unos (bits).
Estas especifican la operación a realizar, los registros del procesador y celdas
de memoria implicados, etc.

Obviamente, este tipo de lenguajes serán fáciles de comprender para un


ordenador, pero muy difíciles para el hombre. Esta razón nos lleva a buscar
otro lenguaje para comunicarnos con el ordenador.

Lenguaje de bajo nivel (ensamblador)

La programación en lenguaje máquina es difícil, por ello se necesitan lenguajes


que permitan simplificar este proceso. Los lenguajes de bajo nivel han sido
diseñados para este fin.

Estos lenguajes son generalmente dependientes de la máquina, es decir,


dependen de un conjunto de instrucciones específicas del ordenador. Un
ejemplo de este tipo de lenguajes es el lenguaje ensamblador. En él, las
instrucciones se escriben en códigos alfabéticos conocidos como
mnemotécnicos (generalmente, abreviaturas de palabras inglesas). Las
palabras mnemotécnicas son mucho más fáciles de recordar que las
secuencias de ceros y unos.

Una instrucción típica de ensamblador puede ser: ADD x, y, z Esta instrucción


significaría que se deben sumar los números almacenados en las direcciones
de memoria x e y, y almacenar el resultado en la dirección z. Pero, aun así, a
medida que los programas crezcan en tamaño y complejidad, el ensamblador
sigue sin ser una buena solución.

Lenguajes de alto nivel

Los lenguajes de alto nivel son aquellos en los que las instrucciones o
sentencias son escritas con palabras similares a las de los lenguajes humanos
(en la mayoría de los casos, el inglés). Esto facilita la escritura y comprensión
del código al programador.

Existen muchos lenguajes de alto nivel, por citar algunos:

 ADA
 BASIC
 COBOL
 FORTRAN
 C
 Pascal
 Python
 Perl
 Java
 C#
 Visual Basic

Los programas escritos en lenguaje de alto nivel no son entendibles


directamente por la máquina. Necesitan ser traducidos a instrucciones en
lenguaje máquina que entiendan los ordenadores. Los programas que
realizan esta traducción se llaman compiladores, y los programas escritos
en lenguajes de alto nivel se denominan programas fuente.

Traductor

Un traductor es un programa que lee una secuencia perteneciente a


un Lenguaje fuente (Lf) y la traduce a una secuencia en un lenguaje
objeto (Lo).

El concepto de traductor resulta familiar si lo asociamos al uso que le


damos a esta palabra cotidianamente. Este concepto engloba
al Compilador y al Interprete

Ejemplos

 Ensamblador: convierte programas escritos en lenguaje ensamblador a


lenguaje máquina.
 Procesador de Palabras: Traduce un documento anotado con comandos
de formateo a una secuencia en un lenguaje de descripción gráfica. El
sistema operativo traduce la secuencia gráfica a comandos de impresora.
 Impresor Estético (Pretty Printer): traduce el texto de un lenguaje de
programación a otro texto en el mismo lenguaje, pero formateado de
acuerdo a las reglas predefinidas.

Intérprete

Un intérprete es un programa que lee una secuencia en un lenguaje


objeto y la "ejecuta" o "evalúa". Es decir, el programa realiza las
operaciones descritas en la secuencia de entrada o calcula algún tipo de
resultado a partir de la misma. Existen varias formas de ejecutar un
programa y una de ellas es a través de un intérprete.
Un intérprete traduce instrucciones de un lenguaje de alto nivel a una
forma intermedia la cual es ejecutada. Por el contrario, los compiladores
traducen instrucciones de alto nivel directamente a lenguaje máquina.

La ventaja de un intérprete es que este no necesita pasar por todas las


etapas de un compilador para generar lenguaje de máquina, pero este
proceso puede ser consumidor de tiempo si el programa es muy grande.
Por otro lado, el intérprete puede ejecutar inmediatamente programas en
lenguajes de alto nivel y por esta razón son utilizados algunas veces para
el desarrollo de programas, cuando un programador quiere agregar
pequeñas secciones en un momento determinado y probarlas
rápidamente (debugging).

Ejemplos:

 CPU:(Un Intel Pentium) interpreta secuencias escritas en su lenguaje de


máquina
y realiza operaciones de memoria y de entrada salida (comunicación con
los dispositivos periféricos).
 Reproductor MIDI: Lee secuencias de notas musicales escritas en
lenguaje MIDI y reproduce la música correspondiente.
 Las máquinas virtuales de Java y .Net

http://libroweb.alfaomega.com.mx/book/477/free/ovas_statics/lec_adicionales/Com
piladores.pdf
http://www.suigeneris.org/UCABTI/Definiciones%20Basicas.html

También podría gustarte