Visión general de los compiladores

1 Conceptos en los compiladores

Tipos simples Tipos avanzados
Constantes Variables
Números Records
Strings Arrays
   

2 Asignación de tipos (Type safe assignment)

Cuando tomamos diferentes tipos, hay que siempre asegurar que el funcionamiento para:

  • Sumas, restas, divisiones….
  • Expresiones booleanas…

3 Comandos

3.1 control

  • if-else
  • bucles (while, for)

3.2 Estructuras

  • funciones con argumentos y valor de retorno
  • Módulos

4 Ingenieria de software

  • Buscar un lenguaje en el que escribir el compilador
  • ``Definir'' el lenguaje que vamos a compilar
  • Generar código eficientemente y eficiente.
  • Optimización de código
  • Manejo de errores

5 Conceptos avanzados

  • Compilación multipaso
  • Compilación cruzada
  • Compilación incremental
  • Just-In-Time (JIT)
  • Metacircular design

6 El proceso de compilación: Análisis léxico

lexico.png

Figura 1: Ejemplo de tokenización de una entrada

7 El proceso de compilación: Análisis sintáctico

sintactico.png

Figura 2: Ejemplo de árbol de derivación

8 El proceso de compilación: Análisis semántico

  • Juan le dijo a Carlos que se olvido su trabajo en su casa.
  • Juan come solo judías.

9 El proceso de compilación: Optimización

  • Mejorar la eficiencia
  • Usar menos recursos (Red, consumo eléctrico, …)

10 El proceso de compilación: Generación de código

  • Generar finalmente el código en otro lenguaje.
  • Esta es una de las partes difíciles PERO ya habéis trabajado con ella.

11 Interludio

  • ¿Por qué hay muchos lenguajes de programación?
  • ¿Por qué aparecen lenguajes nuevos?
  • ¿Cuáles son las características que hacen bueno un lenguaje de programación?

12 ¿Por qué hay muchos lenguajes de programación?

Porque hay muchos requerimientos y algunos son contradictorios:

  • Computación científica.
  • Aplicaciones corporativas.
  • Programación de sistemas operativos.

13 ¿Por qué aparecen lenguajes nuevos?

  • HECHO: El coste de un lenguaje de programación es el coste de aprender el lenguaje de programación.
  • HECHO: Los lenguajes comúnmente aceptados cambian muy lentamente. Los nuevos, cambian muy rápidamente.
  • HECHO: La única razón profesional para crear un lenguaje nuevo es para realizar mejor tareas especificas.
  • HECHO: Los nuevos lenguajes se parecen a los antiguos.

14 ¿Qué es un buen lenguaje de programación?

  • No hay una forma aceptada de definir un lenguaje de programación bueno.
  • Los buenos lenguajes son buenos dependiendo la aplicación.
  • Los buenos lenguajes realizan las tareas para las que fueron diseñados.