Post

Programação é programação: Por que não existem mundos diferentes

Programação é programação: Por que não existem mundos diferentes

O programador React que treme na base ao ver um Structured Text de CLP. O engenheiro de automação que encara um backend em Node.js como se fosse bruxaria.

Este fenômeno me intriga há anos, e ele simplesmente não faz o menor sentido. A programação é uma só. Sempre foi. É ensinar uma máquina a executar tarefas por meio de uma sequência lógica de instruções. Este é o cerne, seja a máquina um browser, um microcontrolador, ou um controlador lógico programável. A diferença está nos detalhes de implementação. Não no fundamento.

Fundamentos que transcendem linguagens

O que separa os “homens dos meninos” é uma única coisa: fundamentos. Eles resolvem qualquer problema. Entender algoritmos significa poder resolver a lógica em qualquer ambiente. Sem exceção.

Estruturas de dados te dão o poder de decidir. Você precisa de uma fila, uma pilha ou só uma lista? Ah tá, preciso de algo que precisa sair primeiro à medida que entra primeiro, então uso uma fila, não importa qual é a linguagem, fila vai ser fila. Na verdade, a linguagem é apenas uma ferramenta. Uma chave de fenda como qualquer outra, se você fica magoadinho quando falam dela, acredito que deva mudar de profissão rs.

O problema de se apegar à linguagem é a limitação: “Eu sou programador Python.” “Eu só sei Ladder.” “Eu só mexo com front-end” — você se coloca numa caixa. Você se rotula. E isso limita o seu crescimento de forma cruel.

CLP não é diferente de Web

“CLP é coisa de engenharia, Web é coisa de TI.” Eu não acredito muito nisso não. Ambos são apenas leitura de inputs, processamento, e geração de outputs. Controle de fluxo. Manipulação de dados.

É o mesmo princípio, comunicando-se com algum periférico, seja um sensor ou uma API REST. A sintaxe muda, claro. FOR i:=0 TO 9 DO não é for(let i=0; i<10;), mas a semântica é idêntica.

Acredito que quem entende o conceito de função em uma linguagem, entende em todas. Se você domina os conceitos, troca de linguagem como quem troca de camisa. É adaptabilidade profissional na prática. Dessa forma, você pode criar uma API REST em Ruby hoje, o controle PID de um motor em ST amanhã, e o firmware de um sensor em C na próxima semana.

O que você tem que entender é que você dita o ritmo, não a linguagem. Programar é pensar. Linguagem é só o meio. Você não é um martelo. Você na verdade é o carpinteiro.

As diferenças reais entre os contextos

O que realmente muda são as restrições. Em embarcados ou CLP, você está contando memória em KB. Seu tempo é real. Não há margem para latência. No universo Web, você tem GB de RAM e uma tolerância muito maior ao lag. O paradigma de controle também muda: cíclico na indústria (scan time), orientado a eventos na Web.

O ecossistema muda. As bibliotecas. As ferramentas de debug. Mas adivinha? Nenhuma dessas restrições altera a base da programação. A lógica de negócio. O algoritmo para resolver o problema.

Como quebrar essa barreira

Pare de ver três mundos. Veja apenas Programação. Estude fundamentos de verdade: arquitetura de computadores, ciência da computação e redes de comunicação. Estude as bases sólidas e depois expanda o resto.

Pratique a tradução. Pegue um problema simples, como controle de temperatura, e implemente-o. Faça no Ladder, em C para um microcontrolador, e como um serviço em Python. Você vai descobrir, rapidamente, que o miolo — a lógica central — é idêntica.

Acredito que o programador diferenciado enxerga software dessa forma. Porque no fim, browsers e máquinas industriais são todos computadores. E quem domina os fundamentos, domina todos eles.

Esta postagem está licenciada sob CC BY 4.0 pelo autor.