Продолжаю поиск лучшей книги по Python для начинающих разработчиков.
Один из самых популярных вопросов, который вы мне задаете — это то, какую книгу читать после Тонни Гэддиса, Эрика Мэтиза, Майкла Доусона, Пола Бэрри или других авторов?
И я всегда отвечаю примерно одинаково: «Вместо чтения следующей книги, лучше начать писать код.» Можно порешать задачки или попробовать запустить какой-то небольшой проект. Надо начинать программировать, ведь от того, что вы прочтете еще одну книгу вы не станете более лучшим программистом. Потому что книги для новичков мало чем отличаются друг от друга. Разве что подачей.
Только если вы не возьмете двухтомник Марка Лутца, но эта книга сложная и я рекомендую её только тем, кто уже работает Python разработчиком и уж точно не новичкам.
После моего совета о том, что нужно писать код, у вас возникает второй вопрос «а где брать задачи или проекты для тренировки?»
С задачами более-менее ясно, можно взять того же Златопольского или записаться к нам на курс по Python, у нас довольно большой задачник и мы его постоянно пополняем, или можно найти какие-то бесплатные сервисы вроде codewars.com. Таких сервисов много.
А вот с проектами чуть сложнее. Обычно я советую брать любую тему, которая вас лично интересует и попытаться написать программу для неё.
Приведу пару примеров. Когда я учился в школе, то моим проектом был школьный сайт. И это не потому, что учитель этого хотела, а потому что этого хотел я.
Далее, когда я изучал PHP, я написал программу, которая формировала платежки для оплаты коммунальных услуг. Это сейчас их присылают в почтовые ящики, а в 2004 году, нужно были идти на почту, брать бланки, заполнять их, самому всё считать, а затем стоять очередь в кассу. И так каждый месяц.
Я решил немного автоматизировать этот процесс и написал программу, которая: а) умела сохранять предыдущие показания счетчиков; б) имела минимальный интерфейс для внесения текущих показателей и в) формировала готовую квитанцию для оплаты, которую можно распечатать на принтере.
Программа несложная, но полезная, плюс бонусом шла практика в программировании. Именно такие проекты я советую всем ученикам, которые только постигают азы разработки.
Однако я точно знаю, что порой вам сложно придумать такой проект, и тут я хочу познакомить вас с книгой «Непрактичный Python» Ли Вогана — замечательные проекты для тех, кто хочет поумнеть.
Издательства «No Starch Press», которое специализируется на книгах без воды. Я уже делал обзор одной книги этого издательства — тогда это была «Изучаем Python» Эрика Мэтиза, которую я высоко оценил.
Но сегодня речь о «Непрактичном Python» и если говорить о том, какую книгу нужно брать второй — то это она. Тут нет теории, объяснения синтаксиса языка или «Hello, World!». Всего того, что мы привыкли видеть в обычных учебниках по Питону тут нет.
Зато есть 24 проекта на самые разные темы: шифрование и кодирование, генетические алгоритмы и обработка текста, финансовые и космические проекты, игры и симуляции.
Выбор проектов очень разнообразен. При этом каждый содержит отличное описание и много интересных фактов. И речь не про программирование, а про сферу, для которой этот проект делается.
Например, в проекте про симуляцию инопланетного вулкана есть фотографии спутника Ио, а также пример игрового эскиза:
А в проекте картографирования марса с помощью орбитального спутника, Ли Воган приводит не только формулу силы тяжести, но и различные схемы построения орбит:
При этом сами проекты с одной стороны, действительно занимательные, а с другой стороны они затрагивают самые разные возможности Python: от переменных до объектно-ориентированного программирования. И всё дополняется использованием разных модулей и библиотек. В дополнении к этому исходный код проектов подробно документирован и в целом выглядит очень прилично. То есть его писал человек, который умеет программировать на питоне.
В общем, думаю каждый читатель в книге «Непрактичный Python» найдет для себя задание по душе, но я рекомендую выполнить все 24 проекта с начала и до конца. И для этого есть две причины:
Во-первых, это позволит вам сильнее развить навыки программирования, а именно за этим эту книгу и стоит покупать.
А, во-вторых, сами проекты не изолированы друг от друга. Когда я решил написать программу по криптографии, которая стоит в книге восьмой, то обнаружил, что Ли Воган ссылается на некоторые концепции, которые объяснил ранее, в других главах. И чтобы полностью разобраться в коде, мне пришлось покопаться в более ранних проектах.
Если бы я шел последовательно, то этой проблемы не возникло бы. И разумеется, если бы у меня была такая книга, когда я только начинал свой путь разработчика, я бы прорешал её вдоль и поперек.
Кстати, маленькая ремарка по поводу важности практики, в институте у нас был задачник, который выпускал один из преподавателей. В нём было 4 варианта заданий, чтобы на практике, разные студенты получали задания одной сложности или на одну тему, но при этом у них были разные варианты, и они не списывали друг у друга.
Так вот я прорешал из этой книги все задачи всех вариантов. И когда пришло время сессии как думаете кто получил пятерку автоматом? А потом помогал всему потоку решать задачи и неплохо на этом заработал. А после стал профессиональным разработчиком. Так что да, практика важна.
И «Непрактичный Python» — это отличная книга, чтобы развить ваши навыки программирования. Будет ли вам просто? Нет. Над многими проектами придется поломать голову и с первого раза их не решить, даже я не сразу въехал в некоторые моменты, но никто и не говорил, что программирование — это легко.
В общем, больше тут говорить особо не о чем, можете смело брать эту книгу, сразу после того, как прочитаете одну из книг для совсем новичков. И я рад, что такие книги как «Непрактичный Python», в принципе есть.