CC41A Lenguajes de Programación

10 UD

Requisitos

CC30A

Objetivos

Este curso busca capacitar a los alumnos en las técnicas de implementación de lenguajes de programación así como en sus características de uso y de costo. Se revisarán las características más relevantes de los diversos lenguajes en uso hoy en día y se detallarán las diversas implementaciones actuales. Finalmente, se revisan los tres paradigmas de programación más importantes actualmente: imperativo, funcional, lógico y orientado a objetos, con un lenguaje ejemplo de cada uno.

Al terminar el curso, se espera que el alumno sea capaz de enfrentar la elección de un lenguaje de programación para un problema dado, aplicando los conceptos vistos en clases.

Programa

Introduccio'n

[3 clases, 4.5 horas]

¿Porqué estudiar lenguajes de programación?, historia, atributos de un buen lenguaje. Conceptos previos: arquitectura, sistema operativo, bibliotecas, tiempos de compilación, carga, ejecución. Paradigmas: imperativo, funcional, lógico, orientado a objetos.

Compilación e Interpretación

[5 clases, 7.5 horas]

Definición de un lenguaje: sintáxis, semántica, control de flujo y administración de la memoria. Elementos de compilación: análisis léxico, sintáctico, semántico, generación de código, ejecución o interpretación. Aplicación de lenguajes formales a la compilación: BNF, Autómatas, Gramáticas y Expresiones Regulares.

Tipos y Objetos

[3 clases, 4.5 horas]

Propiedades, variables y constantes, tipos primitivos, estructuras de datos. Implementación de variables y estructuras. Verificación de tipos, conversión, igualdad y equivalencia. Declaraciones, tipos dinámicos, tipos como variables, alcance de las declaraciones.

Funciones y Subrutinas

[5 clases, 4.5 horas]

Compilación separada, paso de parámetros, implementación. Bloques de activación, control de llamado y retorno. Las funciones como variables y como parámetros. Encapsulamiento en base a funciones.

Implementación de variables locales, globales y parámetros. Alcance léxico, recursión. Excepciones y manejo de errores.

Tareas Livianas

[3 clases, 4.5 horas]

Concepto de procesos con memoria compartida: tareas y corutinas. Sincronización, Creación y destrucción. Implementación.

Administración de la Memoria

[3 clases, 4.5 horas]

Memoria dinámica, variables, espacio alcanzable. Administración manual, recolección de basura, fragmentación y compactación.

Lenguajes Funcionales y Aplicativos

[3 clases, 4.5 horas]

El paradigma funcional y las matemáticas. El conflicto de la asignación, implementación de las operaciones típicas. Gracias y desgracias. El paradigma aplicativo, incluyendo asignación. Ejecución en demanda (lazy evaluation) y sus potencialidades. Paralelización automática. Ejemplo: Scheme.

Orientación a Objetos

[3 clases, 4.5 horas]

Definición de objeto, clase y métodos. Orientación a objetos pura, herencia simple y múltiple. Re-utilización de código, extensión de clases, redefinición de métodos. Gracias y Desgracias. Ejemplo: Java.

Programación Lógica

[3 clases, 4.5 horas]

Cláusulas de Horn, unificación, algoritmos de ejecución. Lenguajes en base a reglas: sistemas expertos, bases de datos deductivas, etc. Gracias y Desgracias. Ejemplo: Prolog.

Otros Ejemplos

[1 clase, 1.5 horas]

Lenguajes de desarrollo rápido: perl, visual basic.

Bibliografía

About this document ...

This document was generated using the LaTeX2HTML translator Version 95 (Thu Jan 19 1995) Copyright © 1993, 1994, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

The command line arguments were:
latex2html -no_navigation -t Lenguajes de Programacion -split 0 cc41A.tex.

The translation was initiated by Jose' Piquer on Mon Mar 10 11:02:00 CST 1997


José M. Piquer
Mon Mar 10 11:02:00 CST 1997