Pensamento Computacional (Parte 3): Abstração
Nas duas primeiras partes da nossa trilha, aprendemos a fatiar grandes problemas em pequenas partes (Parte 1) e a buscar semelhanças e tendências entre eles para poupar esforço mental (Parte 2). No entanto, no mundo real da tecnologia, os problemas de negócios vêm acompanhados de uma avalanche de detalhes secundários, exceções e poluição visual. Tentar pensar em todos esses detalhes microscópicos simultaneamente é a receita perfeita para travar o seu cérebro e criar códigos confusos. Para cons
Cajuina Code
Nas duas primeiras partes da nossa trilha, aprendemos a fatiar grandes problemas em pequenas partes (Parte 1) e a buscar semelhanças e tendências entre eles para poupar esforço mental (Parte 2).
No entanto, no mundo real da tecnologia, os problemas de negócios vêm acompanhados de uma avalanche de detalhes secundários, exceções e poluição visual. Tentar pensar em todos esses detalhes microscópicos simultaneamente é a receita perfeita para travar o seu cérebro e criar códigos confusos.
Para conseguir simplificar a realidade e focar unicamente no que é essencial para resolver o problema, usamos o terceiro pilar do pensamento computacional: a Abstração.
TL;DR: Abstração é a prática lógica de ocultar detalhes secundários e desnecessários de um problema, criando um modelo mental simplificado focado apenas nos aspectos cruciais para a solução.
---
O que é a Abstração?
Abstrair significa filtrar ou ignorar.
Quando um computador renderiza a imagem de um jogo 3D na tela, ele não calcula o peso real físico da roupa do personagem ou a temperatura real do vento. Ele ignora esses detalhes da física do mundo real e calcula apenas as coordenadas tridimensionais geométricas e as cores dos pixels.
O computador cria um modelo abstrato (simplificado) da realidade para conseguir rodar com velocidade de processamento viável.
---
Duas Analogias do Mundo Real
Para tornar o conceito intuitivo e fácil de compreender, vamos analisar como a abstração é usada para facilitar o nosso cotidiano físico:
1. O Mapa do Metrô de uma Metrópole
Imagine que você está em uma grande metrópole (como São Paulo ou Londres) e precisa pegar o metrô para ir a um museu.
Se o mapa do metrô exibisse:
- A localização exata de cada árvore na calçada acima da terra;
- O nome de todas as padarias e farmácias das ruas;
- O fluxo de trânsito dos carros em tempo real nas avenidas.
Você não conseguiria ler o mapa de tão poluído e confuso que ele seria. Por isso, os designers criaram um modelo abstrato: o mapa oculta 99% da geografia da cidade e exibe apenas as linhas coloridas e as bolinhas das estações. Ele esconde o que não importa (o trânsito de carros) para focar no que importa (como ir de trem do ponto A ao ponto B).
2. O Painel de Controle de um Carro
Imagine o João dirigindo seu carro pela rodovia. O João não precisa ter conhecimentos profundos de engenharia mecânica, saber a temperatura de combustão do oxigênio com a gasolina dentro dos pistões do motor ou a rotação física da caixa de engrenagens do câmbio para dirigir.
Os engenheiros automotivos esconderam toda essa física complexa sob o capô de metal e criaram uma abstração de controle simples:
- Um pedal para ir mais rápido (Acelerador).
- Um pedal para parar (Freio).
- Uma roda de metal para mudar de direção (Volante).
Você interage com a abstração (os pedais e volante) sem precisar se preocupar com a complexidade interna do motor.
---
Como Usamos a Abstração na Programação?
Na programação, a abstração é o que nos permite criar funções e estruturas que ocultam a complexidade do código.
Pense no comando que usamos em Python na Parte 1 para exibir dados na tela:
print("Olá, Mundo!")A linha acima parece extremamente simples. Mas, por trás desse único comando, o seu computador executa uma sequência gigantesca de tarefas complexas:
- O sistema operacional calcula quais pixels da tela devem ser acesos.
- Aloca um bloco de endereços físicos na memória RAM para guardar o texto.
- Envia impulsos elétricos para o processador de vídeo renderizar a fonte da letra.
Graças à abstração de software, você não precisa escrever centenas de linhas de código assembly de controle de memória para jogar um texto na tela; você interage apenas com a função abstrata simplificada: o comando print().
Quando você cria as suas próprias funções ou classes no código, você está agindo como o engenheiro do carro: você empacota dezenas de linhas difíceis dentro de um bloco nomeado simples para que os outros programadores da sua equipe possam usá-lo sem precisar entender toda a matemática interna do bloco.
---
Perguntas Frequentes
Qual a diferença entre Abstração e Generalização?
A abstração é o processo de filtrar e esconder a complexidade inútil de um caso específico. A generalização é o processo de pegar essa solução abstrata e expandi-la para que ela sirva para múltiplos casos diferentes (como criar uma única função de cálculo de juros que serve para carros, casas ou compras simples).
O excesso de abstração pode ser prejudicial?
Sim. Se você ocultar detalhes demais, o seu modelo simplificado pode ficar tão genérico que perde a precisão necessária para resolver o problema real, ou dificulta o diagnóstico de erros profundos de hardware caso as peças físicas parem de responder.
---
Próximo Passo
Parabéns! Você agora domina a arte lógica de simplificar a realidade, ignorar ruídos e focar apenas no que é vital para a resolução de problemas (como o mapa de metrô).
Estamos prontos para a última etapa da nossa jornada! Na Parte 4 da nossa trilha (final), aprenderemos a organizar todas as partes decompostas, padronizadas e abstratas em um roteiro linear e lógico de execução: os Algoritmos!