Executando verificação de segurança...
26

Conceito de Garbage Collector (GC) explicado para uma criança!

Eu tive recentemente o desafio de explicar conceitos difíceis de programação para meu irmão de 13 anos. O maneiro que isso virou uma rotina, tentar explicar coisas complicadas para uma criança. Quem sabe eu esteja plantando uma sementinha para um futuro cientista da computação?

Bom, eu sou o Pedro! Mas, podem me chamar de PHP haha! Hoje quero compartilhar com vocês o roteiro que eu preparei para o meu próximo papo com meu irmão.

Eu gosto de trazer analogias para algo mais simples que fez em algum momento parte do dia a dia dele, então dessa vez eu fiz uma analogia de uma "caixa de brinquedos". Sim! Isso é extremamente importante para eu construir interesse no assunto e aos poucos iniciar nossa conversa sem intimidar ele.

Ele tem uma caixa de brinquedos, alguns brinquedos que já não brinca mais, porém, estão lá na caixa ocupando espaço que poderiam ser de novos brinquedos. Sempre quando ele joga todos os brinquedos no chão para brincar (Sim! Ele fazia muito isso haha), inclusive, esses brinquedos que ele não brinca mais, acabavam voltando para a caixa e continuavam ocupando espaço.

Logo, quando ele terminava de brincar com seus brinquedos, mesmo não brincando mais com alguns, ele os coloca de volta na caixa, certo?

Agora, combinei com ele uma regrinha nova e que para ele ganhar novos brinquedos será necessário agora liberar espaços nessa caixa dele. Assim, livrando-se de brinquedos que não são usados por um bom tempo, ganhando, portanto, um espaço novo nessa caixa. (essa caixa tinha um tamanho limitado).

Essa regrinha a mais que acabei de combinar com ele é basicamente o que o Garbage Collector faz! Muito maneiro, né? Ele acabou de aprender Garbage Collector de forma bem simples.

Vamos fechar com chave de ouro?

Um programa no computador usa a memória para guardar informações temporárias, como números e palavras, certo?. Às vezes, cria novos objetos, como listas ou jogadores de um jogo, certo? Quando esses objetos não são mais necessários, o Garbage Collector atua como ele atuou com seus brinquedos, o GC vai verificar a memória e remover os dados que não são mais usados, liberando espaço para novos dados.

Sensacional, né?

Essa conceito de "coleta de lixo" encontra-se presente em várias linguagens de programação! Inclusive, até o Javascript em seu runtime NodeJs e em navegadores possuí implementações de GC que monitoram a alocação de memória e removem objetos não utilizados de forma automática. Garbage Collector (GC) não está presente só no Javinha, também está espalhado por aí na computação haha! O GC do C# é parte do Common Language Runtime (CLR) e funciona de maneira semelhante ao GC do Java. Até o Python também possui um coletor de lixo embutido que gerencia automaticamente a alocação e liberação de memória. Cada linguagem, claro, com sua especificidades... Mas, não deixa de ser maneiro, né?

Então é isso! Um forte abraço! Talvez isso vire um assunto mais frequente em meu perfil... Tentar explicar de forma simples nosso mundo! Valeu para quem ler até aqui!

Carregando publicação patrocinada...
2
0
1
1

Outra linguagem importante é Lua que também possui GC.
Mudando de assunto, lembrei de uma historinha para entender cache.
O cache está em toda parte, cache de memória, cache no HD, cache no sistema de arquivos do S.O., cache do Navegador, cache do website, etc.

Vamos lá, imagine um mercadinho onde toda vez que alguém pede um cigarro,
temos que ir até o estoque e entregar ao cliente, com isso perdemos bastante tempo.
Então o dono do mercadinho compra um expositor de cigarros que fica próximo ao caixa.
Quando um cliente pede cigarro, o atendente olha o expositor, vai até o estoque e invés de trazer 1 carteira de cigarro trás várias, entrega ao cliente e depois preenche parte do expositor, assim quando um próximo cliente pede a mesma marca de cigarros, o atendente pega o cigarro do expositor e não mais do estoque.
É isso, o expositor seria o cache.

1

Essas explicações dessa forma me lembraram um meme que diz: Parece que tá explicando para um "jumento". Tudo que eu precisava.
Parabens pela otima iniciativa e pela indicação do Livro.