Professional Documents
Culture Documents
UNIDAD I
DEFINICIONES BSICAS
Lenguaje de programacin
Es una notacin formal para describir algoritmos o funciones que sern ejecutadas por un
ordenador. Es el lenguaje para comunicar instrucciones al ordenador.
Generacin internet
- Mediados de los 90s.
- Necesidad de manejar aplicaciones en distintas plataformas dentro de toda la red.
Ventajas de los lenguajes de alto nivel sobre los lenguajes de bajo nivel
a) Facilitan la estructura de los programas.
b) Son ms fciles de aprender, requieren pocos conocimientos de hardware, y estn
cerrados a ciertas zonas de la mquina.
c) Los programadores se liberan de ocupaciones rutinarias con referencia a instrucciones
simblicas o numricas, asignaciones de memoria, etc.
d) El programador no necesita conocer la forma en que se colocan los datos en memoria.
e) Ofrecen gran variedad de estructuras de control.
f) Los programas se depuran ms fcilmente que los escritos en lenguaje mquina o
ensamblador.
g) Mayor capacidad de creacin de estructuras de datos.
h) Diseo modular de programas.
i) Soporte para la programacin orientada a objetos.
j) Relativamente independientes de la mquina, obteniendo programas que se pueden
ejecutar en diferentes ordenadores.
k) Permiten trabajar en modo grfico.
Compiladores
Procesadores de lenguaje
Es el nombre genrico que reciben todas las aplicaciones informticas en las cuales uno de los
datos fundamentales de entrada es un lenguaje.
Traductores (traductor)
Programa que procesa un texto fuente y genera un texto objeto. Est escrito en un lenguaje de
implementacin. Se representa por la Notacin T
LF LO
LI
Compiladores
L. F. = Lenguaje origen que transforma el traductor.
L. O. = Lenguaje a que se traduce el lenguaje fuente.
L. I. = Lenguaje en que est escrito el traductor.
Ensamblador (assembler)
Si el lenguaje fuente es el lenguaje ensamblador y el lenguaje objeto es el lenguaje mquina,
entonces el traductor se llama Emsamblador. Los ensambladores son traductores sencillos.
EMSAMBLADOR
Lenguaje ensamblador Lenguaje mquina
Compilador (compiler)
Traductor que transforma textos fuente de lenguaje de alto nivel a lenguaje de bajo nivel.
COMPILADOR
Lenguaje de alto nivel Lenguaje mquina
Tiempo de Compilacin. Tiempo que se necesita para traducir un lenguaje de alto nivel a
lenguaje de bajo nivel.
Tiempo de ejecucin. Tiempo que tarda en ejecutarse un programa objeto.
Cargadores (loader)
El cargador se encarga de colocar el fichero ejecutable en memoria; asignando el espacio
necesario al programa en memoria y pasando el control a la primera de las instrucciones a
ejecutar, comenzando a continuacin la fase de ejecucin. El cargador es un programa incluido
con el sistema operativo.
Intrpretes
Los intrpretes son programas que simplemente ejecutan las instrucciones que encuentran en
el texto fuente. En muchos casos coexisten en memoria el programa fuente y el programa
intrprete. Se da en tiempo de ejecucin. Basic, LOGO, Prolog, son lenguajes interpretados.
La ejecucin de un programa compilado ser ms rpida que la del mismo programa
interpretado, ya que el intrprete es un programa que analiza y ejecuta simultneamente un
programa escrito en un lenguaje fuente.
Programa COMPILADOR Lenguaje Resultados
fuente mquina
INTRPRETE
Lenguaje fuente Resultados
Compiladores
Decompiladores
Los decompiladores realizan la tarea inversa a los compiladores, es decir, son un caso
particular de los traductores en los cuales el programa fuente es un lenguaje de bajo nivel y el
lenguaje objeto es un lenguaje de nivel superior.
DECOMPILADOR
Lenguaje de bajo nivel Lenguaje de alto nivel
Desensambladores
Un caso particular de los decompiladores son los desensambladores que traducen de cdigo
mquina a ensamblador. Son ms fciles, por la correspondencia directa entre las
instrucciones de ensamblador y cdigo mquina.
DESENSAMBLADOR
Lenguaje mquina Lenguaje ensamblador
Depuradores (debuggers)
Los depuradores son herramientas que permiten encontrar y corregir los errores de los
programas (bugs). Suelen ir ligados a los compiladores de forma que el programador pueda
comprobar y visualizar la correcta ejecucin de un programa.
Ejemplos de debuggers: Turbo Debugger de Borland y Code View de Microsoft.
Optimizadores de cdigo
Los optimizadores de cdigo pueden ser herramientas independientes o estar incluidas en los
compiladores e invocarse por medio de opciones de compilacin, siendo sta ltima forma
como se suelen encontrar en la mayor parte de los compiladores comerciales.
Algunas opciones habituales de compilacin:
Velocidad de ejecucin
Generar cdigo para un microprocesador especfico dentro de una familia de
microprocesadores
Compiladores
Eliminar la comprobacin de rangos o desbordamientos de pila
Tamao del cdigo ejecutable
Eliminacin de cdigo muerto o no utilizado
Eliminacin de funciones no utilizadas
Compresores
Los compresores de archivos son una herramienta habitual de uso en el campo de la
informtica. Un caso particular son los compresores de ficheros ejecutables, que reducen el
tamao de los ejecutables. Por ejemplo, WINZIP de Windows.
Preprocesadores
Los preprocesadores son un caso particular de traductor en el cual se traduce un lenguaje de
alto nivel a otro, cuando el primero no puede pasar a lenguaje mquina directamente. El
preprocesador realiza las sustituciones, pero no hace ningn tipo de anlisis del contexto donde
las realiza, esta es la principal diferencia entre un preprocesador y otros tipos de procesador de
lenguaje. En otras palabras, los preprocesadores procesan un texto fuente modificndolo en
cierta forma previamente a la compilacin. Por ejemplo, el compilador del lenguaje C tiene
incorporado un preprocesador.
PREPROCESADOR COMPILADOR
Lenguaje fuente Otro lenguaje Lenguaje mquina
Formateadores
Pueden ser de muchos tipos y con diferentes fines, desde los dedicados a formatear
textos, ecuaciones o programas. Los formateadores de programas resaltan su sintaxis o su
estructura, para lo cual es necesario conocer la sintaxis del lenguaje a formatear. Tambin
pueden entrar dentro de este grupo los conversores de formato. El funcionamiento de este
procesador de lenguaje lo podemos ver en la opcin Formato de la Barra de Men.
Editores
Los editores de lenguajes de programacin con sintaxis resaltada por medio de colores o
tipos de letra permiten llamar la atencin del programador en el momento mismo que est
escribiendo el programa, sin necesidad de compilar, dado que llevan incorporada la sintaxis del
lenguaje.
Compiladores
1.3 Fases de un compilador y sus fundamentos tericos.
Compilador
Un compilador es un traductor que trasforma textos fuentes de lenguaje de alto nivel a
lenguajes de bajo nivel.
Proceso de compilacin
Conceptualmente, un compilador opera en fases, cada una de las cuales transforma el
programa fuente de una representacin en otra, hasta llegar al programa objeto.
1. Anlisis lineal
Tambin llamado anlisis lxico o exploracin. En esta etapa la cadena de caracteres que
constituye el programa fuente se lee de izquierda a derecha (de arriba hacia abajo) y se agrupa
en componentes lxicos que son secuencias de caracteres que tienen un significado colectivo.
NOTA: Los espacios en blanco y comentarios se eliminan durante el anlisis lxico.
2. Anlisis jerrquico
Tambin llamado anlisis sintctico. En esta etapa los caracteres o componentes lxicos se
agrupan jerrquicamente en colecciones anidadas con un significado colectivo.
La representacin grfica del programa fuente se hace mediante un rbol de anlisis sintctico
(jerarquas).
Compiladores
3. Anlisis semntico
En esta etapa se revisa el programa fuente para tratar de encontrar errores semnticos y se
rene la informacin de los tipos para la fase posterior de generacin de cdigo.
Utiliza la estructura jerrquica determinada en la fase de anlisis sintctico para identificar los
operadores y operandos, expresiones y proposiciones.
Verificador de tipos.- El compilador verifica si cada operador tiene operandos permitidos por la
especificacin del lenguaje fuente.
5. Optimizacin de cdigo
Trata de mejorar el cdigo intermedio de modo que resulte un cdigo mquina ms fcil de
ejecutar.
Hay mucha variacin en la cantidad de optimizacin de cdigo que ejecutan los compiladores.
Un compilador de optimizacin realiza mucha optimizacin, ocupando gran parte del tiempo de
compilacin en esta tarea. Sin embargo, hay optimizaciones sencillas que mejoran
sensiblemente el tiempo de ejecucin del programa objeto sin retardar demasiado la compilacin.
Compiladores
6. Generacin de cdigo
Fase final de un compilador. Por lo general, consiste en cdigo mquina o ensamblador.
Las posiciones de memoria se seleccionan para cada una de las variables usadas por el
programa. Despus, cada una de las instrucciones intermedias se traducen a una secuencia de
instrucciones de mquina que ejecutan la misma tarea.
Existen otras dos actividades que interactan con las fases del compilador:
- El administrador de la tabla de smbolos, y
- El manejador de errores
Manejador de Errores
Cada fase del compilador puede encontrar errores. Despus de detectar un error, cada fase
debe tratar de alguna forma ese error para poder continuar la compilacin, permitiendo la
deteccin de ms errores en el programa fuente.
El anlisis sintctico y semntico manejan la mayora de errores detectables por el compilador.
El anlisis lxico detecta errores donde los caracteres restantes de la entrada no forman ningn
componente lxico del lenguaje.
El anlisis sintctico detecta los errores donde la cadena de componentes lxicos violan las
reglas de la estructura.
El anlisis semntico el compilador intenta detectar construcciones que tengan estructura
sintctica correcta pero que no tengan significado para la operacin implicada. Por ejemplo,
Compiladores
cuando se intenta sumar dos identificadores, donde uno corresponde al nombre de un arreglo y
otro al nombre de una funcin.