As vantagens e benefícios do Assembly

Agora que você já leu sobre as desvantagens e dificuldades da linguagem Assembly, vamos falar sobre onde  essa linguagem é usada e seus benefícios.

Assembly é eficiente

Se você mandar duas pessoas, equipes ou empresas, fazerem
os mesmos softwares, verá que é impossível o código delas serem iguais.
Programar é raciocinar, é criatividade, depende do intelecto, experiência e
raciocínio dos programadores e chefes.
É por isso que existem navegadores Web bons e ruins,
Sistemas Operacionais lentos e rápidos, jogos bem feitos e mal feitos etc.

Isso tudo é eficiência: fazer um programa que rode mais
rápido, que consuma pouco processamento ou que exija o mínimo de memória
possível. E isso o Assembly é único.
Um programa bem feito em Assembly é simplesmente
imbatível.

Sim, é trabalhoso.
Sim, é demorado.
Sim, é, algumas vezes, entediante. Mas uma vez feito, e
bem feito, você terá feito um ótimo trabalho e poderá ter a certeza que vai
tirar o máximo de sua máquina.

Não é à toa que é Assembly é uma linguagem muito usada em
situações críticas, como em alguns trechos da construção de sistemas
operacionais, como o Linux (em sua grande parte é feito em C, mas em algumas
partes é necessário usar Assembly).




















Assembly é rápido

O gerenciamento de memória na linguagem Java, por exemplo,
é feito de forma automática.
A vantagem disso é que o programador não precisa lidar
com ponteiros, endereços de memória, alocação e liberação de memória (o que é
considerado por muitos como as coisas mais difíceis em programação).
A desvantagem é que isso não é perfeito, e não passa nem
perto de ser algo 100% eficiente.

Em Assembly não existe nada automático assim, é você
programador que vai mandar e controlar tudo. E isso é essencial, ter o controle
de tudo, quando é necessário funcionamento máximo, como em microcontroladores e
sistemas eletrônicos (imagina um sistema lento em uma aeronave? Não dá, em
questões e sistemas de segurança, precisamos de processamento máximo).



Assembly exige menos memória

Por dar total acesso e uso de cada espaço de memória ao
programador, o Assembly permite que as aplicações feitas nessa linguagem possam
ocupar e usar o mínimo de memória possível.

“Com tantos computadores poderosos de gigas e gigas de
memória e processamento, por quê se preocupar com o tanto de memória utilizada?”
pode se perguntar o leitor e programador de linguagens de alto nível.

A linguagem de Assembly não é somente para computadores.
Existem microcontroladores com meros kilobytes de
memória, em que não é possível fazer nem um “Hello world” em diversas outras
linguagens de programação, e só é possível programar neles, e em outros
dispositivos digitais, com Assembly.

Do ponto de vista prático, nenhum empresário vai gastar
Megas de memória em simples circuitos, como de calculadores, freezer e outros
sistemas digitais, quando se pode gastar apenas poucos Kb usando a linguagem
Assembly.
Se assembly usa menos memória, mais barato irá sair o
projeto. Isso não é importante, é essencial para todos os engenheiros.
Ser eficiente só na teoria não adianta, tem que ser
eficiente e economicamente viável.


Assembly dá acesso direto ao hardware

Nem todo equipamento é bonitinho e perfeito para se
trabalhar como um computador.
Existem dispositivos sem teclado, sem tela, com tipos
diferentes de memória, de processador e com arquiteturas e funcionamentos
diferentes. Obviamente, a grande maioria das outras linguagens de programação
não seriam nem cogitadas para se usar nesses sistemas.

Embora hoje em dia os vídeo-games sejam tão potentes quanto os computadores, eles não são feitos da mesma maneira que os PC's e Notebooks. Eles não tem as mesmas peças, acessórios e recursos que facilitam a programação neles.
Ou seja, em alguns casos, SÓ É POSSÍVEL DE SE TRABALHAR
COM ASSEMBLY.
Em décadas passadas, não só o hardware dos vídeo games eram controlador por mas os jogos eram feitos inteiramente com o uso da linguagem Assembly.


Os programas em Assembly são menores

Embora os códigos tendam a ser bem maiores que os das
outras linguagens, depois de pronto, os aplicativos em Assembly são bem menores
em tamanho.

Isso se deve ao fato do programa em Assembly ser muito
eficiente e consumir pouca memória.
Além de não ter outras aplicações atuando por debaixo dos
panos, como acontece em outras linguagens.


Segurança no Assembly: uma faca de dois gumes

Esse tópico pode ser tanto uma vantagem como uma
desvantagem.

Sistemas feitos em linguagens de alto nível são freqüentemente
burlados por hackers, pois as aplicações que fazem uso de tais linguagens não
mostram nem oferecem tudo aos programadores. A gigantesca maioria desses
profissionais não sabe ao que está ocorrendo em baixo nível.
E mesmo que soubessem, a maioria das linguagens
simplesmente não oferece a possibilidade de se trabalhar próximo ao hardware.

Como um aplicativo em Assembly age nos mais baixos e
fundamentais níveis, um programa bem feito nessa linguagem é bem mais seguro em
outras linguagens, pois você pode programar e controlar manualmente cada
detalhe do sistema, e de sua máquina.

Porém, como dissemos anteriormente, códigos em Assembly
são grandes e complexos.
Á medida que as aplicações e sistemas forem ficando
maiores, o controle sobre tudo vai ficando cada vez menor.

Ou seja, um bom programador Assembly pode prover segurança
e controle que nenhum outro pode ter. Porém, ele também pode abrir brechas que
outras linguagens não abririam.
Fica óbvio o motivo de vários aplicativos de cunho hacker e cracker usarem Assembly.


Assembly serve para aprender como as coisas funcionam

Há pessoas que estudam não por serem obrigadas, por
estarem na faculdade ou por ser necessário para ganhar dinheiro em sua
profissão.
Há pessoas que simplesmente gostam de estudar, seja por
paixão, hobbie ou tédio.

A definição correta de hacker é daquele indivíduo que quer saber como e porque as coisas
funcionam. Costuma-se chamar escovador de
bits
aquele que é curioso, tem interesse em saber e mexer nos computadores
em níveis mais fundamentais possíveis.

Não importa se programa em C, Java, .NET ou até mesmo
para Web, saber Assembly vai te dar uma noção de como as coisas realmente
funcionam, vai abrir sua mente, melhorar seu raciocínio e compreensão sobre
computadores e dispositivos digitais, deixando você, por natureza, diferenciado
dos outros profissionais que simplesmente usam as tecnologias, sem saber o que
está ocorrendo debaixo de seu nariz.

“Não sou louco em
querer entender como funciona um carro. Louco é quem senta em cima de toneladas
de ferro que possuem a força de centenas de cavalos, sem saber o que está
acontecendo logo abaixo.”

3 comentários:

Unknown disse...

Vi assembly num curso técnico no SENAI. Na época era interessante, gostei, mas complexo. Hoje temos mais opções, principalmente EAD, para estudarmos com metologias diferentes. Porém, nao sei se hoje compensa aprender essa linguagem. Apesar que o texto acima dizer sim.

Assembly Progressivo disse...

Uma das características do Assembly é que tem que coisas que só se faz ÚNICA e exclusivamente com Assembly.

Pense num relógio de pulso ou no timer do seu microondas. Não tem espaço ali pra colocar um compilador de C, Python ou a linguagem que for, quando mais memória, mais caro é o hardware.

A solução mais otimizada e com menor custo é código de máquina direto, e muita, mas muita coisa mesmo, é só com Assembly, direto, nu e cru.

Lembre-se: pra usar outras linguagens, metodologias etc, é preciso de sistema operacional rodando ou no mínimo um compilador. Isso ocupa espaço, precisa de processamento e coisas rodando 'por debaixo dos panos'.

Assembly são os bits direto no metal. Não precisa de intermediário.
Repetindo: muuuuuuitas coisa, hoje em dia mesmo, só se faz com Assembly.

Tem outra vantagem: você aprende, de verdade, o que é computação. Como funciona, o que é memória, como a informação sai de um canto pra outro, como as 'entranhas' de um hardware funciona. É um conhecimento que abre sua mente. Quem aprende Assembly, se torna um programador diferenciado.

Mesmo por curiosidade ou hobbie, eu recomendo aprenderem Assembly.
Com linguagem C, você sai da Matrix. Com Assembly, você aprende a linguagem que a Matrix e o restante do universo foi codificado.

Eduardo Dicarte disse...

O Assembly é muito forte na área de segurança, com engenharia reversa, analise forense e principalmente quem precisa fazer analise dinâmica de software.

Veja também: