Czy jako początkujący programista Python dobrze jest budować i rozumieć własne biblioteki przed przejściem do zaawansowanych bibliotek innych firm, które zawierają potrzebne mi funkcje?
Niektóre projekty (np. Frameworki takie jak Django) są prawdopodobnie zbyt duże dla tego podejścia. Ale inne projekty (np. Przeszukiwacze sieci, biblioteki wykresów, parser HTML) wydają się wykonalne.
Martwię się, że wczesne poleganie na bibliotekach zewnętrznych zahamowało mój rozwój.
Uwaga: to pytanie i to pytanie wydaje się skupiać bardziej doświadczonych programistów, którzy prawdopodobnie bardziej skupiają się na wydajności ponownego wykorzystania niż na korzyściach uczenia się. Myślę, że moje pytanie dotyczy początkujących.
python
third-party-libraries
MikeRand
źródło
źródło
Odpowiedzi:
To zawsze jest kompromis.
Jako początkujący programista powinieneś zadać sobie dwa pytania, zastanawiając się nad ponownym użyciem kodu zamiast wynalezienia kwadratowego koła:
Jeśli nie musisz kończyć swojego projektu, dobrze jest zakręcić kołem w skomplikowane problemy, które inni ludzie już rozwiązali, ponieważ nauczysz się czegoś. Ale prawdopodobnie przejdziesz do czegoś innego, zanim „skończysz”, co może, ale nie musi mieć dla ciebie znaczenia. Inne projekty zaczną szybko wyglądać lśniąco, gdy przejdziesz nad głową w złożonej domenie, która wygląda na prostą, dopóki nie zaczniesz próbować rozwiązać samodzielnie.
Nie miej obsesji na punkcie rezygnacji z kontroli, ponieważ podążasz za cudzym sposobem myślenia; skoncentruj się bardziej na tym, co próbujesz osiągnąć.
Jeśli Twoim celem jest napisanie parsera HTML, ponieważ chcesz zrozumieć, jak działają parsery, idź do niego. Jeśli Twoim celem jest napisanie analizatora składni HTML, ponieważ chcesz zdezynfekować dane wejściowe użytkownika lub przekształcić losowe fragmenty HTML, prawdopodobnie skupiasz się na niewłaściwej rzeczy, ponieważ prawdopodobnie bardziej interesuje Cię zastosowanie analizy składniowej niż sama analiza. . Jeśli masz ochotę napisać parser HTML, ponieważ nie chcesz poświęcać czasu na zrozumienie czyjejś biblioteki, prawdopodobnie marnujesz swój czas, ponieważ przynajmniej w tym przypadku gwarantuję, że ktoś spędził więcej czasu na zastanawianiu się, jak aby rozwiązać ten problem skutecznie, niż będziesz miał. W naprawdę trywialnych przypadkach możesz zaoszczędzić czas, nie wykorzystując ponownie kodu, ale w skomplikowanych, chyba że biblioteka, której używasz, jest do kitu lub nie możesz czytać dokumentacji i próbek kodu,
Z drugiej strony powiedziałbym, że warto napisać własną bibliotekę wykresów, ponieważ bardziej skupisz się na przekazywalnych, podstawowych algorytmach i strukturach danych, które będziesz mógł zastosować w innych domenach, nawet jeśli w końcu użyjesz czyjaś biblioteka, kiedy pracujesz nad tymi problemami.
źródło
Większość początkujących programistów zdecydowanie nie docenia złożoności problemu. Prowadzi to do wielu nieprzyjemnych sytuacji, ale skupię się na jednej: odrzucają wiele bibliotek stron trzecich za to, że są „rozdęte” lub „zbyt skomplikowane”. Następnie próbują napisać własny kod, aby wykonać tę samą pracę, i zrobić z tego kompletny bałagan, ponieważ nie przewidzieli wszystkich rzeczy, z którymi będą musieli sobie poradzić.
Przeszukuj HTML i parsuj HTML. Wygląda na to, że podchodzisz do tych zadań dość swobodnie - co prowadzi mnie do wniosku, że nigdy nie próbowałeś ich wykonywać na małą skalę. Oto krótka, niekompletna lista potencjalnych problemów, z którymi musi zmierzyć się prawdziwy robot indeksujący:
źródło
To nieprawda.
Wczesne poleganie na bibliotekach zewnętrznych nauczy, jak działają dobre biblioteki.
Przedwczesny rozwój to zawsze strata czasu. Pisanie własnych bibliotek bez dokładnego przestudiowania (tj. Korzystania) istniejących bibliotek skazuje Cię na ponowne odkrycie koła - źle - do końca swojej kariery.
Spędziłem wiele płatnych godzin, sprzątając te bałagany.
źródło
To zdanie, które jest pierwsze, jest dla mnie bardzo logicznie problematyczne:
Jak możesz wierzyć, że potrafisz efektywnie pisać zaawansowane biblioteki funkcji (twoje słowo) jako początkujący, który będzie tak samo poprawny, kompletny i przetestowany jak istniejące biblioteki?
Nie wspominając nawet o ogromnej ilości czasu, który zmarnowałbyś na ponowne wynalezienie koła, którego nie rozumiesz jako początkujący, w końcu porzuci, gdy będziesz mieć szczęście, gdy zdasz sobie sprawę, że masz nad głową i musisz nauczyć się i tak wychodzenie z biblioteki.
Weźmy na przykład parsowanie HTML, wspominasz o tym jako wykonalne, nie ma sposobu, abyś mógł wykonać lepszą robotę niż Piękna Zupa jako początkujący. Jasne i proste, że zawiedziesz. Rzeczy, które uważasz za wykonalne, mają ogromne problemy ze złożonością, których nie bierzesz pod uwagę, nie znasz domeny problemów wystarczająco szczegółowo, aby zrozumieć złożoność, z tego powodu jesteś skazany na porażkę.
Moim zdaniem dowiesz się, co zrobili inni ludzie i już rozwiązali Twój problem, dopóki nie znajdziesz czegoś, co rozwiązałoby Twój problem.
źródło
To tylko moja opinia, ale proponuję zbudowanie własnych bibliotek dla dość prostego kodu do wielokrotnego użytku. W cokolwiek bardziej złożonego możesz użyć bibliotek firm trzecich, które zostały zbudowane i dokładnie przetestowane (miejmy nadzieję!). Stworzenie solidnej biblioteki może być bardzo czasochłonne, w zależności od tego, co to jest. Jestem pewien, że zdobędziesz mnóstwo praktyki programowania, po prostu budując swoją aplikację!
źródło
Sprawdź to podobne pytanie, odpowiedzi są istotne:
/programming/991487/how-to-assemble-a-project-with-software-products-and-your-own-code
źródło