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.