Рецензия на книгу
Укус Питона

Swaroop Chitlur

Обложка книги Укус Питона (Swaroop Chitlur)

Краткая рецензия

Книга напоминает набор заметок программиста о новом для себя языке программирования, что плохо подходит для новичков в Python.

Важные темы не раскрыты, а вместо них приводится много кода, который начинающим разработчикам не нужен.

Полная рецензия

Продолжаем обзор книг по Python для новичков.

Сегодня у меня на столе необычная книга и её необычность в том, что она а) бесплатная, б) распространяется в электронном виде. То есть, её можно почитать на сайте или скачать PDF-документ.

Как вы, наверное, уже догадались, речь о книге «Укус Питона».

Но даже несмотря на то, что книга электронная, я всё решил распечатать себе один экземпляр. Причем в цвете. Правда не заметил, что у принтера слегка подсохла головка, закончился один из картриджей и в итоге все 164 страницы, а именно такой объем у издания, получились с дефектами. Поэтому все эти листы пойдут в печку.

Но давайте приступим к обзору. Укус Питона, или по-английски Byte of Python, довольно популярная в сети книга, и отчасти это связано с тем, что она бесплатная.

В целом у книги положительные отзывы, она часто попадает в различные подборки лучших книг и её нередко советуют на форумах. Тем не менее, ознакомившись с содержимым я бы не стал активно её рекомендовать. Да и вообще, мой отзыв будет скорее отрицательным. Поэтому если вы поклонник этой книги, учились по ней и она вам помогла освоить Python или получить работу, то для сохранения душевных сил дальше лучше не читать.

Все остальные, будущие Python разработчики — Wellcome.

Итак, книга позиционирует себя как своего рода учебник для новичков, но и не новички смогут в ней найти что-то полезное. Именно так утверждает автор. И это довольно странно, ведь тут всего 164 страницы. По мне так сложно угодить и новичкам, и бывалым в таком маленьком объеме. Но, возможно у автора какой-то особый подход или педагогический талант. Давайте разбираться.

И начинается Укус Питона с введения, отзывов и ссылок на переводы этой книги. Причем, там не просто ссылки, а еще подписи с комментариями, что занимает 9 страниц. Формально это самая большая глава в книге.

Ну да ладно, так часто бывает с изданиями, которые распространяются бесплатно под copyleft лицензиями.

Не будем на этом останавливаться и пойдем дальше, а дальше начинается глава об установке Python. В целом там всё подробно, даже есть описание того как настроить в Windows переменную окружения PATH, чтобы без проблем запускать интерпретатор из командной строки. Однако данные в книге несколько устарели, так как установщик Python уже давно умеет самостоятельно размещать всю информацию в PATH, достаточно нажать правильную галочку во время установки.

Помимо PATH в книге также описываются особенности установки Python в Windows XP, 2003 и Vista. И по-хорошему эти данные нужно убрать из книги, на конец 2020 года Windows XP занимала менее одной десятой процента от всех установок Windows. А сейчас уже середина 2021 года.

Также в книге есть информация про установку питона в MacOS через homebrew. Но на самом деле homebrew уже давно не нужен, официальный установщик с сайта python.org отлично справляется с этой задачей.

И казалось бы это мелочи, но напомню, что речь про книгу, которая распространяется электронно. Это печатное издание типография один раз выпускает и оно годами лежит на книжных полках без возможности внести правки. А тут всё в интернете, можно вносить правки хоть каждый день. Причем как самостоятельно, так и подключив сообщество. Но видать автору это не интересно.

И в общем-то тут его и упрекнуть не в чем, книга-то бесплатная, не хочешь не читай. Но осадочек всё равно остается. Ладно, двинемся далее.

И далее я обычно начинаю разбор отдельных глав книги, но тут всё настолько сжато, что особо нечего и сказать, поэтому я сразу перейду к выводам.

Странности в книге

И у Укуса Питона я нашел несколько странных вещей.

Основное, что меня смутило, это то, что книга скорее не книга, а набор тем, которые были в своё время интересны автору. И хотя темы связаны между собой и есть последовательность повествования, тем не менее существует четкая грань между интересной темой и необходимой. Необходимой с точки зрения обучения. Не всё что интересно автору, нужно давать ученику.

Часто как раз наоборот, нужно давать то, что для тебя кажется очевидным, но для большинства будет сложным и полезным. У нас на курсе по Питону есть много уроков и задач, которые для меня кажутся элементарными, однако многие ученики испытывают сложности в их решении. Тем не менее я эти задачи не удаляю, потому что очень важно проработать такие темы, чтобы чувствовать себя более уверенным не только в Python, но и в программировании в целом.

Конечно, в силу небольшого объема Укусу Питона можно простить отсутствие подробной проработки таких тем, однако в книгу попало много довольно странных вещей. Например, комплексные числа, которые используются в очень ограниченном круге задач. Или в главах про циклы, автор рассказывает про использование else с циклами. Однако это не mast have для новичков. Я за всю свою карьеру ни разу не использовал такой синтаксис и не встречал его в чужих программах. И это в общем-то логично, так как код с помощью while else или for else, довольно сложен для понимания. Особенно новичкам.

И таких тем в книге довольно много.

Возможно это связано с тем, что к питону автор подошел уже подготовленным, с багажом знаний и опыта в C++, PHP и Java. И для него это было не изучение языка с нуля, а скорее добавление к своему портфелю языков еще одного.

Отсюда и возникает такой интерес к нестандартным темам. В Java я делал так, а в питоне по-другому. Идет своего рода сравнение языков.

Так, например, автор начинает рассказывать про цикл for до списков, а это скорее классический подход использования for, который свойственен другим языкам. Точно также поступал Златопольский, потому что у него тоже был большой бэкраунд программирования до Python. И им кажется логичным использовать for именно в пределах от и до с помощью range, но в Python for это прежде всего цикл для обхода последовательностей. И бывалые Python программисты об этом хорошо знают.

Еще меня в этой книги смутила некоторая академичность. Такое ощущение, что я читал дипломную работу. Многие термины и объяснения можно было не включать.

Например, автор уделяет внимание логическим и физическим строкам, а также приводит пример использования точки с запятой для разделения нескольких логических строк внутри одной физической:

Разделение нескольких логических строк внутри одной физической

Разделение нескольких логических строк внутри одной физической.

И хотя он пишет, что такой код лучше не писать, через несколько страниц в своих же примерах на другую тему пишет код с точкой с запятой.

Еще один пример из книги

Пример из книги.

Это довольно странный подход. Зачем показывать плохие примеры? Я бы вообще убрал из книги любое упоминание о точках с запятой. Если на протяжении всей книги ни разу об этом ни говорить, то у ученика даже не возникнет желания ими пользоваться.

При этом стоит отдать автору должное, он очень хорошо объясняет. В этом плане молодец. Вопросов в понимании того, что автор описывает, у меня не возникло. У меня другие претензии.

Кстати, еще один момент, который меня смутил — это тема метаклассов. Метаклассы — сложная концепция и даже продвинутые разработчики могут никогда не столкнуться с ней на практике. И я был удивлен, что автор добавил эту тему в книгу. Но на самом деле, он немного перепутал, глава была посещена абстрактным классам, что гораздо проще.

Да там используется слово metaclass, но оно нужно чисто синтаксически. На самом деле речь всё-таки про абстрактные классы. Хотя в таком объеме даже абстрактные классы, наверное будут лишними.

Кстати, даже у Марка Лутца Мета классы — это последняя глава второго тома. И там глава начинается со слов «Возможно, метаклассы являются самой сложной темой в этой книге, а то и во всём языке Python». Поэтому давать их тут — странно.

Выводы

И в целом Укус Питона, как я уже говорил, скорее напоминает дипломную работу, или набор заметок разработчика относительно нового для себя языка программирования. Да, повествование есть, но оно по формату скорее похоже на «Вау, тут блоки формируются отступами. Вау, а тут всё объекты, даже числа и строки. Вау, а тут есть else в циклах.» И вот эта вот Вау часто не имеет ничего общего с тем, что действительно нужно знать новичку.

Это моя главная претензия и именно поэтому я не могу рекомендовать эту книгу. Конечно вы можете почитать её для общего развития, к тому же она бесплатная. Но если вы всё же хотите выбрать что-то более серьезное и объемное, то рекомендую обратиться к одной из книг, на которые я уже сделал обзор.

На этом у меня всё. Пока и успехов в учебе.