web-dev-qa-db-fra.com

Est-il essentiel d'apprendre d'algorithmes pour être un véritable programmeur?

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

Maintenant, je commence à apprendre Python (un vrai langage de programmation), car je dois utiliser matplotlib. Cela a-t-il un sens de commencer par lire a Python ALGORITHM livre puis apprendre matplotlib and Numpy ou dois-je sauter à Matplotlib et à Numpy?

Meilleures salutations,

22
André

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

Il est essentiel de comprendre le développement d'algorithmes afin que vous puissiez programmer plus efficacement et écrire de meilleurs programmes. Démarrer Vous devriez au moins connaître les bases des concepts tels que le flux de contrôle (peut-être via Automaton de l'État, mais ce n'est pas toujours nécessaire) et la grosse notation et comment cela peut affecter les performances.

35
Andrew Arnold

La réponse est à la fois oui et non. Vous n'avez pas besoin de connaître les détails de la façon dont différents algorithmes fonctionnent ou de la théorie derrière eux - c'est le travail de scientifiques informatiques - mais vous devez connaître les bases, telles que les algorithmes disponibles pour résoudre une tâche particulière et lequel est le meilleur 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 une personne uniquement pour faciliter la vie des autres. Vous n'avez certainement pas besoin de connaître les algorithmes qui sont allés la construire juste pour l'utiliser.

18
casablanca

Oui, afin que vous compreniez comment appliquer une approche sur 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 sont là-bas, vous perdrez du temps à inventer une solution potentiellement plus faible et ne comprenez même pas pourquoi c'est plus faible.

7
jmq

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

Bonne chose à propos des algorithmes est que c'est une programmation de langage indépendant, alors apprenez la théorie une fois et vous pouvez la mettre en œuvre dans n'importe quelle langue. Voici un bon site Web que j'ai construit pour commencer à apprendre de: www.ambesty.com Ils utilisent Java mais il est livré avec un exemple de code à apprendre. Ils offrent des algorithmes d'ADT et de tri simples à des algorithmes de compression de données tels que des algorithmes de compression de données. Lire très intéressante. Bonne chance

3
ailan

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 d'exemple pour un algorithme.

Alors ne craignez pas. 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 préférable de connaître les "motifs" de conception. Après les algorithmes de base et les structures de données seront implémentés dans votre cadre de choix, mais les motifs ne seront probablement pas ...

1
Carsten

Selon votre PHP Experience, Si vous êtes au stade où vous pouvez adapter les concepts de programmation de base d'une langue à une 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 de plonger plus profondément. Je recommande cette commande parce que

  • c'est moins de temps
  • vous probablement N'appliquez pas tous les algorithmes que vous avez lus sur
1
J.K.

Si vous développez des applications métier (uniquement), demandez à apprendre les bases uniquement, telles que des listes, des files d'attente, le tri, la recherche de chaînes, etc. Pour que vous puissiez apprendre la terminologie, comment la performance est affectée et mesurée. Une meilleure utilisation de votre temps serait de se concentrer sur la nouvelle technologie, OO modèles, conception efficace de la base de données, application. Méthodologies de développement, etc.!

1
NoChance

Avant de commencer à l'université, je croyais que j'étais un programmeur assez décent et j'ai eu quelques années d'expérience de travail. Mais après avoir appris d'algorithmes et de données de données à l'université, je pense que c'est une connaissance que vous devez avoir! C'est essentiel pour tout ce que vous faites. Même si vous ne pouvez pas utiliser cette connaissance directement tous les jours, ce sera toujours au sommet de votre tête et cela fera de vous un meilleur programmeur.

Vous apprenez beaucoup sur la performance, et même si la performance n'est généralement pas numéro un, sachant que les algorithmes vous empêcheront de faire des choses stupides, avec une très mauvaise performance. Même si la performance n'est pas la numéro un, il n'ya aucune raison de ne pas utiliser ces connaissances pour prendre les bonnes décisions.

0
Niklas H

Apprendre python Tout d'abord, si vous en avez envie, vous pouvez étudier des algorithmes; parce que des algorithmes ne sont pas python spécifiques - ils sont générales toutes les langues.

0
eggie5