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

En la UOC, la evaluación generalmente es virtual. Se estructura en torno a la evaluación continua, que incluye diferentes actividades o retos; la evaluación final, que se lleva a cabo mediante pruebas o exámenes, y el trabajo final de la titulación.

Las actividades o pruebas de evaluación pueden ser escritas y/o audiovisuales, con preguntas aleatorias, pruebas orales síncronas o asíncronas, etc., de acuerdo con lo que decida cada equipo docente. Los trabajos finales representan el cierre de un proceso formativo que implica la realización de un trabajo original y tutorizado que tiene como objetivo demostrar la adquisición competencial hecha a lo largo del programa.

Para verificar la identidad del estudiante y la autoría de las pruebas de evaluación, la UOC se reserva la potestad de aplicar diferentes sistemas de reconocimiento de la identidad y de detección del plagio. Con este objetivo, la UOC puede llevar a cabo grabación audiovisual o usar métodos o técnicas de supervisión durante la ejecución de cualquier actividad académica.

Asimismo, la UOC puede exigir al estudiante el uso de dispositivos electrónicos (micrófonos, cámaras u otras herramientas) o software específico durante la evaluación. Es responsabilidad del estudiante asegurar que estos dispositivos funcionan correctamente.

El proceso de evaluación se fundamenta en el trabajo personal del estudiante y presupone la autenticidad de la autoría y la originalidad de las actividades académicas. La web sobre integridad académica y plagio de la UOC contiene información al respecto.

La falta de autenticidad en la autoría o de originalidad de las pruebas de evaluación; la copia o el plagio; la suplantación de identidad; la aceptación o la obtención de cualquier actividad académica a cambio o no de una contraprestación; la colaboración, el encubrimiento o el favorecimiento de la copia, o el uso de material, software o dispositivos no autorizados en el plan docente o el enunciado de la actividad académica, incluida la inteligencia artificial y la traducción automática, entre otras, son conductas irregulares en la evaluación que pueden tener consecuencias académicas y disciplinarias graves.

Estas conductas irregulares pueden conllevar el suspenso (D/0) en las actividades evaluables definidas en el plan docente -incluidas las pruebas finales- o en la calificación final de la asignatura, ya sea porque se han utilizado materiales, software o dispositivos no autorizados durante las pruebas (como el uso de inteligencia artificial no permitida, 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 de otros estudiantes, etc.) sin la citación correspondiente, por la compraventa de actividades académicas, o porque se ha llevado a cabo cualquier otra conducta irregular.

Asimismo, y de acuerdo con la normativa académica, las conductas irregulares en la evaluación también pueden dar lugar a la incoación de un procedimiento disciplinario y a la aplicación, si procede, de la sanción que corresponda, de conformidad con lo establecido en la normativa de convivencia de la UOC.

En el marco del proceso de evaluación, la UOC se reserva la potestad de:

  • Solicitar al estudiante que acredite su identidad según lo establecido en la normativa académica.
  • Solicitar al estudiante que acredite la autoría de su trabajo a lo largo de todo el proceso de evaluación, tanto en la evaluación continua como en la evaluación final, a través de una entrevista oral síncrona, que puede ser objeto de grabación audiovisual, o por los medios establecidos por la UOC. Estos medios tienen el objetivo de verificar los conocimientos y las competencias que garanticen la identidad del estudiante. Si no es posible garantizar que el estudiante es el autor de la prueba, esta puede ser calificada con una D, en el caso de la evaluación continua, o con un suspenso, en el caso de la evaluación final.

Inteligencia artificial en el marco de la evaluación

La UOC reconoce el valor y el potencial de la inteligencia artificial (IA) en el ámbito educativo y, a su vez, pone de manifiesto los riesgos que supone si no se utiliza de forma ética, crítica y responsable. En este sentido, en cada actividad de evaluación se informará al estudiantado sobre las herramientas y los recursos de IA que se pueden utilizar y en qué condiciones. Por su parte, el estudiantado se compromete a seguir las indicaciones de la UOC a la hora de realizar las actividades de evaluación y de citar las herramientas utilizadas y, concretamente, a identificar los textos o imágenes generados por sistemas de IA, los cuales no podrá presentar como si fueran propios.

Respecto a usar o no la IA para resolver una actividad, el enunciado de las actividades de evaluación indica las limitaciones en el uso de estas herramientas. Debe tenerse en cuenta que usarlas de manera inadecuada, como por ejemplo en actividades en las que no están permitidas o no citarlas en las actividades en las que sí lo están, puede considerarse una conducta irregular en la evaluación. En caso de duda, se recomienda que, antes entregar la actividad, se haga llegar una consulta al profesorado colaborador del aula.

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