Hoje em dia estamos cercados por computadores, por onde olharmos veremos todos os tipos de maquina, como celulares, PCs, tevisoes e até mesmo geladeiras inteligentes , ou um servidor do outro lado do mundo.
E nós queremos sempre quando formos interagir com elas , executem alguma tarefa ou programa, porem para que isso funcione, alguém por traz precisa ter feito todo um trabalho programando todo o sistema. Por exemplo, se quisermos enviar alguma mensagem no celular , alguém precisa ter programado algo como: “se clicar no botão enviar, a mensagem será enviada”.
Se você já teve alguma experiência com qualquer tipo de linguagem de programação, já deve ter usado algum editor código, como: o seu navegador , visual estúdio, sublime text, p5 ou scrtach e muitos outros que temos por aí.
Então você abre seu editor preferido, escreve algumas linhas de codigo, o computador pega tudo aquilo ali, faz algum tipo de mágica e vuala, seu programa é executado.
Porem, o seu computador não é nem um tipo de objeto mágico. Na verdade, ele executa ações reais e factíveis. Então vamos desmitificar o computador explicando como ele realmente funciona.
Quando voce digita um código, na maioria das vezes é em uma linguagem que chamamos de alto nível – que nada mais é uma linguagem em que o ser humano compreende.
Podemos dar de exemplo, uma linguagem muito conhecida, o javascript, onde você pode escrever palavras em inglês como function e let, escreve nome de variáveis com palavras que conseguimos entender, conseguimos escrever os textos para que o computador digitalize na tela.
Basicamente é bem parecida com a linguagem que usamos no nosso dia a dia, porem o computador não é um ser humano e não entende esse tipo de linguangem 😔, ele entende um tipo de linguagem bem mais restrita.
Que só é capaz de fazer operações aritméticas como soma, subtração , multiplicação e algumas outras operações, como: guarda informações na sua memória e fazer certas comparações, para ver se duas coisas são ou não iguais.
Esse tipo de sequência de instruções e informações é chamado de código de máquinas 🤖, vou dar alguns exemplos para ficar um pouco mais nítido a diferença das duas linguagens.
Temos um código em javascript, nele fazemos uma operação, que não tem tanta aplicacao prática: são duas variáveis, uma A e a outra B , A vai receber um valor de 9 e B um valor 3 , em seguida vamos criar outra variável com o nome de C.
var A = 9
var B = 3
A letra C por sua vez, vai receber a soma de A e B, em seguida faz uma condição: se o C for diferente de zero, dentro da condicional e incrementa o ciclo C++;
var A = 9
var B = 3
var C = A + B
if ( C != 0){
C++
}
Essa linguangem acima é a de alto nível que usamos em javascript e para demostrar como funciona o código de maquina vamos usar uma notação simplificada de uma linguagem de montagem ou assembly.
A linguagem de montagem que representa o código de maquina, tem mais ou menos a mesma disposição mostrada, tem mais código, são bem maiores e que tem mais ou menos o significado.
Guarda 7 em a:
let a = 7;
Guarda 2 em b:
let b = 2;
Pega a, soma b e guarda em c:
let c = a + b;
Compara c e 0, se_igual_pula 1 linha e incrementa c:
if (c !== 0) {
C++
}
O computador guarda o valor 7 de A em algum lugar na memória, depois pega o valor de B e também guarda na memória.
Em seguida realiza uma operação de soma entre os dois e guarda esse valor em C.
O computador agora verifica se nossa condição , se C e zero for iguais nada acontece , porem se forem diferente executa o código C++ dentro da função.
Já é possivel nós comparamos esses dois tipos de linguagem e ver que o código de maquina é um pouquinho mais granular , ela é um pouquinho mais limitada na expressividade que podemos fazer.
Não é necessário entender código de maquina para poder programar. Mas é interessante você ter uma noção do que está acontecendo lá dentro do computador.
Na verdade o computador usa uma sequência de zeros e uns, que chamamos de código binário. E você já pode até ter ouvido falar que o computador se comunica apenas com zeros e uns, isso acontece porque o computador internamente é formado por um conjunto de fios e circuitos que está passando eletricidade. Se tem o fio que está passando eletricidade, o computador vai entender como 1, e se tem um que não está passando eletricidade ele vai entender como 0. Essa lógica de ligado, desligado é uma coisa que vai se estender por todos os componentes do computador.
E é daí que surge essa parte do código binário, porque na sequência de ligado desligado consegue representar a informação.