Рецензия на книгу
Python, например

Никола Лейси

Обложка книги Python, например (Никола Лейси)

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

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

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

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

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

Привет, друзья!

Продолжаем поиск лучшей книги по Python для новичков. И сегодня познакомимся с Николой Лейси и её книгой «Python, например».

Я не знаю, как правильно читать данное название, если бы в конце стоял восклицательный знак, я бы сказал так, «Python, например!». Но тут в конце знаков препинания нет, поэтому название можно прочитать как «Python, например или может Java, а может PHP? Да без разницы».

И именно такое ощущение у меня осталось после прочтения данной книги. Но давайте по порядку.

Итак, автор книги Никола Лейси и она известный педагог по программированию. И, судя по всему, её основная аудитория — это школьники. То есть в данном случае мы имеем дело не с профессиональным программистом и не преподавателем ВУЗа, а со школьным учителем. И с одной стороны это несколько снижает требования к книге, а с другой стороны. С чего бы это?

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

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

Но давайте разбираться, действительно ли «Python, например», так хороша, как её рекламирует автор.

Концепция книги

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

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

Первые проблемы

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

print и save в python

print и save в Python 3.

Однако эти имена не зарезервированы. Да, в python второй версии print — это не функция, а инструкция, и писать так было нельзя:

print = "Печать"

Но в третьей версии, а именно Python 3.4 Никола Лейси использует в своей книге, print — это просто имя одной и из функций, и мы легко можем написать такой код:

print = "Печать"

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

Еще интересней обстоят дела с save, про которую пишет автор. Я вообще не понял откуда она взяла save. save в python не используется. Да, вы можете встретить метод save у разных классов, но это даже близко не зарезервированное слово.

Кстати, страницей ранее в качестве зарезервированных слов Никола приводит print и input, и снова мимо:

print и input в python

print и input в Python 3.

Первые задачи

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

И в этих ответах мы видим типичные новичковые ошибки — а именно добавление пробелов в строки, при разделении их запятой внутри print:

Лишние пробелы в print

Лишние пробелы в print.

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

Такую же ошибку мы встречали в книге Джона Пол Мюллера «Python для чайников». Вот если бы Никола заменила запятые плюсом, то вопросов не было бы, а так они есть:

Также для имен переменных она выбрала lowerCamelCase, что для Python не свойственно. И это мы только начали учиться:

lowerCamelCase в Python

lowerCamelCase в Python.

Хотя уже через страницу Никола рассказывает про условия. То есть какой-то детализации в книге вы вообще не найдете. Краткое описание — микро задачи. При этом в теоретической части приводятся примеры кода, в которых отступы заданы одним пробелом. Что не очень наглядно, хотя страницей ранее автор говорит, насколько отступы важны:

Отступы в 1 пробел

Отступы в 1 пробел.

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

А если убрать мои придирки относительно отступов и пробелов, то она вполне может использоваться в учебном процессе. Но точно не как самоучитель.

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

Нет перевода

Нет перевода с английского.

Массисы и апострофы

Пойдем дальше, после условий идут циклы, списки, строки и так далее.

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

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

Апострофы в коде

Апострофы вместо кавычек.

После массивов идут словари, матрицы и файлы. Включая работу с модулем csv. Что в целом неплохо.

Подпрограммы и функции

А далее начинается глава про подпрограммы. Речь, конечно, как вы поняли про функции. Однако в книге вообще нет слова «функция», ни одного. Только подпрограммы. Что выглядит очень странно. Как будто я читаю какую-то старую книгу про бейсик. Именно в этом языке активно использовались именно подпрограммы, и они несколько отличались от функций.

Но тут выбрано именно это название.

После, функций, идет глава про Tkinter. Куда же без него в школьном обучении. А затем мы неожиданное перескакиваем к базам данных, а именно SQLite. Такими темпами к концу книги мы напишем свой web-сервер, мне кажется именно этой информации не хватает в книге объемом 190 страниц.

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

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

Проекты

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

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

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

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

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

Отсутствие описаний в коде

В коде нет описания и комментариев.

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