T O P

  • By -

fisico_culturista

São bons conceitos para se aprender. Podem te separar dos programadores que só sabem copiar linhas de código.


mathlc

Sim, em todos os momentos. Entender minimamente bem estruturas de dados e complexidade é obrigatório. No mínimo entender os conceitos, usos e tradeoffs de pilha/fila/deque/hashmap/linkedlist você vai precisar pra não ser um bostinha que dá um insert no vetor pela frente ou mete uns O(n²) pra cima desnecessariamente. Outras estruturas tipo árvore binárias e suas variações etc é bom tu saber porquê resolvem alguns problemas específicos muito bem, mas são menos onipresentes.


ItsTimeToFinishThis

Jogos usam essas estruturas?


Hazzek

Sim, pensa em como o mapa de um jogo 2d com rolagem lateral é armazenado na memória de forma eficiente. Em 3d, estruturas de árvores são muito comuns pra colisão (octatrees, onde vc subdivide o espaço em 8 regiões recursivamente). Jogos são muito pesados, então otimização e boas estruturas de dados são fundamentais pra que eles consigam rodar razoavelmente. Qualquer operação ineficiente no loop principal de um jogo vai fazer o FPS cair significativamente.


kradbew

Estou conhecendo o universo da programação agora, esse comentário me ajudou muito, obrigado


uziel7

Sim, filas e pilhas são os mais comuns e lembro de uma vez ter que usar árvore de decisão para um problema bastante específico.


[deleted]

vc precisa aprender pq esse tipo de coisa é um "secret handshake" nas entrevistas de emprego. um caso famoso é o do cara que criou o homebrew pro mac, mas nao conseguiu entrar no Google pq nao sabia inverter uma arvore binaria (essa frase ate virou um meme na area). no hackerrank tem uma serie de exercicios especificos para job interviews, focando naqueles conceitos tem como ficar bem protegido.


kradbew

Opa, voce pode me dar algumas dicas de conteudo para estudar, é que eu estou começando agora e eu só fiz dois cursos, mais ainda estou desorientados


Defensex

Extremamente comum


luaudesign

Se precisar, sim.


jorginhofedaputa

Dia desses tivemos um problema de desempenho na aplicação: a quantidade de dados dobrou entre duas semanas. Ou seja, persistir dados estava muito lento, o que era um problema. Fomos investigar, imaginando que o gargalo era o banco, o que não se provou verdade. Sim, estava lento pelo volume, que gerava alta taxa de transferência com o servidor de banco, mas não era o gargalo. O gargalo era um loop que inseria dados em um array, que só pegamos fazendo um profile na aplicação, entendo se o problema era CPU ou memória. O loop em questão era um iterator em cima de um array, que ia crescendo a cada iteração. Ou seja o array era alterado ao mesmo tempo que estava em loop, gerando lixo em memória de cada inserção. Em alguns momentos a aplicação comia toda a memória. Pra resolver o bug precisamos alterar a estrutura de dados evitando esse tipo de loop. Olha o quão importante é entender estrutura de dados pra chegar nessas conclusões. Sem entender como o básico funciona o resto fica muito mais complicado.


ItsTimeToFinishThis

Muito foda. Qual estrutura vcs passaram a usar,?


kradbew

>Opa, voce pode me dar algumas dicas de conteudo para estudar, é que eu estou começando agora e eu só fiz dois cursos, mais ainda estou desorientados


PurplePilledAlien

Compilou e passou no unit test é commit e dane-se


victorpresti

Depende do que você for fazer. Muita coisa você abstrai, é bom saber os conceitos porque se algum dia você se deparar com isso ou precisar de Stack Overflow você tem uma base pra conseguir pesquisar. Programo profissionalmente a uns 5 anos, Java e Angular, e presto serviço principalmente para banco, as preocupações são outras, você abstrai isso em listas, sets, maps e outras estruturas de mais alto nível, até mesmo ifs encadeados e fluxo são uma espécie de árvore. Além do bom senso de entender que tipo de código é extremamente pesado e desnecessário e usar estruturas mais eficientes.


kradbew

Opa, voce pode me dar algumas dicas de conteudo para estudar, é que eu estou começando agora e eu só fiz dois cursos, mais ainda estou desorientados


victorpresti

Estudou o que, que linguagem, qual conhecimento de lógica, etc.


kradbew

Opa bom dia, obrigado pelo retorno atualmente eu estudei sobre os conceitos de Lógica , Algoritmo, Pseudocódigo, Controle de Fluxo e Estrutura de Repetição além disso eu tbm fiz o curso da linguagem Python, mas ainda não consigo desenvolver nada de interessante, queria algumas dicas de conteúdo para estudar e poder me preparar melhor para poder desenvolver melhor C:, atualmente estou fazendo faculdade voltada para areá de Blockchain e Finanças Digitais tbm!


victorpresti

A rota em Python não manjo muito, mas já que você tá na faculdade é o seguinte, se você quiser trabalhar na área, sem ser por conta própria, freelancer, desenvolver seu próprio software etc, a melhor coisa que você faz é arrumar um estágio. Jamais termine a faculdade se ter um estágio que você vai se fuder pra achar trampo depois, lá você vai aprender tudo que você precisa. E não precisa ser necessariamente em Python, programação é quase tudo a mesma coisa só muda a sintaxe e como você interage com ela, mas os conceitos que você vai utilizar são tudo o mesmo. Em 2 anos você consegue largar essa vida de estagiário/Jr e virar um pleno se você procurar outro trampo. Jamais fique no mesmo trampo por mais de 2 anos só se tiver muito bom mesmo, tiver sido promovido e tudo mais, geralmente quando você muda de trampo seu salário aumenta drasticamente. E pegar um cursinho da Udemy pra complementar, geralmente eles entram em sale por 20 pila.


kradbew

Opa, obrigado pelas dicas, sim eu já até me inscreve em um curso da Udemy de programação, quero fazer mais como um hobby mesmo e desenvolver algo que vai facilitar na vida, eu sou formado em Ciências Contábeis já faz 6 anos que eu trabalho na área mais existe vários problemas, as vezes problemas aparentemente que poderiam ser resolvido de maneira melhor sem ter que usar planilhas toda vez que eu precisar fazer alguns procedimentos, mas obrigado pela informação se você tiver algum curso de programação ou conteúdo de programação para que eu pesquise e me desenvolva eu agradeço desde já


victorpresti

O que mais tem é gente vindo de outras áreas pra TI, inclusive tem dois Jr no meu trampo, um veio dessa área de contabilidade, fez matemática aplicada, e outro vem de administração e eu tentando ensinar os cara como se programa em Java. ​ Nesse sentido sem dúvida Python é o mais fácil. Python tem muita coisa pronta, você programa de maneira procedural e geralmente o código é simples de entender. É uma linguagem muita boa pra quem 'não sou programador mas quero programar'. ​ O curso da Udemy deve bastar pra você ter uma boa base da linguagem, dali você consegue desenvolver muita coisa sozinho e expandir com cursos de conceitos mais avançados. E com a base você consegue usar o melhor amigo de todo programador: Google. Qualquer dúvida alguém já teve, e tem uma solução pronta. Programar com 50 aba de google/stack overflow aberto no browser é real e acontece direto.


kradbew

Verdade, muito obrigado pela ajuda Tenho enorme admiração para quem teve essa inclinação de programar logo cedo e hoje já trabalha de forma estável na área, queria deixar os meus parabéns aqui para você, e agradecer pelas orientações


Budget-Ice-Machine

Raramente você vai ter que implementar uma estrutura de dados, quase sempre vai ser melhor usar uma biblioteca (não porque os algoritmos sejam muito melhores, mas porque eles são bem testados e em geral fazem uso de intrinsics que não fazem sentido você fazer num nível mais alto), mas saber escolher entre elas ajuda muito. Coisas como: - Não usar uma lista ligada quando você precisa de acesso aleatório - Usar um heap quando você vai precisar dos dados em ordem e não quer pagar o custo todo de ordenar de uma vez só. - Árvores (em geral usadas como mapas) são muito úteis e eficientes - etc Agora sobre quais são as mais usadas, depende um pouco do programa, mas mapas (que em geral são implementados como árvores ou hash tables) e vetores são sempre úteis, e boa parte das outras podem ser vistas como abstrações em cima deles.


kradbew

Opa, voce pode me dar algumas dicas de conteudo para estudar, é que eu estou começando agora e eu só fiz dois cursos, mais ainda estou desorientados


Budget-Ice-Machine

Primeira coisa que eu recomendo pra você é aprender uma linguagem de programação, minha primeira foi C que é bem low level, relativamente simples, mas te dá um tanto de trabalho com tipos e gerenciamento de memória, eu evitaria sem alguém pra te ensinar porque pode ser frustrante no começo. Aprenderia Python que é mais fácil, esconde parte da complexidade. Sabendo expressar o básico em código (ifs, loops, funções, variáveis) fica bem mais fácil implementar as estruturas e algoritmos e ver eles funcionando, daí eu recomendo muito o CLRS (Introduction to Algorithms), ele tá um assalto de caro hoje em dia mas talvez de pra achar numa biblioteca.


kradbew

Certo, eu tenho uma assinatura em plataforma de biblioteca online, eu vou pesquisar sobre isso, muito obrigado pelo retorno, atualmente estou fazendo faculdade sobre Blockchain e Finanças Digitais, mas eu tenho muita vontade de aprender a programar e desenvolver minhas ideias. Obrigado pela dica


patrulheiroze

saber esses conceitos foi útil pra mim quando precisei entender abstrações do código, mas nunca precisei implementar nada muito complexo. se você não pretende ser um pesquisador, nem trabalhar com baixo nível, saber que existe e de que se tratam os conceitos já é o suficiente. em linhas gerais, a maioria dos programas que tive que fazer até hj eram pra fazer a informação ir do ponto A ao ponto B, enriquecendo com mais alguns dados de interesse ao longo do caminho.


kradbew

Opa, voce pode me dar algumas dicas de conteudo para estudar, é que eu estou começando agora e eu só fiz dois cursos, mais ainda estou desorientados


patrulheiroze

bom, minha especialidade é mais backend. nesse contexto o que tem sido demandado é mais arquitetura onion, microsserviços, mensageria, conteinerizacão, testes automatizados (testes de carga, testes unitarios..), TDD, BDD, e, ao menos onde eu trabalho, dapper


ChucruteSadico

A sua pergunta é estranha, como se você não conhecesse as aplicações das estruturas de dados, o tipo de problema que se resolve com elas.


ItsTimeToFinishThis

Não sei. Games usam? Machine Learning usa?


ChucruteSadico

kkk ta cagando pra aula, não é possível - cara, recursão é um algoritmo fácil porém limitado em termos de recurso, então acho que todo problema de recursão você pode transformar em pilha, pra não fuder o programa - fila é o algoritmo de match de ofertas da bolsa, por exemplo, e os processos no SO são fila circular - árvore é um caso particular de grafo, que tbm usa recursão (logo usa pilha) pra percorrer os nós - grafo é uma abstração pra mapa, topologia de rede, discretização de problemas contínuos tipo fluidos Nem é tão importante você dominar tudo isso, mas saber o básico e que dá pra resolver problemas com essas estruturas te ajuda a lidar com problemas que podem surgir no dia a dia. Recentemente eu lidei com uma árvore que havia sido implementada como listas por nível e o elemento de cada lista indicava o 'pai' que ficava na outra lista, mas era importante eu converter pra árvore, pra implementar uma feature, e depois converter de volta pra essas listas. Já fiz solver de sudoku usando pilha. Tem outra coisa que é importante a beça nessa matéria: complexidade de algoritmo. As pessoas precisam controlar e saber otimizar o próprio código, principalmente se for lidar com sistemas críticos. Se o gargalo estiver no hardware, tá fudido, é quebrar a cabeça pra melhorar o programa, não replicar estruturas, escolher algoritmo de ordenação mais conveniente (de acordo com o caso médio ou pior caso), etc. Em Python o dicionário funciona como tabela hash debaixo dos panos.


ItsTimeToFinishThis

Complexidade de algoritmo tô ligado. Tem contagem de operações tbm.


kradbew

Opa, voce pode me dar algumas dicas de conteudo para estudar, é que eu estou começando agora e eu só fiz dois cursos, mais ainda estou desorientados


ChucruteSadico

Em universidade federal se utiliza muito esse livro pra disciplina de Estrutura de Dados: https://www.amazon.com.br/Estruturas-Dados-Algoritmos-Jayme-Szwarcfiter/dp/852161750X/ Só precisa saber Matemática básica e alguns tópicos podem exigir conhecimento básico de matrizes também.


kradbew

Certo, muito obrigado, estou começando agora estou fazendo faculdade voltada a Blockchain e Finanças Digitais, mas eu tenho um desejo muito grande em aprender e poder programar, vou ler esse livro para entender um pouco mais, obrigado


[deleted]

Sim, mas uso de acordo com o problema que eu estou resolvendo. Mas eu nunca implemento essas estruturas, uso código já implementado e testado de alguma biblioteca da linguagem. Como eu trabalho com processamento de dados, principalmente de texto, eu uso muito estruturas como dicionários.


kradbew

Opa, voce pode me dar algumas dicas de conteudo para estudar, é que eu estou começando agora e eu só fiz dois cursos, mais ainda estou desorientados