Ist es für Anfänger in der Python-Programmierung eine gute Idee, eigene Bibliotheken zu erstellen und zu verstehen, bevor sie zu erweiterten Bibliotheken von Drittanbietern wechseln, die die von mir benötigten Funktionen enthalten?
Einige Projekte (zB Web-Frameworks wie Django) sind wahrscheinlich zu groß für diesen Ansatz. Andere Projekte (z. B. Web Crawler, Grafikbibliotheken, HTML-Parser) scheinen jedoch machbar zu sein.
Ich mache mir Sorgen, dass frühzeitiges Vertrauen in Bibliotheken von Drittanbietern mein Wachstum bremsen würde.
Hinweis: Diese Frage und diese Frage scheinen sich mehr auf erfahrene Programmierer zu konzentrieren, die sich wahrscheinlich mehr auf die Effizienz der Wiederverwendung konzentrieren als auf den Lernnutzen. Ich denke, meine Frage richtet sich an Anfänger.
quelle
Antworten:
Dies ist immer ein Kompromiss.
Als Anfänger sollten Sie sich zwei Fragen stellen, wenn Sie überlegen, Code wiederzuverwenden oder das Vierkantrad neu zu erfinden:
Wenn Sie Ihr Projekt nicht beenden müssen, können Sie bei komplexen Problemen, die andere bereits gelöst haben, die Räder drehen, weil Sie etwas lernen. Aber Sie werden wahrscheinlich zu etwas anderem übergehen, bevor Sie "fertig" sind, was für Sie von Bedeutung sein kann oder auch nicht. Andere Projekte werden schnell glänzend aussehen, wenn Sie sich auf eine komplexe Domäne stürzen, die einfach aussieht, bis Sie versuchen, sie selbst zu lösen.
Seien Sie nicht besessen davon, die Kontrolle aufzugeben, weil Sie sich der Denkweise eines anderen widersetzen. Konzentrieren Sie sich mehr auf das, was Sie erreichen wollen.
Wenn Sie einen HTML-Parser schreiben möchten, um die Funktionsweise von Parsern zu verstehen, sollten Sie diesen verwenden. Wenn Sie einen HTML-Parser schreiben möchten, um Benutzereingaben zu bereinigen oder zufällige HTML-Elemente zu transformieren, konzentrieren Sie sich wahrscheinlich auf das Falsche, da Sie wahrscheinlich mehr an der Anwendung des Parsings als an dem Parsing selbst interessiert sind . Wenn Sie Lust haben, einen HTML-Parser zu schreiben, weil Sie sich nicht die Zeit nehmen möchten, die Bibliothek eines anderen zu verstehen, verschwenden Sie wahrscheinlich Ihre Zeit, da zumindest in diesem Fall garantiert jemand anderes mehr Zeit darauf verwendet hat, herauszufinden, wie um dieses Problem effektiv zu lösen, als Sie haben. In wirklich trivialen Fällen können Sie Zeit sparen, indem Sie Code nicht wiederverwenden, sondern in komplexen Fällen, es sei denn, die Bibliothek, die Sie verwenden, ist zum Kotzen oder Ihre Fähigkeit, Dokumentation und Codebeispiele zu lesen, ist zum Kotzen.
Andererseits würde ich sagen, dass es sich lohnt, eine eigene Grafikbibliothek zu schreiben, da Sie sich mehr auf übertragbare, grundlegende Algorithmen und Datenstrukturen konzentrieren, die Sie auf andere Domänen anwenden können, selbst wenn Sie diese letztendlich verwenden jemand anderes Bibliothek, wenn Sie an diesen Problemen arbeiten.
quelle
Die meisten Programmieranfänger unterschätzen die Komplexität eines Problems bei weitem. Dies führt zu vielen unangenehmen Situationen, aber ich werde mich auf eine konzentrieren: Sie entlassen viele Bibliotheken von Drittanbietern, weil sie "aufgebläht" oder "zu kompliziert" sind. Dann versuchen sie, ihren eigenen Code zu schreiben, um den gleichen Job zu erledigen, und machen ein komplettes Durcheinander, weil sie nicht mit allen Dingen gerechnet haben, mit denen sie fertig werden mussten.
Nehmen Sie das Webcrawlen und Parsen von HTML. Sie scheinen diesen Aufgaben ziemlich beiläufig gegenüberzustehen - was mich zu der Annahme veranlasst, dass Sie nie versucht haben, sie in einem sehr kleinen Maßstab zu erledigen. Hier ist nur eine kurze, nicht umfassende Liste der potenziellen Probleme, mit denen ein echter Webcrawler fertig werden muss:
quelle
Das ist falsch
Frühzeitiges Vertrauen in Bibliotheken von Drittanbietern zeigt, wie gute Bibliotheken funktionieren.
Vorzeitige Entwicklung ist immer Zeitverschwendung. Wenn Sie Ihre eigenen Bibliotheken schreiben, ohne die vorhandenen Bibliotheken sorgfältig zu studieren (dh zu nutzen), müssen Sie das Rad für den Rest Ihrer Karriere - schlimmerweise - neu erfinden.
Ich habe viele Stunden damit verbracht, diese Unordnung zu beseitigen.
quelle
Dieser erste Satz ist für mich logischerweise sehr problematisch:
Wie kann man glauben , dass Sie effektiv schreiben erweitern (Ihr Wort) Funktionalität Bibliotheken als Anfänger , die als richtig, Funktion komplett und getestet , wie vorhandene Bibliotheken sein?
Hier wird nicht einmal die enorme Zeit erwähnt, die Sie für die Neuerfindung eines Rads aufwenden würden, das Sie als Anfänger nicht verstehen. Sie werden es irgendwann aufgeben, wenn Sie das Glück haben, zu bemerken, dass Sie über Ihrem Kopf sind und das lernen müssen Bibliothek trotzdem verlassen.
Nehmen Sie zum Beispiel das HTML-Parsen, Sie erwähnen dies als machbar. Es gibt keine Möglichkeit, einen besseren Job zu machen als Beautiful Soup als Anfänger. Schlicht und einfach, Sie werden scheitern. Die Dinge, die Sie für machbar halten, haben große Komplexitätsprobleme, die Sie nicht berücksichtigen. Sie kennen die Problemdomäne nicht detailliert genug, um die Komplexität zu verstehen. Sie sind zum Scheitern verurteilt.
Meine Meinung ist, dass Sie erfahren, was andere Menschen für Sie getan und bereits gelöst haben, bis Sie nichts finden, was Ihr Problem angeht.
quelle
Dies ist nur meine Meinung, aber ich würde vorschlagen, eigene Bibliotheken für ziemlich einfachen, wiederverwendbaren Code zu erstellen. Für komplexere Aufgaben können Sie Bibliotheken von Drittanbietern verwenden, die (hoffentlich!) Sorgfältig erstellt und getestet wurden. Das Erstellen einer robusten Bibliothek kann sehr zeitaufwändig sein, je nachdem, um was es sich handelt. Ich bin mir sicher, dass Sie schon durch das Erstellen Ihrer Anwendung viel Programmierpraxis erhalten!
quelle
Schauen Sie sich diese ähnliche Frage an, die Antworten sind relevant:
/programming/991487/anordnungs-projekt-mit-softwareprodukten-und-Ihrem- eigenen- Code
quelle