Afinal, como o computador pensa?
Afinal, como o computador pensa? Já pararam para pensar o quão complexo é o fato de podermos simplesmente enviar uma mensagem? Tirar uma selfie? Ligar para alguém? Por trás de cada pequena ação que fazemos em qualquer dispositivo computacional, existem centenas ou até milhares de processos que são trabalhados em microssegundos, de forma assertiva e ordenada entre os componentes físicos e lógicos. Para entendermos melhor a forma como o computador pensa, precisamos compreender o seu funcionamento.
Nas aulas de sistemas digitais e arquitetura de computadores, foi-me definido que qualquer sistema computacional visa transformar estados segundo regras.
“E o que diabos significa transformar estados segundo regras?”. Bem… fisicamente falando, um estado pode ser uma tensão elétrica, uma posição mecânica de um vetor, uma carga em um capacitor, ou seja, algo não abstrato que faz parte de componentes elétricos e físicos. Esse conceito físico sobre os estados é importante ter em mente, pois é a partir deles que vamos definir os seus funcionamentos. E é aí que a matemática se encaixa, pois ela vai representar um estado físico através de dois valores: 0 e 1, que são valores abstratos e representam níveis lógicos que, no domínio da lógica, são interpretados como falso e verdadeiro. Ou seja, imagine um circuito que espera receber um sinal de radiofrequência para executar uma determinada função. Caso o sinal seja recebido, ele será modularizado e recepcionado pelo circuito, que executa um comando específico. Ao contrário, nada irá acontecer.
Matematicamente, podemos representar este circuito da seguinte forma: se o estado atual (x) permanecer igual ao estado esperado (x), nenhuma ação será executada (x = x). Trata-se de uma condição lógica satisfeita que mantém o sistema em repouso. Entretanto, se o estado atual diferir do estado esperado (x ≠ y), uma condição lógica distinta é atendida, fazendo com que o circuito execute uma ação específica.
Como dito anteriormente, 0 e 1 são valores abstratos, mas que na computação significam dois estados de representação, digamos, “compacta”. Este é um conceito que advém da álgebra booleana, que veio com a proposta de estruturar o formato de conversão de um estado lógico físico ou digital em dados através da base binária, que pode ser representada pela expressão log₂(2) = 1, onde o resultado representa 1 bit no sistema que, por sua vez, é composto por um único valor entre 0 e 1 (lembra da proposição “transformar estados segundo regras”? então…).
Voltando ao exemplo do circuito, você se perguntou como é que ele executa um comando após receber o sinal de radiofrequência?
Para responder isso, precisamos entender como a base binária converte esses sinais em dados. O sinal de radiofrequência, por exemplo, é um sinal analógico. Ou seja, trata-se de um sinal que na mecânica clássica é dito como “sinal ruidoso”, pois está passível de interferências externas que, por sua vez, possuem um padrão variado ou invariado de ondas. Esse padrão é determinado pelo tempo e pela amplitude da onda. Então, se você bater a ponta do dedo 3 vezes a cada 2 segundos, você irá gerar uma onda sonora padronizada. No caso da radiofrequência, ela é uma faixa de onda eletromagnética que viaja pelo espaço transmitida por celulares, wi-fi e sinais de rádios.
É nesse contexto que o sistema binário atua, ao restringir a representação da informação a apenas dois estados ao invés de depender de um valor exato de tensão, o circuito passa a interpretar faixas de valores como pertencentes a um mesmo estado lógico. Dessa forma, a escolha por dois estados não se deve à simplicidade da matemática envolvida, mas à estabilidade que ela proporciona no domínio físico. Sistemas com múltiplos estados exigiriam distinções muito mais precisas entre níveis de sinal, tornando-se extremamente vulneráveis a interferências. Ao adotar apenas dois estados possíveis, o computador reduz drasticamente a probabilidade de erro, fazendo com que as operações lógicas sejam executadas de maneira previsível e consistente.
O problema do sistema binário é que, para nós humanos, lermos sequências como 10101100 se tornaria algo não impossível, mas exaustivo, o que levaria ao aumento da quantidade de erros na interpretação dos valores. Diante disso, houve-se a ideia de representar os binários para que sua leitura fosse mais compreensível. Posto que um bit representa uma sequência de caracteres binários, foi-se pensado em uma maneira de abstração para estabelecer uma correspondência direta com o binário, agrupando conjuntos de quatro bits em um único símbolo. Como quatro bits podem representar exatamente dezesseis combinações distintas, cada dígito hexadecimal mapeia um padrão binário específico. Sendo assim, uma sequência extensa de bits pode ser representada de forma compacta, o que, segundo o teorema geral da numeração posicional equivale ao número em base 16, já que com quatro bits podemos representar exatamente dezesseis combinações distintas. Na prática, um valor hexadecimal interpreta visualmente os padrões dos binários que por sua vez representam estados elétricos no hardware. Cada dígito hexadecimal corresponde a quatro decisões físicas simultâneas, tomadas por transistores que realizam a condução ou o bloqueio das cargas elétricas. E é aí que o hexadecimal traduz esse estado elétrico, sendo possível compreender melhor as operações de registradores ou o endereçamento de memória, por exemplo. Ainda assim, ressalto que toda lógica matemática realizada pelo computador ocorre exclusivamente no domínio binário.
Contudo, para que essa lógica binária exista no mundo físico, é necessário um elemento capaz de assumir um comportamento extremamente rápido, capaz de permitir ou bloquear a passagem de corrente elétrica. Esse papel é desempenhado pelo transistor. Quando esse transistor conduz corrente, o circuito interpreta esse estado como um nível lógico alto; quando não conduz, o estado é interpretado como um nível lógico baixo.
Ao serem organizados em conjuntos, os transistores passam a materializar as operações da álgebra booleana, pois as combinações específicas de transistores permitem implementar portas lógicas como AND, OR e NOT, que, por sua vez, são responsáveis por realizar decisões lógicas elementares. Assim, operações matemáticas e condicionais não são abstrações executadas por software, mas consequências diretas do comportamento dos transistores funcionando conjuntamente. Fazendo-se assim com que cada bit processado por um computador corresponde, em última instância, ao estado físico de transistores conduzindo ou bloqueando cargas elétricas. A lógica booleana deixa de ser apenas um modelo matemático e passa a existir concretamente no silício, transformando fenômenos físicos em decisões lógicas previsíveis.
Então, recapitulando tudo. Sabemos que na base encontram-se os estados físicos definidos por níveis de tensão e corrente e sobre eles é construída a lógica binária, que nos garante a exatidão dos valores físicos. E nesse contexto surge a base hexadecimal, que permite a compreensão melhorada dos circuitos.
Mas afinal, como que o computador pensa? Bom, talvez eu tenha dito um contexto inteiro para responder essa simples pergunta, mas diante de tudo o que foi dito a resposta é que computadores não pensam no sentido “humano” do termo, mas operam a partir da transformação rigorosa de estados físicos em estados lógicos, seguindo regras matemáticas. Cada operação, decisão, cálculo realizado por um sistema computacional é resultado dessa cadeia contínua que conecta o mundo físico a estruturas lógicas.
Assim, compreender como um computador “pensa” é, na verdade, compreender como a matemática e a engenharia se interceptam em algum paralelo. O que chamamos de pensar é a soma de estados físicos sendo filtrados, bits sendo agrupados em hexadecimais para nossa compreensão resolvendo problemas matemáticos a velocidades absurdas. Da próxima vez que você enviar uma mensagem para alguém, saiba que bilhões de proposições lógicas foram testadas e transformadas em microssegundos apenas para garantir que aquele pulso de energia chegasse ao lugar certo, sem ruído e com total assertividade.