Programador de Baixo Nível

3/1/2015 12:49:48 - Fábio Ferreira de Souza

Para leigos um “Programador de Baixo Nível" pode significar um “Programador Ruim”, mas para quem conhece as linguagens de alto e baixo nível, significa exatamente o oposto!

Hoje em dia o poder computacional está extremamente alto e o custo está caindo sempre, veja por exemplo, um computador básico Intel i3, é extremamente melhor que qualquer computador de 5 anos atrás, e se compararmos com os computadores de 10, ou 20 anos o que poderemos dizer?

Uma prova pratica disto é a existência de emuladores até em browsers, ou seja, um Java script rodando sobre um browser, usando SVG (canvas HTML5) emula exatamente um computador antigo, no caso, um videogame, veja o site https://archive.org/details/consolelivingroom e jogue alguns jogos do Atari a Consoles mais novos!

No meu caso tenho um Intel i7 de 1ªgeração, e consegui jogar até o clássico Street Fight, dentro do meu Chrome, sem a necessidade de instalar nenhum plug-in!

 

Quando os recursos de hardware são limitados, é preciso de muito mais criatividade, inteligência e conhecimento para conseguir fazer algo bom, do que em um ambiente ilimitado como os computadores e servidores convencionais.

Por isso que hoje em dia é tão difícil de achar bons programadores, a maioria aprende a montar blocos, usar componentes e frameworks prontos, operar sistemas de geração como os CMS, a pegar blocos de código na internet, e ir adaptando as suas soluções, e o pior é que funciona, pois já como os computadores são bons e com uma segurança mínima fornecida pelo sistema operacional, não é perceptível os problemas de performance e segurança, e para a maioria das empresas de pequeno e médio porte, estas soluções estão ótimas, pois até o tempo de desenvolvimento de algo do tipo é bem menor também.

Veja por exemplo estes Micro controladores da Atmel, são basicamente computadores completos dentro de um chip, mas com limitações de processamento e memoria!

Como seria fazer um programa que pudesse ter no máximo 32K de tamanho (Flash), ou poder usar no máximo 8K de RAM, ou ter um clock de 16MHz?

Por exemplo, no meu TCC (Adrenalina Virtual) de Engenharia da Computação usei um PIC16F628A que tem 3.5K de Flash e 224 Bytes de RAM, para fazer um protótipo em escala reduzida, de uma mesa simuladora com 3 motores que recebendo via serial comandos de software de interpretação vetorial em C#.Net originados de um Jogo de corrida 3D! ficou bem legal!

E como pode ser visto no vídeo de 7 anos atrás, naquela época filmar digitalmente ainda era luxo, por isso essa péssima qualidade de filmagem.

Para programar em baixo nível é necessário usar Assembler, C, ou C++, e geralmente não da para usar bibliotecas ou frameworks prontos, tem que saber fazer tudo do zero!

Mas para facilitar hoje em dia há chips bem poderosos que rodam até sistemas operacionais completos: Linux, FreeRTOS, Windows CE

Hoje em dia há vários Kits de desenvolvimentos prontos Raspberry Pi, Arduino, Beaglebone e muitos outros, para quem quer se aventurar em programar bem perto do processador acessando os bits para manipular pinos lógicos e ver coisas fisicamente funcionando.

Os celulares Android, IOs, e Windows Phone estão bem parecidos com computadores, muitos já são multi-core, o hardware está tão poderoso e há tantos componentes prontos e frameworks que programar para estes dispositivos já é tão fácil quando para computadores.

É bom saber um pouco de tudo, isso abre a mente para possibilidades, e quebra os limites impostos muitas vezes pelas ferramentas de desenvolvimento.