Est-il essentiel d'apprendre les algorithmes pour être un vrai programmeur? [fermé]

21

Je suis programmeur PHP, et jusqu'à présent je n'ai pas eu besoin d'apprendre les algorithmes ...

Maintenant, je commence à apprendre Python (un vrai langage de programmation), car j'ai besoin d'utiliser matplotlib. Est-il judicieux de commencer par lire un livre d'algorithmes Python, puis d'apprendre matplotlib et numpy ou dois-je passer à matplotlib et numpy?

Meilleures salutations,

André
la source
2
Si vous n'apprenez pas les algorithmes et ne comprenez pas ce qui est le plus approprié pour une tâche donnée, vous vous retrouvez avec des réponses comme celles de cette question: stackoverflow.com/questions/5498865
kdgregory
1
Vous avez probablement déjà implémenté quelques algorithmes, sans vraiment connaître leurs noms ou la théorie derrière eux. Il est difficile de croire que quiconque puisse faire une programmation utile sans implémenter certains algorithmes.
tdammers
2
algorithme est juste un sens commun de la façon optimale de faire les choses . En programmation, vous devez utiliser le minimum de ressources et garantir les performances, vous l'utilisez donc tout le temps. BTW, qu'est-ce que cela signifie Python (un vrai langage de programmation) ??? PHP est aussi bon que tout le reste. C'est juste que c'est plus un langage de script Web et faites attention, c'est le meilleur dans les affaires depuis très longtemps.
Pankaj Upadhyay

Réponses:

35

Absolument. Sans connaître les algorithmes, comment allez-vous comprendre comment un programme fait ce qu'il fait?

Il est essentiel de comprendre le développement d'algorithmes pour pouvoir programmer plus efficacement et écrire de meilleurs programmes. Pour commencer, vous devez au moins connaître les bases de concepts tels que le flux de contrôle (peut-être via un automate d'état, mais ce n'est pas toujours nécessaire) et la notation Big O et comment cela peut affecter les performances.

Andrew Arnold
la source
Bien que je sois d'accord, combien faut-il savoir sur l'échelle de la passation d'une introduction aux algorithmes dans un collège communautaire local la deuxième fois pour être Donald Knuth?
Job
Bonne vieille notation Big Ohno ...
1
Je suis d'accord avec l'importance de connaître la complexité de l'algorithme ("notation grand O"). Cependant, je suis fortement en désaccord avec la réponse "absolument" à "est-il essentiel d'apprendre les algorithmes pour être un vrai programmeur"; en fait, bien apprendre Python est beaucoup plus utile que de savoir comment trier une liste (puisque Python trie les listes pour vous) ou comment Python gère les dictionnaires (dont le programmeur Python a jamais eu besoin pour implémenter un mécanisme de hachage?), etc. Historiquement, les gens ont appris les algorithmes parce qu'ils sont du langage ne les a pas fournis dès le départ; l'ère moderne est différente.
Eric O Lebigot
17

La réponse est à la fois oui et non. Vous n'avez pas besoin de connaître les détails du fonctionnement des différents algorithmes ou la théorie qui les sous-tend - c'est le travail des informaticiens - mais vous devez connaître les bases, telles que les algorithmes disponibles pour résoudre une tâche particulière et lequel est le mieux pour une situation donnée.

Dans votre cas, vous pouvez simplement commencer à utiliser les bibliothèques que vous avez mentionnées - elles ont été construites par quelqu'un uniquement pour faciliter la vie des autres. Vous n'avez certainement pas besoin de connaître les algorithmes qui ont servi à le construire juste pour l'utiliser.

casablanca
la source
2
+1 pour un tel commentaire "moderne". Les algorithmes d'apprentissage et d'enseignement devraient être réservés aux personnes qui ont vraiment besoin de les mettre en œuvre.
Eric O Lebigot
6

Oui, pour que vous compreniez comment appliquer une approche plutôt qu'une autre. Vous ne voulez pas non plus "réinventer la roue" car il existe de nombreux algorithmes existants qui fonctionnent déjà. Si vous ne savez pas qu'ils existent, vous perdrez du temps à inventer une solution potentiellement plus faible et vous ne comprendrez même pas pourquoi elle est plus faible.

jmq
la source
3

Les algorithmes pour un programmeur sont un marteau pour un forgeron. Bien sûr, vous pouvez vous en passer et utiliser des alternatives pour faire le travail, mais si vous voulez le faire correctement et bien le faire, il est essentiel.

Une bonne chose à propos des algorithmes est qu'ils sont indépendants du langage de programmation, alors apprenez la théorie une fois et vous pouvez l'implémenter dans n'importe quel langage. Voici un bon site Web que j'ai construit pour commencer à apprendre: www.ambesty.com Ils utilisent Java mais il est livré avec un exemple de code pour apprendre. Ils offrent des algorithmes ADT et de tri simples à des algorithmes plus complexes comme les algorithmes de compression de données. Lecture très intéressante. Bonne chance

ailan
la source
1

Selon votre expérience PHP, si vous êtes à un stade où vous pouvez adapter les concepts de programmation de base d'un langage à un autre, faites-le . Ce serait le moyen le plus efficace de passer votre temps.

Lisez ce que vous devez faire pour intégrer Matplotlib , numpy et Python. Et puis si vous êtes coincé, continuez à plonger plus profondément. Je recommande cette commande car

  • c'est moins de temps
  • vous n'appliquerez probablement pas tous les algorithmes que vous lisez
JK
la source
1

Si vous développez des applications métier (uniquement), apprenez uniquement les bases, telles que les listes, les files d'attente, le tri, la recherche de chaînes, etc. afin d'apprendre la terminologie, la manière dont les performances sont affectées et mesurées, etc. Une meilleure utilisation de votre temps serait de vous concentrer sur les nouvelles technologies, les modèles OO, la conception efficace de bases de données et l'application. méthodologies de développement, et autres!

Aucune chance
la source
1

Ok - je sais que ce n'est pas exactement ce que vous vouliez dire, mais vous savez déjà (comment faire) des algorithmes. Selon votre définition, vous pouvez prendre chaque programme comme exemple d'algorithme.

Alors n'ayez pas peur. Il est utile de connaître les algorithmes de base, il est plus utile de connaître les structures de données de base, mais il est encore mieux de connaître les «modèles» de conception. Après tout, les algorithmes de base et les structures de données seront mis en œuvre dans le cadre de votre choix, mais les modèles ne le seront probablement pas ...

Carsten
la source
0

Apprenez d'abord python puis si vous en avez envie, vous pouvez étudier des algorithmes; Parce que les algorithmes ne sont pas spécifiques à python - ils sont généraux dans tous les langages.

eggie5
la source
0

Avant de commencer à l'Université, je pensais que j'étais un programmeur assez décent et j'avais quelques années d'expérience de travail. Mais après avoir appris les algorithmes et les infrastructures de données à l'Université, je pense que c'est la connaissance que vous devez avoir! C'est essentiel pour tout ce que vous faites. Même si vous n'utilisez pas directement ces connaissances tous les jours, elles resteront au sommet de votre tête et feront de vous un meilleur programmeur.

Vous en apprenez beaucoup sur les performances, et même si les performances ne sont généralement pas numéro un, la connaissance des algorithmes vous empêchera de faire des choses stupides, avec de très mauvaises performances. Même si la performance n'est pas numéro un, il n'y a aucune raison de ne pas utiliser ces connaissances pour prendre les bonnes décisions.

Niklas H
la source