En tant que programmeur débutant en Python, est-ce une bonne idée de créer et de comprendre mes propres bibliothèques avant de passer à des bibliothèques tierces avancées contenant les fonctionnalités dont j'ai besoin?
Certains projets (par exemple les frameworks web comme Django) sont probablement trop gros pour cette approche. Mais d'autres projets (par exemple Web Crawlers, bibliothèques de graphes, analyseur HTML) semblent être réalisables.
Je crains que le recours précoce à des bibliothèques tierces ne freine ma croissance.
Remarque: cette question et cette question semblent se concentrer davantage sur des programmeurs expérimentés, qui sont probablement plus axés sur l'efficacité de la réutilisation que sur l'avantage de l'apprentissage. Je pense que ma question concerne les débutants.
la source
Réponses:
C'est toujours un compromis.
En tant que programmeur débutant, vous devriez vous poser deux questions lorsque vous envisagez de réutiliser du code par rapport à réinventer la roue carrée:
Si vous n'avez pas besoin de terminer votre projet, c'est bien de faire tourner vos roues sur des problèmes complexes que d'autres personnes ont déjà résolus, car vous apprendrez quelque chose. Mais vous passerez probablement à autre chose avant de «terminer», ce qui peut ou non vous importe. D'autres projets commenceront à briller rapidement lorsque vous vous lancerez dans un domaine complexe qui semble simple jusqu'à ce que vous commenciez à essayer de le résoudre vous-même.
Ne soyez pas obsédé par l'abandon du contrôle parce que vous vous remettez à la façon de penser de quelqu'un d'autre; concentrez-vous davantage sur ce que vous essayez d'accomplir.
Si votre objectif est d'écrire un analyseur HTML parce que vous voulez comprendre comment fonctionnent les analyseurs, allez-y. Si votre objectif est d'écrire un analyseur HTML parce que vous souhaitez purifier les entrées utilisateur ou transformer des bits HTML aléatoires, vous êtes probablement concentré sur la mauvaise chose, car vous êtes probablement plus intéressé par l'application de l'analyse que par l'analyse elle-même. . Si vous avez envie d'écrire un analyseur HTML parce que vous ne voulez pas prendre le temps de comprendre la bibliothèque de quelqu'un d'autre, vous perdez probablement votre temps, car, au moins dans ce cas, je garantis que quelqu'un d'autre a passé plus de temps à comprendre comment pour résoudre ce problème efficacement que vous n'aurez. Dans des cas vraiment triviaux, vous pouvez gagner du temps en ne réutilisant pas de code, mais dans des cas complexes, à moins que la bibliothèque que vous utilisez ne suce ou que votre capacité à lire la documentation et les exemples de code ne suce,
D'un autre côté, je dirais que cela vaut la peine d'écrire votre propre bibliothèque de graphes, car vous serez plus concentré sur les algorithmes fondamentaux transférables et les structures de données que vous pourrez appliquer à d'autres domaines, même si vous finissez par utiliser la bibliothèque de quelqu'un d'autre lorsque vous travaillez sur ces problèmes.
la source
La plupart des programmeurs débutants sous-estiment largement la complexité d'un problème. Cela conduit à de nombreuses situations désagréables, mais je vais me concentrer sur une seule: elles rejettent beaucoup de bibliothèques tierces pour être "gonflées" ou "trop compliquées". Ensuite, ils essaient d'écrire leur propre code pour faire le même travail, et en font un gâchis complet, car ils ne prévoyaient pas toutes les choses qu'ils auraient à gérer.
Prenez l'exploration Web et l'analyse HTML. Vous semblez avoir une attitude plutôt désinvolte vis-à-vis de ces tâches - ce qui m'amène à croire que vous n'avez jamais essayé de les faire à une échelle très réduite. Voici une courte liste non exhaustive des problèmes potentiels qu'un véritable robot d'indexation doit gérer:
la source
C'est faux.
Le recours précoce aux bibliothèques tierces vous apprendra comment fonctionnent les bonnes bibliothèques.
Un développement prématuré est toujours une perte de temps. Écrire vos propres bibliothèques sans étudier attentivement (c'est-à-dire utiliser) les bibliothèques existantes vous condamne à réinventer la roue - mal - pour le reste de votre carrière.
J'ai passé de nombreuses heures facturables à nettoyer ces dégâts.
la source
Cette phrase, qui est la première, est très logiquement problématique pour moi:
Comment pouvez-vous croire que vous pouvez écrire efficacement des bibliothèques de fonctionnalités avancées (votre mot) en tant que débutant qui seront aussi correctes, complètes et testées que les bibliothèques existantes?
Cela ne mentionne même pas l'énorme quantité de temps que vous perdriez à réinventer une roue que vous ne comprenez pas en tant que débutant, abandonnera finalement lorsque, si vous êtes chanceux, vous réalisez que vous êtes au-dessus de votre tête et devez apprendre la quitter la bibliothèque quand même.
Prenez par exemple l'analyse HTML, vous mentionnez cela comme possible, il n'y a aucun moyen de faire un meilleur travail que Beautiful Soup en tant que débutant. Clair et simple, vous échouerez. Les choses que vous pensez réalisables ont d'énormes problèmes de complexité que vous ne prenez pas en compte, vous ne connaissez pas le domaine du problème avec suffisamment de détails pour comprendre la complexité, vous êtes voué à l'échec juste à partir de cela.
Mon opinion est d'apprendre ce que d'autres personnes ont fait et ont déjà résolu votre problème jusqu'à ce que vous ne trouviez pas quelque chose qui résout votre problème.
la source
Ce n'est que mon opinion, mais je suggérerais de créer vos propres bibliothèques pour un code assez simple et réutilisable. Pour quelque chose de plus complexe, vous pouvez utiliser des bibliothèques tierces, qui ont été construites et testées à fond (espérons-le!). La création d'une bibliothèque robuste peut prendre beaucoup de temps, selon ce qu'elle est. Je suis sûr que vous obtiendrez de nombreuses pratiques de programmation simplement en créant votre application!
la source
Découvrez cette question similaire, les réponses sont pertinentes:
/programming/991487/how-to-assemble-a-project-with-software-products-and-your-own-code
la source