Então como os computadores funcionam realmente?

Uma visão geral de alto nível de como os números binários fazem os computadores funcionarem para pessoas curiosas e não técnicas.

>

Foto por Federica Galli em Unsplash

Como os computadores funcionam é algo sobre o qual sempre tive curiosidade, mas nunca pensei que teria os conhecimentos básicos reais para compreendê-lo, mesmo a um nível elevado. Então, fazer a pesquisa para escrever este post no blog e descobrir que não foi tão difícil de entender tem sido muito gratificante, além disso, entender como os computadores funcionam, novamente mesmo em um nível alto, é bastante estonteante.

A maneira mais básica de pensar de um computador é como uma máquina Input/Output. Essa é uma idéia bastante básica: computadores pegam informações de fontes externas (seu teclado, mouse, sensores ou da internet), armazenam, processam e retornam o resultado (Output) desse processo. A propósito, se você pensar sobre isso, no momento em que os computadores estão conectados através da internet, há um loop sempre final de entradas e saídas como a saída de um computador (digamos um website) torna-se a entrada de outro e assim por diante(!!).

Agora, todos nós somos muito usados e familiarizados com a forma como um computador tem de receber entradas e imprimir algumas saídas, todos nós usamos um mouse ou um teclado, ou até mesmo conversamos com um computador e todos nós lemos um artigo num website, ouvimos música ou navegamos através de algumas fotos antigas, etc. O que nós não estamos tão familiarizados, e o que nós normalmente lutamos para entender é como um computador realmente processa informações.

Então sim, em um nível muito fundamental tudo que um computador entende é 1’s e 0’s, o que significa que cada entrada e saída é traduzida em ou de 1’s e 0’s em algum momento. O que é poderoso nos 1’s e 0’s (também chamados de bits -f from BInary digiT) é que ele nos permite transformar qualquer informação em sinais elétricos (ON/OFF). Por favor, reserve um momento para pensar sobre isso: Tudo o que você vê, pensa ou interage com pode realmente ser traduzido e representado como sinais elétricos(!!!). Representar informação como sinais elétricos é o que permite aos computadores realmente processar essa informação e transformá-la.

Então, como funciona o sistema de número binário? Números binários significam que todos os números são computados com base 2. Como um exemplo, a maioria de nós é usada para pensar em números com base 10. Se você pensar em qualquer número, digamos 2561, você pode ver como, dependendo da posição que o número ocupa da direita para a esquerda, o número tem um valor diferente que é um múltiplo de dez. Neste exemplo, por exemplo, 1 ocupa a posição 1s, 6 ocupa a posição 10s, 5 ocupa a posição 100s e 2 ocupa a posição 1000. Desta forma, (2×1000) + (5×100) + (6×10) + (1×1) = 2561. Os números binários funcionam exatamente da mesma maneira, mas cada passo incremental representa um incremento de x2 em relação ao anterior. Aqui está um exemplo de como representar o número 12:

Então, com 8 bits você pode representar qualquer número entre 0 e 255, e com 32 bits você pode representar qualquer número entre 0 e 4 bilhões. Você pode estar pensando, claro, mas e quanto a cordas e pontuação? Bem, a partir de hoje, ainda seguimos o ASCII, American Standard Code for Information Interchange, que basicamente mapeia qualquer caracter ou sinal de pontuação incluindo letras maiúsculas para um dos números de 8 bits. E é assim que usamos números para representar letras.

Sure, mas e as imagens? Bem, na verdade uma imagem também pode ser reduzida a 0’s e 1’s. Como você sabe, qualquer tela tem um determinado número de pixels e cada pixel tem uma cor e como você sabe, usando códigos de cores RGB ou HEX podemos representar cores como números, o que significa que basicamente podemos dizer a um computador qual cor cada pixel deve ter. O mesmo vale para música, vídeo e qualquer outro tipo de informação que você possa pensar.

Mas como diabos nós “computamos” sinais elétricos? É aí que entram os circuitos eléctricos. Em um nível muito básico e super simplificado, podemos usar circuitos elétricos para nos comportarmos como “máquinas lógicas”. Podemos ter circuitos que, dada uma entrada específica, retornarão uma saída dependendo da lógica com a qual foram construídos (Não, E, Ou) mas também somas, subtrações, multiplicações e divisões. A parte interessante é que usando estas formas muito elementares de representar e processar informação podemos realmente alcançar “completude funcional” que é um termo usado em Lógica para se referir a um conjunto de operadores booleanos que são capazes de representar todas as tabelas de verdade possíveis, que é uma forma extravagante que os matemáticos têm de dizer que o céu é o limite. Todos esses cálculos acontecem em uma unidade dentro de sua CPU chamada ALU (Unidade de Lógica Aritmética).

Como você provavelmente sabe, CPU’s – Central Processing Unit – são os cérebros dos computadores e é onde todo o cálculo acontece. A parte interessante das CPU’s é que elas não têm nenhuma memória, o que significa que não conseguem se lembrar de absolutamente nada. Sem memória, todos os cálculos seriam perdidos logo após a sua realização. Grosso modo, e como você já deve saber, existem dois tipos de memória que nossos computadores usam: RAM, que significa Memória de Acesso Aleatório e Memória Persistente. Você pode pensar na memória RAM como uma imensa grade (matriz) que armazena números de 8 bits. A memória RAM mantém registro dos “endereços” na matriz de memória de qualquer dado número de 8 bits para sempre que a CPU precisar dele. E adivinhe o quê? Para realizar estas operações, usamos exatamente a mesma lógica de circuito que usamos antes. Isto é, usamos exatamente a mesma lógica para permitir que uma determinada entrada seja armazenada em um dado “lugar” na memória ou para acessar qualquer informação armazenada nela.

Eu sei que mal estou arranhando a superfície de como os computadores funcionam aqui, mas só de começar a entender isto me levou bastante tempo e já me deixou louco mais de algumas vezes. O que me fascina nisto é como os computadores são poderosos e como estão embutidos em nosso dia-a-dia, é por isso que eu acho importante ter pelo menos uma intuição de como eles funcionam. Além disso, como sempre, se você encontrar algum erro por favor me avise.

Eu vou terminar este post com um vídeo que eu realmente gosto onde Steve Jobs compara computadores com bicicletas aqui:

>

Aqui está uma lista de recursos incríveis que eu encontrei enquanto fazia alguma pesquisa para este post:

Vídeos curtos da Academia Khan sobre como os computadores funcionam: https://www.khanacademy.org/computing/computer-science/how-computers-work2/v/khan-academy-and-codeorg-introducing-how-computers-work

Série de cursos de choque em Ciência da Computação são absolutamente incríveis: https://www.youtube.com/watch?v=O5nskjZ_GoI>

Uma introdução às Tabelas de Lógica e Verdade: https://medium.com/i-math/intro-to-truth-tables-boolean-algebra-73b331dd9b94

NAND Logic, para compreender melhor como os circuitos eléctricos podem realizar operações lógicas: https://en.wikipedia.org/wiki/NAND_logic

A página da Wikipédia para ASCII: https://en.wikipedia.org/wiki/ASCII

A página da Wikipédia para Código Binário com um breve histórico de aritmética binária: https://en.wikipedia.org/wiki/Binary_code

Se quiseres ir mais fundo, aqui está um óptimo lugar para começar: https://softwareengineering.stackexchange.com/questions/81624/how-do-computers-work/81715

Obrigado pela sua leitura até agora.

Deixe uma resposta

O seu endereço de email não será publicado.