Abstração (segundo as pessoas mais inteligentes que eu) é o ato de simplificar algo complexo, mostrando apenas o que é essencial e escondendo os detalhes desnecessários.
Abstrair é, portanto, ignorar aspectos. (Acabei de abstrair o significado de abstração. Você percebeu?)
Eu venho pensando muito sobre a arte da abstração desde que comecei a estudar programação de computadores. Porque um programador sempre vai trabalhar em algum nível de abstração.
Sempre ouvia dizer que o computador só trabalha com 0s e 1s e isso me fazia muita confusão. Ok, ainda faz. Mas pelo menos hoje eu consigo encaixar essa definição dentro de um nível de abstração, na qual a maioria dos humanos faz confusão.
Eu gosto da ideia de camadas, que com uma ‘peça’ podemos construir um ‘bloco’ e com este ‘bloco’, um ‘bloco’ maior e assim sucessivamente. É aí que as coisas começam a fazer um pouco de sentido.
Pedi então para o ChatGPT me ajudar a organizar os níveis de abstração dentro da programação.
Os principais níveis de abstração na programação
1. Hardware (nível mais baixo)
O hardware é o nível físico:
- CPU
- Memória
- Disco
- Eletricidade e circuitos
Aqui tudo funciona com impulsos elétricos. Normalmente não se programa aqui.
2. Código de Máquina (binário)
É neste ponto que o computador entende apenas: 10101010 00010101.
Extremamente difícil para os humanos. (Eu acredito.)
3. Assembly (baixo nível)
Uma forma um pouco mais legível de falar com o processador:
- MOV AX, BX
- ADD AX, 1
Mas ainda exige muito conhecimento técnico.
4. Linguagens de Programação (alto nível)
Aqui já é algo mais palpável. É o playground onde os (mortais) desenvolvedores de software podem começar a brincar.
Entram linguagens como:
- C
- Java
- Python
- JavaScript
Mas ainda sim, eu diria que, mesmo neste nível, há alguns subníveis. Porque o C é bem mais ‘arcaico’ que o Python, por exemplo. Tanto que o Python foi escrito em C. Portanto, uma linguagem pode já ter se abstraído muito de outra.
5. Bibliotecas e Frameworks
Aqui você usa código pronto, sem precisar recriar tudo. Você usa funções sem saber como elas funcionam internamente.
6. Arquitetura e Design de Software
Aqui encontramos estruturas maiores, como:
- Camadas do sistema
- APIs
- Módulos
- Separação de responsabilidades
Exemplo:
- Frontend
- Backend
- Banco de dados
Você não pensa em código linha por linha, mas na organização do sistema.
7. Nível do Usuário Final (nível mais alto)
O usuário só vê:
- Botões
- Telas
- Funcionalidades
Não precisa saber nada de código.
—
Abstrair é mesmo uma arte. Para mim, que estou muito no início nesta jornada de aprendizado no desenvolvimento de sistemas, pensar nessas camadas é algo que me acalma e que me abre infinitas possibilidades. Percebo que é possível criar coisas muito maiores do que sou capaz de entender por completo, utilizando um certo grau de abstração. Camadas, sobre camadas, sobre camadas…
(Como disse alguém mais inteligente que eu) aprendizado não consiste em entender tudo, mas saber o que deve ser ignorado.
É isso. Um certo grau de abstração não faz mal a ninguém.
Uma dose, por favor.
Foto: Himanshu Choudhary via Unsplash








