2. FORTRAN
¿Qué es
Fortran ?
• Es un lenguaje de programación alto nivel de propósito
general, procedimental e imperativo, que está especialmente
adaptado al cálculo numérico y a la computación científica.
Características
• El lenguaje fue diseñado teniendo en cuenta que los programas
serían escritos en tarjetas perforadas de 80 columnas. Así por
ejemplo, las líneas debían ser numeradas y la única alteración
posible en el orden de ejecución era producida con la
instrucción goto. Estas características han evolucionado de versión
en versión. Las actuales contienen subprogramas, recursión y una
variada gama de estructuras de control.
4. • Permite al usuario no elegir optimización, optimización de registros o completa.
• Escrito por Lowry y Medlock (1969)
• Se realizan cuatro pasadas:
• Las dos primeras realizan el a.léxico y a. Sintáctico produciendo cuádruplos
• La siguiente optimiza el código y registros
• La última genera código objeto a partir de
• cuádruplos y asignaciones a registros
CARACTERISTICAS
En el léxico
• Devuelve: Los pares operador
operando son un token operando
junto con el token no operando
precedente.
• Utiliza precedencia de
operadores para las expresiones.
• Optimizaciones simples, sustituir
multiplicaciones por dos por
desplazamientos.
En la optimización
• Eliminación de subexpresiones
comunes.
• Traslado de código.
• Propagación de copias.
• Eliminación de variables de
inducción.
ESTRUCTURA DE LOS COMPILADORES H
5. PASCAL
¿Qué es Pascal
?
• Pascal es un lenguaje de programación desarrollado por el profesor suizo
Niklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era
crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos,
utilizando la programación estructurada y estructuración de datos. Sin embargo
con el tiempo su utilización excedió el ámbito académico para convertirse en una
herramienta para la creación de aplicaciones de todo tipo.
Características
Únicas
• Otra diferencia importante es que en Pascal, el tipo de una variable se fija en
su definición; la asignación a variables de valores de tipo incompatible no
están autorizadas (en C, en cambio, el compilador hace el mejor esfuerzo para
dar una interpretación a casi todo tipo de asignaciones). Esto previene errores
comunes donde variables son usadas incorrectamente porque el tipo es
desconocido; y también evita la necesidad de notación húngara, que vienen a
ser prefijos que se añaden a los nombres de las variables y que indican su
tipo.
8. VENTAJAS
• Fue fácil de implementar
• Generaba poca actividad de
entrada/salida
• El código de un
procedimiento se compila
en memoria y se escribe
como una unidad a la
memoria secundaria
DESVENTAJAS
• Limitaciones en la calidad
del código generado
• Mucha necesidad de
memoria
9. ¿Qué es C ?
• Se trata de un lenguaje fuertemente 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.
Características
• Diseñado para programar sistemas en Bell
• Labs, por Dennis Ritchie.
• Evolucionó de B, y después de ALGOL 68
• Operadores potentes, pero pobre
• verificación de tipos
• Muy extendido a través de UNIX y
• disponibilidad de compiladores gratuitos y
• de alta calidad, especialmente gcc.
C
10. COMPILADORES PARA C
CARACTERISTICAS
• Lenguaje de propósito general
(Ritchie)
• Principal lenguaje de programación
en UNIX
• UNIX está escrito en C
• Se van a examinar el diseñado por
Ritchie
• (1979) para PDP-11 y los
transportables PCC
• de Johnson (1979)
• Compiladores de dos pasadas
• PDP-11 tiene una tercera opcional
para optimizar
• el lenguaje ensamblador (elimina
proposiciones
• redundantes o innaccesibles)
ESTRUCTURA
11. El compilador PDP-11
Utiliza descenso recursivo para
todo excepto las
expresiones
Expresiones con precedencia de
operadores
Código intermedio:
Expresiones notación postfija
Ensamblador para estructuras
de control
El compilador PCC
LALR(1) generado con
YACC
Código intermedio:
Expresiones notación
prefija
Ensamblador demás
construcciones