[POST COLABORATIVO] São muitas linguagens! Pra que serve cada uma delas?

Hello world! Como estão?

Se você, assim como eu, se vê perdido quando o assunto é sobre linguagem de programação, sobre qual eu deveria aprender para realizar certa tarefa, este espaço é para você. Este espaço também é para você, Senior Dev, que programa de olhos fechados e gostaria de compartilhar um pedacinho dessa experiência conosco, seja bem vindo.

O intuito do post é simples: vamos passear pelas linguagens de programação, frameworks, falar um pouco sobre suas principais características, vantagens e desvantagens também, sua aplicação mais eficiente e algum exemplo também é bem vindo.

Mas quem sou eu, esse ser supremo que sabe tudo de todas as linguagens e seus pontos fortes e fracos? Bem, então... eu não sei! Mas sei que vocês sabem... Cada um sabe um pouco. Então vamos fazer o seguinte?

Cada um que se interessar pelo post e quiser contribuir, eu convido a dar seu depoimento: primeiramente falando sobre si mesmo o que achar válido, sobre sua função ou trabalho, sua lingaguem de programação, pra quê ela serve, o que aprendeu sobre ela, a melhor forma de utilizar, melhor aplicação, se algum dia essa linguagem não atendeu alguma tarefa, exemplos, dicas, o que você quiser!

-Ah mas eu sou sinistro e conheço todas as ferramentas dev!

Pois escolha uma! Escolha o assunto que você tiver mais afinidade, mais experiência, o que você mais usa no trabalho ou a ferramenta que você mais odeia... A intenção do post é diversificar informação então dê preferência a falar sobre algo que não foi dito. Ou complemente algum depoimento anterior, aí é com você. Não seja raso! Essa não é a ideia.

Então vamos começar?

Sou engenheiro na área de robótica, profundamente interessado por tecnologia e programação. Durante minha caminhada, tive contato breve com desenvolvimento em HTML e durante o curso fui apresentado a várias linguagens, todas voltadas para sistemas embarcados e simulações, também como Assembly. Daí que provavelmente vem minha falta de afinidade com as milhares de ferramentas de dev disponíveis.

Escolhi falar aqui sobre a linguagem utilizada em automação industrial, especificamente a linguagem de programação dos Controladores Lógicos Programáveis (CLP).

O que é um CLP?

Em inglês, Programmable logic controller são os computadores industriais. Sua funcionalidade se assemelha bastante com a dos microcontroladores, possuindo entradas e saídas geralmente digitais que realizam uma função previamente programada, porém por trabalhar em ambientes as vezes hostis e realizar tarefas de imensa importância que as vezes pode colocar em risco a saúde das pessoas em sua volta, sua construção deve ser mais robusta, apresentar bastante repetibilidade, resposta rápida, permanecer ligado por várias horas (ou por meses) e todas as outras características desejáveis para um ambiente industrial.

Exemplo de CLP: https://theautomization.com/wp-content/uploads/2018/11/FIXED-PLC-NEW.jpg

LADDER: Uma linguagem gráfica

Recebe este nome por se tratar de uma linguagem gráfica, suas linhas de código se organizam em uma estrutura fixa que lembra degraus de uma escada. A criação desta linguagem gráfica se dá junto com a criação do primeiro controlador comercial e para que os novos operadores da época, que eram geralmente os eletricistas, engenheiros elétricos e técnicos, pudessem entender com maior facilidade, já que esta forma de organização pouco se diferencia de esquemas de circuitos elétricos.

Exemplo de código ladder: https://www.citisystems.com.br/wp-content/uploads/2016/07/linguagem-ladder-diagrama-basico.png

Sua utilização é exclusivamente para CLP, sendo a mais antiga e mais difundida, é aceita por todos os dispositivos de todos os fabricantes conhecidos, regulado pela norma IEC 61131-3. Outras linguagens também surgiram após a criação do ladder, sendo elas o Structured Text a que mais se assemelha com as linguagens de programação convencionais, como o C (portanto a que eu mais tive afinidade no começo do curso). Também temos a Instruction List, que se assemelha com assembly e Sequential Function Chart, muito utilizada para aplicações sequenciais (ex.: agarra a peça, move a peça, solta a peça, volta para a posição inicial, loop). Também existe o Block Diagram, uma forma excelente de organizar os comandos que lembra bastante o MIT App Inventor.

A programação é feita pelos softwares disponibilizados pelos fabricantes, depois compilado em assembly e então é feito o download (sim, eles usam o termo download) no dispositivo.

Muitas pessoas não diriam que o ladder é uma linguagem de programação por sua aparente simplicidade, mas garanto que um código aparentemente simples pode demorar horas ou dias para funcionar corretamente, principalmente quando incluem funções de timer, counter, etc.

E você, o que tem para nos contar?

Ótimo post! Embora não presente em todos os PLC's, o Structured Text traz uma série de facilidades que vemos um linguagens de alto nível. Loops, funções, bem próximo do que realmente é o C. Aqui onde trabalho todos os programas são desenvolvidos em ST e por mais que seja exigido por alguns clientes, nós sempre forçamos para que seja em ST.


Desenvolvemos internamente aqui algumas IHMs com Nodejs e React. Pretendo em breve fazer um post explicando sobre isso.

acho muito interessante abordar linguagens com proposito geral, proposito especifico.