Computadores e linguagens de programação

1. O que um computador faz

Em termos fundamentais:

  • cálculos
  • lembrar os resultados dos cálculos e/ou entradas

2. Qual a diferença entre um computador e uma calculadora?

  • Uma calculadora pode ser vista como um computador de um programa só.
  • Um computador de verdade é flexível, não tem um único propósito; é programável.

3. O que é um programa

Uma receita:

  • sequência de passos simples/conhecidos
  • especificar quando cada passo é executado (controle de fluxo) + uma forma de determinar quando parar

3.1. Exemplo: adicionar 1 a um número.

  • passos possíveis: 0 -> 1, 1 -> 2, …, 9 -> 0, _ -> 1, ir para o dígito à esquerda
  • especificação + condições de parada:
    1. começa-se pelo dígito mais à direita
    2. executa-se o passo apropriado sobre o dígito atual
    3. se o dígito atual for 0:

      • ir para o dígito à esquerda

      caso contrário, parar.

    4. se houver digíto à esquerda:

      • ir para o passo 2

      caso contrário, colocar 1 e parar.

Explicar para uma pessoa os passos de uma receita e como executá-los é razoavelmente fácil. Mas para um computador, quais seriam os passos possíveis (como no exemplo de adição)? E como especificar a execução dos passos, e como parar?

Q: No geral, como nos comunicarmos com o computador?

R: Depende da linguagem de programação!

Nota: estamos falando aqui de como estender a funcionalidade de um computador por meio de uma linguagem de programação. O computador já sabe como ‘entender’ o que você digita no teclado, ou o que você faz com o mouse, etc.

4. Linguagens de programação

4.1. Versus linguagens naturais

4.1.1. Primitivas

Português
palavras
Linguagem de programação
números, strings, operadores simples (por exemplo: adição, multiplicação)

4.1.2. Sintaxe

  1. Português
    • "Esse menino gato cachorros." (inválido sintaticamente)
    • "Esse menino adora cachorros." (válido sintaticamente)
  2. Linguagem de programação
    • 5"" (inválido sintaticamente)
    • 3 + 5.2 (válido sintaticamente)

4.1.3. Semântica

  1. Português
    • "Eu somos incríveis." (sintaticamente válido, semânticamente errado)
    • "Meu carro dirigiu até aqui." (sintaticamente válido, semânticamente errado?)
  2. Linguagem de programação
    • 3 + "oi" (sintaticamente válido, semânticamente errado)

4.1.4. Mais semântica

  1. Inglês

    Uma frase/texto pode ter vários significados possíveis.

    • "The duke yet lives that Henry shall depose". — Henry VI (1.4.30), by William Shakespeare
    • "What's your number?"
  2. Linguagens de programação

    Cada programa só tem um significado.

    Mas: não necessariamente é o significado que o programador queria.

4.2. Aprendendo uma linguagem de programação

  • Não é muito diferente de aprender uma linguagem natural.
    • Mas é mais fácil:
      • não há ambiguidade
      • há muito menos primitivas
      • a linguagem muda menos (em qualquer língua novas palavras são inventadas com frequência, e a gramática também muda, porém mais devagar)
      • duvida? Vocês vão aprender Python em um mês, tente aprender alemão em um mês…
  • ‘Só’ precisamos de aprender a sintaxe e a semântica da linguagem em questão

4.3. Problemas

4.3.1. Erros sintáticos

  • Comuns, especialmente no começo
  • Impossível de passarem despercebidos (a linguagem vai lhe avisar que há um erro)
  • Fáceis de corrigir (relativamente)

4.3.2. Erros semânticos (tipo I)

  • Algumas linguagens checam este tipo de erro antes de rodar o programa
  • Algumas linguagens checam este tipo de erro enquanto rodam o programa (Python)
  • Algumas linguagens não checam este tipo de erro, e eles podem causar comportamento indesejado 🦶🔫

4.3.3. Erros semânticos (tipo II)

  • Programa morre
  • Programa roda pra sempre
  • Programa retorna resultado inesperado/errado
Bruno Cuconato / 2024-08-07
TOP | HOME
Computação FGV/EPGE