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:
- começa-se pelo dígito mais à direita
- executa-se o passo apropriado sobre o dígito atual
se o dígito atual for 0:
- ir para o dígito à esquerda
caso contrário, parar.
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
4.1.3. Semântica
4.1.4. Mais semântica
- 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?"
- 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…
- Mas é mais fácil:
- ‘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