Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pesquisa em Linguagens de Programação

Pesquisa em Linguagens de Programação

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

Rodrigo Geraldo Ribeiro

March 28, 2014
Tweet

More Decks by Rodrigo Geraldo Ribeiro

Other Decks in Research

Transcript

  1. 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 -…
  2. Motivação • Programar é uma atividade complexa. • Idealmente, não

    devíamos nos preocupar com: • Paralelismo e concorrência. • Segurança. • Correção.
  3. 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?
  4. 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?
  5. 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.
  6. Ferramentas • Mas como podemos resolver esses problemas? • Para

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

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

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

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

    propriedade? • Como descrever propriedades sobre programas?
  11. 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”.
  12. Segurança • Sistemas de tipos podem evitar ataques: • SQL

    e code Injection • Vantagens • Programas são garantidamente livres destas falhas.
  13. 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!
  14. 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
  15. 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
  16. 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"
  17. 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?