-1

Recomeçando minha carreira. O que é um computador e como os programas rodam em memória.

Sou desenvolvedor Junior a 2 anos. Estou no auge da inteligência artificial, onde meu trabalho é basicamente eu, promptando um agente que com certeza sabe muito mais que eu, afinal, eu não sei nada.

Resolvi dar um passo para trás. Escolhi uma nova linguagem. Atualmente eu trabalho com Laravel no Backend, não por escolha, mas porque foi o que surgiu, mas sempre tive interesse em estudar .NET e o ecossistema microsoft. Pensei, por que não fazer isso agora? Tenho 25 anos e tenho tempo para dar esse passo para trás.

Não irei sair do meu trabalho, irei continuar supervisionando agentes, mas eu quero ser um engenheiro de software.

Dito isso, ontem eu tomei essa decisão. Quero ser incrivelmente bom em .NET, com ou sem inteligência artificial. Quero postar todos os dias, ou a maioria deles, o meu processo e o que eu aprendi. Portanto, abaixo irei escrever um pouco das minhas anotações de ontem e hoje.

Como funciona um computador

Sim, esse é um tópico bastante simples, mas eu disse que começaria do início. Hoje eu estudei como funciona o computador e irei descrever com minhas próprias palavras.

Basicamente, um computador é dividido pelas quatro peças principais:

CPU (Processador): É o lugar onde instruções são feitas. Busca a instrução, decodifica e executa, fazendo isso bilhões de vezes, sem parar. Inclusive, esse é o significado de "3GHz". Dentro da CPU, existem os registradores, espaços minúsculos e ultrarápidos onde é guardado os valores que estão sendo executados naquele instante.

Memória RAM: Guarda o programa que está sendo executado e os dados que está sendo utilizado. É rápido, mas volátil, ao desligar, tudo é perdido.

Armazenamento: SSD ou HDs no geral. É o local onde o dado persiste, não é perdido facilmente, a não ser que haja exclusão manual ou programada. Permite uma grande quantidade da dados, mas ao contrário da RAM, é bem mais lento.

Dispositivos de entrada e saída (I/O): É como conversar com o computador, através de mouse, teclados, entre outros conectores.

O ponto principal desse tópico é: Quanto mais próximo o item estiver do CPU, mais rápido ele é, e também menor ele é.

ComponenteVelocidade
RegistradorInstantâneo (Menos de 1 nanosegundo)
RAM100ns
SSD100.000ns
RedeMilhões de nanosegundos

Como os programas rodam na memória

Um programa é um arquivo parado no disco. Quando ele é executado, o sistema operacional copia ele para a RAM e cria um processo: O programa em execução, com sua própria área de memória. É possível ter vários processos do mesmo programa ao mesmo tempo.

O sistema operacional dá a cada processo um espaço de memória isolado. Um processo não enxerga a memória do outro. Isso é segurança e estabilidade. Se um trava, os outros continuam.

Aqui entram dois conceitos importantes nesse universo:

Stack e Heap.

Cada vez que uma função é chamada, ganha um "bloco" no topo da pilha com suas variáveis locais e o endereço de onde voltar. Quando a função termina, o bloco é removido. Organizada, automática e bem rápida, mas pequena e de tamanho definido. Isso é a Stack.

Os dados precisam viver além de uma função, ou cujo o tamanho só se sabe em tempo de execução. Por exemplo Todo new Pedido vai para o Heap. É grande e flexível, mas lento de gerenciar. Em C# quem limpa o heap é o Garbage Collector.

No caso do Heap, o Garbage Colector, só consegue limpar aquele objeto que já não é mais referenciado, como uma classe criada em loop, o GC o encontra, pois não está sendo adicionada em local algum, mas se por acaso, nós adicionarmos essa classe a uma coleção, o Garbage Collector, não vai encontra-la e isso gera um vazamento de memória.

Sendo honesto, nunca estudei muito a fundo essa parte. Eu já ouvi esses nomes, mas nunca tinha ido procurar o que eles realmente eram. Acredito que minha decisão de estudar do zero tenha sido válida. Em breve posto mais conteúdo e aprendizado sobre isso.

Carregando publicação patrocinada...