Skip to content

Latest commit

 

History

History
111 lines (103 loc) · 3.11 KB

introducao.org

File metadata and controls

111 lines (103 loc) · 3.11 KB

Tipos

1 Contextualização

Principais questões no projeto de uma linguagem

\pause Tipos de dados

  • Sistemas de tipo
  • Checagem de tipo
  • Equivalência, Compatibilidade, Inferência de tipos

\pause Controle de Fluxo

  • Avaliação de expressões (aritméticas, atribuição)
  • Fluxo estruturado e não-estruturado

\pause Abstração de controle – subprogramas

  • Registros de ativação
  • Modos de passagem de parâmetros

\pause Abstração de dados – orientação a objeto

  • Encapsulamento e herança
  • Composição e polimorfismo

\pause Concorrência

2 Arquitetura de von Neumann

Processamento de dados

  • Manipulação em dados
  • Mudanças de estado

\pause Computador IAS (1952)

  • Um dos primeiros a misturar código e dados em memória
  • Ausência de clock para regular o tempo das instruções
  • Tempo da adição: 62 ${μ}s$ – multiplicação: 713 ${μ}s$

./img/von-neumann.png

3 Importância das variáveis

Reservar, acessar e manipular regiões de memória

Utilização mais simples, clara $\leadsto$ menos erros

\pause Problemas

  • Dados são diferentes
    1
    1.0
    "Aurora"
        
  • Tamanho dos dados são diferentes
  • Operações válidas e inválidas
    1 + 1 = 2
    1 + "Aurora" = ?
        

\pause Solução: Tipos de dados de variáveis

4 Importância dos tipos de dados

Determinam a classe de valores que podem ser

  • Armazenados em uma variável em memória
  • Passados como parâmetro
  • Resultantes de uma expressão

\pause Informação de tipo é usada para

  • Prevenir ou detectar construções incorretas
  • Determinar métodos de representação de dados
  • Definir métodos de manipulação de dados

5 Vantagens (e desvantagens) de se ter tipos

Facilita o entendimento de um algoritmo

\pause Possibilita detectar vários erros

1 + "Aurora"
a_number + a_string
strcat (a_number, a_string)

\pause Por exemplo, o compilador pode

  • Determinar o espaço necessário para variáveis
  • Como proceder para a implementação das operações

\pause Existe alguma desvantagem?

  • \pause Considerando que é mais fácil escrever código correto do que provar que escrevemos um código correto
  • \pause Escolha entre tipagem estática versus dinâmica

6 Correlação com o projeto de linguagens?

Tipos são importantes

\pause Fortran

  • Tipos simples (inteiros, reais)
  • Tipos estruturados (arranjos)

\pause Cobol

  • Registros

\pause Lisp

  • Listas

\pause Algol68

  • Tipos definidos pelo usuário

\pause Simula67, Smalltalk

  • Tipos abstratos de dados, classes

\pause Qual o próximo?