Как начинающему программисту на Python, стоит ли создавать и понимать свои собственные библиотеки, прежде чем переходить к расширенным сторонним библиотекам, которые содержат необходимые мне функции?
Некоторые проекты (например, веб-фреймворки, такие как Django), вероятно, слишком велики для этого подхода. Но другие проекты (например, веб-сканеры, библиотеки графов, анализатор HTML) кажутся осуществимыми.
Я волнуюсь, что ранняя зависимость от сторонних библиотек остановит мой рост.
Примечание: этот вопрос и этот вопрос, кажется, больше ориентированы на опытных программистов, которые, вероятно, больше сосредоточены на эффективности повторного использования, чем на преимуществах обучения. Мой вопрос, я думаю, ориентирован на начинающих.
python
third-party-libraries
MikeRand
источник
источник
Ответы:
Это всегда компромисс.
Будучи начинающим программистом, вы должны задать себе два вопроса при рассмотрении вопроса о повторном использовании кода и изобретении квадратного колеса:
Если вам не нужно заканчивать свой проект, то неплохо крутить колеса на сложных проблемах, которые уже решили другие люди, потому что вы чему-то научитесь. Но вы, вероятно, перейдете к чему-то еще до того, как «закончите», что может иметь или не иметь значения для вас. Другие проекты начнут выглядеть блестяще быстро, когда вы окажетесь над сложной областью, которая выглядит простой, пока вы не начнете пытаться решить ее самостоятельно.
Не зацикливайтесь на том, чтобы отказаться от контроля, потому что вы подчиняетесь чьему-либо другому мышлению; сосредоточиться больше на том, что вы пытаетесь достичь.
Если ваша цель - написать HTML-парсер, потому что вы хотите понять, как работают парсеры, сделайте это. Если ваша цель состоит в том, чтобы написать анализатор HTML, потому что вы хотите очистить ввод данных пользователем или преобразовать некоторые случайные фрагменты HTML, вы, вероятно, сосредоточены на неправильной вещи, потому что вы, вероятно, больше заинтересованы в применении анализа, а не самого анализа , Если вам хочется написать анализатор HTML, потому что вы не хотите тратить время на то, чтобы понять чужую библиотеку, вы, вероятно, тратите свое время впустую, потому что, по крайней мере, в этом случае, я гарантирую, что кто-то потратил больше времени на выяснение того, чтобы решить эту проблему эффективно, чем вы будете иметь. В действительно тривиальных случаях вы можете сэкономить время, не повторно используя код, а в сложных, если только библиотека, которую вы используете, не отстой или ваша способность читать документацию и примеры кода не отстой,
С другой стороны, я бы сказал, что стоит написать свою собственную библиотеку графов, так как вы будете более сосредоточены на переносимых фундаментальных алгоритмах и структурах данных, которые сможете применять к другим доменам, даже если вы в конечном итоге будете использовать чужая библиотека, когда вы работаете над этими проблемами.
источник
Большинство начинающих программистов сильно недооценивают сложность проблемы. Это приводит ко многим неприятным ситуациям, но я остановлюсь только на одной: они отвергают множество сторонних библиотек за то, что они «раздуты» или «слишком сложны». Затем они пытаются написать свой собственный код, чтобы выполнить ту же работу, и полностью запутать это, потому что они не ожидали всего, с чем им придется справиться.
Возьмите веб-сканирование и анализ HTML. Похоже, у вас довольно небрежное отношение к этим задачам, и это заставляет меня поверить, что вы никогда не пытались выполнять их ни в чем, кроме очень маленьких масштабов. Вот лишь краткий, неполный список потенциальных проблем, с которыми должен столкнуться настоящий веб-сканер:
источник
Это неверно
Ранняя опора на сторонние библиотеки научит, как работают хорошие библиотеки.
Преждевременное развитие всегда пустая трата времени. Написание собственных библиотек без тщательного изучения (то есть использования) существующих библиотек обрекает вас на то, чтобы заново изобретать колесо - плохо - до конца вашей карьеры.
Я провел много оплачиваемых часов, убирая эти беспорядки.
источник
Это предложение, которое является первым, очень логично для меня:
Как вы можете верить, что вы можете эффективно писать библиотеки с расширенными функциональными возможностями (ваше слово) для начинающих, которые будут такими же правильными, полными и проверенными, как и существующие библиотеки?
В нем даже не упоминается огромное количество времени, которое вы потратили бы на то, чтобы заново изобрести колесо, которое вы не понимаете как новичок, и в конечном итоге откажетесь, когда, если вам повезет, вы поймете, что вы над головой, и вам придется учиться выход из библиотеки в любом случае.
Возьмем, к примеру, разбор HTML, вы упомянули это как выполнимое, и вы не сможете лучше справиться с задачей, чем Beautiful Soup как новичок. Простым и простым у вас не получится. Вещи, которые вы считаете выполнимыми, имеют огромные проблемы сложности, которые вы не принимаете во внимание, вы не знаете проблемную область достаточно подробно, чтобы понять сложность, вы обречены на провал только из-за этого.
Мое мнение - узнать, что другие люди сделали и уже решили вашу проблему для вас, пока вы не найдете то, что решает вашу проблему.
источник
Это только мое мнение, но я бы предложил создать свои собственные библиотеки для довольно простого, многократно используемого кода. Для чего-то более сложного вы можете использовать сторонние библиотеки, которые были тщательно собраны и протестированы (надеюсь!). Создание надежной библиотеки может занять очень много времени, в зависимости от того, что это такое. Я уверен, что вы получите много практики программирования, просто создав свое приложение!
источник
Проверьте этот похожий вопрос, ответы актуальны:
/programming/991487/how-to-assemble-a-project-with-software-products-and-your-own-code
источник