Найти тему
Shultais Education

Рецензия на книгу Изучаем Python (Марк Лутц)

Оглавление
Обложка книги «Изучаем Python» (Марк Лутц)
Обложка книги «Изучаем Python» (Марк Лутц)

Мы продолжаем обзор книг по Python для новичков и сегодня на очереди, пожалуй, самая популярная и самая рекомендуемая книга: «Изучаем Python» Марка Лутца.

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

Эту книгу я купил в 2009 году, когда работал в одной медиа компании и разрабатывал городской портал на Django. На тот момент я уже года 2 как программировал на Python, то есть эта книга для меня была не как пособие для новичков, а как хороший источник информации о языке.

Но это было третье издание. А сегодня на обзоре последнее (пятое) издание, и оно состоит из двух томов. То есть книга одна, но на самом деле две.

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

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

ОСОБЕННОСТИ КНИГИ

Во-первых, оригинальная книга, то есть пятое издание на английском языке, вышло в 2013 году, и оно охватывает Python 3.3. К текущему моменту, то есть к 2020 году, книга получила несколько апдейтов и должна затрагивать Python 3.7. Однако эти апдейты условные. Основное же содержание книги не менялось уже 7 лет.

Так в предисловии автор много говорит, о том, что есть две ветки Python: вторая и третья, и вторая доминирует. Но это уже не так, Python 3 прочно занял место в продакшене, а Python 2 стремительно уходит в прошлое. Практически все ключевые библиотеки и фреймворки поддерживают Python 3. Поэтому, конечно, неплохо знать об отличиях второй и третьей ветки, но в обучении я бы делал упор именно на Python 3.

Во-вторых, автор очень подробно описывает, что из себя представляет его книга и как ей пользоваться. В частности — данная книга не является справочником, а это скорее учебное пособие. А еще эта книга описывает возможности Python, и не затрагивает какие-то сторонние библиотеки.

Практически во всех книгах, которые я рассматривал в прошлых видео, авторы показывали примеры работ с различными библиотеками, например с Фласком у Пола Бэрри или PyGame у Майкла Доусона. Тут же вы не найдете ничего подобного. Суть книги в том, чтобы научить вас Питону, а хорошо зная язык вы самостоятельно сможете освоить любую библиотеку, которая на нем написана.

В-третьих, что нужно знать, это то, что данная книга не учит вас программировать. Это кажется немного странным, но это так. Это книга о Python. Когда я рассматривал книгу Златопольского, то сказал, что он учит программировать, но плохо раскрывает Python. А тут ровно наоборот.

Разумеется, у Марка Лутца много тем, которые касаются программирования как области деятельности, но всё же если вы хотите более профессионально научиться алгоритмированию или проектированию программ в принципе, то вам потребуется что-то другое.

И в-четвертых, если вы совсем новичок и никогда раньше не программировали, то Марк Лутц советует параллельно использовать и другие источники получения знаний: курсы по Python, статьи, другие, более легкие книги.

Но, двинемся дальше, с общей концепцией мы разобрались. Теперь поговорим о содержании.

СОДЕРЖАНИЕ

Первая глава книги описывает, что такое Python, а также где и кем он применяется. Список, компаний, которые официально подтвердили использование Питона просто огромный: это Google, YouTube, Dropbox, Netflix, Яндекс, NASA, Cisco, Intel — тысячи их. И после того, как вы достаточно вдохновитесь языком, а Python действительно крут, то может смело переходить ко второй и третьей главам, где автор в деталях описывает как интерпретатор выполняет код, а также способы запуска python программ в разных операционных системах.

Третью главу автор завершает подробным описанием среды разработки IDLE. И хотя Марк Лутц рекомендует её использовать, он всё же уделяет две страницы замечаниям и проблемам, которые у вас могут возникать с этим недо IDE.

Также Марк Лутц даёт краткий обзор профессиональных сред разработки и делает вывод, что выбор IDE зачастую субъективен. Полностью с этим согласен. По историческим причинам я использую PyCharm, но кто-то и в Атоме себя уверенно чувствует.

Далее автор немного говорит про отладку кода и переходит ко второй части книги, в которой начинает непосредственно рассказывать про Питон.

Вторая часть книги находится в первом томе и начинается с четвертой главы, которая называется «Введение в типы объектов Python». Это очень точное название, ведь Python действительно имеет дело с объектами. На самом деле, новичку в программировании может быть сложно, так как в этой главе Марк Лутц вводит много понятий: включая те же объекты, списки, словари, упоминает lambda-функции.

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

Тем не менее Марк Лутц постоянно забегает немного вперед, чтобы сохранить логику повествования, и это усложняет понимание.

Например, при описании строк он затрагивает регулярные выражения, а для новичка регулярные выражения это темный лес.

Также при описании списков он говорит о матрицах, генераторах, функциональном программировании. Да это круто, но для новичка будет сложно.

Завершается глава кратким описанием классов, что с одной стороны логично, но с другой стороны, если вы не знакомы с ООП или, например, изучали в школе Pascal, то классы будут для вас в новинку.

Следующая глава целиком посвящена числам. И тут всё очень подробно, но опять же, я бы не сказал, что текст легко воспринимается. Но зато Марк Лутц хорошо объясняет различия в делении целых чисел в Python 2 и в Python 3. Ровно то, на что забил Зед Шоу.

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

ВТОРОЙ ТОМ

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

Классам в книге уделено более 300 страниц. Это и стандартные возможности, и перегрузка операций, и колбэки, и делегирование, фабрики, декораторы, слоты, в общем всё что есть в Python.

В рецензии на книгу Златопольского я упрекнул его в отсутствии классов и это не спроста. Там вообще про классы не было, а тут целых 300 страниц. По объему как вся книга Дмитрия Михайловича. Также у Златопольского не было про исключения, а у Лутца им посвящено 80 страниц.

После классов и исключений идут еще более сложные темы: байтовые строки, расширенные возможности декораторов, метаклассы.

С некоторыми возможностями в реальности вы можете никогда не столкнуться, например, с теми же метаклассами. Другие темы могут показаться вам странными или малоприменимыми.

Например, в главе по байтовые строки, есть небольшой блок про маркеры BOM или по-другому маркеры порядка байтов. Маркер BOM — это специальный символ, который вставляется в текстовый документ, чтобы указать как в нем расположены байты. Этот символ добавляется далеко не всегда и основная проблема в том, что при открытии файла в текстовом редакторе, текстовый редактор этот символ не выводит, что может доставить массу неприятностей при программной обработке.

Казалось бы, что за маркер BOM и зачем он в книге про Python. Тем не менее, в прошлом году у меня был реальный опыт работы с такими файлами, то есть в коммерческой разработке. Один раз за 15 лет программирования. И таких редких, но в тоже время вполне реальных примеров в книге очень много. Именно в этом главная ценность данной книги. В глубине изложения и понимания Python.

ВЫВОДЫ О КНИГАХ

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

Идеальной же она будет для тех, кто уже умеет программировать на Python на базовом уровне и хочет достичь в этом деле мастерства. То есть для тех, кто хочет стать профессиональным Python-разработчиком — эта книга Must Have. Да она дорогая, но она того стоит.

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

Также, в книге много сравнений второй и третьей версии Python. И фактически она сразу про два языка, поэтому книга и получилась такой толстой.

Теперь немного о минусах. Как я сказал, книга описывает Python 3.3 и в ней должны были быть апдейты до Python 3.7, но их не было. Было краткое описание нововведений в следующих версиях, но без деталей. Как минимум в книге нет аннотации функций, модуля typing и breakpoint, а также asyncio и асинхронного программирования. А это довольно серьезные темы.

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

Вообще, мне кажется, скоро выйдет 6-издание, уже пора. В нем будет меньше Python второй версии и больше новых возможностей третьей. Хотя мои прогнозы — это гадание на кофейной гуще.

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

ССЫЛКИ

Наука
7 млн интересуются