4.11.2.5 Sistemas de tipos básicos (5 horas) [Habilidades a,b]

Referencias Bibliográficas: [Stroustrup, 2013b] Temas
  1. Tipos como conjunto de valores junto con un conjunto de operaciones.
    1. Tipos primitivos (p.e. números, booleanos)
    2. Composición de tipos construídos de otros tipos (p.e., registros, uniones, arreglos, listas, funciones, referencias)
  2. Asociación de tipos de variables, argumentos, resultados y campos.
  3. Tipo de seguridad y los errores causados por el uso de valores de manera incompatible dadas sus tipos previstos.
  4. Metas y limitaciones de tipos estáticos
    1. Eliminación de algunas clases de errores sin ejecutar el programa
    2. Indecisión significa que un análisis estatico puede aproximar el comportamiento de un programa
  5. Tipos genéricos (polimorfismo paramétrico)
    1. Definición
    2. Uso de librerías genéricas tales como colecciones.
    3. Comparación con polimorfismo ad-hoc y polimorfismo de subtipos
  6. Beneficios complementarios de tipos estáticos y dinámicos:
    1. Errores tempranos vs. errores tardíos/evitados.
    2. Refuerzo invariante durante el desarrollo y mantenimiento del código vs. decisiones pospuestas de tipos durante la la creación de prototipos y permitir convenientemente la codificación flexible de patrones tales como colecciones heterogéneas.
    3. Evitar el mal uso del código vs. permitir más reuso de código.
    4. Detectar programas incompletos vs. permitir que programas incompletos se ejecuten

Objetivos de Aprendizaje

  1. Tanto para tipo primitivo y un tipo compuesto, describir de manera informal los valores que tiene dicho tipo [Usage]
  2. Para un lenguaje con sistema de tipos estático, describir las operaciones que están prohibidas de forma estática, como pasar el tipo incorrecto de valor a una función o método [Usage]
  3. Describir ejemplos de errores de programa detectadas por un sistema de tipos [Usage]
  4. Para múltiples lenguajes de programación, identificar propiedades de un programa con verificación estática y propiedades de un programa con verificación dinámica [Usage]
  5. Dar un ejemplo de un programa que no verifique tipos en un lenguaje particular y sin embargo no tenga error cuando es ejecutado [Usage]
  6. Usar tipos y mensajes de error de tipos para escribir y depurar programas [Usage]
  7. Explicar como las reglas de tipificación definen el conjunto de operaciones que legales para un tipo [Usage]
  8. Escribir las reglas de tipo que rigen el uso de un particular tipo compuesto [Usage]
  9. Explicar por qué indecidibilidad requiere sistemas de tipo para conservadoramente aproximar el comportamiento de un programa [Usage]
  10. Definir y usar piezas de programas (tales como, funciones, clases, métodos) que usan tipos genéricos, incluyendo para colecciones [Usage]
  11. Discutir las diferencias entre, genéricos (generics), subtipo y sobrecarga [Usage]
  12. Explicar múltiples beneficios y limitaciones de tipificación estática en escritura, mantenimiento y depuración de un software [Usage]

Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM