Un compilador toma un texto (código fuente) escrito enun lenguaje de alto nivel y lo traduce a un lenguajecomprensible por las computadoras (código objeto).
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.
Partes en las que trabaja un compilador
Conceptualmente un compilador opera en fases.
Cada una de las cuales transforma el programa
fuente de una representación en otra. En la
figura 3 se muestra una descomposición típica de
un compilador. En la práctica se pueden agrupar
fases y las representaciones intermedias
entres las fases agrupadas no necesitan ser
construidas explícitamente.
Programa fuente
Programa objeto
Figura 3.- Fases de un compilador.
Las tres primeras fases, que forman la mayor parte
de la porción de análisis de un compilador se
analizan en la sección IX. Otras dos actividades, la
administración de la tabla se símbolos y el manejo
de errores, se muestran en interacción con las seis
fases de análisis léxico, análisis sintáctico, análisis
semántico, generación de código intermedio, optimación
de código y generación de código. De modo informal
también se llamarán "fases" al administrador de la tabla
de símbolos y al manejador de errores
Es un programa informático capaz de analizar y
ejecutar otros programas, escritos en
un lenguaje de alto nivel. Los intérpretes se
diferencian de los compiladores en que mientras
estos traducen un programa desde su descripción
en un lenguaje de programación al código de
máquina del sistema, los intérpretes sólo realizan
la traducción a medida que sea necesaria,
típicamente, instrucción por instrucción, y
normalmente no guardan el resultado de dicha
traducción.
Los 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 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).
Se caracteriza por expresar los algoritmos de una manera
adecuada a la capacidad cognitiva humana, en lugar de a la
capacidad ejecutora de las máquinas.
En los primeros lenguajes de alto nivel la limitación era que se
orientaban a un área específica y sus instrucciones requerían
de una sintaxis predefinida. Se clasifican como lenguajes
procedimentales.
Otra limitación de los lenguajes de alto nivel es que se
requiere de ciertos conocimientos de programación para realizar
las secuencias de instrucciones lógicas. Los lenguajes de alto
nivel se crearon para que el usuario común pudiese solucionar un
problema de procesamiento de datos de una manera más fácil y
rápida.
Un lenguaje de programación de bajo
nivel es el que proporciona un conjunto de
Instrucciones aritmeticológicas sin la
capacidad de encapsular dichas instrucciones
en funciones que no esté ya contempladas
en la arquitectura del hardware
Suelen ser clasificados de alto nivel, pero permiten ciertos manejos de
bajo nivel. Son precisos para ciertas aplicaciones como la creación
de sistemas operativos, ya que permiten un manejo abstracto
(independiente de la máquina, a diferencia del lenguaje ensamblador),
pero sin perder mucho del poder y eficiencia que tienen los lenguajes
de bajo nivel.
Una característica distintiva, por ejemplo, que convierte al lenguaje de
programación C en un lenguaje de medio nivel y al lenguaje de programación
Pascal en un lenguaje de alto nivel, es que en el primero es posible manejar
las letras como si fueran números (en Pascal no), por el contrario, en Pascal es
posible concatenar las cadenas de caracteres con el operador suma y copiarlas
con la asignación (en C es el usuario el responsable de llamar a las funciones
correspondientes).
Es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en
los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado
en BCPL.
Al igual que B, es un lenguaje orientado a la implementación de Sistemas
Operativos, concretamente Unix. Lenguaje C es apreciado por la eficiencia del
código que produce y es el lenguaje de programación más popular para crear
software de sistemas, aunque también se utiliza para crear aplicaciones.
Se trata de un lenguaje débilmente tipificado de medio nivel pero con
muchas características de bajo nivel. Dispone de las estructuras típicas de
los lenguajes de alto nivel pero, a su vez, dispone de construcciones del
lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen
ofrecer extensiones al lenguaje que posibilitan mezclar código
en ensamblador con código C o acceder directamente memoria o dispositivos
periféricos.
Stephany Colmenarez
20389626
Ti-22
Introducción a la computación
Top Related