Trabalho
0

Um certo grau de abstração não faz mal a ninguém

Um certo grau de abstração não faz mal a ninguém

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

 

Textos parecidos com este

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Fill out this field
Fill out this field
Por favor insira um endereço de email válido.
You need to agree with the terms to proceed

Leia também