DEV Community

Cover image for Como um computador compreende um ser humano?
Natália Oliveira
Natália Oliveira

Posted on • Edited on

Como um computador compreende um ser humano?

Um computador é uma máquina que executa instruções para resolver problemas para o ser humano, que é quem lhe passa essas instruções. Entretanto, humano e computador falam linguagens diferentes: o segundo só consegue interpretar instruções simples reconhecidas por seus circuitos eletrônicos, a nível físico. Essa linguagem que conseguem interpretar é chamada de linguagem de máquina.

Obviamente, por ser algo aquém de nossa natureza, a linguagem de máquina é de difícil compreensão. Veja um quadro comparativo, onde à esquerda temos a instrução de máquina e à direita o que ela significa:

Alt Text

Encare esses 0 e 1 como combinações que representam estados físicos do computador, que é onde ele consegue te entender, no hardware, nos componentes. Para entender um pouco de elétrica e eletrônica, lembre-se que eletricidade é sobre o movimento de elétrons e eletrônica é o que usamos para controlar o movimento dos elétrons.

Se você for um entusiasta de computação desde o hardware, pode ler também sobre esses tópicos para ter uma compreensão maior:

  1. Álgebra booleana: são estruturas que nos ajudam a lidar com afirmações usando operadores lógicos e de conjuntos, e essas estruturas podem ser verdadeiras ou falsas (podemos falar também em 1 ou 0).
  2. Portas lógicas: são dispositivos que utilizam um ou mais sinais lógicos, geralmente usados em circuitos lógicos por causa das situações “1 ou 0” que podem apresentar.

Para poder “conversar” com o computador precisamos criar uma abstração que nos leve do hardware para algum tipo de língua que possamos entender e interagir. Isso pode ser resolvido de duas formas:

  • Tradução
  • Interpretação

Se não quisermos utilizar a linguagem da máquina, em ambas as formas nós precisaremos desenvolver uma nova linguagem, intermediária entre a nossa (português, inglês, etc) e a linguagem de máquina. A isso no geral damos o nome de linguagem de programação.

Tradução

Vamos dizer que o computador fale a linguagem de máquina LM, e nós estamos utilizando a linguagem de programação LP1. Para que a máquina nos entenda podemos traduzir LP1 para LM, ou seja, podemos traduzir pedaço por pedaço de LP1 para uma instrução LM que o computador entenda, gerando uma nova instrução completa em LM que então será executada pelo computador.

Interpretação

Na interpretação cada pedaço de LP1 é interpretado como o seu equivalente na LM, e é diretamente executado. A diferença da tradução para a interpretação é que na primeira o programa LP1 é desconsiderado em função do LM gerado a partir da tradução.

Porém, para que essas traduções ou interpretações sejam práticas, a LP1 não pode ser tão diferente da LM. Aqui você pode pensar, por exemplo, em Assembly, linguagem chamada de baixo nível justamente por estar mais próxima da linguagem de máquina. Por esse motivo, também é chamada de linguagem de montagem. Veja um exemplo:

Alt Text

Ainda não tão elegante, certo? Para tornar a linguagem ainda mais inteligível e prática para nós, podemos abstrair a linguagem LP1 em outra ainda mais compreensível, que chamaremos de LP2, e assim por diante. Veja um exemplo de Python:

Alt Text

Cada nível acima representa uma abstração do nível anterior, e é assim que um computador é arquitetado, desde o hardware, a nível dispositivo (domínio de engenharia elétrica, onde lidamos com transistores e componentes), até camadas mais abstratas, como o sistema operacional.

Nos dizeres de Tanenbaum:

Cada linguagem usa sua antecessora como base, portanto, podemos considerar um computador que use essa técnica como uma série de camadas ou níveis, um sobre o outro(...). A linguagem ou nível mais embaixo é a mais simples, e a linguagem ou nível mais em cima é a mais sofisticada.

Você pode estar se perguntando como o computador compreende os símbolos que utilizamos, como “C”, “&”, “;”, etc. Bom, é para isso que existe a tabela ASCII, o Unicode e UTF-8. São padronizações que correlacionam nossos símbolos com um correspondente que a máquina possa entender. Dê uma olhada nessa tabela:

Alt Text

Então, sempre que pensar em como um computador compreende um ser humano de uma perspectiva mais abstrata que hardware e eletricidade, pense que existem processos intermediários que traduzem e interpretam o que nós “falamos” para o computador, tanto as instruções que falamos como os símbolos que utilizamos (caracteres).


Fontes:
Photo by Alexandre Debiève on Unsplash
TANENBAUM, Andrew S; AUSTIN, Todd. Organização estruturada de computadores. Tradução Daniel Vieira; revisão técnica Wagner Luiz Zucchi. São Paulo: Pearson Prentice Hall, 2013.
Imagem do Introduction to Computer Science using Java - Central Connecticut State University
Imagem do Wikipedia para Assembly
Imagem do Wikipedia para Python
Imagem de Sticks and Stones


Esse texto não tem intenção de esgotar o tema. Acrescente nos comentários, e também aponte erros quando os identificar.

Top comments (0)