Продолжаем поиск лучших книг по Питону и сегодня на обзоре труд Билла Любановича «Простой Python, современный стиль программирования».
В 2019 году на амазоне вышло второе издание этой книги, но на русском языке пока доступно только первое, датированное 2014 годом. Поэтому будем работать с тем, что есть.
Книга позиционирует себя как учебник плюс набор рецептов и утверждает, что она подходит для новичков без опыта программирования. Однако внимательно изучив чуть более 400 страниц я пришел к другим выводам.
Поэтому усаживайтесь поудобней и давайте разбираться что к чему.
Первая глава
Обучение программированию на Python обычно начинается с установки интерпретатора, нет смысла читать о крутых возможностях языка или сферах его применения. Это не приблизит вас к программированию ни на бит, а вот запуск первой программы — это уже какой-то прогресс.
И для запуска Python-скриптов сперва нужно установить интерпретатор. Информацию об установке автор вынес в приложения и, в целом, там всё более-менее понятно.
Возникают лишь сложности с запуском самого интерпретатора из командной строки. В книге не написано как это сделать, точнее нет информации о том, как запустить терминал в Linux и MacOS, или командную строку Windows. Автор подразумевает, что вы продвинутый пользователь и сами с этим справитесь.
Пусть будет так. Вы успешно установили Python, запустили терминал и интерактивный интерпретатор, открыли книгу и давайте посмотрим что-же вас ждет в первой главе?
А в ней автор приводит много довольно сложного кода: со словарями, списками, циклами врезками на C++, Java и PHP, а также пример подключения к YouTube по API.
В приведенном примере кода используются: два модуля, декодирование, работа со списками и срезами, а также цикл. Для начинающего программиста данный фрагмент будет набором чего-то непонятного. Это всё равно что начать изучать иностранный язык с небольшого монолога. Учитель его произнесет, а потом скажет: «Только посмотрите какой красивый язык, кстати я только что показал пример как забронировать столик в ресторане по телефону. Прекрасный синтаксис и произношение.»
Это не самый удачный подход для вовлечения в изучение чего-либо. Правда Билл исправился и на следующей странице подробно расписал каждую строку, но при этом допустил несколько ошибок. Декодирование называл дешифровкой, перепутал номера строк, а срез назвал функцией slice. Не знаю проблемы ли это в переводе или сам Билл запутался, но срез — это точно не функция.
В целом, первая глава довольно сумбурная и малопонятная особенно для новичков. Поэтому рекомендовать книгу начинающим разработчикам я бы не стал.
Следующие главы
Но давайте посмотрим, что будет дальше, а дальше идет глава про числа, строки и переменные. Что вполне логично.
Каких-то откровений тут вы не найдете. Просто описание элементарных возможностей языка с небольшими примерами.
Тем не менее автор, или переводчик, продолжает начатую в первой главе стратегию неверного использования терминов. Он снова называет срезы функцией slice, а строковые методы функциями. Хотя понятие объекта автор уже ввел и логично бы ввести понятие метода, ведь метод — это как раз функция, связанная с объектом. Тем не менее Билл Любанович предпочитает называть split, join, replace именно функциями.т
На работоспособности программ это не сказывается, просто странная неточность в названиях. Сложно сказать с чем она связана. Возможно — это такой свободный, не академический стиль общения автора. Оператор, операция, метод, функция — какая разница. Программа работает и это главное.
В конце главы Билл приводит несколько упражнений, которые, на мой взгляд, довольно примитивные. Думаю, без них можно было спокойно обойтись.
Как работать с книгой
Вообще, лучшая стратегия чтения этой книги — это повторять за автором тот код, который он приводит. С одной стороны код довольно простой и вы сразу видите результат выполнения программы, с другой стороны сами примеры очень интересные.
Например, чуть далее в книге, автор создает словарь с коктейлями и их ингредиентами, а затем с помощью Python пробует найти те, в которых есть водка. Я думаю, это прекрасно.
Итак, как я сказал, лучшая стратегия изучения книги — это повторять код за автором. При этом у вас не должно возникнуть больших сложностей в его понимании.
Но даже если что-то окажется непонятным, то всегда можно почитать описание кода в книге. Оно не сильно подробное, то есть без разжевываний, однако, чтобы закрыть пробелы будет достаточным.
Совсем новичкам возможно будет сложно, по сравнению с тем же Тони Гэддисом, но вот разработчикам даже с небольшим стажем или экспериментаторам с пытливым умом, которые не боятся запускать программы, такой подход в самый раз. Но давайте вернемся к содержанию.
Продолжаем обзор
Следующая глава посвящена составным структурам данных: спискам, словарям и т. д. Тут уже автор вводит понятие метода. При этом это определение он использует при демонстрации создания списка. И вот как раз такой синтаксис скорее похож на синтаксис вызова функции, а не метода.
Конечно, list — это класс, и мы создаем объект. Но если уж и упрощать, то следует говорить, что мы вызываем функцию list, а не метод. Методы можно употреблять только в контексте работы с объектами, и они вызываются через точку.
Автор снова всё свалил в кучу. Но к этому мы уже привыкли.
При этом Билл Любанович охватывает очень большой объем тем, включая lambda-функции, генераторы, декораторы, исключения, модули, классы, объекты. То есть он проходится по всем ключевым особенностями языка. Разумеется, не так глубоко, как Марк Лутц, но в целом у вас сложится довольно полное понимание о возможностях Питона.
И чем дальше мы продвигаемся по книге, тем интересней становятся примеры. Так, в главе про классы, в качестве альтернативы простым классам или словарям предлагаются именованные кортежи. Если честно, я даже не знал, что такие существуют:
Знакомство с популярными библиотеками
В целом, на общее знакомство с Python в книге отводится около 7 глав, а после идут более практические темы, которые включают описание встроенных и сторонних библиотек.
Так в 8 главе автор показывает примеры работы с CSV, XML, HTML и JSON файлами, а также учит работать с модулем pickle и подключаться к базам данных, как напрямую, так и с помощью SQLAlchemy.
В том числе Билл затрагивает NoSQL хранилища, включая семейство dbm, про которое я говорил в рецензии на книгу Марка Саммерфилда.
Еще в книге рассказывается о memcache и redis, не очень подробно, но достаточно, чтобы понять, как они работают и зачем нужны. При этом вы найдете много рабочих примеров кода на Python.
После идет глава о сетях, и автор говорит о модулях requests, flask, beautiful soup, а затем переключается на возможности sys, включая работу с каталогами, файлами, символическими ссылками и правами доступа. Всё что я перечислил — это не какие-то сферические инструменты, это реальные библиотеки, с которыми приходится работать постоянно. Особенно если вы веб-разработчик.
Также автор затрагивает модули для работы с датами, процессами, потоками и очередями. На все эти вопросы Билл выделил треть книги и все они очень полезные.
Последняя же глава называется «Быть питонщиком» и в ней кратко рассказывается о менеджерах пакетов, IDE, стиле кода и PEP8. А также о тестировании, отладке и оптимизации программ. Тут же дается список полезных сайтов и книг.
Среди рекомендаций, например, есть «Изучаем программирование на Python» Пола Бэрри, которую я также высоко оценил. Еще Билл приводит несколько продвинутых книг, включая литературу об анализе данных и создании сложных приложений.
Кстати, автор рекомендует книгу Марка Саммерфилда, на которую я также делал рецензию. И в целом обе эти книги примерно одного уровня, то есть они чем-то похожи по содержанию. Но «Простой Python» мне понравился больше, так как здесь много классных примеров и они не обернуты в какой-то сложный код или графический интерфейс, который усложняет понимание.
Приложения
После основной части идут приложения, в которых автор рассказывает о модулях для работы с изображениями, графикой, экселем, вордом, а также говорит о применении языка в бизнесе, финансах и науке. Думаю, каждый Python разработчик найдет для себя что-то полезное.
И в целом эта книга мне понравилась, даже с учетом путаницы в терминах в первых главах. Для совсем новичков, как я сказал, она может быть сложной. Я же вижу её полезной для двух категорий разработчиков:
Первая — это начинающие Python программисты, которые уже владеют синтаксисом и хотят быстро познакомиться со всей инфраструктурой, которая есть вокруг Питона: библиотекам, Фреймворками, сервисами. Особенно будет полезно если вы хотите развиваться в области web-разработки.
Вторая категория, это web-программисты на других языках, которые хотят быстро вникнуть в Python и посмотреть какие у него есть инструменты. Например, вы пишите на PHP, а сейчас хотите попробовать Питон и вам надо быстро понять, как реализовать на нем похожие по сложности проекты: как работать с базами данных, как настроить кэширование, как написать парсер сайтов или бэкенд.
Если вы относите себя к одной из этих категорий, то книга может быть полезна. Новичкам же лучше выбрать что-то другое: например, Тони Гэддиса или Майкла Доусона.