2

Click here to load reader

Teoria de Tipos na pesquisa de linguagens de programaçãoinf.ufrgs.br/.../Logica_para_Computacao_-_INF05508/Resumo_parcial.pdf · A Teoria dos tipos é uma ferramenta na criação

Embed Size (px)

Citation preview

Page 1: Teoria de Tipos na pesquisa de linguagens de programaçãoinf.ufrgs.br/.../Logica_para_Computacao_-_INF05508/Resumo_parcial.pdf · A Teoria dos tipos é uma ferramenta na criação

Teoria de Tipos na pesquisa de linguagens de programação:

A Teoria dos tipos é uma ferramenta na criação e pesquisa sobre novas linguagens de  programação.   Ela   é   formada   por   um  amálgama  de  matemática,   lógica   filosófica   e computação. Através dela, torna­se possível a implementação de compiladores eficientes e códigos íntegros.

Essa teoria é o estudo de sistemas de tipos,  que é um conjunto de regras sobre tipos de dados que previne as linguagens de  erros decorrentes de más interpretações. Esses erros são comumente erros de tipos, erros de passagem de parâmetro para funções (em número e tipo), alterações do código durante a execução, etc. Geralmente esses sistemas são definidos através de julgamentos de tipos, da forma Γ  ├e:τ onde e é uma expressão, τ seu tipo e Γ as variáveis globais por ela utilizadas. Estes julgamentos definem se uma expressão foi bem digitada.

Há  certa similaridade entre as regras que governam os tipos e as implicações da dedução natural. Isso não ocorre por acaso: existe uma teoria de que há um isomorfismo entre proposições e tipos. Uma semântica operacional define a execução de um programa, e é definida por relações transitivas entre estados de uma máquina abstrata. 

Uma das funções de um sistema de tipos é prevenir erros de execução. Um erro de tipo é  uma expressão onde  e  não resulta em um valor. Programas bem digitados nunca incorrem em tais tipos de erro.

Linguagens de programação podem ser definidas por suas estruturas de tipos. Entre os  benefícios  que  isso  traz,  estão e modularidade com que a   linguagem é  apresentada, evitando confusões. Outra vantagem é  estudar o comportamento de um programa. Além disso, é possível através dessa definição classificar a segurança do programa. 

Verificação Automática e Projeto de Supercondutores

Os   avanços   recentes   na   computação   têm   mudado   a   ciência,   a   engenharia   e   os negócios.   Isso  é   possível   graças  à   evolução  dos   estudos  dos   semicondutores.  Porém a tecnologia de supercondutores tem enfrentado um grande desafio: manter esse avanço está se tornando muito difícil, evitando a exploração de toda a capacidade dessa tecnologia. À medida que a complexidade de um projeto aumenta, ele se torna mais propenso a conter uma falha. Para validar os projetos, desenvolveram­se técnicas de verificação. O grande problema é que essas técnicas estão se tornando mais e mais complexas e tomando muito tempo do projeto.

Existem ferramentas a nível acadêmico que implementam algoritmos de Verificação Formal   baseada   em   modelos   de   comportamento,   que   usam   técnicas   matemáticas   para corrigir o funcionamento dos projetos. Eles têm sido aplicados ultimamente também em escala industrial e têm obtido resultados extremamente satisfatórios. 

O primeiro passo da Verificação Formal é definir o comportamento desejado. Para isso, pode ser usada a lógica temporal. Nessa lógica o tempo é tratado linearmente, ou seja, existe um único futuro possível. Na lógica temporal linear (LTL) são usados os conetivos da lógica acompanhados de X (próximo), F (eventualmente), G (sempre) e U (até que). LTL é 

Page 2: Teoria de Tipos na pesquisa de linguagens de programaçãoinf.ufrgs.br/.../Logica_para_Computacao_-_INF05508/Resumo_parcial.pdf · A Teoria dos tipos é uma ferramenta na criação

interpretada   sobre   computações,   que   são   seqüências   de   atribuições   verdadeiras   a proposições atômicas. 

Projetos podem ser descritos através de várias descrições formais. Seja qual for o formalismo usado, um projeto de estado finito pode ser descrito através de um sistema de transições   rotulado.   Uma   das   áreas   mais   próximas   da   verificação   automática   é   a aproximação autômato­teórica. A idéia por trás dessa teoria é a de que dada uma fórmula LTL é possível criar um autômato de estado finito sobre as infinitas palavras que aceitam todas as computações que satisfazem essa fórmula.

A correspondência entre essa teoria e a verificação automática reduz o problema da verificação a um problema autômato­teórico, que pode ser resolvido através da criação de determinados autômatos que, ao final,  se o autômato receber alguma entrada, o sistema incorreu em algum erro e a entrada é uma computação incorreta. Caso não haja entradas, o projeto   está   correto.   Existem   soluções   altamente   eficientes   para   a   implementação   e verificação desses autômatos.  Além disso, com o uso de estruturas de dados é  possível testar projetos cada vez mais complexos. 

Nos últimos anos, a verificação formal automatizada tem se mostrado muito hábil. Ela pôde reduzir o tempo de projeto e comercialização de produtos de algumas das maiores empresas do ramo da informática.