Executando verificação de segurança...
28

Valorizem os devs low-level

Um dia eu refleti atualizando meu linux e pensei em todos os devs low-level, que programam em C, C++, Rust e até Assembly. Eu tenho grande admiração por esses devs, eu aprendi a programar em C e foi um simples programa que soma matrizes que me fizeram entrar em programação.

Eu sei que essas linguagens low-level são um pouco assustadoras e realmente elas carregam grande responsabilidade em Sistemas Operacionais, drivers, GPUs e diversos sistemas embarcados que com certeza você usa, mas nunca pensou nos devs que estão por trás de tudo isso.

Eu gosto muito de ver histórias de profissionais que trabalham nessa área, então se você é dev low-level, compartilhe sua experiência nos comentários e muito obrigado por você existir!

Carregando publicação patrocinada...
11

Concordo plenamente — e no Brasil, o desenvolvimento low-level está mais vivo do que nunca, mas mudou de endereço. Hoje, quem mais emprega devs de C, C++, Rust e Assembly não são empresas de software, mas gigantes da engenharia:

  • Embraer: Centenas de devs escrevendo código para sistemas embarcados de aeronaves. Cada turbina, sistema de navegação e controle de voo é um computador com software low-level.

  • Stellantis (Fiat/Jeep): Carros modernos têm mais de 100 milhões de linhas de código. ABS, injeção eletrônica, freio autônomo — tudo roda em microcontroladores programados em C.

  • Agronegócio: Tratores autônomos da John Deere, sistemas de irrigação IoT. Até um pivô central tem seu firmware customizado.

A revolução silenciosa é que todo dispositivo que liga/desliga é um computador. E nesses computadores, low-level é rei. A diferença? Quem domina essas linguagens hoje não são só cientistas da computação, mas engenheiros mecânicos, eletrônicos, mecatrônicos — gente que entende o hardware tão profundamente quanto o software.

E aqui está o paradoxo: enquanto a computação "pura" migra para abstrações altíssimas (Web, LLMs), a computação real — aquela que faz aviões voarem e carros frearem — ainda depende de quem sabe manipular registradores e otimizar loops em Assembly. Ainda bem.

6

Eu uso C++ até hoje em minha empresa, a Ubook, em nossos aplicativos mobile.

O C++ me permite compartilhar o código escrito em todos os nossos apps, mesmo em plataformas diferentes, reduzindo o tempo de desenvolvimento com uma equipe bem mais enxuta.

O projeto que usamos é o Nativium:
https://github.com/nativium/nativium

E a evolução dele, que é para onde pretendemos migrar é o XPLPC:
https://github.com/xplpc/xplpc

O C++ é feito para ser rápido e energéticamente eficiente, segundo o próprio criador, o que é perfeito para mobile.

Não atoa, o Google investiu muito para suporte do C++ em sua IDE, o Android Studio e a Apple está cada vez mais adicionando suporte ao C++ direto via Swift sem passar pelo Objective-C.

Sem falar dos grandes motores (engines) de criação de jogos, como a Unreal, que tem suporte nativo a C++ que se integra facilmente com a IDE:

Resumindo, o C++ é bom demais.

3

Meu pai durante muitos anos desenvolveu o sistema operacional na Leucotron, que fabrica PABX em Santa Rita do Sapucaí - MG. Programava em C e Assembly. O velho tem muitas histórias e muito conhecimento em programação low-level.

2

Minha primeira linguagem também foi C! Aprendi no curso técnico de mecatrônica para podermos programar microcontroladores. Me lembro como se fosse ontem, poder definir comandos e dizer quais luzes iriam piscar era simplesmente mágico!

Também foi responsável por abrir a minha primeira porta na área, em um projeto de extensão, onde tive a oportunidade de estudar cada vez mais e também compartilhar esse conhecimento com outros jovens.

Até hoje faço projetinhos com microcontroladores para matar a saudade, inclusive estou trabalhando em um para captação de temperatura, umidade e armazenar em um servidor. Tenho planos de futuramente abrir o projeto para que todos possam configurar sensores, enviarem para meu servidor e consigam monitorar o que quiserem

2

Eu usei bastante C ano passado pra desenvolver um projeto pessoal (um despertador luminoso que se comunica com um aplicativo no celular, que eu também desenvolvi). Software low-level é bem mais legal do que parece. Mas de fato é um trabalho intenso, você tem que gerenciar muita coisa por conta própria, e debuggar não é lá tão fácil.

Eu cheguei até a aprender engenharia elétrica e mandar fabricar algumas PCBs (circuitos impressos) lá na China. Eu usei Wi-Fi pra sincronizar o relógio interno e Bluetooth pra comunicar com um aplicativo que eu desenvolvi em swift. Eu aprendi muita coisa fazendo esse projeto!

1
1

O maximo que ja fiz fou widgets, para o KDE Plamas, efeitos para o Kdenlive, extensão pro blender eheheh, chega nem perto do que os caras fazem!! Agente so trabalha na nata do leite ehehehe

1

C foi minha primeira linguagem de programação e até hoje eu estudo, faço projetinhos e resolvo questões sempre que posso. Tenho muita vontade de trabalhar usando essa linguagem, onde aprendi desde conceitos básicos como loops, condicionais e funções até conceitos mais avançados como apontadores/ponteiros estruturas de dados e algoritmos de ordenação. Hoje em dia costumo dizer que aprender a programar em C é que nem aprender a dirigir em carro velho: é difícil, mas você aprende bem tudo que é essencial e quando vai dirigir um mais novo fica bem mais fácil de pegar o jeito.

1

Acham que ainda é viável entrar no mercado de desenvolvimento low-level mesmo sendo iniciante? Creio nunca ter visto vagas para desenvolvedores C ou Rust júnior, por exemplo.

1

Comecei em java estudando sozinho há quase 2 anos, em agosto de 2023. Já desenvolvi um sistema de gestão administrativa usando somente java, sem techs externas.

Com o passar do tempo, fiquei entediado de como o java funcionava e decidi partir pro bytecode. O que me impulsionou foi quando eu comecei a desenvolver pra android e percebi que, quando compilamos nosso código, é criada uma classe estática R, da qual podemos acessar todos os recursos que definimos no diretório de recursos "res".

Vi isso como um grande empecilho e facilidade! Mas IDEs como o eclipse (a que eu utilizo), não fornece meios, nem mesmo por plugins, de mapear esses recursos (no caso properties, vocês vão entender o porquê mais pra frente) para uso no desenvolvimento.

Aliei essa minha nova idéia com meu cansaço de ficar só na surface do Java e decidi explorar o submundo da JVM e criar um framework. Estudei e continuo estudando o JVMS diariamente. É bem extenso, mas interessante.
Também busquei utilizar a nova API classfile do java nessa minha empreitada.

Qual a minha solução? Permitir que o dev use arquivos de propriedades pra armazenar dados de strings ou outras coisas utilizáveis na aplicação dele, e utilizar o framework que estou desenvolvendo pra mapear e gerar uma classe estática chamada P, com cada classe interna estática sendo mapeada para um arquivo de propriedade e seus campos públicos estáticos e finais sendo os pares chave-valor do arquivo de propriedades mapeado. O framework funciona gerenciando um sistema de cache em json + análise contínua de diretórios contendo arquivos de propriedades especificados pelo dev utilizando uma implementação da WatchService API + compilação incremental em tempo de execução.

O bytecode, o código fonte e o cache sao sincronizados com os arquivos de propriedades mapeados pelo dev no framework. Tenho uma versão inicial e funcional dele, mas nao implementa todos os recursos finais.

Escolhi o arquivo Properties por ser um arquivo bem simples de se manter e de se organizar, diferentemente de um XML, JSON, CSV...

Tá sendo uma baita experiência 😃, e eu tô pensando em, no futuro, contribuir mais com mais soluções desse tipo que eu vejo que é bastante necessária.

Não uso a biblioteca da ASM pois a minha proposta é fazer algo mais próximo do nativo o possível, mantendo a máxima compatibilidade com versões futuras da JVM sem quebras e sem possíveis problemas com bibliotecas desatualizadas.

Eu gosto muito do baixo nível e achei que o java tinha um pouco disso quando comecei estudar ele há 2 anos atrás. Vi que não era bem assim, que ele era lotado de abstracionismo e simplicidades, entao resolvi ir, por fim, por esse caminho não convencional: o de criar ferramentas produtivas para devs desenvolverem melhor e com mais organização seus sistemas ❤️

1

Também sou usuário GNU/Linux, e de longa data, diga-se de passagem.
Sou do tempo do Gentoo/Funtoo, Slackware, Exherbo, etc. Também aprendi a programar em C, que ainda é a linguagem que tenho um carinho muito grande.
Estas distros que citei, no começo, tinha que programar muita coisa. Principalmente Exherbo, que tinha que construir as coisas. As demais era mais compilar, adicionar umas configs e tal. Ficava horas e dias (libreoffice/firefox) compilando no meu note véio.
Bons tempos.
Obrigado por me lembrar disto.