Onde o Assembly age: Níveis de abstração na Computação


Para entender um pouco mais de Assembly, precisamos explanar os diversos níveis de abstração que um computador possui. Dentro dessa ordem de níveis, o Assembly se encontra mais abaixo, mais próximo do hardware, por isso é dito ser uma linguagem de baixo nível.

Para entender melhor, vamos começar de cima, de onde você provavelmente deve estar agora, ao ler esse tutorial de Assembly.

A camada dos softwares e aplicações de alto nível

Aqui é onde está a maioria dos usuários de computadores, tipicamente lidando com aplicações gráficas, clicando em botões, menus, minimizando, maximizando, fechando janelas, navegando na  web e outras infinidades de coisas.

Nesse estágio, as coisas são bem simples e voltadas para o usuário leigo.
Não é necessário saber absolutamente nada sobre o funcionamento interno dos sistemas. E, de fato, a grande maioria dos usuários não sabe.

Para o usuário, é tudo a mesma coisa, não importa se ele esteja no Windows, MacOS, Linux, Android ou TV Digital: ele quer ver menus, botões, clicar, arrastar, fechar e o mesmo de sempre.
Uma mera tela preta, como a do MS-DOS ou Terminal do Linux, já seria motivo de espanto e repúdio. Nesse estágio, as coisas são voltadas para o agrado desse tipo de usuário, que mesmo sendo totalmente leigos, são os que sustentam o ramo da computação.

E realmente, a grande maioria das pessoas não tem motivos para entender o que se passa por debaixo dos panos dessas aplicações: são médicos, advogados, professores exibindo slides nas aulas, caixas de supermercado e praticamente todo tipo de profissional vai ter contato com essa camada.

A camada das linguagens de alto nível

Quando pensamos em programar, geralmente pensamos em criar um super jogo, um programa bem útil ou aplicação móbile. Pensamos em criar algo para a camada de softwares de alto nível, pois é o que mais estamos acostumados a lidar.

Para fazer programas desse tipo, de alto nível, usamos linguagens de programação de alto nível, como Java, linguagem C, C++, C#, Python, Pascal, Delphi, Visual Basic, JavaScript, PHP e outras linguagens famosas.

Os programados dessas linguagens são capazes de criar entender como funcionam os softwares de alto nível em um nível não muito profundo, pois não é necessário entender muito do funcionamento dos sistemas operacionais.

Na linguagem de programação Java, por exemplo, você nem precisa se importar com o sistema, pois é uma linguagem multi-plataforma, ou seja, uma aplicação feita em Java pode rodar em Windows, Linux, Mac, celulares etc, com poucas ou nenhuma alterações.

Essas duas camadas de abstração são, portanto, independente da arquitetura do sistema.
Um programador Java, por exemplo, não precisa saber qual o processador da máquina que vai programar, e nem como funciona a arquitetura de seu sistema. São níveis de abstração que não dependem do sistema.



Camada da linguagem Assembly

Essa camada é o objetivo de nossa apostila de Assembly, e diferente das outras linguagens, precisamos saber que tipo de arquitetura vamos trabalhar.

Isso porque os comandos e códigos que vamos usar na linguagem Assembly são diferentes e específicos para cada tipo de processador. Ou seja, o nível de abstração da camada da linguagem Assembly é dependente do sistema.
É tão dependente que até precisamos saber como é organizada e o funcionamento da memória da máquina onde vamos programar.

Por isso não existem cursos para todos os tipos de Assembly, a linguagem varia de acordo com cada máquina. Diferente da linguagem Java ou C++, que não importa o tipo de computador para programar.

Por estar abaixo das aplicações gráficas, das linguagens que criam essas aplicações e ser dependendo do sistema, a linguagem de programação Assembly é dita de baixo nível.

A camada do código de máquina

Você já deve ter ouvido falar que tudo, absolutamente tudo, em computação, é feito de números 1 e 0. E isso é verdade.
O computador (no sentido bem baixo da palavra, ou seja, o metal, as peças eletrônicas) só entende e obedece a esses comandos, que nada mais são que uma série de números binários (1’s e 0’s). Porém, quantas vezes você já programou ou ouviu falar de alguém que programa em binário?

O objetivo da linguagem Assembly é suprir esse problema da alta complexidade do binário.
Com o Assembly escrevemos de uma maneira mais ‘humana’, mais fácil e compreensível, e esse código é convertido para o código de máquina.

Esse é o limite dos programadores. Porém, há muito, mas muito mais abaixo do Assembly, que envolvem coisas de elétrica e eletrônica digital (latches, flip-flops, transistores, circuitos integrados etc). Quem se interessar por esse meio, poderá adquirir conhecimentos através de cursos como Engenharia de Computação, Engenharia Elétrica, Engenharia Eletrônica e cursos do gênero.


6 comentários:

Júlio César disse...

Muito bom o curso, estou começando e espero aprender essa liquagem e obrigado pelo curso.

elimoraissilva disse...

Verdade, muito interessante.

thaynna uana disse...

Sempre tive medo dessa linguagem '---'

Marcos Xavier disse...

Parabéns por fazer as pessoas entenderem essa linguagem magnifica. Sou grato, por existir sites como esse, que nos ensina a trabalhar.

Wagner Jose Gertrudes disse...

Ola!sou iniciante no mundo da programaçao e sou muito curioso a respeito de todos os aspectos dele.Espero aprender muito aqui!

Wagner Jose Gertrudes disse...

ola!sou iniciante no mundo da programaçao e espero aprender muito com voçes.