Que Es Un Compilador
Enviado por zhoother • 10 de Marzo de 2014 • 2.016 Palabras (9 Páginas) • 348 Visitas
1.- ¿Qué es un compilador?
Los compiladores son programas de computadora que traducen un lenguaje a otro.
Un compilador toma como su entrada un programa escrito en su lenguaje fuente y produce
un programa equivalente escrito en su lenguaje objetivo. Por lo regular, el lenguaje fuente es un lenguaje de alto nivel, tal como C o C++, mientras que el lenguaje objetivo es código objeto (también llamado en ocasiones código de máquina) para la máquina objetivo, es decir, código escrito en las instrucciones de máquina correspondientes a la computadora en la cual se ejecutará.
Un compilador es un programa muy complejo con un número de líneas de código que
puede variar de i 0,000 a 1,000,000. Escribir un programa de esta naturaleza, o incluso comprenderlo, no es una tarea fácil, y la mayoría de los científicos y profesionales de la computación nunca escribirán un compilador completo.
No obstante, los compiladores se utilizan en casi todas las formas de la computación, y cualquiera que esté involucrado profesionalmente con las computadoras debería conocer la organización y el funcionamiento básicos de un compilador.
El estudio de las técnicas de codificación práctica en sí mismo requiere de una cuidadosa planeación, ya que incluso con buenos fundamentos teóricos los detalles de la codificación pueden ser complejos y abrumadores.
2.- ¿Por qué compiladores? Una breve historia
Con el advenimiento de la computadora con programa almacenado, iniciado por John von Neumann a finales de la década de 1940, se hizo necesario escribir secuencias de códigos, o programas, que darían como resultado que estas computadoras realizaran los cálculos deseados.
Al principio estos programas se escribían en lenguaje de máquina: códigos numericos que representaban las operaciones reales de la Máquina que iban a efectuarse. Por Ejemplo: C7 06 0000 0002
Representa la instrucción para mover el número 2 a la ubicación 0000 {en sistema hexadecimal} en los procesadores Intel 8x86 que se utilizan en las PC de IBM. Por supuesto, la escritura de tales códigos es muy tediosa o consume mucho tiempo, por lo que esta forma de codificación pronto fue remplazada por el Lenguaje ensamblador, en el cual las instrucciones y las localidades de memoria son formas simbólicas dadas. Por ejemplo, la instrucción en lenguajes ensamblador. MOV x,2
Es equivalente a la instrucción de máquina anterior (suponiendo que la localidad de memoria simbólica x es 0000). Un ensamblador traduce los códigos simbólicos y las localidades de memoria de lenguaje ensamblador a los código numéricos correspondientes del lenguaje de maquina.
El lenguaje ensamblador mejoró enormemente la velocidad y exactitud con la que podían Escribirse los programas, y en la actualidad todavía se encuentra en uno especia Cuando se necesita una gran velocidad o brevedad en el código. Sin embargo, el lenguaje ensamblador tiene varios defectos: aún no es fácil de escribir y es difícil de leer y comprender, además, el lenguaje ensamblador depende en extremo de la máquina en particular para la cual se haya escrito, de manera que el código escrito para una computadora debe volver a escribirse por completo para otra máquina. Como es evidente, el siguiente paso fundamental en la tecnología de programación fue escribir las operaciones de un programa de una manera concisa que se pareciera mucho a la notación matemática o lenguaje natural de manera que fueran independientes de cualquier máquina en particular y todavía se pudiera traducir mediante un programa para convertirlas en código ejecutable. Por ejemplo, el anterior código del lenguaje ensamblador se puede escribir de manera concisa e independiente de una máquina en particular como X = 2
El desarrollo del lenguaje FORTRAN y su compilador, llevado a cabo por un equipo en IBM dirigido por John Backus entre 1954 y 1957 demostró que estos temores eran infundados.
No obstante, el éxito de este proyecto se debió sólo a un gran esfuerzo. Ya que la mayoría de los procesos involucrados n la traducción de lenguajes de programación no fueron bien comprendidos en el momento.
Más o menos al mismo tiempo en que el primero compilador se estaba desarrollando, Noam Chomsky comenzó a estudiar la estructura del lenguaje natural. Sus hallazgos finalmente hicieron que la construcción de compiladores se volviera mucho más fácil e incluso pudiera ser automatizado hasta cierto punto. Los estudios de Chomsky condujeron a la clasificación de los lenguajes de acuerdo con la complejidad de sus gramáticas (las reglas que especifican su estructura) y la potencia de los algoritmos necesarios para reconocerlas. Las jerarquías de Chomsky, como ahora se le conoce, se compone de cuatro niveles de gramáticas, denominadas gramáticas tipo 0, tipo 1, tipo 2 y tipo 3, cada una de las cuales es una especialización de sus predecesora. Las gramáticas de tipo 2 o gramáticas libres de contexto, demostraron ser las más útiles para lenguajes de programación, en la actualidad son la manera estándar para representar la estructura de los lenguajes de programación. El estudio del problema del análisis sintáctico (la determinación de algoritmos eficientes para el reconocimiento de lenguajes libres de contexto) se llevó a cabo en las décadas de los 60’s y 70’s y condujo a una solución muy completa de este problema, que en la actualidad se ha vuelto una parte estándar de la teoría de compiladores.
Los autómatas finitos y las expresiones regulares, que corresponden a las gramáticas de tipo 3 de Chomsky, se encuentran estrechamente relacionados con las gramáticas libres de contexto. Al comenzar a generarse casi al mismo tiempo que el trabajo de Chomsky, su estudio condujo a métodos simbólicos para expresar la estructura de las palabras, o tokens, de un lenguaje de programación.
3.- Programas relacionados con los compiladores
INTÉRPRETES
Un intérprete es un traductor de lenguaje, igual que un compilador, pero difiere de éste en que ejecuta el programa fuente inmediatamente, en vez de generar un código objeto que se ejecuta después de que se completa la traducción. En principio, cualquier lenguaje de programación se puede interpretar o compilar, pero se puede preferir un intérprete a un compilador dependiendo del lenguaje que se esté usando y de la situación en la cual se presenta la traducción. Por ejemplo, BASIC es un lenguaje que por lo regular es interpretado en vez de compilado. De manera similar, los lenguajes funcionales, como LISP, tienden a ser interpretados. Los intérpretes también se utilizan con frecuencia
...