Una Introducción Básica a Sistemas de Tipos Estáticos

Slides:



Advertisements
Presentaciones similares
ANALIZADOR SEMANTICO DIANA CAROLINA CASTAÑO YANCI VIVIANA CASTRO PEDRO LUIS FLÓREZ SANTIAGO GUTIÉRREZ A.
Advertisements

Introducción al Teorema de Gödel Eduardo Alejandro Barrio UBA - CONICET 2do Cuatrimestre de 2009 Eduardo Alejandro Barrio UBA.
Diseño y análisis de algoritmos
Pruebas de Diseño Diplomado en Calidad en el Software NOTAS
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Tema Asociaciones Asociaciones en Casos de Uso.
Lecciones sobre ingeniería de software desde el Software Libre
Rocío Contreras Águila Primer Semestre 2010
Ingeniería de Software
SOFTWARE EDUCATIVO: Clasificación por su función
Razonamiento algorítmico
SOFTWARE DE PROGRAMACIÓN
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA 2006.
Resolución de Problemas Algoritmos y Programación
Ciclo de desarrollo del software
Tipo de Dato Abstracto Tipos de datos:
Traducción dirigida por la Sintaxis
CAPITULO 2 La Representación del Conocimiento
LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN
Desarrollo Orientado a Objetos con UML
Tema 3. Optimización de Código
Academia: Informática Tema: Validación de datos Profesor (a): Baños García Yesenia, Lic. Comp. Periodo: Julio – Diciembre 2014.
LOGICA DE NEGOCIOS ADAN GONZALEZ BARRERA.
Una Introducción a UML El Modelo de Proceso de Negocio
Análisis Estático de Código para Detección de Vulnerabilidades en Aplicaciones Web Pablo E. (Fidel) Martínez López, Dr.
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
Lenguaje C++ Segunda parte
Teoría de lenguajes y compiladores
Java Mayra M. Méndez Anota.
Matemáticas Discretas y Algoritmos
PROGRAMACIÓN LÓGICA.
Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad.
Criterios de la Orientación a Objetos 1. Método y Lenguaje (proceso de pensamiento y notaciones para analizar y producir software). 2. Implementación y.
Proceso de información en la computadora
1 John Freddy Duitama U.de.A. Facultad de Ingeniería Optimización Algebraica. Profesor: John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A. Profesor:
Problemas, algoritmos y programas: Modelar: Simular o programar su solución en un computador. Algoritmos: Es un conjunto finito, y no ambiguo de etapas.
Representación del conocimiento
Actividad 6. Requisitos del software, referente a la estructura y base de datos. M.C. Juan Carlos Olivares Rojas Syllabus May,

ANALISIS SINTACTICO Parte I
Inteligencia artificial
Lenguajes de programación para sistemas críticos (SC)
Introducción a los tipos de datos abstractos
Fundamentos de programación
VHDL Breve introducción.
“Como pasar automáticamente las visiones de datos de los usuarios a un esquema de datos en Tercera Forma Normal ” Luis Alvarez Adrián Arredondo Martín.
CONTEXTA Introducción a FEDORA y modelos de extensión que provee Pablo Inostroza Valdera 11 de julio de 2007.
Programación 1 (01y 05) Prof. Flor Narciso
Gramáticas Formales Cadenas y Lenguajes.
1 Procesamiento del Lenguaje Natural Curso Arantza Díaz de Ilarraza German Rigau IXA group Ingeniería.
UNIVERSIDAD LATINA (UNILA)
BIBLIOGRAFÍA ANOTADA Maestría en Ingeniería - Ingeniería de Sistemas y Computación Edwin Andrés Bernal López
1 Ingeniería del Software Curso German Rigau Ingeniería Técnica en Informática de Sistemas.
1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322.
SRS "Software Requirements Specification" LCD:
POO U1: INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
DIAGRAMA DE CLASES.
Ciclo de desarrollo del software
Un requerimiento es una condición o capacidad a la que el sistema (siendo construido) debe conformar [ Rational ]. Un requerimiento de software puede.
Programación de Sistemas
Unidad 1 Introduccion a los programas Concepto de Programa El término programa (del latín programma, que a su vez proviene de un vocablo griego) tiene.
PRINCIPIOS DE PROGRAMACION
INTRODUCCIÓN A LA INGENIERIA DE SOFTWARE ALUMNO MILLER ANDRES GALINDO DUCUARA (412088)
Especificación del Problema Partimos del hecho de un programador no puede resolver un problema que no entiende. Por esta razón, la primera etapa en todo.
Maestría en Gerencia en Tecnología de la Información Cátedra Ingeniería de Software Profesora: Mary Carmen Milano. Integrantes: Rosa Arellano Osbaldo Goitia.
Fundamentos de Programación Unidad I Conceptos Básicos.
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS
COMPUTER SACIENCE PARCIAL 1
Diccionario/Directorio de Datos
Support Vector Machines.  Vocabulario básico: ◦ Repositorio de datos ◦ Atributos y Instancias ◦ Aprendizaje supervisado  Clasificación (Clase) ◦ Aprendizaje.
Curso de programación Visual Chart 6 (1ªEd.)
Transcripción de la presentación:

Una Introducción Básica a Sistemas de Tipos Estáticos Pablo E. (Fidel) Martínez López

“The study of type systems – and of programming languages form a type-theoretical perspective – has become an energetic field with major applications in software engeneering, language design, high-performance compiler implementation, and security.” Benjamin C. Pierce Types and Programming Languages

Sistemas de Tipos Estáticos Overview Definición y características Estilos y presentaciones Métodos de presentación y algoritmos Importancia Conclusiones Bibliografía

Sistemas de Tipos Estáticos ¿Qué son? herramientas para determinar propiedades de programas sin ejecutarlos asocian información a cada parte de un programa se basan en el texto del programa, teniendo en cuenta la semántica

Sistemas de Tipos Estáticos Características generales estáticos no ejecutan el programa decidibles (en general) hay un algoritmo que calcula la propiedad ALTERNATIVA: tipos dependientes no decidibles asistentes para la construcción de programas correctos pueden requerir anotaciones del usuario o no diferentes estilos de programación

Sistemas de Tipos Estáticos Estilos de diseño del sistema A la Curry términos sin tipo semántica sobre ellos el sistema de tipo que elimina (ciertos) programas erróneos A la Church términos tipados semántica basada en los tipos

Sistemas de Tipos Estáticos Presentaciones del sistema implícita (términos sin anotaciones de tipos) explícita (términos con anotaciones de tipos) Históricamente los implícitos se presentan a la Curry los explícitos se presentan a la Church Es común mezclar estilo y presentación

Sistemas de Tipos Estáticos Sistemas a la Curry lenguaje de términos semántica sobre este lenguaje lenguaje de tipos relación entre términos y tipos Propiedades fundamental un término con tipo no tiene ciertos errores el tipo describe propiedades del término

Sistemas de Tipos Estáticos Método para especificar la relación juicios (esquemas de) reglas de derivación árboles de derivación Propiedad básica juicio válido  árbol de derivación para él

Sistemas de Tipos Estáticos Características de un sistema dado relaciones funcionales (o no) a cada término le corresponde un único tipo relaciones dirigidas por sintaxis (o no) hay una regla por cada construcción del lenguaje Implicaciones Para 1. los algoritmos son casi triviales Para 2. los algoritmos son recursivos

Sistemas de Tipos Estáticos ¿Y si el sistema no es funcional o dirigido por sintaxis? Diseñamos uno equivalente que lo sea ¡Debe demostrarse en qué sentido son equivalentes! Típicamente: relación entre diferentes tipos para un término, establecer la relación entre la salida del algoritmo y sus tipos

Sistemas de Tipos Estáticos Importancia ventajas para los programadores chequeo de errores comunes documentación rudimentaria posibilidades de optimización al compilar desarrollos posteriores basados en ellos Types & Effects Type Specialization Grammar Based Analysis

Sistemas de Tipos Estáticos Conclusiones proveen numerosas ventajas alimentaron el desarrollo de nuevas técnicas presentes en la mayoría de los lenguajes mainstream, de una forma u otra

Sistemas de Tipos Estáticos Bibliografía Benjamin C. Pierce. Types & Programming Languages. The MIT Press, 2002 John C. Reynolds. Theories of Programming Languages. Cambridge University Press, 1998. Pablo E. Martínez López. Static Type Systems: From Specification to Implementation. Chapter 11 of Verification, Validation and Testing in Software Engeneering. Aristides Dasso and Ana Funes (eds.). Idea Group Publishing, 2005.