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

Тонни Гэддис

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

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

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

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

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

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

Привет, друзья! Это продолжение обзора книг о Python для новичков.

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

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

Я бы даже сделал другое ударение «Начинаем программировать на Python». Потому что данная книга не только о Питоне, но и о программировании в целом.

Совсем для новичков

Первую главу автор посвящает устройству компьютеров и роли языков программирования.

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

Тони Гэддис посвящает этому вопросу целую главу, и завершает её тем как работают программы написанные на разных языках и о том какое место в мире программирования занимает Python.

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

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

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

Блок-схема

Схема назначения оценки в зависимости от набранных баллов.

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

Практические задания

Кстати, по поводу примеров. Примеры и наборы заданий в книге — просто огонь. Это не какие-то абстрактные условия, а реальные бизнес-задачи.

Так, в главе про функции автор приводит пример программы расчета зарплаты продавцов, а в одной из задач, к этой же главе, нужно рассчитать месячный налог с продаж или вычислить стоимость страховки. Это крутые задания и таких в книге от 10 до 30 на каждую главу.

К сожалению, к ним не приводится эталонного решения, но это не страшно. В данном случае вам нужно учиться как минимум принимать решение у самого себя.

Помимо бизнес-задач, в книге есть набор заданий на работу с модулем turtle, то есть на рисование простейших фигур, что само по себе неплохо прокачивает навыки алгоритмирования. Вообще задачи черепашьей графики размещены в отдельном блоке «Алгоритмический тренажер», который с одной стороны содержит более абстрактные задания, но с другой стороны позволяет набить руку в элементарных операциях и алгоритмах.

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

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

Сайт издательства

Например, уже анонсировано 5-е издании этой книги, которое выйдет в 2021 году. В нем будут дополнительные задания, появятся f-строки, а также глава про работу с базами данных, что звучит круто.

Еще на этом сайте есть много сопроводительных материалов для учителей и преподавателей. То есть если вы хотите преподавать Python в школе или ВУЗе и за основу берете эту книгу, то у вас будут все необходимые дидактические материалы для работы с учениками. Конечно, на английском языке. Но всё же.

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

Дополнительные темы

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

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

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

# Пример с помощью функции format (из книги)
amount_due = 5000.0
monthly_payment = amount_due / 12 
print('Ежемесячный платеж составляет',
       format(monthly_payment, '.2f'))
       
# Пример с методом format (традиционный способ)
print('Ежемесячный платеж составляет {:.2f}'.
      format(monthly_payment))

# Пример с использованем f-строк (новый способ)
print(f'Ежемесячный платеж составляет {monthly_payment:.2f}')

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

И в целом я рад, что есть такая книга для новичков. На этом у меня всё.

Пока и успехов в учебе!