Sie sind auf Seite 1von 8

Humberto Mendoza Hernndez

QUE ES UN TRADUCTOR. Traductor: En un sentido orientado hacia la computacin, un traductor, de manera general, es un software que toma como entrada un programa escrito en un cdigo llamado fuente y genera como salida otro programa en un cdigo llamado objeto. Algunos ejemplos de traductores son los compiladores (toma como entrada cdigo en alto nivel y genera como salida cdigo en bajo nivel), los interpretes (toma como entrada cdigo en alto nivel y genera como salida un cdigo intermedio), los preprocesadores (toma como entrada cdigo en alto nivel y genera como salida cdigo en alto nivel) y el ensamblador (toma como entrada cdigo en ensamblador y genera como salida cdigo en bajo nivel). Su estructura podria ser expresada de la siguiente manera: cdigo fuente - >> traductor - > cdigo objeto

Humberto Mendoza Hernndez

QUE ES INTRPRETE. Definicin. Un intrprete es un programa que ejecuta un programa escrito en un determinado lenguaje examinando y ejecutando cada sentencia del programa una a una, por separado y sin realizar un proceso de compilacin previo. Al contrario de lo que se podra pensar el intrprete NO traduce la sentencia a cdigo mquina antes de ejecutarla. En su lugar, identifica el tipo de sentencia y la ejecuta directamente. El cdigo para ejecutar la sentencia est contenido dentro del intrprete que contendr rutinas para: evaluar una expresin, almacenar informacin en memoria, recuperar datos de memoria, etc. El intrprete contendr el nmero de rutinas necesarias para poder ejecutar cualquier sentencia del lenguaje que est interpretando. Ejemplo: C := A + B 1. El intrprete lee la sentencia y determina que es una asignacin. 2. Llamar a una de sus rutinas para evaluar la expresin a la derecha de la asignacin. 3. Esta rutina toma los smbolos A y B, determina donde estn almacenados, obtiene sus valores actuales y los suma. 4. El intrprete toma el valor calculado y lo almacena en la direccin de memoria a la que hace referencia el smbolo C. Al igual que un compilador para llevar a cabo su tarea el intrprete usar un analizador lxico-grfico y guardar la informacin necesaria para la traduccin en una tabla de smbolos. Interpretar una sentencia es relativamente complejo, al tener que ser escaneada y analizada, los smbolos tienen que ser buscados, hay que llevar a cabo lo indicado por la sentencia, etc. Esto significa que el nmero de instrucciones mquinas a ejecutar para interpretar una sentencia puede ser mucho mayor que el cdigo generado por un compilador. Adems, cada sentencia tendr que ser interpretada cada vez que aparezca, por lo que una sentencia en un bucle sera interpretada varias veces. Adems de elegir entre compilar o interpretar un programa, otra opcin es combinar ambos procesos de traduccin. En este caso, se realiza una compilacin parcial a un cdigo intermedio que es seguida de un proceso de interpretacin. Uno de los lenguajes ms utilizados hoy en da, sobre todo para el desarrollo de aplicaciones para la Web, que sigue esta propuesta es el lenguaje Java. En el lenguaje Java el cdigo primero se compila con el compilador de Java javac. Este compilador genera un cdigo virtual llamado Byte Code. Este cdigo es luego interpretado por una Mquina Virtual de Java (o JVM de Java Virtual Machine) que debe estar instalada y ejecutndose en la mquina en la que se desee ejecutar el cdigo compilado con javac. Comparacin entre compiladores e intrpretes Histricamente, debido a la escasez de memoria de los primeros ordenadores, se puso de moda el uso de intrpretes frente a los compiladores, pues el programa fuente sin traducir y el intrprete juntos requeran una cantidad de memoria menor que la del compilador. Por ello, los primeros ordenadores personales (Spectrum, Commodore VIC-20, PC XT de IBM, etc.) iban siempre acompaados de un intrprete de BASIC.

Humberto Mendoza Hernndez

La mejor informacin sobre los errores por parte del compilador as como una mayor velocidad de ejecucin del cdigo resultante hizo que poco a poco se impusieran los compiladores. Hoy en da, y con el problema de la memoria prcticamente resuelto, se puede hablar de un gran predominio de los compiladores frente a los intrpretes, aunque intrpretes como los incluidos en los navegadores de Internet para Java son la gran excepcin. Algunas de las ventajas de compilar frente a interpretar son: Se compila una vez; se ejecuta muchas veces La ejecucin del programa objeto es mucho ms rpida que si se interpreta el programa fuente. El compilador tiene una visin global del programa, por lo que la informacin de mensajes de error es ms detallada. Por otro lado, algunas de las ventajas de interpretar frente a compilar son: Un intrprete necesita menos memoria que un compilador. Permiten una mayor interactividad con el cdigo en tiempo de desarrollo. En algunos lenguajes (Smalltalk, Prolog, LISP, Java) est permitido y es frecuente aadir cdigo segn se ejecuta otro cdigo, y esta caracterstica solamente es posible implementarla en un intrprete.

Humberto Mendoza Hernndez

QUE ES COMPILADOR Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o simplemente texto. Este proceso de traduccin se conoce como compilacin.1 Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a como piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora. Un compilador acepta programas escritos en un lenguaje de alto nivel y los traduce a otro lenguaje, generando un programa equivalente independiente, que puede ejecutarse tantas veces como se quiera. Este proceso de traduccin se conoce como compilacin. el de los programas de partida (LA) el de los programas equivalentes traducidos (LB), normalmente el lenguaje de mquina el lenguaje en que est escrito el propio compilador (LC), que puede ser igual o diferente a LA. Aumenta la portabilidad del compilador si est escrito en el mismo lenguaje, es decir, se puede compilar a s mismo. Los programas interpretados suelen ser ms lentos que los compilados, pero los intrpretes son ms flexibles como entornos de programacin y depuracin. Comparando su actuacin con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intrprete informtico corresponde al intrprete humano, que traduce de viva voz las palabras que oye, sin dejar
Partes de un compilador

Normalmente los compiladores estn divididos en dos partes: Front End: es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar. Back End: es la parte que genera el cdigo mquina, especfico de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End. Esta divisin permite que el mismo Back End se utilice para generar el cdigo mquina de varios lenguajes de programacin distintos y que el mismo Front End que sirve para analizar el cdigo fuente de un lenguaje de programacin concreto sirva para la generacin de cdigo mquina en varias plataformas distintas. El cdigo que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker).

Humberto Mendoza Hernndez

QUE ES PREPROCESADOR.
Un preprocesador es un programa separado que es invocado por el compilador antes de que comience la traduccin real. Un preprocesador de este tipo puede eliminar los comentarios, incluir otros archivos y ejecutar sustituciones de macros. Los preprocesadores pueden ser requeridos por el lenguaje (como en C) o pueden ser agregados posteriores que proporcionen facilidades adicionales (como el preprocesador Ratfor para FORTRAN). Los preprocesadores producen la entrada para un compilador, y pueden realizar las funciones siguientes:
y

Procesamiento de macros. Un preprocesador puede permitir a un usuario definir macros, que son abreviaturas de construcciones ms grandes. Inclusin de archivos. Un preprocesador puede insertar archivos de encabezamiento en el texto del programa. Por ejemplo, el preprocesador de C hace que el contenido del archivo <global.h> reemplace a la proposicin #include <global.h> cuando procesa un archivo que contenga a esa proposicin. Preprocesadores "racionales". Estos preprocesadores enriquecen los lenguajes antiguos con recursos ms modernos de flujo de control y de estructuras de datos. Por ejemplo, un preprocesador de este tipo podra proporcionar al usuario macros incorporadas para construcciones, como proposiciones while o if, en un lenguaje de programacin que no las tenga. Extensiones a lenguajes. Estos preprocesadores tratan de crear posibilidades al lenguaje que equivalen a macros incorporadas. Por ejemplo, el lenguaje Equel es un lenguaje de consulta de base de datos integrado en C. El preprocesador considera las proposiciones que empiezan con ## como proposiciones de acceso a la base de datos, sin relacin con C, y se traducen a llamadas de procedimiento a rutinas que realizan el acceso a la base de datos.

Los procesadores de macros tratan dos clases de proposiciones: definicin de macros y uso de macros. Las definiciones normalmente se indican con algn carcter exclusivo o palabra clave, como define o macro. Constan de un nombre para la macro que se est definiendo y de un cuerpo, que constituye su definicin. A menudo, los procesadores de macros admiten parmetros formales en su definicin, esto es, smbolos que se reemplazarn por valores (en este contexto, un "valor" es una cadena de caracteres). El uso de una macro consiste en dar nombre a la macro y proporcionar parmetros reales, es decir, valores para sus parmetros formales. El procesador de macros sustituye los parmetros reales por lo parmetros formales del cuerpo de la macro; despus, el cuerpo transformado reemplaza el uso de la propia macro.

Humberto Mendoza Hernndez

QUE ES PROGRAMACION DE SITEMAS? Un sistema es un conjunto de componentes que interaccionan entre si para lograr un objetivo comn. Las personas se comunican con el lenguaje, que es un sistema muy desarrollado formado por palabras y smbolos que tienen significado para el que habla y para quienes lo escuchan, lo mismo es para las computadoras las cuales tienen sistemas y se comunican por medio de computadoras. La programacin es el proceso de convertir las especificaciones a grandes rasgos de los sistemas en instrucciones de maquina que produzcan los resultados deseados. QUE ESTUDIA LA PROGRAMACION DE SITEMAS? El trabajo de un programador de sistemas es seleccionar, modificar y mantener el complejo software del sistema operativo. Por lo tanto, los programadores de sistemas desempean una funcin de apoyo al mantener el ambiente del software del sistema operativo en el que trabajan los programadores de aplicaciones y los operadores de las computadoras. Tambin participan en las decisiones relativas a reducciones o ampliaciones de hardware y/o software. Programacin de Sistemas Conceptos y Aplicaciones Se entiende por programacin de sistemas el conjunto de programas necesario para que una computadora de una imagen coherente y monoltica ante sus usuarios. Es un rea especializada dentro de las ciencias de la computacin. As, mediante la programacin de sistemas, no solo se manejan las computadoras por medio del lenguaje maquina (0 y 1) sino por otros sistemas operativos, sin lo cual sera muy difcil la interaccin con la maquina. El estudio de la programacin de sistemas En esta rea se estudia la teora de mquinas y su aplicacin en el diseo de sistemas digitales y de arquitectura de computadoras.reas especficas: Sistemas digitales para arquitecturas paralelas y control de procesos y sistemas reconfigurables. Inteligencia artificial aplicada a trabajo cooperativo En las aplicaciones cooperativas realizadas en el entorno Web, es viable hacer uso de las herramientas de inteligencia artificial. Se estn diseando y construyendo herramientas para elaborar un sistema sin costura que opere en Web con la finalidad de proporcionar a un grupo de coautores el soporte necesario para producir conjunta y simultneamente un mismo documento. La plataforma, denominada PINAS, es un sistema de edicin cooperativa (Alliance Web) y un sistema de notaciones sobre documentos complejos (COARSY) los cuales podrn permitir a coautores o revisores distribuidos en diferentes sitios del mundo, compartir y anotar observaciones sobre documentos complejos tales como captulos de libro, artculos, reportes, expedientes mdicos, etc. Sistemas para arquitecturas paralelas y distribuidas Diseo de sistemas operativos para arquitecturas paralelas y sistemas distribuidos, particularmente en lo que se refiere a manejo de memoria y calendarizacin de procesos. Redes y protocolos, programacin distribuida, diseo y evaluacin de middleware enfocados a aplicaciones de minera de datos y multimedia. Diseo de

Humberto Mendoza Hernndez

algoritmos paralelos y distribuidos. Herramientas para programacin paralela y distribuida. Sistemas de tiempo real Relacionados con diversos aspectos de la planificacin de los sistemas de tiempo real entre los cuales se encuentran los siguientes: planificacin tolerante a fallas en sistemas de tiempo real, planificacin de tiempo real en situaciones de sobrecarga, esto es en aplicaciones en donde se demande del procesador ms del 100% de su capacidad, y planificacin de sistemas de tiempo real aplicada al control de procesos y tcnicas de planificacin de tareas de tiempo real con restricciones de consumo de poder. Diseo y programacin de sistemas grandes Los sistemas empotrados suelen ser grandes y complejos, formados por subsistemas relacionados, pero relativamente independientes. Algunos lenguajes ignoran el hecho de que los programas se construyen por partes, cada una de ellas compilada por separado y todas ellas enlazadas en una aplicacin final. El resultado se convierte en aplicaciones monolticas difciles de mantener. Otros lenguajes, en contraste, parten del concepto de mdulo y proporcionan mecanismos de encapsulamiento y abstraccin que ayudan a programar sistemas grandes, ya que el trabajo del equipo de programacin y posterior mantenimiento del sistema se ve facilitado. Uno de estos lenguajes es Ada, que est fuertemente fundamentado en la disciplina de la ingeniera del software por lo que es el lenguaje ms apropiado en la programacin de sistemas empotrados industriales grandes.Ada asume la necesidad de la compilacin separada y proporciona dos mecanismos para realizarla, uno ascendente y otro descendente: o El mecanismo descendente (descomposicin): consiste en dividir un sistema complejo en componentes ms sencillos. Es apropiado para el desarrollo de grandes programas coherentes que, son divididos en varias subunidades que pueden compilarse por separado. Las subunidades se compilan despus que la unidad de la que forman parte. o El mecanismo ascendente (abstraccin): consiste en la especificacin de los aspectos esenciales de un componente, posponiendo su diseo detallado. Es apropiado para la creacin de bibliotecas de programa en las que las unidades se escriben para uso general y, consecuentemente, se escriben antes que los programas que las vayan a utilizar. El diseo de sistemas mediante mdulos permite encapsular partes del sistema mediante interfaces bien definidas y permiten utilizar tcnicas que facilitan el desarrollo de sistemas grandes como: - Ocultacin de informacin. - Tipos abstractos de datos. - Compilacin separada. Las unidades de programa en Ada son las siguientes: - Subprograma que define los algoritmos ejecutables. Los procedimientos y las funciones son subprogramas. - Paquete: define una coleccin de entidades. Los paquetes son el principal mecanismo de agrupacin de Ada.

Humberto Mendoza Hernndez

BLIBLIOGRAFIA

http://www.mitecnologico.com/Main/LenguajesCompiladores http://www.mitecnologico.com/Main/LenguajesInterpretes http://www.mitecnologico.com/Main/DefinicionProgramacionDeSistemas http://es.wikipedia.org/wiki/Preprocesador