Pesquisa em Linguagens de Programação

Pesquisa em Linguagens de Programação

Apresentação para os alunos de mestrado do DECOM - UFOP.

3c5d36ca80eccb125ee34991165d481e?s=128

Rodrigo Geraldo Ribeiro

March 28, 2014
Tweet

Transcript

  1. Pesquisa em Linguagens de Programação Prof. Rodrigo Ribeiro Departamento de

    Computação e Sistemas - UFOP
  2. Quem sou eu? ! • BSc inComputer Science, UFOP, 2005.

    • MSc in Computer Science, UFMG, 2007. • PhD in Computer Science, UFMG, 2013. ! • Professor at DECSI - UFOP, 2008 -…
  3. Motivação • Programar é uma atividade complexa. • Idealmente, não

    devíamos nos preocupar com: • Paralelismo e concorrência. • Segurança. • Correção.
  4. Paralelismo e Concorrência • Uso de GPU’s é pervasivo para

    solução de problemas. • Porém, uso de GPU’s traz alguns problemas… • Como explorar o hardware ao máximo? • Como desenvolver programas para GPU’s? • Como evitar erros relativos a uso de concorrência?
  5. Segurança • Problema antigo, ainda sem solução definitiva… • Como

    garantir que sua aplicação não possui vulnerabilidades? • Como garantir que informações sigilosas não “vazam" durante a execução de um software?
  6. Correção de Programas • Como garantir que programas estão corretos?

    • Como ter certeza de que o bug não está em seu compilador? • Compilador GCC: 8105 bugs em aberto em 24/03/2014.
  7. Ferramentas • Mas como podemos resolver esses problemas? • Para

    problemas difíceis, precisamos de boas ferramentas.
  8. Meu "Kit" de Ferramentas • Minhas ferramentas são • Linguagens

    Funcionais • Teoria de tipos • Semântica formal
  9. Linguagens Funcionais • Foco em 3 linguagens: • Haskell, Coq

    e Agda • Linguagens puras • Qual a vantagem? • Paralelismo natural. • Fácil provar propriedades de correção.
  10. Teoria de Tipos • Provê ferramental para: • Desenvolvimento de

    programas corretos por construção. • A teoria de tipos é uma linguagem unificada para: • Programar e provar.
  11. Semântica Formal • Como garantir que um programa possui certa

    propriedade? • Como descrever propriedades sobre programas?
  12. Ferramentas em Ação

  13. Paralelismo e Concorrência • Compiladores • Geração de código eficiente.

    • Paralelização Automática de código para GPU’s. • Teoria de tipos • Tipos podem expressar invariantes que evitam “data- races”.
  14. Segurança • Sistemas de tipos podem evitar ataques: • SQL

    e code Injection • Vantagens • Programas são garantidamente livres destas falhas.
  15. Correção de Programas • Teoria de tipos • Tipos capazes

    de representar propriedades de programas • Propriedades são verificadas pelo compilador! • Desta maneira temos… • Que programas são corretos por construção!
  16. Idéias para Projetos

  17. Possíveis Áreas • Paralelismo e Concorrência • Segurança • Correção

    de Programas • Formalização
  18. Paralelismo e Concorrência • Session types • Sistema de tipos

    capaz de expressar propriedades que evitam “data-races”. • Possíveis trabalhos: • Formalização • Compilador baseado em session types para CUDA
  19. Segurança • Diversas idéias… • Formalização de protocolos de segurança

    • Sistemas de tipos para fluxo de informação. • Execução de programas não confiáveis em ambientes seguros. • Aplicação Imediata: • Plataformas móveis e Web
  20. Correção de Programas • Diversos problemas em aberto. • Terminação

    de Programas. • Propriedade crucial para correção de programas. • Como construir provas de terminação automaticamente? • Programas de baixo nível • Prova de programas envolvendo "ponteiros"
  21. Formalização • Sistemas embarcados • Linguagens de alto nível •

    Como verificar? • Linguagens de consulta para grandes volumes de informação • Semântica e teoria de tipos?
  22. Interessado? • Entre em contato comigo! • e-mail: rodrigo@decsi.ufop.br •

    gtalk/hangout: rodrigogribeiro@gmail.com
  23. None