Professional Documents
Culture Documents
INTRODUCCIN
DEFINICIONES
LENGUAJES DE PROGRAMACIN
F Los humanos nos relacionamos a travs de Lenguaje
Natural.
con el computador.
Lenguajes de Programacin.
LENGUAJES DE PROGRAMACIN
F Notaciones formales para describir algoritmos y
Segn grado de independencia de la mquina. Segn la forma de sus instrucciones Por generaciones
F Lenguaje de mquina
Cada instruccin es un cdigo binario Notacin que entiende directamente un computador Las instrucciones y su estructura son particulares de cada maquina.
Versin simblica del lenguaje de mquina. Equivalencia uno a uno entre instrucciones de ensamblador y lenguaje maquina. Permite hacer asignaciones de memoria con nombres simblicos. Algunos ensambladores contienen macroinstrucciones cuyo nivel es superior a las instrucciones de ensamblador. Da acceso completo a todos los recursos de la mquina.
Poseen caractersticas de lenguajes de bajo nivel (maquina y ensamblador) y algunas ventajas de los lenguajes de alto nivel Proporciona estructuras de control y datos Ejemplos:
q
C, FORTH
No acceso directo al hardware Estructuras de datos complejas Lenguajes orientados a objetos. Ejemplos:
q
HTML Sitios web SQL Bases de datos VHDL y VERILOG Descripcin de hardware MATLAB y GNU-Octave Programacin matricial
Sentencias de asignacin es construccin bsica de programas Histricamente primeros lenguajes y los mas usados actualmente C, C++, FORTRA, Pascal, etc.
F Lenguajes declarativos
Notacin muy prxima al problema Lenguajes declarativos llamados a funciones (LISP) Lenguajes lgicos clausulas lgicas (PROLOG)
Soporte para tipos de datos abstractos y clases (basado en objetos) Soporte para herencia y polimorfismo (orientado a objetos) C++, JAVA, Delphi, etc.
http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm
detallado de memoria
F Ofrecen mltiples estructuras de control F Ofrecen mltiples estructuras de datos y permiten
crear nuevas
F Facilitan la depuracin F Portabilidad de los programas
compilacin y ejecucin
24 610 8631
23136
Tamao de archivo para aplicacin Hello World codificada a diferentes niveles de abstraccin: L. mquina, L. ensamblador, L.
PROCESADORES DE LENGUAGE
F Nombre genrico de todas las aplicaciones en las
PROCESADORES DE LENGUAGE
F Traductores
Procesa Lenguaje Fuente (LF) y genera Lenguaje Objeto (LO). El Lenguaje de Implementacin (LI) puede ser cualquier lenguaje.
F Ensambladores
Si el LF es lenguaje ensamblador y el LO es el lenguaje de maquina. Traductores simples por la equivalencia entre declaraciones en ensamblador y cdigos binarios en lenguaje maquina. Macroinstrucciones se traducen en mltiples instrucciones de maquina (Macroensambladores)
PROCESADORES DE LENGUAGE
F Compilador
Compilado r
Tiempo de Compilacin
Datos
Programa Objeto
Tiempo de Ejecucin
Resultados
PROCESADORES DE LENGUAGE
F Linkers
Ocurre entre el proceso de compilacin y la ejecucin Necesario cuando el LF permite fragmentacin del programa.
q q
Libreras, procedimientos, subrutinas, etc. El compilador produce cdigos objeto para cada parte.
F Cargador (Loader)
Coloca el archivo ejecutable en memoria Asigna el espacio de memoria Pasa el control a la primera instruccin ejecutarse
PROCESADORES DE LENGUAGE
F Interprete
Ejecuta en la mquina las instrucciones que encuentra en LF Todo el proceso se realiza en tiempo de ejecucin Aplicacin e interprete coexisten en memoria Ejecucin ms lenta que en programas compilados Mayor portabilidad y flexibilidad.
F Decompilador
Programa traductor de un LF de bajo nivel a un LF de alto nivel. Tarea difcil para que el cdigo generado tenga cierta lgica Requiere esquema de generacin de cdigo
PROCESADORES DE LENGUAGE
F Desensamblador
F Depurador (debugger)
Permite encontrar y corregir los errores de programas Permite observar traza programa y visualizar variables, direcciones, etc. Permite observar traza bajo nivel y visualizar registros y memoria Ejecucin paso a paso declaraciones o ensamblador Back-trace ejecucin hasta excepcin (segmentation fault)
PROCESADORES DE LENGUAGE
F Profiler
Examina desempeo de los programas en tiempo de ejecucin Permite identificar el rendimiento en diferentes zonas del cdigo
F Optimizador
Herramientas independientes o incluidas en compiladores Elegir entre velocidad y tamao del cdigo Eliminacin de cdigo muerto Desenvolver loops, utilizar instrucciones de vectorizacin
F Compresores
PROCESADORES DE LENGUAGE
F Preprocesadores
F Formateadores
Muchos tipos y diferentes fines Resaltan sintaxis o estructura Conversores de formato Correctores de estilo
F Editores
TERMINOLOGA ADICIONAL
F Front-end
F Back-end
F Compiler Compiler
Scanner (Flex) Parser (Bison) Analizador semntico (ANTLR) Generador de cdigo (BURG)
TERMINOLOGA ADICIONAL
F Representacin Intermedia (IR)
Es un tipo de lenguaje intermedio entre dos fases del proceso de compilacin. La IR ms importante esta entre el Front-End y el Backend
F Mquina Virtual
F Compilador Retargetable
Compilador que teniendo una mquina destino, puede modificarse sin mayor esfuerzo a una mquina diferente.
TERMINOLOGA ADICIONAL
F Compilador portable
F Cross-compilador
Un compilador que corriendo en una maquina H produce cdigo para una maquina T. T es generalmente un microprocesador embebido.
F Pre-compilador
TERMINOLOGA ADICIONAL
F Compilador dinmico o Just-in-time compiler
Compilador donde la traduccin del cdigo y la ejecucin del mismo se hacen simultneamente.
F Compilado esttico
El compilador tradicional Opuesto a compilador dinmico 1ro Traduccin a lenguaje de maquina , 2do Ejecucin
F Plataforma de Compilacin
Conjunto de herramientas para hacer I+D en la construccin de compiladores: SUIF, LLVM, ANTLR, etc.