Рецензия на книгу
Основы программирования на языке Python

Дмитрий Златопольский

Обложка книги Основы программирования на языке Python (Дмитрий Златопольский)

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

Книга является задачником на Python. Сам язык раскрыт не в полном объеме: не затронуты классы, исключения, модули. Но это компенсируется большим количеством заданий на развитие навыков программирования.

Подойдет ученикам, которые изучают Python по другим книгам, курсам или в качестве задачника для программы ВУЗа.

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

Продолжаем обзор книг по Python для начинающих разработчиков и сегодня выбор пал на книгу Дмитрия Михайловича Златопольского «Основы программирования на Python».

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

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

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

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

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

После Дмитрий Златопольский показывает несколько математических операций в интерактивном режиме, а затем приводит пример программы «Hello, world!» В целом, классика.

Правда функцию print в книге почему-то называют инструкцией. Хотя начиная с Python 3, то есть с 2008 года — print — это именно функция, а не инструкция, не операция и не выражение. И это был важный момент при переходе со второй версии к третьей. Возможно, книгу совершенствовали, но недостаточно внимательно вычитывали, и такая опечатка осталась со старых времен. Тем не менее в коде автор использует именно функцию, поэтому ваши программы будут работать без проблем. Тут можно расслабиться.

Далее автор предлагает назвать первую программу «Моя первая программа.py» — однако, называть файлы русскими именами, да еще и с пробелами — это очень, очень плохо. Ни делайте так. Только английские символы и подчеркивания вместо пробелов. Иначе потом проблем не оберетесь.

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

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

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

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

Изучаем Python

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

Также автор вводит понятие форматирования строк и приводит много вариантов форматирования, в основном связанных с вещественными числами. Мельком даёт понятие методов строк.

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

Далее начинается глава про переменные и это неплохая глава. Тут же автор объясняет, что print — это всё-таки функция, а не инструкция. И что он ввёл такое допущение специально. Возможно в этом есть какой-то педагогический смысл, хотя он довольно спорный.

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

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

А вот далее идут полноценные задания со смыслом. И это круто. Есть несложные, но интересные задачки, которые новичку могут сломать мозг.

Циклы и условия

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

При этом интересно, что автор пока обходит стороной списки и словари, но вводит цикл for и функцию range. Хотя если быть более точным, range — это класс, который возвращает итератор. Звучит довольно сложно, да.

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

Итак, как я сказал, автор объясняет цикл for и функцию range, но при этом без ввода понятия списка.

Хотя наиболее круто for работает именно со списками и, в целом, чаще всего именно со списками или другими последовательностями он и используется.

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

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

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

Когда я пришел в Python после PHP, C++ и Паскаля, для меня такое поведение было немного диким.

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

И в данной книге автор показывает, более классический путь программирования, а не PythonNic Way. Путь питониста. Но двинемся далее.

Задачи, задачи и еще раз задачи

А далее Дмитрий Михайлович добавил целую главу, в которой предлагает запрограммировать несколько несложных текстовых игр: чет или нечет, отгадай число, кубик, карты и так далее. Получилось круто и вполне свежо.

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

А затем еще несколько глав с задачами и их разбором. То есть книга больше похожа не на самоучитель или справочник, а скорее на задачник с примерами на Python.

Последовательности и функции

И только с 11 главы автор начинает подробнее разбирать Python последовательности на примере строк. То есть вводит индексы, срезы и методы.

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

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

И, собственно, на этом основная часть книги заканчивается и начинаются приложения.

Приложения

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

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

Но вернемся к книге, в конце автор приводит решения заданий, которые он давал по ходу в разных главах. И это занимает 25% книги, чуть более 100 страниц. А книга и так не самая толстая.

Заключение

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

Но тут не хватает питона. Его изящности и мощности. В книге нет классов, исключений, модулей, каких-то свойственных для Python конструкций. Хотя автор об этом честно предупреждает во введении.

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

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