|
Objetivo: Estudiar la naturaleza de los lenguajes
de programación considerando la filosofía que emplean para describir
elementos de la realidad. Estudiar formas y caracte-rísticas de implantación
de los procesadores de los lenguajes. Analizar la evolución de los lenguajes
de programación, así como presentar y discutir las tendencias futuras
de su desarrollo.
1 Familias y tipos de lenguajes
PI14 Programación imperativa. Modelado de la
realidad por medio de representaciones de la información y de un conjunto
de acciones a realizar. Orden de las acciones en el tiempo. Lenguajes representativos:
FOR-TRAN, BASIC, Algol y lenguajes tipo Algol, Pascal, PL/I, C, COBOL. (Véanse
ademá
PI2, PI3).
PI15 Programación orientada a objetos. Modelado de la realidad por
medio de un conjunto de objetos que interactúan. Distancia semántica
entre la realidad y el modelo. Facilidad de entendimiento y de modificación
del modelo. Patrones de comportamiento de los objetos. Vinculación
entre ellos. Lenguajes representativos: filosofía de Algol 68, Simula,
Modula, Ada, Smalltalk, C++, Pascal extendido, Eiffel, otros. (Véase
además PI4).
PI16 Programación funcional. Cálculo Lambda. Lenguaje
Lisp: expresiones tipo S y tipo M. Símbolos atómicos. Funciones
elementales. Listas. Composición de funciones. Recursividad. Programación
y expresión de algoritmos en Lisp. Intérpretes. Extensiones
del lenguaje.
PI17 Programación lógica. Cláusulas de Horn.
Variables, hechos y reglas. La programación lógica como paradigma
para especificaciones; lenguajes de especificación, generalización
de bases de datos relacionales, mecanismos de deducción. Parámetros
de eficiencia. El lenguaje Prolog.
PI18 Programación visual y por eventos. Principios: íconos,
botones, marcos, menús, ventanas. Eventos producidos por el usuario.
Combinación del paradigma algorítmico y elementos visuales.
Manejo de eventos y comunicación con el entorno del usuario.
PI19 Comparación de lenguajes. Historia de los lenguajes de
programación. Análisis comparativo de diferentes lenguajes.
Análisis de los diferentes paradigmas y sus lenguajes representativos.
Aplicabilidad según los distintos tipos de problemas. Estilos. Eficiencia.
Ventajas y desventajas de la programación imperativa, orientada a objetos,
funcional y lógica. Implantaciones de los lenguajes.
2 Paralelismo y concurrencia
PI20 Relaciones entre algoritmos y arquitecturas. Secuencialidad
y concurrencia. Computadoras de muy alto rendimiento para cálculos meteorológicos,
de aerodinámica, de percepción remota, etc. Arquitecturas especiales
para paralelismo: ejecución de instrucciones con superposición,
superposición en el manejo de datos, arreglos de procesadores. Correspondencia
entre arquitectura y algoritmos: algoritmos especiales orientados a las características
del hardware. Computadoras SIMD, MIMD y otras. Computación paralela.
PI21 Algoritmos concurrentes. Arquitectura monoprocesador: secuencialidad
y concurrencia. Simulación de ejecución en paralelo por medio
de concurrencia. Comunicación entre procesos: sincronización,
información compartida, canales y mensajes, protocolos. Abrazos mortales
(deadlocks). Tiempo real. Componentes de sistemas operativos para manejo
de interrupciones y atención de periféricos. Arquitectura multiprocesador:
concurrencia.
PI22 Paralelismo. Algoritmos de programación paralela: para arreglos
de procesadores, para computadoras SIMD, para computadoras MIMD. Variables compartidas,
mensajes. Algoritmos paralelos para métodos de clasificación,
para manipulación de matrices y para métodos numéricos:
ideas sobre el diseño y construcción, complejidad.
|