SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Lenguajes de Programación
Compiladores e intérpretes
CATEDRA DE COMPUTACION I
AÑO 2016
INTRODUCCIÓN
 Las primeras computadoras ejecutaban
instrucciones consistentes en códigos
numéricos que señalan a los circuitos de la
máquina los estados correspondientes a cada
operación. (Lenguaje de Maquina)
 Pronto los primeros usuarios de estos
ordenadores descubrieron la ventaja de
escribir sus programas mediante claves más
fáciles de recordar que esos códigos
numéricos; al final, todas esas claves juntas se
traducían manualmente a Lenguaje
Máquina.(Lenguaje Ensamblador)
INTRODUCCION
 El lenguaje Ensamblador seguía siendo el de
una máquina, pero más fácil de manejar.
Esta sentencia en un Lenguaje de Alto Nivel
A: = B+C
convertida en Lenguaje Ensamblador
quedaría:
LOAD B
ADD C
STORE A
Está más cerca de la máquina
Traductores de lenguajes de
Programación
 La programación de un lenguaje de alto
nivel requiere, de algún tipo de interfaz con
el lenguaje máquina para que el programa
pueda ejecutase.
 Las interfaces más comunes son:
“compilador” e "interprete".
Traductores de lenguajes de
Programación
 El Compilador: Traduce el programa a
otro equivalente en el lenguaje “X” de la
maquina “residente” como un paso
separado antes de la ejecución.
 El Interprete: Ejecuta directamente las
instrucciones en un lenguaje “Y” de alto
nivel, sin un paso de procedimiento previo.
CONCLUSION
 Un compilador: Traduce un Programa Fuente a un
Programa Objeto o de máquina y después que está
todo traducido lo ejecuta.
 Un Ensamblador: es un compilador, pero el
programa fuente que debe traducir es un programa
ensamblador, lo traduce a programa de máquina y
después lo ejecuta.
 Un intérprete: no genera un programa
equivalente, sino que toma una sentencia del
programa fuente en un lenguaje de alto nivel y la
traduce al código equivalente en un lenguaje de
bajo nivel y al mismo tiempo lo ejecuta.
Compiladores Vs. Interpretes
COMPILADOR INTÉRPRETE
Realizan la traducción en tiempo de
desarrollo.
Es decir, el programa aún no se está
ejecutando. El compilador recibe todo
el código fuente, lo analiza, lo optimiza
y lo traduce a lenguaje máquina
dejando un programa completo listo
para su ejecución.
Se compila una vez, se ejecuta n veces.
Realizan la traducción en tiempo de
ejecución.
Es decir, a medida que el programa se va
ejecutando, el intérprete va traduciendo
instrucciones al lenguaje máquina.
La ejecución es más lenta, pues cada
instrucción debe ser traducida a código
máquina tantas veces como sea
ejecutada.
Funcionamiento de un compilador
 A grandes rasgos un compilador es un
programa que lee un programa escrito es
un lenguaje, el lenguaje fuente, y lo traduce
a un programa equivalente en otro
lenguaje, el lenguaje objeto.
 Como parte importante de este proceso de
traducción, el compilador informa a su
usuario de la presencia de errores en el
programa fuente.
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 que está en la próxima filmina
se muestra una descomposición típica de
un compilador.
Fases de un compilador
Programa Fuente
Programa Objeto
Tabla de símbolos
 Un compilador necesita guardar y usar la
información de los objetos que va
encontrando en el texto fuente, como por
ejemplo variables, etiquetas, etc.
 Esta información se almacena en una
estructura de datos interna conocida como
tabla de símbolos.
Manejo de Errores
 Es una de las misiones más importantes de
un compilador. Donde más se utiliza es en
las etapas de análisis sintáctico y
semántico, aunque los errores se pueden
descubrir en cualquier fase de un
compilador.
 Es una tarea difícil, por dos motivos:
 A veces unos errores ocultan otros.
 A veces un error provoca una avalancha de muchos
errores que se solucionan con el primero.
Manejo de Errores
 Es conveniente un buen manejo de errores,
y que el compilador detecte todos los
errores que tiene el programa y no se pare
en el primero que encuentre.
 Hay, pues, dos criterios a seguir a la hora de
manejar errores:
 Pararse al detectar el primer error.
 Detectar todos los errores de una pasada.
Funcionamiento de un intérprete
Se caracteriza por traducir y ejecutar, de una en una,
las instrucciones del código fuente de un programa,
pero sin generar como salida código objeto.
El proceso que realiza un intérprete es el siguiente:
 Lee la primera instrucción del código fuente, la
traduce a código objeto y la ejecuta; a continuación,
hace lo mismo con la segunda instrucción; y así
sucesivamente, hasta llegar a la última instrucción
del programa, siempre y cuando, no se produzca
ningún error que detenga el proceso.
Criterios de diseño y de
implementación
Los Lenguajes de programación se pueden
clasificar según el paradigma de
programación que soporten:
 Lenguajes Genéricos
 Lenguajes Estructurados
 Lenguajes Orientados a Objetos
Atributos de un buen lenguaje
 Claridad, Sencillez y Unidad
La sintaxis del lenguaje afecta la facilidad con la
que un programa se puede escribir, poner a
prueba, y más tarde entender y modificar.
 Ortogonalidad
Capacidad para combinar varias características
de un lenguaje en todas las combinaciones
posibles, de manera que todas ellas tengan
significado.
 Naturalidad para la aplicación
La sintaxis del programa debe permitir que la
estructura del programa refleje la estructura
lógica subyacente.
Atributos de un buen lenguaje
 Apoyo para la abstracción
Una parte importante de la tarea del programador es
proyectar las abstracciones adecuadas para la solución del
problema y luego implementar esas abstracciones
empleando las capacidades más primitivas que provee el
lenguaje de programación mismo.
 Facilidad para verificar programas
La sencillez de la estructura semántica y sintáctica ayuda a
simplificar la verificación de programas.
 Costo de uso
1. Costo de ejecución del programa.
2. Costo de traducción de programas.
3. Costo de creación, prueba y uso de programas.
4. Costo de mantenimiento de los programas: costo total
del ciclo de vida.
Dominio de Aplicación
Lenguajes para diversos dominios de
aplicación
 Científicos.
 De Sistemas.
 De IA (Inteligencia Artificial).
 De Edición.
 De Proceso.
 Nuevos Paradigmas.

Weitere ähnliche Inhalte

Was ist angesagt?

Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionkinverdar
 
lenguajes de programacion
lenguajes de programacionlenguajes de programacion
lenguajes de programacionguest7eefa2
 
Ensamblador y enlazador
Ensamblador y enlazadorEnsamblador y enlazador
Ensamblador y enlazadorRickyZhengHu
 
4. Conceptos básicos III
4. Conceptos básicos III4. Conceptos básicos III
4. Conceptos básicos IIIrcarrerah
 
Powerpoint jimpulgar
Powerpoint jimpulgarPowerpoint jimpulgar
Powerpoint jimpulgarjimsaso
 
Ensambladores y Compiladores
Ensambladores y CompiladoresEnsambladores y Compiladores
Ensambladores y CompiladoresAndres Pozo
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretadorFrancisco Leal
 
Lenguaje maquina
Lenguaje maquinaLenguaje maquina
Lenguaje maquinaErnes 28
 
Estructura de un interprete
Estructura de un interpreteEstructura de un interprete
Estructura de un interpreteperlallamas
 
Introduccion a la programacion 2010
Introduccion a la programacion 2010Introduccion a la programacion 2010
Introduccion a la programacion 2010Mario Lopez
 

Was ist angesagt? (19)

Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
lenguajes de programacion
lenguajes de programacionlenguajes de programacion
lenguajes de programacion
 
Innovacionk m
Innovacionk mInnovacionk m
Innovacionk m
 
Ensamblador y enlazador
Ensamblador y enlazadorEnsamblador y enlazador
Ensamblador y enlazador
 
1.4 ensambladores y compiladores
1.4 ensambladores y compiladores1.4 ensambladores y compiladores
1.4 ensambladores y compiladores
 
4. Conceptos básicos III
4. Conceptos básicos III4. Conceptos básicos III
4. Conceptos básicos III
 
Powerpoint jimpulgar
Powerpoint jimpulgarPowerpoint jimpulgar
Powerpoint jimpulgar
 
Lenguaje de Maquinas
Lenguaje de Maquinas Lenguaje de Maquinas
Lenguaje de Maquinas
 
Ensambladores y Compiladores
Ensambladores y CompiladoresEnsambladores y Compiladores
Ensambladores y Compiladores
 
Computo
ComputoComputo
Computo
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Apuntes c
Apuntes cApuntes c
Apuntes c
 
Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Lenguaje maquina
Lenguaje maquinaLenguaje maquina
Lenguaje maquina
 
Estructura de un interprete
Estructura de un interpreteEstructura de un interprete
Estructura de un interprete
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Tercera unidad
Tercera unidadTercera unidad
Tercera unidad
 
Introduccion a la programacion 2010
Introduccion a la programacion 2010Introduccion a la programacion 2010
Introduccion a la programacion 2010
 

Andere mochten auch

Andere mochten auch (11)

Como volverse un Hacker feliz de GNOME
Como volverse un Hacker feliz de GNOMEComo volverse un Hacker feliz de GNOME
Como volverse un Hacker feliz de GNOME
 
Cómo colaborar en GNOME
Cómo colaborar en GNOMECómo colaborar en GNOME
Cómo colaborar en GNOME
 
Rep 34
Rep 34Rep 34
Rep 34
 
Gnome - un vistazo a su arquitectura
Gnome - un vistazo a su arquitecturaGnome - un vistazo a su arquitectura
Gnome - un vistazo a su arquitectura
 
Kernel
KernelKernel
Kernel
 
Compilación del Kernel
Compilación del KernelCompilación del Kernel
Compilación del Kernel
 
Comprendiendo gnome
Comprendiendo gnomeComprendiendo gnome
Comprendiendo gnome
 
Introducción a compiladores
Introducción a compiladoresIntroducción a compiladores
Introducción a compiladores
 
Nucleo o kernel de Linux
Nucleo o kernel de LinuxNucleo o kernel de Linux
Nucleo o kernel de Linux
 
Gnome
GnomeGnome
Gnome
 
Compiladores teoria e implementacion
Compiladores teoria e implementacionCompiladores teoria e implementacion
Compiladores teoria e implementacion
 

Ähnlich wie Presentación computación 1_compiladores_e_interpretes

Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador   Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador ADOLFOISAIASGARCIASI
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programaciónDaniela Brignolo
 
Actividad 3 programacion de sistemas
Actividad 3 programacion de sistemasActividad 3 programacion de sistemas
Actividad 3 programacion de sistemasJESSIKADG86
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionkinverdar
 
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOCONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOadark
 
Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Facultad de Ciencias y Sistemas
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionjuanjokobrax
 
Terceraunidad 130505194734-phpapp01
Terceraunidad 130505194734-phpapp01Terceraunidad 130505194734-phpapp01
Terceraunidad 130505194734-phpapp01Victor Martinez
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programaciónkinverdar
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionjafp21
 
Introducción a la programacion 3 Software De Programacion
Introducción a la programacion 3 Software De ProgramacionIntroducción a la programacion 3 Software De Programacion
Introducción a la programacion 3 Software De ProgramacionAndres Garcia
 

Ähnlich wie Presentación computación 1_compiladores_e_interpretes (20)

Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador   Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Informática
InformáticaInformática
Informática
 
Informática
InformáticaInformática
Informática
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programación
 
Actividad 3 programacion de sistemas
Actividad 3 programacion de sistemasActividad 3 programacion de sistemas
Actividad 3 programacion de sistemas
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOCONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
 
Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Tercera unidad
Tercera unidadTercera unidad
Tercera unidad
 
Algoritmos1
Algoritmos1Algoritmos1
Algoritmos1
 
Terceraunidad 130505194734-phpapp01
Terceraunidad 130505194734-phpapp01Terceraunidad 130505194734-phpapp01
Terceraunidad 130505194734-phpapp01
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Traductores bajo-nivel
Traductores bajo-nivelTraductores bajo-nivel
Traductores bajo-nivel
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
2
22
2
 
Introducción a la programacion 3 Software De Programacion
Introducción a la programacion 3 Software De ProgramacionIntroducción a la programacion 3 Software De Programacion
Introducción a la programacion 3 Software De Programacion
 
Consulta
ConsultaConsulta
Consulta
 

Kürzlich hochgeladen

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 

Kürzlich hochgeladen (11)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

Presentación computación 1_compiladores_e_interpretes

  • 1. Lenguajes de Programación Compiladores e intérpretes CATEDRA DE COMPUTACION I AÑO 2016
  • 2. INTRODUCCIÓN  Las primeras computadoras ejecutaban instrucciones consistentes en códigos numéricos que señalan a los circuitos de la máquina los estados correspondientes a cada operación. (Lenguaje de Maquina)  Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves más fáciles de recordar que esos códigos numéricos; al final, todas esas claves juntas se traducían manualmente a Lenguaje Máquina.(Lenguaje Ensamblador)
  • 3. INTRODUCCION  El lenguaje Ensamblador seguía siendo el de una máquina, pero más fácil de manejar. Esta sentencia en un Lenguaje de Alto Nivel A: = B+C convertida en Lenguaje Ensamblador quedaría: LOAD B ADD C STORE A Está más cerca de la máquina
  • 4. Traductores de lenguajes de Programación  La programación de un lenguaje de alto nivel requiere, de algún tipo de interfaz con el lenguaje máquina para que el programa pueda ejecutase.  Las interfaces más comunes son: “compilador” e "interprete".
  • 5. Traductores de lenguajes de Programación  El Compilador: Traduce el programa a otro equivalente en el lenguaje “X” de la maquina “residente” como un paso separado antes de la ejecución.  El Interprete: Ejecuta directamente las instrucciones en un lenguaje “Y” de alto nivel, sin un paso de procedimiento previo.
  • 6. CONCLUSION  Un compilador: Traduce un Programa Fuente a un Programa Objeto o de máquina y después que está todo traducido lo ejecuta.  Un Ensamblador: es un compilador, pero el programa fuente que debe traducir es un programa ensamblador, lo traduce a programa de máquina y después lo ejecuta.  Un intérprete: no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al código equivalente en un lenguaje de bajo nivel y al mismo tiempo lo ejecuta.
  • 7. Compiladores Vs. Interpretes COMPILADOR INTÉRPRETE Realizan la traducción en tiempo de desarrollo. Es decir, el programa aún no se está ejecutando. El compilador recibe todo el código fuente, lo analiza, lo optimiza y lo traduce a lenguaje máquina dejando un programa completo listo para su ejecución. Se compila una vez, se ejecuta n veces. Realizan la traducción en tiempo de ejecución. Es decir, a medida que el programa se va ejecutando, el intérprete va traduciendo instrucciones al lenguaje máquina. La ejecución es más lenta, pues cada instrucción debe ser traducida a código máquina tantas veces como sea ejecutada.
  • 8. Funcionamiento de un compilador  A grandes rasgos un compilador es un programa que lee un programa escrito es un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto.  Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.
  • 9. 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 que está en la próxima filmina se muestra una descomposición típica de un compilador.
  • 10. Fases de un compilador Programa Fuente Programa Objeto
  • 11. Tabla de símbolos  Un compilador necesita guardar y usar la información de los objetos que va encontrando en el texto fuente, como por ejemplo variables, etiquetas, etc.  Esta información se almacena en una estructura de datos interna conocida como tabla de símbolos.
  • 12. Manejo de Errores  Es una de las misiones más importantes de un compilador. Donde más se utiliza es en las etapas de análisis sintáctico y semántico, aunque los errores se pueden descubrir en cualquier fase de un compilador.  Es una tarea difícil, por dos motivos:  A veces unos errores ocultan otros.  A veces un error provoca una avalancha de muchos errores que se solucionan con el primero.
  • 13. Manejo de Errores  Es conveniente un buen manejo de errores, y que el compilador detecte todos los errores que tiene el programa y no se pare en el primero que encuentre.  Hay, pues, dos criterios a seguir a la hora de manejar errores:  Pararse al detectar el primer error.  Detectar todos los errores de una pasada.
  • 14. Funcionamiento de un intérprete Se caracteriza por traducir y ejecutar, de una en una, las instrucciones del código fuente de un programa, pero sin generar como salida código objeto. El proceso que realiza un intérprete es el siguiente:  Lee la primera instrucción del código fuente, la traduce a código objeto y la ejecuta; a continuación, hace lo mismo con la segunda instrucción; y así sucesivamente, hasta llegar a la última instrucción del programa, siempre y cuando, no se produzca ningún error que detenga el proceso.
  • 15. Criterios de diseño y de implementación Los Lenguajes de programación se pueden clasificar según el paradigma de programación que soporten:  Lenguajes Genéricos  Lenguajes Estructurados  Lenguajes Orientados a Objetos
  • 16. Atributos de un buen lenguaje  Claridad, Sencillez y Unidad La sintaxis del lenguaje afecta la facilidad con la que un programa se puede escribir, poner a prueba, y más tarde entender y modificar.  Ortogonalidad Capacidad para combinar varias características de un lenguaje en todas las combinaciones posibles, de manera que todas ellas tengan significado.  Naturalidad para la aplicación La sintaxis del programa debe permitir que la estructura del programa refleje la estructura lógica subyacente.
  • 17. Atributos de un buen lenguaje  Apoyo para la abstracción Una parte importante de la tarea del programador es proyectar las abstracciones adecuadas para la solución del problema y luego implementar esas abstracciones empleando las capacidades más primitivas que provee el lenguaje de programación mismo.  Facilidad para verificar programas La sencillez de la estructura semántica y sintáctica ayuda a simplificar la verificación de programas.  Costo de uso 1. Costo de ejecución del programa. 2. Costo de traducción de programas. 3. Costo de creación, prueba y uso de programas. 4. Costo de mantenimiento de los programas: costo total del ciclo de vida.
  • 19. Lenguajes para diversos dominios de aplicación  Científicos.  De Sistemas.  De IA (Inteligencia Artificial).  De Edición.  De Proceso.  Nuevos Paradigmas.