Presentacion y Extension de tema para Blogger.pptx
Compilador
1. República Bolivariana de Venezuela<br />Universidad Fermín ToroDecanato de Ingeniería<br />Cabudare-Estado-Lara<br />Alvis CastellanosC.I.: 21.208.051TI-22Prof.: Yelitza Echeverrias<br />Cabudare, Julio 2011<br />Compilador<br />Es un traductor que convierte un texto escrito en un lenguaje fuente de alto nivel en un programa objeto en código máquina. <br />Proceso de traducción de un código fuente (escrito en un lenguaje de programación de alto nivel) a lenguaje máquina (código objeto) para que pueda ser ejecutado por la computadora. Las computadoras sólo entienden el lenguaje máquina. La aplicación o la herramienta encargada de la traducción se llaman compilador.<br />Ejemplo:* El compilador recibe el código fuente.* Se analiza lexicográficamente.* Se analiza semántica y sintácticamente (pareado).* Se genera el código intermedio no optimizado.* Se optimiza el código intermedio.* Se genera el código objeto para una plataforma específica.Finalmente ya puede ejecutarse el código máquina.<br />Interpretador<br />Es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.<br />Ejemplos:<br />Perl<br />PHP<br />Java script<br />Logo<br />ASP (hasta la versión 3)<br />Python<br />Tcl<br />Ruby<br />J#<br />ASP<br />Lenguaje de Alto nivel<br />Un lenguaje de programación de alto nivel se caracteriza por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las máquinas.<br />En los primeros lenguajes de alto nivel la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes procedimentales.<br />Por ejemplo, en C se pueden usar palabras tales como: case, if, for, while, etc. para construir con ellas instrucciones como: if (numero > 0) printf (“El número es positivo”);que traducido al castellano viene a decir que: Si numero es mayor que cero, entonces, escribir por pantalla el mensaje: quot;
El número es positivoquot;
.<br />Ejemplo:1. JAVA-BASIC2. C-VISUAL BASIC3. C++-PASCAL4. COBOL5. FORTRAN6. PROLOG7.LISP8. PL/I9. SMALL TALK10. ADA<br />Lenguaje de Medio Nivel<br />Suelen ser clasificados de alto nivel, pero permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la creación de 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 lenguajes de bajo nivel.Una característica distintiva, por ejemplo, que convierte al lenguaje de programación C en un lenguaje de medio nivel y al lenguaje de programación Pascal en un lenguaje de alto nivel, es que en el primero es posible manejar las letras como si fueran números (en Pascal no), por el contrario, en Pascal es posible concatenar las cadenas de caracteres con el operador suma y copiarlas con la asignación (en C es el usuario el responsable de llamar a las funciones correspondientes).<br />Lenguaje de Bajo Nivel<br />Los lenguajes de bajo nivel son más fáciles de utilizar que los lenguajes máquina, pero, al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos. Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en inglés, ADD, SUB, DIV, etc.; en español, SUM, RES, DIV, etc. Una instrucción típica de suma sería: ADD M, N, P<br />C (lenguaje de programación)<br />Se trata de un lenguaje débilmente tipificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.<br />Características<br />Propiedades<br />Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.<br />Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado quot;
no llevado al extremoquot;
(permitiendo ciertas licencias de ruptura).<br />Un sistema de tipos que impide operaciones sin sentido.<br />Usa un lenguaje de preprocesador, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente.<br />Acceso a memoria de bajo nivel mediante el uso de punteros.<br />Interrupciones al procesador con uniones.<br />Un conjunto reducido de palabras clave.<br />Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros.<br />Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y polimorfismo.<br />Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una única variable quot;
empleadoquot;
).<br />Carencias<br />Recolección de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la quot;
libgcquot;
desarrollada por Sun Microsystems, o el Recolector de basura de Boehm.<br />Soporte para programación orientada a objetos, aunque la implementación original de C++ fue un preprocesador que traducía código fuente de C++ a C.<br />Encapsulación.<br />Funciones anidadas, aunque GCC tiene esta característica como extensión.<br />Polimorfismo en tiempo de código en forma de sobrecarga, sobrecarga de operadores y sólo dispone de un soporte rudimentario para la programación genérica.<br />Soporte nativo para programación multadillo y redes de computadores.<br />