Programa

Programa Analítico de la Asignatura

Lenguajes de Programación I

Unidad 1: Evolución de los conceptos en los lenguajes de programación. El rol de la abstracción. Paradigmas. Estilos de programación. Influencia de la eficiencia del procesamiento en los lenguajes de programación.

Unidad 2: Perspectiva histórica. Primeros lenguajes de alto nivel. Relaciones entre los diferentes lenguajes de programación. Diagrama de interrelación entre los diferentes lenguajes, basado en la influencia de unos en otros. Influencia de la sintaxis sobre la claridad: formatos de las instrucciones, comentarios, puntuación.

Unidad 3: Estructura de los lenguajes de programación. Sintaxis, semántica y pragmática. Reglas léxicas. Reglas gramaticales. Metalenguajes. BNF. Procesamiento de los lenguajes. Interpretación. Compilación.

Unidad 4: El concepto de binding. Entidades y atributos. Binding dinámico y binding estático. Variables. Binding de alcance, de almacenamiento, de valor y de tipo. Binding de tipo e interpretación. Unidades de programa. Estructura en tiempo de ejecución. Lenguajes estáticos. Lenguajes basados en la pila. Lenguajes dinámicos.

Unidad 5: Registro de activación. Estructura de bloques. Jerarquía de bloques implícita y jerarquía de bloques explícita. Variables locales y globales. Valores iniciales e influencia sobre la aparición del alcance dinámico. Registro de activación de tamaño fijo y variable. Variables semiestáticas, semidinámicas y dinámicas. Referencia a variables estáticas, semiestáticas, semidinámicas y dinámicas. Acceso a variables no locales. Cadenas estática y dinámica.

Unidad 6: Pasaje de parámetros. Sintaxis del pasaje de parámetros. Semántica del pasaje de parámetros. Pasaje de datos, de subprogramas y de tipos. Pasaje de parámetros por referencia, por copia, por nombre y parámetros anónimos. Parámetros de subprogramas pasados como parámetros.

Unidad 7: Tipos de datos. Tipos construidos en el lenguaje. Agregados de datos. Tipos definidos por el usuario. Verificación dinámica y estática de tipos. Lenguajes fuertemente tipados. Uniones. Control de precisión de variables reales. Conversiones entre tipos. Compatibilidades entre tipos. Alias: por pasajes de parámetros y explícitos. Asignaciones y conversiones entre tipos. Tipos de datos abstractos. Objetos: Almacenamiento, invocación a métodos, implementación de mecanismos de herencia, polimorfismo y sobrecarga de métodos.

Unidad 8: Implementación de la memoria libre. Recolección de basura. Identificación de los fragmentos de memoria libre no referenciados. Pila para la recolección de basura. Contadores de referencias.

Unidad 9: Interacciones lenguajes-sistema operativo. Interacciones de ambas administraciones de memoria. Sistemas operativos con particiones fijas, segmentos, memoria virtual, lenguajes estáticos, tipo Algol y dinámicos. Sistemas operativos concurrentes y lenguajes concurrentes. Hebras. Impacto sobre la administración de memoria.