Рецензия на книгу
Начинаем программировать на Python

Тони Гэддис

Обложка книги Начинаем программировать на Python (Тони Гэддис)

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

Обновленное издание одной из лучших книг по Python для начинающих программистов. Автор рассказывает не только про язык, но и про программирование в целом.

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

В новом издании появилась большая глава про работу с базами данных и язык SQL.

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

Продолжаю поиск лучшей книги по питону для новичков и сегодня на обзоре 5-е издание «Начинаем программировать на Python» Тони Гэддиса. Предыдущее, 4-е издание, несколько лет занимало верхнюю строчку нашего рейтинга и вот сейчас пришло время ему подвинуться.

Начнем с очевидного, у новой книги изменилась обложка, он стала толще более чем на 100 страниц и сами страницы тоже стали больше.

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

Сравнение страниц двух книг

Сравнение страниц двух книг.

А вот толщина книги выросла за счет новых тем, но о них мы поговорим немного позже.

Почему книга хороша

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

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

Пример схем в книге

Пример схем в книге.

Особое внимание стоит уделить примерам программ, которые приводит автор, как правило — это небольшие бизнес-задачи про расчет зарплат, налогов, стоимости страховки и так далее. Такие программы гораздо интересней и полезней, чем безликие и абстрактные задачки в других книгах.

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

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

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

К небольшим изменениям относится информация о f-строках, списковые включения, а также несколько новых возможностей Tkinter.

В прошлом издании «Начинаем программировать на Python» была небольшая странность с функцией format(). Автор везде использовал именно функцию, хотя на практике обычно применяют метод .format(). Тогда мне показалось это странным. Однако в новом издании Тони Гэддис исправился и заменил все функции на f-строки, что делает примеры в книге максимально современными.

Правда про метод .format() автор так ничего и не рассказал, и хотя f-строки очень гибкие и быстрые, с помощью них всё же нельзя создавать шаблоны, а это иногда требуется. Ну да ладно, речь всё-таки про книгу для новичков и такие тонкости ей можно простить.

Реляционные базы данных и SQL

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

В новом книег этой дополнительной главы нет, а вместо неё стоит оригинальная 14 глава про базы данных.

К слову, 15 главу про функциональное программирование вы всё же можете скачать с сайта издательства БХВ, которое выпускает книгу в России. Ссылка на архив с исходниками и 15 главой есть в книге и она работает. Правда учитывайте, что там архив в почти в 700 Мегабайт и это потому что в этом архиве не только исходники, но и видео уроки от Тони Гэддиса. Да да, к данной книге прилагаются еще и видео уроки, ссылки на которые Тони дает прямо на страницах. Правда эти уроки на английском языке, но всё же.

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

В общем я решил от корки до корки пройти 14 главу. Начинается она ожидаемо с общего описания, что такое СУБД и SQL. И Тони Гэддис, как всегда, раскрывает темы доступнымязыком. Читается на одном дыхании.

При этом автор довольно быстро приходит к созданию SQLite базы данных на языке python, а после посвящает несколько страниц созданию и наполнению таблиц разными способами.

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

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

Пример таблиц в книге

Пример таблиц в книге.

Также в книге я нашел интересную ремарку, о том, что при использовании тройных одинарных кавычек, внутри мы должны использовать обычные двойные кавычки или наоборот. Это немного странное утверждение, к тому же сам Тони Гэддис во второй главе говорит, что в тройных кавычках мы можем использовать любые — и одинарные и двойные. А тут он сам себе противоречит.

Ремарка про кавычки

Ремарка про кавычки.

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

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

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

Потенциальная проблема с одинаковыми кавычками

Потенциальная проблема с одинаковыми кавычками.

Далее Тони Гэддис приводит небольшую интерактивную консольную программу, с помощью которой можно вставить несколько записей в базу данных. Программа мне показалась интересной, но в ней есть небольшая проблема. Дело в том, что для реальной вставки данных в базу, нужно выполнить коммит. То есть мы можем написать несколько INSERT-запросов на вставку, но пока не вызвана функция commit() — эти данные в базу данных не попадут.

И если посмотреть на программу, которая приводится в книге, то видно, что commit() выполняется уже после того как мы сформировали все запросы на вставку:

Потенциальная проблема с commit()

Потенциальная проблема с commit().

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

Поэтому данную строку логично перенести внутрь цикла, чтобы коммит выполнялся и фиксировал каждый INSERT-запрос. Конечно, это скорее придирка с моей стороны, но всё же. Хотя далее по книге Тони Гэддис использует коммит уже внутри цикла подтверждая каждую операцию. Не знаю почему в первом примере он так не сделал.

Но зато Тони немного рассказал про SQL-инъекции и опасность использования f-строк в SQL запросах. Хотя если бы он в дополнение привел пару примеров таких запросов, было бы супер.

После создания и наполнения таблиц идут разделы про выборку данных с помощью SELECT-запросов, в том числе рассматривается конструкция WHERE.

В целом там всё понятно, единственное в качестве оператора равенства Тони использует двойное равенство как в Python. SQLite это разрешает, но в целом такая конструкция режет глаза, так как в SQL всё-таки принято использовать одинарное равенство.

Оператор равенства в SQLite

Оператор равенства в SQLite.

После SELECT идет раздел про UPDATE, в котором Тони Гэддис грамотно предостерегает о выполнении обновления без условия WHERE, что может повредить все ваши данные, особенно если вы не поленились выполнить commit().

Закрепляется же тема апдейтов интересной программой с текстовым интерфейсом про обновление данных в базе по их ID.

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

Следом за составными ключами идет обработка исключений, а после мы переходим к концепции CRUD — CREATE, READ, UPDATE, DELETE и пишем большую программу на 4 страницы по взаимодействию с базой данных (стр 770). Программа интересная, несложная и хорошо документирована.

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

Организация нескольких таблиц

Организация нескольких таблиц.

А после приводит несколько запросов по извлечению данных из нескольких таблиц и при этом соединяет их в блоке WHERE, а не JOIN и это логично. На начальном этапе такие запросы для новичков более понятны, чем JOIN. JOINов в книге вообще нет, SQL здесь рассматривается на очень примитивном уровне, но для начинающих разработчиков этого достаточно.

После теории Тони Гэддис переходит к написанию небольшого GUI для нашей базы данных на ткинтере и это круто. Поэтому что это позволяет отработать не только базы данных, но и ООП.

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

И исходники, и все базы данных представлены в двух вариантах: на английском и на русском языках. Да, в издательстве БХВ заморочились и перевели вообще всё, даже записи в учебных базах данных, что вообще-то круто.

Перевод таблиц

Перевод таблиц.

Выводы

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

И за это я еще больше люблю «Начинаем программировать на Python».

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

Что ж, у меня на этом всё, а вы не забывайте ставить лайк и подписываться на канал.