CompiladoresUn compilador toma un texto (código fuente) escrito en un lenguaje de alto nivel y lo traduce a un lenguaje comprensible por las computadoras (código objeto).Características de un compiladorGeneralmente 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 frontend.
Partes en las que trabaja un compiladorConceptualmente un compilador opera en fases.Cada una de las cuales transforma el programafuente de una representación en otra. En lafigura 3 se muestra una descomposición típica deun compilador. En la práctica se pueden agruparfases y las representaciones intermediasentres las fases agrupadas no necesitan serconstruidas explícitamente.Programa fuente
Programa objeto	Figura 3.- Fases de un compilador.	Las tres primeras fases, que forman la mayor partede la porción de análisis de un compilador se analizan en la sección IX. Otras dos actividades, laadministración de la tabla se símbolos y el manejode errores, se muestran en interacción con las seisfases de análisis léxico, análisis sintáctico, análisissemántico, generación de código intermedio, optimaciónde código y generación de código. De modo informaltambién se llamarán "fases" al administrador de la tabla de símbolos y al manejador de errores
InterpreteEs un programa informático capaz de analizar yejecutar otros programas, escritos enun lenguaje de alto nivel. Los intérpretes sediferencian de los compiladores en que mientrasestos traducen un programa desde su descripciónen un lenguaje de programación al código demáquina del sistema, los intérpretes sólo realizanla traducción a medida que sea necesaria,típicamente, instrucción por instrucción, ynormalmente no guardan el resultado de dichatraducción.
	Los programas interpretados suelen ser máslentos que los compilados debido a la necesidadde traducir el programa mientras se ejecuta,pero a cambio son más flexibles como entornosde programación y depuración y permiten ofreceral programa interpretado un entorno nodependiente de la máquina donde se ejecuta elintérprete, sino del propio intérprete (lo que seconoce comúnmente como máquina virtual).
Lenguaje de alto nivel Se caracteriza por expresar los algoritmos de una maneraadecuada a la capacidad cognitiva humana, en lugar de a lacapacidad ejecutora de las máquinas.	En los primeros lenguajes de alto nivel la limitación era que seorientaban a un área específica y sus instrucciones requeríande una sintaxis predefinida. Se clasifican como lenguajesprocedimentales.	Otra limitación de los lenguajes de alto nivel es que serequiere de ciertos conocimientos de programación para realizarlas secuencias de instrucciones lógicas. Los lenguajes de altonivel se crearon para que el usuario común pudiese solucionar unproblema de procesamiento de datos de una manera más fácil yrápida.
Lenguaje de nivel bajo Un lenguaje de programación de bajonivel es el que proporciona un conjunto deInstrucciones aritmeticológicassin lacapacidad de encapsular dichas instruccionesen funciones que no esté ya contempladasen la arquitectura del hardware
Lenguaje de nivel medio 	Suelen ser clasificados de alto nivel, pero permiten ciertos manejos debajo nivel. Son precisos para ciertas aplicaciones como la creaciónde 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 lenguajesde bajo nivel.	Una característica distintiva, por ejemplo, que convierte al lenguaje deprogramación C en un lenguaje de medio nivel y al lenguaje de programaciónPascal en un lenguaje de alto nivel, es que en el primero es posible manejarlas letras como si fueran números (en Pascal no), por el contrario, en Pascal esposible concatenar las cadenas de caracteres con el operador suma y copiarlascon la asignación (en C es el usuario el responsable de llamar a las funcionescorrespondientes).
Lenguaje 	Es un lenguaje de programación creado en 1972 por Dennis M. Ritchie enlos Laboratorios Bell como evolución del anterior lenguaje B, a su vez basadoen BCPL.	Al igual que B, es un lenguaje orientado a la implementación de SistemasOperativos, concretamente Unix. Lenguaje C es apreciado por la eficiencia delcódigo que produce y es el lenguaje de programación más popular para crearsoftware de sistemas, aunque también se utiliza para crear aplicaciones.	Se trata de un lenguaje débilmente tipificado de medio nivel pero conmuchas características de bajo nivel. Dispone de las estructuras típicas delos lenguajes de alto nivel pero, a su vez, dispone de construcciones dellenguaje que permiten un control a muy bajo nivel. Los compiladores suelenofrecer extensiones al lenguaje que posibilitan mezclar códigoen ensamblador con código C o acceder directamente memoria o dispositivosperiféricos. 
Autor StephanyColmenarez20389626Ti-22Introducción a la computación

Stephany diapositivas

  • 1.
    CompiladoresUn compilador tomaun texto (código fuente) escrito en un lenguaje de alto nivel y lo traduce a un lenguaje comprensible por las computadoras (código objeto).Características de un compiladorGeneralmente 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 frontend.
  • 2.
    Partes en lasque trabaja un compiladorConceptualmente un compilador opera en fases.Cada una de las cuales transforma el programafuente de una representación en otra. En lafigura 3 se muestra una descomposición típica deun compilador. En la práctica se pueden agruparfases y las representaciones intermediasentres las fases agrupadas no necesitan serconstruidas explícitamente.Programa fuente
  • 4.
    Programa objeto Figura 3.-Fases de un compilador. Las tres primeras fases, que forman la mayor partede la porción de análisis de un compilador se analizan en la sección IX. Otras dos actividades, laadministración de la tabla se símbolos y el manejode errores, se muestran en interacción con las seisfases de análisis léxico, análisis sintáctico, análisissemántico, generación de código intermedio, optimaciónde código y generación de código. De modo informaltambién se llamarán "fases" al administrador de la tabla de símbolos y al manejador de errores
  • 5.
    InterpreteEs un programa informático capazde analizar yejecutar otros programas, escritos enun lenguaje de alto nivel. Los intérpretes sediferencian de los compiladores en que mientrasestos traducen un programa desde su descripciónen un lenguaje de programación al código demáquina del sistema, los intérpretes sólo realizanla traducción a medida que sea necesaria,típicamente, instrucción por instrucción, ynormalmente no guardan el resultado de dichatraducción.
  • 6.
    Los programas interpretadossuelen ser máslentos que los compilados debido a la necesidadde traducir el programa mientras se ejecuta,pero a cambio son más flexibles como entornosde programación y depuración y permiten ofreceral programa interpretado un entorno nodependiente de la máquina donde se ejecuta elintérprete, sino del propio intérprete (lo que seconoce comúnmente como máquina virtual).
  • 7.
    Lenguaje de altonivel Se caracteriza por expresar los algoritmos de una maneraadecuada a la capacidad cognitiva humana, en lugar de a lacapacidad ejecutora de las máquinas. En los primeros lenguajes de alto nivel la limitación era que seorientaban a un área específica y sus instrucciones requeríande una sintaxis predefinida. Se clasifican como lenguajesprocedimentales. Otra limitación de los lenguajes de alto nivel es que serequiere de ciertos conocimientos de programación para realizarlas secuencias de instrucciones lógicas. Los lenguajes de altonivel se crearon para que el usuario común pudiese solucionar unproblema de procesamiento de datos de una manera más fácil yrápida.
  • 8.
    Lenguaje de nivelbajo Un lenguaje de programación de bajonivel es el que proporciona un conjunto deInstrucciones aritmeticológicassin lacapacidad de encapsular dichas instruccionesen funciones que no esté ya contempladasen la arquitectura del hardware
  • 9.
    Lenguaje de nivelmedio Suelen ser clasificados de alto nivel, pero permiten ciertos manejos debajo nivel. Son precisos para ciertas aplicaciones como la creaciónde 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 lenguajesde bajo nivel. Una característica distintiva, por ejemplo, que convierte al lenguaje deprogramación C en un lenguaje de medio nivel y al lenguaje de programaciónPascal en un lenguaje de alto nivel, es que en el primero es posible manejarlas letras como si fueran números (en Pascal no), por el contrario, en Pascal esposible concatenar las cadenas de caracteres con el operador suma y copiarlascon la asignación (en C es el usuario el responsable de llamar a las funcionescorrespondientes).
  • 10.
    Lenguaje Es un lenguajede programación creado en 1972 por Dennis M. Ritchie enlos Laboratorios Bell como evolución del anterior lenguaje B, a su vez basadoen BCPL. Al igual que B, es un lenguaje orientado a la implementación de SistemasOperativos, concretamente Unix. Lenguaje C es apreciado por la eficiencia delcódigo que produce y es el lenguaje de programación más popular para crearsoftware de sistemas, aunque también se utiliza para crear aplicaciones. Se trata de un lenguaje débilmente tipificado de medio nivel pero conmuchas características de bajo nivel. Dispone de las estructuras típicas delos lenguajes de alto nivel pero, a su vez, dispone de construcciones dellenguaje que permiten un control a muy bajo nivel. Los compiladores suelenofrecer extensiones al lenguaje que posibilitan mezclar códigoen ensamblador con código C o acceder directamente memoria o dispositivosperiféricos. 
  • 11.