É essencial aprender algoritmos para ser um programador real? [fechadas]

21

Sou programador PHP e até agora não precisava aprender algoritmos ...

Agora estou começando a aprender Python (uma linguagem de programação real), porque preciso usar o matplotlib. Faz sentido começar lendo um livro de algoritmos Python e depois aprender matplotlib e numpy ou devo pular para matplotlib e numpy?

Cumprimentos,

André
fonte
2
Se você não aprender algoritmos, e entender o que é mais adequado para uma determinada tarefa, você acaba com respostas como os sobre esta questão: stackoverflow.com/questions/5498865
kdgregory
1
Você provavelmente já implementou alguns algoritmos, sem realmente saber seus nomes ou a teoria por trás deles. É difícil acreditar que alguém possa fazer qualquer programação útil sem implementar alguns algoritmos.
tdammers
2
O algoritmo é apenas um senso comum de Como fazer as coisas da maneira ideal . Na programação, você precisa usar os recursos mínimos e garantir o desempenho; portanto, você o usa o tempo todo. BTW, o que isso significa Python (uma linguagem de programação real) ??? PHP é tão bom quanto qualquer outra coisa. É apenas uma linguagem de script da web e, lembre-se, é o melhor nos negócios por muito tempo.
Pankaj Upadhyay

Respostas:

35

Absolutamente. Sem conhecer algoritmos, de que outra forma você entenderá como um programa faz o que faz?

É essencial entender o desenvolvimento de algoritmos para que você possa programar com mais eficiência e escrever programas melhores. Para começar, você deve conhecer pelo menos os conceitos básicos de fluxo de controle (talvez via autômato de estado, mas isso nem sempre é necessário) e a notação Big O e como isso pode afetar o desempenho.

Andrew Arnold
fonte
Enquanto eu concordo, o quanto alguém deve saber sobre a escala de passar uma introdução a algoritmos em uma faculdade comunitária local na segunda vez em que é Donald Knuth?
Job
Boa notação Big Ohno velho ...
1
Eu concordo com a importância de conhecer a complexidade do algoritmo ("notação O grande"). No entanto, eu discordo totalmente da resposta "absolutamente" ao "é essencial aprender algoritmos para ser um programador real"; de fato, aprender bem o Python é muito mais útil do que saber como classificar uma lista (já que o Python classifica listas para você) ou como o Python lida com dicionários (que programador Python já precisou para implementar um mecanismo de hash?), etc. Historicamente, as pessoas têm algoritmos aprendidos porque sua linguagem não os forneceu imediatamente; a era moderna é diferente.
Eric O Lebigot
17

A resposta é sim e não, simultaneamente. Você não precisa conhecer os detalhes de como os algoritmos diferentes funcionam ou a teoria por trás deles - esse é o trabalho dos cientistas da computação - mas precisa conhecer o básico, como quais algoritmos estão disponíveis para resolver uma tarefa específica e qual é o melhor para uma determinada situação.

No seu caso, você pode simplesmente começar a usar as bibliotecas mencionadas - elas foram criadas por alguém apenas para facilitar a vida de outras pessoas. Você certamente não precisa conhecer os algoritmos que foram usados ​​para construí-lo apenas para usá-lo.

Casablanca
fonte
2
+1 para um comentário tão "moderno". Os algoritmos de aprendizado e ensino devem ser reservados para as pessoas que realmente precisam implementá-los.
Eric O Lebigot
6

Sim, para você entender como aplicar uma abordagem sobre outra. Você também não deseja "reinventar a roda", pois existem muitos algoritmos existentes que já funcionam. Se você não souber que eles estão por aí, perderá tempo inventando uma solução potencialmente mais fraca e nem entenderá por que é mais fraca.

jmq
fonte
3

Algoritmos para um programador são um martelo para um ferreiro. Claro que você pode sobreviver sem e usar alternativas para fazer o trabalho, mas se você quiser fazer o que é certo e bem, é essencial.

O bom dos algoritmos é que ele é independente da linguagem de programação; portanto, aprenda a teoria uma vez e você poderá implementá-la em qualquer linguagem. Aqui está um bom site que eu estou construindo para começar a aprender: www.ambesty.com Eles usam Java, mas ele vem com código de amostra para aprender. Eles oferecem algoritmos simples de ADT e de classificação a algoritmos mais complexos, como algoritmos de compactação de dados. Leitura muito interessante. Boa sorte

ailan
fonte
1

Dependendo da sua experiência em PHP, se você estiver no estágio em que poderá adaptar os conceitos básicos de programação de uma linguagem para outra, faça-o . Essa seria a maneira mais eficiente de gastar seu tempo.

Leia o que você precisa fazer para integrar o Matplotlib , numpy e Python. E então, se você ficar preso, continue mergulhando mais fundo. Eu recomendo este pedido porque

  • consome menos tempo
  • você provavelmente não aplicará todos os algoritmos que leu sobre
JK
fonte
1

Se você estiver desenvolvendo aplicativos de negócios (apenas), aprenda apenas o básico, como listas, filas, classificação, pesquisa de cadeias, etc., para aprender a terminologia, como o desempenho é afetado e medido e assim por diante. Uma melhor utilização do seu tempo seria se concentrar em novas tecnologias, padrões OO, design eficaz de banco de dados, aplicativo. metodologias de desenvolvimento, e tal!

NoChance
fonte
1

Ok - eu sei que isso não é exatamente o que você quis dizer, mas você já sabe (como fazer) algoritmos. Dependendo da sua definição, você pode tomar todos os programas como exemplo para um algoritmo.

Então não tema. É útil conhecer os algoritmos básicos, é mais útil conhecer as estruturas de dados básicas, mas é ainda melhor conhecer os "padrões" de design. Afinal, os algoritmos e estruturas de dados básicos serão implementados em sua estrutura de escolha, mas os padrões provavelmente não serão ...

Carsten
fonte
0

Aprenda python primeiro e, se quiser, pode estudar algoritmos; Como os algoritmos não são específicos para python - eles são gerais em todas as linguagens.

eggie5
fonte
0

Antes de começar na Universidade, eu acreditava que era um programador decente e tinha alguns anos de experiência profissional. Mas depois que aprendi sobre algoritmos e estruturas de dados na Universidade, sinto que é preciso ter conhecimento! É essencial para tudo que você faz. Mesmo que você não use esse conhecimento diretamente todos os dias, ele ainda estará no topo de sua cabeça e fará de você um programador melhor.

Você aprende muito sobre desempenho e, embora o desempenho geralmente não seja o número um, conhecer algoritmos impedirá que você faça coisas estúpidas, com desempenho realmente ruim. Embora o desempenho não seja o número um, não há motivo para não usar esse conhecimento para tomar as decisões corretas.

Niklas H
fonte