Lenguajes de Programación 2024-1

Curso de Lenguajes de Programación en la Universidad Nacional de Colombia. El objeto de estudio de esta asignatura es conocer la estructura y esencia de los lenguajes de programación y, a partir de ahí, abordar el diseño y construcción de un lenguaje de programación. Para el desarrollo satisfactorio de esta asignatura es importante que el estudiante tenga sólidos conocimientos de lógica de programación y matemáticas discretas; además, haber utilizado más de un lenguaje de programación.


Horario de clases: lunes y miércoles 11:00 a 13:00 Edificio 454 (CyT) - 402

Foro de discusión Campuswire: aquí

Lenguajes de Programación 2024-1

Personal Docente

Felipe Restrepo Calle

Profesor Asociado

Reinaldo Toledo Leguizamón

Monitor


Asignatura

Lenguajes de Programación

Código SIA: 2025966

Créditos: 3


Departamento de Ingeniería de Sistemas e Industrial

Facultad de Ingeniería

Universidad Nacional de Colombia

Sede Bogotá


Contenido

Presentación asignatura

1.        Introducción a los lenguajes

a.     Conceptos previos: lenguajes y gramáticas.

b.     Conceptos previos: autómatas.

Taller LGA (Lenguajes, Gramáticas y Autómatas)

d.    Procesadores de lenguajes de programación:

 Lenguajes de programación y Sistemas de procesamiento del lenguaje

 Rol de los lenguajes de programación - Taller aplicaciones 

 Estructura de un procesador de lenguaje

2.        Análisis léxico

a.        Alfabeto, lexemas y tokens.

b.        Lenguajes regulares, expresiones regulares y reconocimiento de tokens.

c.        Generadores y construcción de analizadores léxicos.

Práctica 1: 

Lenguaje: Latino 1.4.0 

Manual de referencia oficial

Aclaraciones generales Lenguaje Latino

Enunciado: Analizador léxico (trabajo individual)

Fecha de entrega (máximo): 24/03/2024 23:59

Entrega: UNCode - ver documentación -> videos

3.        Análisis sintáctico

a.        Conceptos de análisis sintáctico y diseño de gramáticas.

                                          i.      Ambigüedad.

                                                              ii.      Asociatividad y precedencia de operadores.

b.        Análisis sintáctico descendente (ASD).

Ejemplo y ejercicio ASD

c.        Construcción de analizadores sintácticos: condición LL(1), LL(k), LL(*), ASDR.

Taller ASD

Práctica 2: Analizador sintáctico (trabajo individual)

Fecha límite de entrega de analizador: 25/05/2024 23:59
Fecha límite de entrega de gramática:  26/05/2024  23:59
Entrega: UNCode - ver documentación -> videos 

      a.        Gramática de atributos, 

b.        Traducción dirigida por sintaxis (TDS), definición dirigida por sintaxis (DDS).

c.        Esquemas de traducción dirigida por sintaxis (ETDS).

d.        Generación de código intermedio.

Video sesión 29/04/2024

 e.       Generadores de analizadores sintácticos.

Introducción ANTLR con IntelliJ IDEA

Tutorial traductores (listeners) 

Tutorial intérpretes (visitors)

Práctica 3: traductor/intérprete (Por definir

Grupos de 3 personas

                Es posible usar ANTLR

Entrega en UNCode - no debe tener errores de COMPILATION_ERROR, ni RUNTIME_ERROR. 

5.        Retos en lenguajes de programación

Introducción

Lineamientos presentaciones

Enlace de ENTREGA

Presentaciones 2024-1 (diapositivas y materiales)

a.    Paradigmas de programación: un enfoque histórico por Daniel Aranda (q.e.p.d.) 

b.    Programación Lógica () 

Tutorial Prolog () 

c.    Programación Funcional () 

Tutorial Haskell ()  

d.    Programación Reactiva ()

Tutorial Svelte () 

e.    Programación Concurrente () 

Tutorial Rust () 

f.     Programación Orientada a Aspectos () 

Tutorial AspectJ ()

Proyecto final

Lineamientos proyecto final

Idea Propuesta 

Entrega (antes) y sustentación (Por definir): enlace de entrega

Calificaciones  

Grupo 01   

Recursos recomendados

Evaluación

Bibliografía