Universidad Nacional Aut´onoma De México Facultad De Ciencias

Preview only show first 6 pages with water mark for full document please download

Transcript

´ ´ UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO FACULTAD DE CIENCIAS ´ CARRERA DE MATEMATICO ´ Y SUS PARADIGMAS LENGUAJES DE PROGRAMACION SEMESTRE: Quinto o Sexto CLAVE: 0607 HORAS A LA SEMANA/SEMESTRE ´ ´ ´ TEORICAS PRACTICAS CREDITOS 4/64 2/32 10 ´ CARACTER: OPTATIVO. MODALIDAD: CURSO. ´ INDICATIVA ANTECEDENTE: Teor´ıa de la Computaci´ SERIACION on. ´ INDICATIVA SUBSECUENTE: Ninguna. SERIACION OBJETIVO(S): Este curso introduce al estudiante a la naturaleza de los lenguajes de programaci´on contempor´aneos, empezando por una revisi´on profunda de lenguaje ensamblador y finalizando con un tratamiento profundo de un lenguaje verdadero orientado a objetos (tal como Smalltalk o Eiffel). Durante el desarrollo del curso se discute la evoluci´on de lenguajes imperativos (FORTRAN, Algol, PL/I, Pascal) y lenguajes funcionales (Lisp, Scheme, ML). Adicionalmente se introducen conceptos fundamentales de dise˜ no e implementaci´on de los lenguajes de alto nivel, incluyendo los conceptos de ligado, chequeo de tipos y administraci´on de memoria durante ejecuci´on. NUM. HORAS 6 ´ UNIDADES TEMATICAS 1. Historia y evoluci´ on de los lenguajes de programaci´ on 1.1 Primeros lenguajes: Algol, Fortran, Cobol. 1.2 La evoluci´on de los lenguajes orientados a procedimientos (las cadenas de desarrollo de Algol, PL/I, Pascal, Euclid, Modula y Ada). 1.3 Paradigmas y lenguajes no orientados a procedimientos: funcionales (LISP), l´ogicos (Prolog), orientados a objetos (Smalltalk) y paralelos (Occam). 1 10 6 8 10 16 2. Organizaci´ on de la computadora a nivel de ensamblador 2.1 Organizaci´on b´asica: Von Neumann, diagramas de bloque, rutas para datos, rutas de control, unidades funcionales (i.e. Unidad Aritm´etico-l´ogica, memoria, registros), ciclo de instrucci´on. 2.2 Conjuntos y tipos de instrucciones. 2.3 Lenguaje ensamblador/de m´aquina. 2.4 Modos de direccionamiento (i.e. directo, indirecto, de desplazamiento, de registro, indexamiento). 2.5 Unidad de control; carga y ejecuci´on de la instrucci´on; carga del operando. 2.6 Interrupciones de entrada/salida. 2.7 Instrumentaci´on por alambrado. 2.8 Instrumentaci´on por microprogramaci´on; formatos y codificaci´on. 3. M´ aquinas virtuales 3.1 M´aquinas virtuales para los lenguajes de programaci´on. 3.2 Jerarqu´ıa de m´aquinas virtuales, presentadas al usuario a trav´es del programa, el traductor, el sistema operativo, etc. 3.3 Consecuencias para la traducci´on de los distintos momentos en los que se hace el ligado. 4. Control de secuencia 4.1 Expresiones, orden en la evaluaci´on, efectos laterales. 4.2 Enunciados: simples y compuestos. 4.3 Subprogramas y corrutinas como una abstracci´on de expresiones y enunciados. 5. Control de los datos 5.1 Mecanismos para compartir y restringir el acceso a datos (estructura de bloques, COMMON, ADTs y aliases). 5.2 Rangos est´atico vs. din´amico, extensi´on, visibilidad. 5.3 Mecanismos para el paso de par´ametros: Por referencia, por valor, por nombre, por resultado, etc. 5.4 Variedad en las disciplinas para el chequeo de tipos y sus mec´anicas; est´atica vs. din´amica vs. sin tipo, expl´ıcita vs. impl´ıcita, polimorfismo vs. sobrecarga. 6. Manejo del espacio de almacenamiento durante ejecuci´ on 6.1 Asignaci´on est´atica. 6.2 Asignaci´on basada en un stack y su relaci´on con la recursividad. 6.3 Asignaci´on basada en una estructura de heap. 2 15 15 10 7. Paradigmas de programaci´ on 7.1 Revisi´on de los paradigmas y lenguajes funcional, l´ogico y orientado a objetos. 7.2 Dise˜ nar programas con estos paradigmas; ambiente de ejecuci´on, flujo de control. 7.3 Programas ejemplo y aplicaciones. 7.4 Ventajas (transparencia en la referencia) y desventajas (eficiencia en arquitecturas secuenciales) de los paradigmas de programaci´on alternativos frente a los lenguajes orientados a procedimientos; aplicaciones en inteligencia artificial, bases de datos y dise˜ no de sistemas de computaci´on. 8. Sem´ antica 8.1 Una m´aquina sencilla y el modelo denotacional. 8.2 Tipos, vinculaci´on, operadores y coerci´on. 8.3 Asignaci´on de memoria. 8.4 Estructuras de control. 8.5 Procedimientos y par´ametros. 9. Dise˜ no de Lenguajes 9.1 El arte y ciencia del dise˜ no de lenguajes. 9.2 El arte y ciencia de la programaci´on. 9.3 Entorno de programaci´on. 9.4 Comparaci´on y evaluaci´on de lenguajes. 9.5 Conclusiones. ´ BIBLIOGRAF´IA BASICA: 1. Friedman, D. P., Wand, M., Heynes, C. T., Essentials of Programming Languages, Boston: The MIT Press, 1992. 2. Sethi, R., Programming Languages, Concepts and Constructs, Reading, Mass.: Addison-Wesley Publishing Company, 1989. 3 BIBLIOGRAF´IA COMPLEMENTARIA: 1. Budd, T., An Introduction To Object-Oriented Programming, Reading, Mass.: Addison-Wesley Publishing Company, 1991. 2. Field, A. J., Harrison, P. G., Functional Programming, Reading, Mass.: AddisonWesley Publishing Company, 1989. 3. Friedman, L. W., Comparative Programming Languages, Generalizing The Programming Function, New Jersey: Prentice Hall, Inc., 1991. 4. Kogge, P. M., The Architecture of Symbolic Computers, New York: McGraw-Hill Incorporated, 1991. 5. Scragg, G. W., Computer Organization. A Top-Down Approach, New York: McGrawHill Publishing Company, Inc., 1992. 6. Tucker, A. B., Jr., Lenguajes de Programaci´on, Segunda Edici´on, Espa˜ na: McGrawHill, 1987. ´ SUGERENCIAS DIDACTICAS: Lograr la participaci´on activa de los alumnos mediante exposiciones. ´ DE LA ASIGNATURA: Adem´as de las califiSUGERENCIA PARA LA EVALUACION caciones en ex´amenes y tareas se tomar´a en cuenta la participaci´on del alumno. ´ PERFIL PROFESIOGRAFICO: Matem´atico, f´ısico, actuario o licenciado en ciencias de la computaci´on, especialista en el ´area de la asignatura a juicio del comit´e de asignaci´on de cursos. 4