Se viene una nueva edición de compiladores. Cátedra Mendez.
A pesar de que los utilizan todos los días, la mayoría de los ingenieros de software tienen muy poco conocimiento sobre cómo están diseñados e implementados los lenguajes de programación. Solo con ver que las portadas de los libros sobre el tema tienen “dragones”, “tigres” y otras bestias mitológicas que sugieren una rama muy compleja de las Ciencias de la Computación se esconde detrás de ellas. Este curso romperá este prejuicio y basándose en un enfoque teórico-práctico emprenderá un camino para comprender y estudiar la belleza detrás de los lenguajes de programación y sus compiladores. El objetivo de la materia es entender, diseñar e implementar un compilador y un intérprete de un lenguaje de programación de alto nivel. Además de adquirir y manejar los conceptos de la Ciencia de la Computación involucrados en la construcción de este tipo de herramientas: teoría del lenguaje, autómatas finitos deterministas y no deterministas, análisis sintáctico ascendente y descendente, análisis semántico, generación de código intermedio y generación de código ejecutable, optimización de código, entre otros.
Se renovaron los trabajos prácticos: utilizaremos deno y typescript. En el cuatrimestre se utilizará el intérprete del lenguaje LUA como caso de estudio. Los alumnos desarrollarán un lenguaje de programación personalizado a lo largo del cuatrimestre, haciendo entregas pequeñas y pautadas. Como TP final, adaptarán el lenguaje a alguna otra máquina virtual existente de aplicación industrial que deseen.
Cargando...
Nota | |
Fecha | |
✅ ❌ |
y muchos más
(*) indica los libros clásicos.
Las clases virtuales se realizan en un link de google meet que se envía unos minutos antes de la clase a discord.
Entregable(s) | ¿obligatorio? | ¿Cuándo se hace? | Evaluación |
---|---|---|---|
LAB | no | en clase | Objetiva/automática |
TPO | si | fecha de entrega | Objetiva/automática |
TPX | no | fecha de entrega exclusiva | Objetiva/automática |
TPF | si, como final | el último mes y durante finales | checklist, subjetiva |
integration.test.ts
del tpo7)La condición excluyente para aprobar la cursada de la materia es tener un "camino crítico": al menos 1 test de integración que verifique la salida de un programa que imprime algo a stdout.
*esto śe refiere a la versión "reducida" del jsonlang, que sólo maneja enteros.
Este TPX consiste en desarrollar un parser que emita jsonlang. El lenguaje desarrollado es totalmente personalizado. Se recomienda que el parser desarrollado funcione sobre una fracción de algún lenguaje de programación conocido con buen soporte de IDEs. Se debe usar una de las siguientes herramientas:
Este TPXF se entrega durante el cuatrimestre, no en época de finales, suma a la componente de nota del TPF, ya que la evaluación es subjetiva. Es obligatoria la presencia de tests. Componentes de la evaluación subjetiva: