Entendendo o computador: CPU, RAM e HD

Um programador e estudioso muito importante chamado Edsger Dijkistra comparava o computador com lunetas, ele dizia:

“A ciência da computação tem tanto a ver com o computador quanto a astronomia tem com o telescópio. Ambas não estudam a ferramenta, mas o que é possível fazer com ela”.

Eu concordo com a citação. O foco de um programador sempre será o código, mas existem certos entendimentos sobre o computador que ajudam muito no início da carreira. Vamos nesse post entender como algumas partes do computador se encaixam no desenvolvimento de softwares.

Memória RAM

A memória RAM, ou memória principal, é o lugar onde informações ficam gravadas enquanto o computador está ligado. Podemos definir a RAM como um grande armário cheio gavetas de diferentes tamanhos.

Quando declaramos uma variável numa linguagem de programação, estamos pedindo ao computador para reservar um espaço na memória, ou seja, guardar um valor em uma dessas gavetas. Dependendo da linguagem e do valor pedido, será preciso uma gaveta maior ou menor.

Se seu programa vai rodar por muito tempo, pode ser importante avisar para a memória que certas variáveis não serão mais usadas, assim a memória irá “limpá-la”. Esse é um bom assunto pra tratarmos em um outro post.

Quanto maior o tamanho da sua memória RAM, melhor o computador vai se comportar com vários programas rodando simultaneamente, já que cada um deles vai ocupar parte da RAM (mas não só dela, como veremos a frente).

Então quando você está com um programa aberto, por exemplo um bloco de notas, mesmo não salvando o arquivo, provavelmente o programa está utilizando espaços da memória RAM, mas quando você quer salvar o arquivo para utilizá-lo posteriormente, mesmo que desligando o computador, o programa precisará utilizar outro item do computador.

Disco rígido; HD

Assim como podemos transferir uma foto para o HD do computador, um programa também pode salvar, ou persistir, qualquer arquivo que ele ache necessário posteriormente. No nosso exemplo do bloco de notas, ele salvaria o arquivo num HD.

Também há casos menos óbvios, como por exemplo, quando você está vendo um vídeo na internet, ele poderia na verdade estar baixando o vídeo para o seu computador e reproduzindo ele ao mesmo tempo.

Apesar dessa vantagem de ter o dado salvo mesmo com o computador desligado, o acesso à informação custa mais para o computador. O que isso quer dizer? Que quando você pede para um computador ler uma informação do HD ele demora muito mais que se estivesse na memória RAM.

CPU

A CPU, ou o processador, é uma parte importantíssima para o desenvolvedor de software, pois ela é responsável por fazer as operações do computador. Por exemplo, se você pretende pegar dois valores da memória, somá-los e exibi-los na tela, o processador precisará realizar cada uma dessas etapas.

Se você está numa planilha com milhares de linhas, e precisa aplicar uma fórmula em todas as linhas, quanto melhor for seu processador, mais rápido será essa operação. Por isso acabamos medindo uma qualidade da CPU pela velocidade em GHz (giga hertz).

O processador também possui áreas que trabalham como memória, que são chamados de registradores. Eles são usados durante toda a operação que o chip realiza.

Custos

Cada uma dessas partes do computador tem um custo financeiro diferente, por exemplo, hoje você já encontra HDs que ocupam terabytes, mas não conseguimos encontrar uma memória RAM desse tamanho, e se encontrássemos, seria muito caro.

Na imagem ao lado, vemos um gráfico que mostra quais partes tem um custo financeiro maior e quais tem um alta capacidade de armazenamento.

Enquanto estamos programando é importante pensarmos no uso de memória, processamento e etc. Pois isso faz com que nosso código seja mais rápido ou ocupe menos espaço, que é um assunto que vamos tratar em um novo post, sobre complexidade de algoritmos.