Compiladores Código:  75.580    :  6
Consulta de los datos generales   Descripción   La asignatura en el conjunto del plan de estudios   Campos profesionales en el que se proyecta   Conocimientos previos   Información previa a la matrícula   Objetivos y competencias   Contenidos   Consulta de los recursos de aprendizaje de la UOC para la asignatura   Información adicional sobre los recursos de aprendizaje y herramientas de apoyo   Informaciones sobre la evaluación en la UOC   Consulta del modelo de evaluación  
Este es el plan docente de la asignatura para el segundo semestre del curso 2023-2024. Podéis consultar si la asignatura se ofrece este semestre en el espacio del campus Más UOC / La universidad / Planes de estudios). Una vez empiece la docencia, tenéis que consultarlo en el aula. El plan docente puede estar sujeto a cambios.

Los compiladores son herramientas indispensables para cualquier informático, encargadas de traducir información textual de un formato o lenguaje a otro. Por ejemplo, actúan como piezas clave en el proceso la ejecución de un programa: traducen el programa desde el lenguaje de alto nivel utilizado por los humanos hasta un lenguaje de bajo nivel que se puede ejecutar en un ordenador (como el ensamblador o el código máquina).

Esta asignatura presenta la estructura básica de un compilador: los módulos que lo componen y cómo se comunican entre sí. Nos centraremos en el caso de los lenguajes de programación de propósito general y en el proceso de generación de un ejecutable a partir de un programa en alto nivel.

Concretamente, se verá cómo se analiza un programa fuente para obtener sus componentes y se detectan los posibles errores introducidos por el programador. Se introducirá también el concepto de intérprete y su relación con los compiladores. Después se estudiará cómo a partir de los datos obtenidos en la parte de análisis, se genera el código objeto y es optimizado para mejorar el rendimiento. Todo eso se pondrá en práctica mediante el uso de herramientas para la construcción de compiladores.

Amunt

La asignatura Compiladores se puede cursar como asignatura optativa o bien como parte del itinerario de Computación.

Dentro de este itinerario, esta asignatura permite aplicar los conocimientos obtenidos en Autómatas y Gramáticas al estudio de los lenguajes de programación. Además, junto con Inteligencia Artificial y Aprendizaje computacional, la asignatura proporciona las bases utilizadas en las técnicas del procesamiento de lenguaje natural.

Amunt

Además del área de compiladores, todas las técnicas que se estudian en esta asignatura, se pueden aplicar, en general, a cualquier sistema de procesamiento de lenguajes y de traducción. La construcción de compiladores e intérpretes también es relevante en el intercambio de información textual entre diferentes sistemas software: construcción de librerías de importación/exportación, definición de lenguajes de intercambio de datos, etc.

Así pues, esta asignatura ocupa una posición muy relevante en las salidas profesionales en áreas donde la definición formal de un lenguaje se hace necesaria como la definición de lenguajes de programación, el procesamiento de lenguaje natural o la traducción automática, entre otros.

Por último, las competencias adquiridas en esta asignatura pueden ser útiles para cualquier desarrollador, dado que permiten entender mejor los lenguajes de programación, el funcionamiento de los intérpretes y los compiladores y el proceso de ejecución de un programa.

Amunt

La asignatura presupone un buenos conocimientos de programación, específicamente en lenguaje Java, por lo que resulta muy recomendable haber cursado las asignaturas de programación y de estructuras de datos correspondientes con anterioridad.

Además, para el buen seguimiento de la asignatura se tiene que partir de unos conocimientos básicos en lenguajes, expresiones regulares, autómatas finitos y gramáticas.

Y, finalmente, hay que tener conocimientos básicos sobre lenguaje ensamblador y estructura de computadores.

Amunt

Antes de cursar esta asignatura, es muy recomendable haber cursado previamente las asignaturas siguientes:

  • Diseño y Programación Orientada a Objetos.
  • Autómatas y Gramáticas.
  • Estructura de Computadores.

Además, es recomendable a pesar de que no imprescindible haber cursado la asignatura de Diseño de estructuras de datos.

Amunt

Las competencias generales del Grado que se ponen de manifiesto en esta asignatura son:

  • Capacidad para analizar un problema en el nivel de abstracción adecuado a cada situación y aplicar las habilidades y conocimientos adquiridos para resolverlo.
  • Capacidad para diseñar y construir aplicaciones informáticas mediante técnicas de desarrollo, integración y reutilización.
  • Capacidad para aplicar las técnicas específicas de tratamiento, almacenamiento y administración de datos.
  • Capacidad para proponer y evaluar diferentes alternativas tecnológicas para resolver un problema concreto.

Las competencias específicas de esta asignatura son:

  • Entender el proceso de ejecución de un programa escrito en un lenguaje de alto nivel.
  • Conocer la diferencia entre compilador e intérprete y saber escoger la herramienta más apropiada a cada situación.
  • Conocer las diferentes fases de un compilador (análisis léxico, sintáctico y semántico, generación de código y optimización de código) y cómo se relacionan.
  • Entender el papel de la tabla de símbolos dentro de un compilador y saber escoger la estructura más apropiada.
  • Conocer cuáles son los tipos de errores que se pueden identificar en el análisis de un programa, cómo se detectan, cómo se informa de estos errores y cómo un compilador se puede recuperar de ellos.
  • Ser capaz de utilizar herramientas de construcción de analizadores léxicos y sintácticos para la construcción de un compilador.

Amunt

La asignatura se estructura en seis módulos:

Módulo

Contenidos

Descripción

1. Visión general

1. Lenguajes

2. Nociones básicas

3. Estructura de un compilador

4. Construcción de compiladores

Se verá una panorámica de la estructura general de un compilador.

2. Análisis léxico

1. Organización general

2. Construcción de analizadores léxicos

3. Especificación de un analizador léxico

4. Tratamiento de errores

5. El sistema de entrada

6. Las tablas de símbolos

Se estudiará la única parte del compilador que interactúa con el fichero fuente, convirtiendo sus caracteres en una secuencia de símbolos léxicos (tokens) y eliminando todo lo que no es necesario para su análisis (comentarios, saltos de línea ...).

3. Análisis sintáctico

1. Nociones generales

2. Análisis sintáctico descendente

3. Análisis sintáctico ascendente

Se estudiará la fase encargada verificar que los símbolos léxicos del programa fuente llegan en el orden correcto y que se cumplen las especificaciones de la gramática libre de contexto que define el lenguaje fuente.

4. Análisis semántico

1. Análisis semántico

2. Generación de código intermedio

Se estudiará la verificación de la semántica del programa fuente, la que es dependiente del contexto, incorporando atributos y acciones semánticas en las producciones de la gramática.

5. Fases de síntesis

1. Generación de código

2. Optimización de código

Se estudiará la generación de código a partir del código intermedio, así como todo aquello a tener en cuenta con el fin de hacer una traducción automática y la fase final de optimización.

6. Lenguajes interpretados

1. Intérpretes

2. La máquina de pila abstracta

3. Construcción de un intérprete

Se presentará un modelo concreto de arquitectura para intérpretes basado en una memoria en forma de pila. Se estudiará el proceso de construcción de un intérprete basado en este modelo.

Amunt

Compiladores PDF

Amunt

Los módulos didácticos constituyen la parte más importante de los materiales de la asignatura. Los podéis descargar en formato PDF desde el apartado Recursos del aula.

La asignatura dispone de un manual de referencia para las herramientas de construcción de compiladores utilizadas en la asignatura, el Manual de JLex y CUP, que podéis encontrar en el aula virtual dentro del apartado de Recursos.

Disponéis de un aula de Laboratorio de Java de Compiladores donde recibiréis más información sobre el software de la asignatura (entorno JDK para la ejecución de programas Java, JLex y CUP).

Amunt

El proceso de evaluación se fundamenta en el trabajo personal de cada estudiante y presupone la autenticidad de la autoría y la originalidad de los ejercicios realizados.

La falta de autenticidad en la autoría o de originalidad de las pruebas de evaluación; la copia o el plagio; el intento fraudulento de obtener un resultado académico mejor; la colaboración, el encubrimiento o el favorecimiento de la copia, o la utilización de material o dispositivos no autorizados durante la evaluación, entre otras, son conductas irregulares que pueden tener consecuencias académicas y disciplinarias graves.

Por un lado, si se detecta alguna de estas conductas irregulares, puede comportar el suspenso (D/0) en las actividades evaluables que se definan en el plan docente - incluidas las pruebas finales - o en la calificación final de la asignatura, ya sea porque se han utilizado materiales o dispositivos no autorizados durante las pruebas, como redes sociales o buscadores de información en internet, porque se han copiado fragmentos de texto de una fuente externa (internet, apuntes, libros, artículos, trabajos o pruebas del resto de estudiantes, etc.) sin la correspondiente citación, o porque se ha practicado cualquier otra conducta irregular.

Por el otro, y de acuerdo con las normativas académicas, las conductas irregulares en la evaluación, además de comportar el suspenso de la asignatura, pueden dar lugar a la incoación de un procedimiento disciplinario y a la aplicación, si procede, de la sanción que corresponda.

La UOC se reserva la potestad de solicitar al estudiante que se identifique o que acredite la autoría de su trabajo a lo largo de todo el proceso de evaluación por los medios que establezca la universidad (síncronos o asíncronos). A estos efectos, la UOC puede exigir al estudiante el uso de un micrófono, una cámara u otras herramientas durante la evaluación y que este se asegure de que funcionan correctamente.

La verificación de los conocimientos para garantizar la autoría de la prueba no implicará en ningún caso una segunda evaluación.

Amunt

Puedes superar la asignatura a través de dos vías:

  1. Siguiendo la evaluación continua (EC). Puedes superar la asignatura directamente aprobando la EC. En este caso, la nota final de la asignatura se corresponderá con la nota final de la evaluación continua.
  2. Haciendo un examen. La nota final se calculará de acuerdo con lo siguiente:
    • Si no te has presentado a la evaluación continua, la nota final será la calificación numérica obtenida en el examen.
    • Si has seguido la evaluación continua y tienes una nota distinta a un No presentado, la calificación final será el cálculo más favorable entre la nota numérica del examen y la ponderación de la nota de la evaluación continua con la nota del examen, según lo establecido en el plan docente. Para aplicar este cálculo, es necesario obtener una nota mínima de 4 en el examen (si es inferior, la nota final de la asignatura será la calificación del examen).
    • Si no te presentas al examen, la calificación final será un No presentado.

 

Amunt