Como programador principiante, ¿debería favorecer la creación de mis propias bibliotecas en lugar de usar bibliotecas de terceros?

12

Como programador principiante de Python, ¿es una buena idea construir y entender mis propias bibliotecas antes de pasar a las bibliotecas avanzadas de terceros que contienen la funcionalidad que necesito?

Algunos proyectos (por ejemplo, marcos web como Django) son probablemente demasiado grandes para este enfoque. Pero otros proyectos (por ejemplo, Web Crawlers, bibliotecas de gráficos, analizador de HTML) parecen ser factibles.

Me preocupa que la dependencia temprana de bibliotecas de terceros frene mi crecimiento.

Nota: esta pregunta y esta pregunta

    
pregunta MikeRand 29.04.2011 - 01:07

6 respuestas

12

Esto siempre es una compensación.

Como programador principiante, debe hacerse dos preguntas cuando considere reutilizar el código en lugar de reinventar la rueda cuadrada:

  1. ¿Aprenderé más sobre el problema que quiero resolver escribiendo todo desde cero o enfocándome en el dominio del problema y dejando de lado la complejidad que no es crítica para el problema que me interesa?
  2. ¿Es más importante para mí resolver el problema en cuestión o es más importante que entienda algunos conceptos fundamentales?

Si no tiene que terminar su proyecto, está bien hacer girar sus ruedas en problemas complejos que otras personas ya han resuelto, porque aprenderá algo. Pero probablemente pasará a otra cosa antes de que "termine", lo que puede o no puede ser importante para usted. Otros proyectos comenzarán a lucir brillantes rápidamente cuando te sobrepasas en un dominio complejo que parece simple hasta que comienzas a intentar resolverlo por ti mismo.

No te obsesiones con renunciar al control porque estás aplazando la forma de pensar de otra persona; concéntrate más en lo que estás tratando de lograr.

Si tu objetivo es escribir un analizador HTML porque quieres entender cómo funcionan los analizadores, hazlo. Si su objetivo es escribir un analizador HTML porque desea sanear la entrada del usuario o transformar algunos fragmentos aleatorios de HTML, probablemente esté centrado en lo incorrecto, porque probablemente esté más interesado en la aplicación del análisis en lugar del análisis en sí mismo. . Si tiene ganas de escribir un analizador de HTML porque no quiere tomarse el tiempo para entender la biblioteca de otra persona, probablemente esté perdiendo el tiempo, porque, al menos en este caso, le garantizo que otra persona ha dedicado más tiempo a averiguar cómo para resolver este problema de manera efectiva que tendrá. En casos realmente triviales, puede ahorrar tiempo al no reutilizar el código, pero en los complejos, a menos que la biblioteca que use sea mala o que su capacidad para leer la documentación y las muestras de código sea mala, simplemente perderá tiempo.

Por otro lado, diría que vale la pena escribir su propia biblioteca de gráficos, ya que estará más centrado en los algoritmos y estructuras de datos fundamentales y transferibles que podrá aplicar a otros dominios, incluso si termine usando la biblioteca de otra persona cuando trabaje en esos problemas.

    
respondido por el JasonTrue 29.04.2011 - 01:28
8

La mayoría de los programadores principiantes subestiman enormemente la complejidad de un problema. Esto conduce a muchas situaciones desagradables, pero me centraré en una sola: descartan muchas bibliotecas de terceros por estar "hinchadas" o "demasiado complicadas". Luego intentan escribir su propio código para hacer el mismo trabajo y desordenarlo, porque no anticiparon todas las cosas que tendrían que manejar.

Tomar el rastreo web y analizar HTML. Parece que tienes una actitud bastante casual hacia esas tareas, lo que me lleva a creer que nunca intentaste hacerlas en nada que no fuera una escala muy pequeña. A continuación, le ofrecemos una breve lista no exhaustiva de los posibles problemas con los que debe lidiar un verdadero rastreador web:

  • HTML con formato incorrecto.
  • Codificaciones de caracteres múltiples (el mundo entero no se ejecuta en ASCII).
  • Enlaces generados o modificados por JavaScript.
  • Enlaces a archivos binarios de varios gigabytes.
  • Tipos de mime incorrectos.
  • Bloqueo en medio de una sesión de rastreo.
  • Hoyos de alquitrán.
  • consultores SEO.
  • Microsoft.
respondido por el Mike Baranczak 29.04.2011 - 02:10
6
  

Me preocupa que la dependencia temprana de las bibliotecas de terceros impida mi crecimiento y no sea más que un integrador de bibliotecas en lugar de un programador.

Eso es falso.

La dependencia temprana en bibliotecas de terceros enseñará cómo funcionan las bibliotecas buenas.

El desarrollo prematuro siempre es una pérdida de tiempo. Escribir sus propias bibliotecas sin estudiar cuidadosamente (es decir, usar) las bibliotecas existentes lo condena a reinventar la rueda, mal, por el resto de su carrera.

He pasado muchas horas facturables limpiando esos problemas.

    
respondido por el S.Lott 29.04.2011 - 01:34
4

Esta oración, que es la primera, es lógicamente problemática para mí:

  

Como programador principiante de Python, ¿es una buena idea construir y entender mis propias bibliotecas antes de pasar a las bibliotecas avanzadas de terceros que contienen la funcionalidad que necesito?

¿Cómo puede creer que puede escribir efectivamente las bibliotecas de funcionalidad avanzada (su palabra) como un principiante que será tan correcto, con todas las funciones completas y probadas como las bibliotecas existentes?

Esto ni siquiera menciona la enorme cantidad de tiempo que perderías al reinventar una rueda que no entiendes como principiante, que eventualmente se abandonará cuando, si tienes suerte, te das cuenta de que estás sobre tu cabeza y tienes para aprender la biblioteca que sale de todos modos.

Tome el análisis de HTML, por ejemplo, menciona que esto es factible, no hay manera de que pueda hacer un mejor trabajo que Beautiful Soup como principiante. Sencilla y sencilla fallarás. Las cosas que crees que son factibles tienen enormes problemas de complejidad que no estás teniendo en cuenta, no conoces el dominio del problema con suficiente detalle para comprender la complejidad, estás condenado al fracaso solo por eso.

Mi opinión es saber lo que otras personas han hecho y ya han resuelto tu problema por ti, hasta que no puedas encontrar algo que lo solucione.

    
respondido por el Jarrod Roberson 29.04.2011 - 08:05
1

Esto es solo mi opinión, pero sugeriría crear tus propias bibliotecas para un código bastante simple y reutilizable. Para algo más complejo, puede usar bibliotecas de terceros, que se han construido y probado a fondo (¡con suerte!). La creación de una biblioteca robusta puede llevar mucho tiempo, mucho , dependiendo de lo que sea. Estoy seguro de que obtendrás un montón de práctica de programación con solo construir tu aplicación.

    
respondido por el Jon Onstott 29.04.2011 - 01:24
0

Echa un vistazo a esta pregunta similar, las respuestas son relevantes:

enlace

    
respondido por el Danny Varod 29.04.2011 - 01:54

Lea otras preguntas en las etiquetas