Путь развития в Python - от ученика до гуру
Описание проблемы:
Здравствуйте, сообщество StackOverflow!
Я изучаю Python уже полтора года, работаю с ним и использую его в своих проектах. Как биолог, который постепенно переходит в область биоинформатики, я осознал, что этот язык стал основой всех значительных вкладов, которые я сделал в лаборатории. Я влюбился в то, как Python позволяет создавать элегантные решения, а также в семантику языка, которая обеспечивает естественный переход от мыслей к рабочему коду.
Тем не менее, у меня есть вопрос, который я редко видел в других форумах, но который, на мой взгляд, крайне важен для всех, кто хочет улучшить свои навыки в Python, но не знает, какие следующие шаги предпринять.
Что я НЕ хочу спрашивать:
- Не хочу знать, как БЫСТРО выучить Python.
- Не интересует, какой лучший способ познакомиться с языком.
- И не интересует "волшебный трюк", который решает всё.
Что я хочу узнать:
Какие шаги вы бы рекомендовали "практиканту" Python, чтобы он мог постоянно развиваться и постепенно становиться экспертом в этом языке?
Я вижу таких людей здесь, на StackOverflow, и их навыки вызывают восхищение. Прошу вас поделиться вашим мнением и рекомендациями.
Формат ответов:
В ответах мне хотелось бы увидеть что-то вроде следующего:
- Прочитать это (например, уроки по Python), обращая внимание на определённые детали.
- Программировать столько-то часов или решать столько-то задач.
- Затем прочитать эту книгу, но на этот раз уделяя внимание этим моментам.
- Решать реальные задачи.
- Далее перейти к чтению Y.
- Обязательно понять эти концепции.
- Программировать еще X времени.
- Вернуться к основам или продолжить изучение...
Заключение:
Мне действительно важно узнать ваше мнение о том, на что стоит обратить внимание на разных этапах, чтобы непрерывно расти и развиваться в программировании на Python (с соответствующими усилиями, конечно). Если вы пришли из определённой области, расскажите о пути, который вы считаете подходящим в этой сфере.
Заранее спасибо за ваши советы!
5 ответ(ов)
Посмотрите эссе Питера Норвига о том, как стать мастером-программистом за 10 лет: http://norvig.com/21-days.html. Я бы поставил на то, что это справедливо для любого языка программирования.
Вот ваш код, переведённый на русский язык в стиле ответа на StackOverflow.com:
def начинающий():
прочитать(введение_в_питон)
экспериментировать(интерпретатор)
прочитать(руководство_по_python)
экспериментировать(интерпретатор, модули_файлы)
смотреть(pycon)
def мастер():
обращаться(основное_руководство_по_python)
обращаться(PEPs/языковая_справка)
экспериментировать()
читать(хороший_python_код) # Например, twisted, другие библиотеки
писать(базовая_библиотека) # заново изобрести колесо и сравнить с существующими
if есть_интересные_идеи:
выступить(на_pycon)
def гуру():
pass # Не квалифицирован для комментариев. Возможно, стоит решить проблему GIL?
Если у вас есть дополнительные вопросы, не стесняйтесь их задавать!
Я дам вам самый простой и эффективный совет, который только можно представить: кодируйте.
Вы можете стать лучше в использовании языка программирования (что подразумевает его понимание) только за счет кодирования. Вам нужно активно наслаждаться процессом, вдохновляться, задавать вопросы и находить на них ответы самостоятельно.
У вас есть час свободного времени? Напишите код, который будет разворачивать строку, и найдите наиболее оптимальное решение. А если у вас свободный вечер, почему бы не поэкспериментировать с веб-скрапингом? Читайте код других людей. Смотрите, как они решают задачи. Задавайте себе вопрос: что бы я сделал?
Когда мне становится скучно за компьютером, я открываю свою среду разработки и начинаю кодить. Записываю идеи, которые кажутся интересными и сложными. Сокращатель URL? Почему бы и нет, я смогу это сделать. О, я научился преобразовывать числа из одной системы счисления в другую в процессе!
Этот подход актуален вне зависимости от вашего уровня навыков. Вы никогда не перестаете учиться. Активно кодируя в свободное время, вы, с минимальными дополнительными усилиями, начнете лучше понимать язык, и в конечном итоге станете экспертом. Вы накопите знания и переиспользуемый код и запомните полезные идиомы.
Если вы занимаетесь научными исследованиями с использованием Python (что, похоже, вы и делаете), то вам необходимо изучить научные библиотеки. Для меня в этом контексте важными являются:
- numpy
- scipy
- matplotlib
- mayavi/mlab
- chaco
- Cython
Знание того, как использовать правильные библиотеки и векторизовать код, является ключевым для научных вычислений.
Также хотел бы добавить, что работа с большими числовыми наборами данных привычными для Python способами (объектно-ориентированный подход, списки, итераторы) может быть крайне неэффективной. В научных вычислениях может быть необходимо организовывать код так, чтобы это значительно отличалось от подходов большинства обычных программистов на Python при работе с данными.
Google недавно выпустила онлайн-курс по Python (в смысле "курс обучения"). Вы можете ознакомиться с ним по следующей ссылке:
http://code.google.com/edu/languages/google-python-class/
Я понимаю, что это не полностью отвечает на ваш вопрос, но я думаю, что это отличное место для начала!
Как изменить порядок столбцов в DataFrame?
Получение текущей даты в формате YYYY-MM-DD в Python
Как проверить тип NoneType в Python?
Как удалить пакеты, установленные с помощью easy_install в Python?
Использование @property против геттеров и сеттеров