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

Como se estuda estruturas de dados?

Olá dev! eu sou estudante de programação, e utilizo python; agora estou na parte do estudo de estruturas de dados, e tendo como base o roadmap de python do roadmap.sh (na parte 'Datastructures and Algorithms') vi algums algoritimos e estruturas que vou começar a estudar. Porém, me veio uma dúvida... Como posso dizer que "aprendi" aquela estrutura?

Pode parecer óbvio, mas acredito que para aprender devo:

  • Entender o funcionamento da estrutura;
  • Suas aplicações práticas;
  • Quando se deve utilizar;
  • E sua escalabilidade;

Minha dúvida é se há algo mais a ser estudado, quero aprender tudo do jeito certo para ser um bom programador. Me ajudaria muito se você pudesse dizer quais estruturas você aprendeu primeiro.

Acho que não preciso criar minha propria implementação das estruturas, creio que devo focar em entendê-las e em como usá-las.

Espero que possa entender minha dúvida. Obrigado.

6

Olá!

Sua jornada no estudo de estruturas de dados é essencial para se tornar um desenvolvedor eficiente. Antes de mais nada, para responder à sua dúvida "se há algo mais a ser estudado", comece consultando "Introduction to Algorithms" (CLRS) e "The Art of Computer Programming" de Knuth. Até que você tenha resolvido todos os exercícios desses livros, há mais para estudar!

Ao embarcar no estudo de estruturas de dados e algoritmos, é crucial não encarar esse processo como um estudo de curto prazo, que se conclui em apenas alguns meses, e depois você segue em frente. Pelo contrário, trata-se de um compromisso de longo prazo. Se você deseja realmente aprender e dominar esses conceitos, prepare-se para dedicar-se consistentemente pelos próximos anos.

Vamos abordar dois aspectos fundamentais para avaliar seus conhecimentos estruturas de dados e como elas funcionam.

Como Usar Estruturas de Dados e Algoritmos

Após conhecer estruturas de dados básicas em Python como listas, dicionários, conjuntos, filas. Aprenda a aplicá-las em problemas comuns. Sites como CodeRank e HackerElite oferecem exercícios práticos. Tente resolver problemas variados para entender melhor quando e como usar cada estrutura. Resolver consistentemente problemas de nível avançado é um indicativo que você tem um domínio considerável sobre o assunto.

Considere estudar livros como "Elements of Programming Interviews" ou "Cracking the Coding Interview". Esses livros focam em problemas comuns em entrevistas técnicas, que são solucionados com uso correto de estruturas de dados e algoritmos.

Como as Estruturas de Dados e Algoritmos Funcionam

Uma excelente maneira de entender profundamente as tabelas hash é analisar o código-fonte em C do dicionário do Python. Pode parecer complexo no início, mas persista no aprendizado. Antes de desistir, implemente sua própria tabela hash em C do zero. Isso é o básico para qualquer aspirante a engenheiro de software.

Depois implmente uma Árvore B, esse desafio é muito maior. Pode usar Python para essa tarefa. Para tirar 10 precisa implmentar a operação de remoção. Pontos extras se lidar com acessos concorrentes.

Isso não apenas é um ótimo treino para suas habilidades de codificação, fornece insights valiosos sobre o funcionamento destas estruturas, mas o mais importante, é que tudo se resume a aprender a resolver problemas, a essência do trabalho de um engenheiro.

2

Opa! Sei que o estudo de algorítimos e estruturas de dados é algo de longo prazo; como eu disse, quero realmente estudar tudo do jeito certo para ser um profissional qualificado; e certamente seu concelho vai me ajudar, muito obrigado pelo comentário tão completo!

Sei que o caminho é difícil, mas vou estudar e me dedicar pra alcançar meu objetivo, já vou procurar os livros recomendados. valeu!

1
1

Se aplica sim amigo, esses conhecimentos, assim como a lógica de programação, são agnósticos de linguagem, você pode aplicar em praticamente qualquer uma.

1

Cara, dizer que vai levar "meses" pra fazer todos os exercícios do "The Art of Computer Programming" me fez rir.

Na empresa que eu trabalhava, tinha esta série de livros (que é caríssima) e sinceramente é impossível fazer todos os exercícios deste livro, ele é gigante.

Aliás, tem uma história até que o Bill Gates disse que se alguém já leu todo o livro pra mandar o curriculum diretamente pra ele.

O que eu vejo com estruturas de dados é a capacidade de entender as principais estruturas e principalmente experimentar usando elas para resolver desafios DIARIAMENTE.

1

Ninguém disse que levaria meses para fazer todos os exercícios deste livro.

Até porque, alguns exercícios inclusive, são problemas em aberto, sem solução conhecida, que precisariam de uma disertassão de doutorado inteira para propor uma resposta.

Apenas mencionei que até que tenha feito isso existe mais conteúdo para estudar!!!

2

Hmmm, posso ter me expressado mau na mensagem acima, hahaha... Me desculpe por isso...

Aquele livro é sensacional, embora eu não tenha entendido nada dele... e o que você disse sobre dissertação de doutorado, eu acho até pouco... vai uns pós doutorados com certeza.

Mas as dicas são boas sim, estudar algoritmos é igual se alimentar bem, é difícil no começo, requer gastar um pouco de tempo e fazer algumas escolhas, mas faz uma diferença enorme e o mais incrível é que muitas vezes a gente nem percebe!

3
1
2

Além de todos os materiais que o pessoal está compartilhando, acho que o ideal para dominar qualquer coisa em programação é a prática deliberada.

Faça um repositório no Github e implemente cada estrutura de dados que você estudar, mas de cabeça, não copiando pseudocódigo de livro. Enquanto você não conseguir implementar a estrutura de cabo a rabo, não creio que dá para você afirmar que aprendeu ela.

2

Dá uma pesquisada sobre Programação Competitiva, a comunidade do Brasil eh bem boa. Sites como Codeforces, Atcoder são mais focados em competição, já leetcode e hackerrank em entrevistas de emprego. Neles têm vários problemas envolvendo estruturas de dados e algoritmos, penso que se tu é capaz de resolver problemas mais complicadinhos usando uma ED, pode dizer que aprendeu ela, até pq entender como funciona não diz muita coisa.

Pra entender como funciona tem os livros que mencionaram, aulas de universidades no youtube, blogs do codeforces, etc.

Particularmente gosto bastante de resolver problemas de competitiva, então meio que aprender EDs é natural para resolver mais problemas.

1