Внимание! У этой книги вышло новое 5-е издание.
Привет, друзья! Это продолжение обзора книг о 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}')
И если вы только делаете первые шаги в программировании, никогда ни на чем не писали, то данная книга будет в самый раз. Бывалым программистам она покажется несколько скучной, хотя автор так легко пишет, что я несколько раз залипал на моментах, которые и так прекрасно знаю.
И в целом я рад, что есть такая книга для новичков. На этом у меня всё.
Пока и успехов в учебе!