Продолжаем обзор книг по питону для новичков и сегодня на очереди «Python. Создаем программы и игры» Дмитрия Кольцова.
Я уже делал обзор на одну из книг этого автора и тогда это было «Полное руководство по Python». И полное руководство в общем рейтинге ушло вниз, так как книга тяжела для понимания новичками, плюс в ней было много моментов, которые пересекались с работой другого автора. То есть кто-то явно подглядывал или даже списывал. Я подумал на Кольцова.
Тем не менее я решил дать автору еще один шанс, но уже с другой книгой. К тому же она про игры, а это интересная тема. У нас уже было несколько обзоров на такие книги, и следовательно, я буду в первую очередь сравнить «Создаем программы и игры» с ними.
А также сравню Кольцова с самим Кольцовым.
В первой главе автор рассказывает про то, где используется Python. И при этом он упоминает, что питон поддерживает ICE и CORBA и это такая корпоративная технология для общения программ между собой по сети. За свою практику я пару раз писал программы с похожими технологиями. Но эта такая специфическая работа, про которую ты не будешь говорить неподготовленному новичку, а тут книга для начинающих:
Далее автор говорит, что есть распространенное заблуждение, что на Python не пишут игры и приводит ссылку с обсуждением, где есть упоминания разных известных игр с использованием питона.
Я понимал про что будет это обсуждение, но всё равно решил почитать. И в целом да, всё что вам надо понимать это то, что Python используется в самых разных играх в крупных компаниях. Но немного не так, как вы могли бы подумать. Питон не используют в качестве графического движка, который отвечает за то, как объекты красиво отображаются на экране, как от них великолепно падают тени и отсвечивают блики солнца. Питон не про это.
Питон в играх часто используется как какой-то скриптовый язык для написания модов или логики действий, а также каких-то дополнений. Или же если это сетевая игра, то питон может крутиться на сервере. Но всё это не про графику.
Хотя в книгах мы несколько раз встречали и даже писали 2D игры на pygame. Но всё это уместно в процессе обучения или чисто по фану, в реальности же у питона другие сферы приложения: сайты, аналитика, автоматизация, прототипы небольших приложений, какие-то скриптовые истории.
Но давайте вернемся к книге. Ко второй главе. Где мы устанавливаем python 3.4, а это довольно старая версия. После установки автор показывает пару примеров на IDLE и к 4 главе мы пишем нашу первую программу «Hello, world».
И знаете, какое отличие этой книги от Полного руководства? Тут более простой и понятный язык. То есть Дмитрий Кольцов может писать хорошо.
В пятой главе нас начинают знакомить со строками, а в шестой с числами. И в целом тут приводятся интересные примеры. Скажем программа для вычисления времени, которое автомобиль затрачивает на путь, если нам известна его скорость — вполне реальный кейс. И затем еще несколько программ на автомобильную тематику:
Всё классно, до тех пор, пока верстальщику не попались одинарные кавычки и он конечно вставил неправильные:
Это значит, что программа работать не будет. Сам же Дмитрий использует форматирование через процент и если 5 лет назад это еще было более-менее допустимо, то сейчас так никто не пишет:
Хотя в целом в книге, встречается мало таких нерабочих фрагментов. Да и сам код весьма неплох. Соблюдены отступы, логика выполнения и даже есть отбивка пробелами.
В общем, шаг за шагом мы подходим к 11 главе, которая называется «Угадай число». Это наша первая игра в этой книге, а также в книге Эла Свейгарта. Это конечно может быть совпадение. Но я обязан был сравнить код и подход к объяснению.
Но нет, это абсолютно разные программы. Тут мы просто угадываем число, тыкая наугад, а у Эла программа сообщала нам, больше ли наш вариант или меньше, что позволяло нам использовать более оптимальные стратегии для угадывания, чем простой перебор.
В общем у Кольцова программа получилась простая и не сильно интересная.
Далее он рассказывает про разные возможности строк, включая срезы. А затем переходит к кортежам. Мы снова пару раз натыкаемся на нерабочие программы, а потом Дмитрий приводит пример функции, хотя функции мы еще не проходили. К тому же внутри он использует avg, а её даже нет в пространстве имён. А значит код работать не будет. Не знаю, зачем в книге данный фрагмент.
Я немного покопался и нашел, откуда автор дернул этот кусочек — из Python Cookbook — но опять же зачем? Загадка.
Далее мы снова получаем немного неработающего кода, в котором к неправильным кавычкам добавляются проблемы с отступами:
И вот знаете, это портит всё впечатление от книги. Она могла быть неплохой. Тут есть все предпосылки сделать хорошее понятное руководство. Просто не надо откровенно косячить и так много. У Нилаба Нисчала в «Python – это просто» тоже были проблемы. Но там одна ошибка на книгу, а тут чем дальше — тем хуже.
И дело не только в верстке. Кольцов начинает усложнять и вводит лямбда функции, колбэки, а также элементы асинхронного программирования.
Ладно, если мы говорим про программы с графическим интерфейсом или игры, то там да, колбэки уместны. Но пока мы до них не дошли.
Далее мы знакомимся с файлами, включая двоичные, CSV, XML. А затем приходим к исключениям, хотя две главы назад уже использовали их в игре крестики нолики. И там мы использовали исключения как будто уже хорошо с ними знакомы. Ну ок.
Еще немного позже мы подходим к классам и даже затрагиваем тему свойств. А затем переходим к Ткинтеру, которому посвящено почти 100 страниц.
И честно, у меня даже нет желания что-то там разбирать. Книга могла бы стать неплохой, но не стала. Как начали со странностей про ICE и CORBA, так и закончили непонятно чем. В том числе спасибо за это издательству Наука и Техника.
Что ж на этом я заканчиваю обзор не только этой книги, но в целом поиск лучшей книги по питону, по крайней мере в ближайшее время.
И в следующий раз, как вы и просили выйдет финал, в котором я соберу для вас лучшие книги по Python в 2023 году.