Lenguajes de Programación
Estudiaremos los principales temas relacionados con el diseño y
la implantación de los lenguajes de programación más
representativos de los 4 principales paradigmas existentes en la
actualidad: imperativo, funcional, orientado a objetos y lógico.
Se estudiará la evolución de las estructuras de datos y de
control contenidas en los lenguajes de programación, la motivación
para su desarrollo y los compromisos que los diseñadores han
tenido que considerar. Veremos cómo la fuerza principal que ha
conducido muchas de las decisiones de diseño adoptadas en los
lenguajes de programación han sido la búsqueda de una mejor
ergonomía y el deseo de incrementar la productividad y confiabilidad
en la producción de software. Además, se estudiarán diversos
métodos para especificar formalmente la sintaxis de los lenguajes
de programación, y los usaremos para ilustrar los compromisos
existentes entre facilidad de procesamiento (de una computadora)
contra legibilidad (de parte de un humano).
Profesor:
Dr. Carlos Artemio Coello Coello
CINVESTAV-IPN
Depto. de Computación
Av. Instituto Politécnico Nacional No. 2508
Col. San Pedro Zacatenco
México, D.F. 07300
ccoello@cs.cinvestav.mx
http://delta.cs.cinvestav.mx/~ccoello
TEMARIO:
- La era del oscurantismo
- Lenguaje Máquina
- Pseudo-código
- Ensambladores
- Primera generación: FORTRAN
- Historia y motivación
- Estructuras de datos y control
- Aportaciones a otros lenguajes
- Sintaxis
- Paso de parámetros por referencia
- Los grandes defectos del lenguaje
- El debate acerca de su retiro
- Segunda generación: ALGOL-60
- Historia y motivación
- Estructuras de datos y control
- Paso de parámetros por nombre
- Las grandes aportaciones a los lenguajes modernos
- Herramientas descriptivas: BNF (Backus-Naur
Form)
- Aspectos sintácticos
- Los diagramas de contorno
- Tercera generación: Pascal
- Historia y motivación
- Estructuras de datos y control
- Paso de parámetros por valor resultado
- Los problemas con los arreglos y las cadenas
- Aspectos sintácticos
- Apuntadores
- Estructuras heterogéneas
- Enumeraciones
- Cuarta generación: Ada
- Historia y motivación
- Estructuras de datos y control
- Paso de parámetros a la carta
- Aspectos sintácticos
- Paquetes
- Modularidad
- Concurrencia
- El mecanismo de comunicaciones Rendez-Vous
- Manejo de excepciones
- Tareas
- Sobrecarga de operadores
- Paquetes genéricos y su comparación
con las clases
- ¿Da Ada las mejores soluciones a todo?
- Las críticas al mejor lenguaje
procedural de la actualidad
- Programación Orientada a Objetos:
Smalltalk y C++
- Historia y motivación
- Clases, objetos, jerarquías,
polimorfismo
- Envío de mensajes
- Reglas de ámbito estáticas
y dinámicas
- Las impurezas del C++
- Modularidad
- ¿Es realmente importante la programación
orientada a objetos?
- Programación Funcional: LISP, Scheme y ML
- Historia y motivación
- Sintaxis
- Estructuras de control
- Recursividad
- Las impurezas del C++
- Tipos
- ¿Por qué importa la programación
funcional?
- Programación Orientada a
la Lógica: PROLOG
- Historia y motivación
- Aspectos sintácticos
- Estructuras de control
- Perspectivas y uso en inteligencia artificial
- Introducción al Cálculo
Lambda (opcional)
- Igualdad de los términos lambda puros
- Reglas de sustitución
- Computación con términos
lambda puros
- Cálculo lambda con tipos
- Polimorfismo
Bibliografia
- Bruce J. MacLennan, Principles of Programming Languages:
Design, Evaluation, and Implementation, Third Edition, Oxford University
Press, ISBN 0195113063, March 1999.
- Lecturas adicionales
Material del curso
- Lineamientos generales del curso
(PDF).
- Acetatos de la clase del 7 de enero de 2016
(PDF).
- Acetatos de la clase del 12 de enero de 2016
(PDF).
- Acetatos de la clase del 14 de enero de 2016
(PDF).
- Acetatos de la clase del 22 de enero de 2016
(PDF).
- Acetatos de la clase del 26 de enero de 2016
(PDF).
- Acetatos de la clase del 28 de enero de 2016
(PDF).
- Acetatos de la clase del 2 de febrero de 2016
(PDF).
- Acetatos de la clase del 4 de febrero de 2016
(PDF).
- Acetatos de la clase del 9 de febrero de 2016
(PDF).
- Acetatos de la clase del 11 de febrero de 2016
(PDF).
- Acetatos de la clase del 16 de febrero de 2016
(PDF).
- Acetatos de la clase del 18 de febrero de 2016
(PDF).
- Acetatos de la clase del 1 de marzo de 2016
(PDF).
- Acetatos de la clase del 3 de marzo de 2016
(PDF).
- Acetatos de la clase del 8 de marzo de 2016
(PDF).
- Acetatos de la clase del 15 de marzo de 2016
(PDF).
- Acetatos de la clase del 17 de marzo de 2016
(PDF).
- Acetatos de la clase del 1 de abril de 2016
(PDF).
- Acetatos de la clase del 7 de abril de 2016
(PDF).
- Acetatos de la clase del 15 de abril de 2016
(PDF).
- Acetatos de la clase del 19 de abril de 2016
(PDF).
- Acetatos de la clase del 21 de abril de 2016
(PDF).
Tareas
Proyecto Final
Notas de Scheme
Links útiles
Página creada y mantenida por
Carlos A. Coello Coello