- Published on
Depois do Hello World, a estrutura de dados define o custo do código
- Authors

- Name
- Michel Fernandes
- @michelpf

O passo seguinte ao Hello World não é escrever programas maiores, mas entender o custo das escolhas que parecem triviais. Fábio Akita usa a correção de seu próprio vídeo sobre C como ponto de partida para mostrar que detalhes como stack, heap, ponteiros e segmentos de memória não são preciosismo: eles explicam por que o mesmo resultado pode ter custos muito diferentes quando o volume de dados cresce.
A conversa fica concreta quando ele compara arrays e listas ligadas. Um array permite acessar uma posição diretamente, desde que todos os elementos tenham tamanho previsível e estejam em sequência. O problema aparece quando a coleção precisa crescer sem que se saiba o tamanho final: alocar outro array, copiar elementos e liberar o anterior pode desperdiçar processamento e memória. A lista ligada inverte a vantagem. Inserir elementos é simples e barato, inclusive no meio da lista, mas procurar um item exige caminhar nó por nó.
O hash table entra como uma solução intermediária, não como uma resposta mágica. Akita mostra uma implementação rudimentar em C combinando um array fixo com listas ligadas para tratar colisões. A chave vira um número por uma função de hash; esse número aponta para uma posição do array; se duas chaves caem no mesmo lugar, os nós são encadeados. O mecanismo explica por que dicionários em Python ou objetos em JavaScript parecem simples na sintaxe, mas dependem de estruturas sofisticadas, geralmente implementadas em C ou C++, para entregar desempenho aceitável.
A consequência prática é menos confortável do que escolher uma linguagem ou framework favorito. Um bubble sort pode parecer suficiente com dez elementos e virar um problema com milhares. Um quicksort é bom no caso médio, mas pode piorar em certos dados. A notação Big O, com todas as ressalvas que ele menciona, serve para lembrar que código não roda no abstrato: roda sobre entradas específicas, com memória finita e piores casos possíveis. Aprender estruturas de dados e complexidade é o que permite decidir quando a solução simples continua simples e quando ela apenas adiou o custo para a produção.
Referências encontradas
Livros
- The C Programming Language By Brian W. Kernighan Dennis M. Ritchie(2010-11-17), de Brian W. Kernighan; Dennis M. Ritchie — Ver livro na Amazon
- O Mítico Homem-mês: Ensaios Sobre Engenharia de Software, de Frederick P. Brooks Jr. — Ver livro na Amazon
- Art Of Computer Programming, The, Volumes 1-4b, Boxed Set: Volume 1-4b, de Donald E. Knuth — Ver livro na Amazon
- Algoritmos - Teoria e Prática, de Thomas H. Cormen; Charles E. Leiserson; Ronald L. Rivest; Clifford Stein — Ver livro na Amazon
Este post contém links de afiliado. Se você comprar por eles, eu posso receber uma pequena comissão sem custo adicional para você.