Продолжаем поиск лучшей книги по Python для новичков. Сегодня у меня на столе 3-е издание «Python на примерах» А. Н. Васильева.
Судя по надписям на обложке, книга представляет собой Практический курс по программированию, чтобы это не значило. И она обещает продвинуть вас от простейших конструкций до работы со списками и кортежами.
Что довольно странно, ведь списки и кортежи — это далеко не вершина возможностей Python. Хотя тут же автор обещает познакомить и с ООП, что обнадеживает.
Кстати, как я сказал, автор книги А. Н. Васильев и мне потребовалось некоторое время, чтоб выяснить кто же это. В книге практически нигде нет ни его имени, ни биографии. Но я всё же выяснил. Итак Алексей Николаевич Васильев: физик-теоретик, профессор, доктор физико-математических наук. Автор более 30 книг по программированию и математическому моделированию и более 100 научных статей. Мужчина очень крутой, но, судя по всему, скромный.
Но в этом обзоре мы изучаем не личность автора, а его книгу, поэтому давайте ближе к делу. И собственно книга начинается со знакомства с Python и уже с первых строк нам дается четкое позиционирование: мы будем в первую очередь изучать синтаксис Python и параллельно программирование. Это хороший подход, особенно учитывая, что книга-то про Питон.
Далее идет краткое знакомство с языком и в целом автор пишет понятно, но уже с первых строк прослеживается его литературный стиль.
Автор любит, просто обожает вставлять в текст всякие цитаты, отсылки к историческим персонажам, книгам и фильмам.
Сама книга начинается с цитаты из Алисы в стране чудес "Во всем есть своя мораль, нужно только уметь её найти".
К сожалению, я так и не нашел в чем мораль вставлять в книгу такие цитаты. А цитата есть буквально перед каждой главной внутри глав, на протяжении 400 страниц.
Тут есть цитаты из Алисы в стране чудес, Иронии судьбы или с легким паром, фильма Иван Васильевич меняет профессию, Девчат, Кавказкой пленница и Бриллиантовой руки. Весь набор советского кинематографа:
Не спрашивайте меня в чем тут педагогический смысл, это просто стиль автора. Плюс в самом тексте автор делает всякие сноски вроде "Уместно вспомнить слова капитана Врунгеля "Как вы яхту назовете, так она и поплывет"
Но ладно, давайте оставим эту особенность Алексею и перейдем к содержанию и в целом текст книги читается легко, хотя уже при описании возможностей Python автора немного занесло в сторону функционального программирования, и он посвятил этому вопросу целый абзац, который новичку будет просто непонятен. Ведь он еще не знаком с функциями.
Далее автор сравнивает программы на C++, Java и Python. Программы для вывода знаменитого «Hello World».
В целом там всё хорошо описано, единственное меня смутило, что код на C++ и Java оформлен без отступов. Да это не Python и в этих языках отступы не имеют значения, но всё такие правила хорошего тона говорят нам, что отступы всё-таки нужны:
После Алексей пишет пару слов о книге и целевой аудитории, в целом книга должна подходить новичкам, но в ней также будут приводиться сравнения с другими языками, что сделает её чуть более комфортной если вы пишете на C++ или Java.
Также автор обещает приводить реальные прикладные примеры кода, что здорово и мы видели книги, в которых это реализовано хорошо. Есть с чем сравнить.
Далее идет небольшой блок про установку и несколько несложных примеров в IDLE. Автор сразу говорит, что IDLE не самая удачная IDE и тут же дает вводную по работе в PyScripter. И вооружившись питоном и PyScripter мы переходим к первой главе непосредственно о программировании.
Первые главы
В первой главе автор приводит несложный пример и много внимания уделяет описанию переменных, а затем переходит к базовым операторам. В целом описания подробные и понятные, хотя на протяжении всей главы меня не покидало ощущение некоторой сложности или излишней глубины, к которой стремится Алексей.
И собственно, когда автор упомянул комплексные числа, а затем перешел к объяснению побитовых операций и двоичного исчисления, я понял, что мы имеем дело с любителем математики.
Конечно, можно было догадаться по набору регалий автора, но я о них прочитал после того как познакомился с книгой. И соответственно раз уже в первой главе мы столкнулись с темой комплексных чисел, то и дальше от книги стоит ожидать чуть большей глубины, чем мы привыкли до этого.
При этом Алексей всё хорошо объясняет, однако если вы ранее с этим не сталкивались с этими понятиями, то вам реально придется включать мозг для того, чтобы хорошо разобраться в вопросе. То есть книга подразумевает у читателя пытливый ум.
Во второй главе автор рассказывает об условиях и цикле while, который является логическим продолжением условий. И уже в первой трети главы приводит пример вычисления площади фигуры, ограниченной кривыми. Чистая математика, там даже интеграл приводится:
И далее идет решение этой задачи на 4х листах, один из которых — это исходный код программы со вложенными циклами и условиям. Простой эту программу уж точно не назовешь. Но, с другой стороны, она и не сложная. Автор всё подробно объясняет и если вы реально читаете и понимаете, то проблем возникнуть не должно.
Единственное — это еще сильнее сужает аудиторию книги, я бы её описал как студентов физмата. С учетом общей математической нагрузки в университете им будет наиболее комфортно изучать эту книгу.
После while ожидаемо идет цикл for, а затем исключения, что уже не так логично.
Погружение в математику
В третьей главе автор объясняет функции и сразу после базовых описаний переходит к функциям для математических вычислений. В этой же главе приводится функция для решения дифференциального уравнения по методу Эйлера.
При этом автор не забывает упомянуть лямбда исчисление, вложенные функции, функции, которые возвращают другие функции. Также Алексей приводит несколько способов расчета факториала, включая функцию для вычисления двойного факториала, а после и дифференцирования.
И если к концу главы у вас не закипит мозг, то поздравляю, вы математик.
После автор переходит к спискам и кортежам, где, разумеется, есть информация о вложенных списках, с помощью которых можно матрицы. А если есть матрицы, то их обязательно нужно перемножить, что Алексей и делает.
После списков автор рассказывает о множествах, словарях и тексте. Со множествами понятно, тут сам бог велел их объединять, искать пересечения, получать разность. Python в этом вопросе рай для математика, да и не только. Мне было интересно какие математические примеры автор приберег для словарей, но там не было ничего такого сложного. Как, собственно, и с текстом.
ООП
После автор переходит к ООП, что круто. Как вы помните в книге Златопольского тоже были математические примеры, но без ООП. А тут мы всё-таки ближе к питону. Классы также представлены без особой математики в примерах. Разве что в одном из примеров, автор реализовал собственный класс для представления комплексных чисел.
Следующая глава также посвящена классам, а точнее наследованию. В этой главе приводится схема наследования, которая к слову не самая простая. Нужно потратить немало времени, чтобы въехать в эту тему, особенно новичку.
Далее автор описывает различные дандер-методы и чуть подробнее останавливается на complex который приводит объект к комплексному числу. Разумеется, Алексей должен был это сделать. К слову, другим дандер методам, автор тоже уделяет достаточно внимания и приводит много интересных и довольно сложных примеров.
После классов начинается восьмая, последняя глава книги, которая называется «Немного о разном». В ней приводятся особенности Python, о которых автор по каким-то причинам не написал в основных главах.
Например, о том, как писать функции с произвольным количеством аргументов: позиционных и с передачей по ключу. Я бы, конечно, вынес эту информацию в главу про функции, так как с точки зрения Python — это очень важная концепция.
Также в последней главе рассказывается про декораторы, документацию и аннотацию функций. Аннотации — это вообще редкость в книгах о Python. Радует, что они тут есть.
Ну и напоследок автор немного говорит о итераторах и генераторах. Совсем чуть-чуть. На этом книга заканчивается, а у нас пришло время выводов.
Выводы
И в целом «Python на примерах» мне понравилась, я нашел в ней всего два небольших минуса и две особенности. Первый минус в том, что автор не отбивает пробелами операторы и не ставит пробелы после запятых. На работоспособность кода это не влияет, но в целом так писать не по канонам. Второй минус — в книге нет главы про файлы, а работа с файлами — это важная часть работы программиста. Но эти знания вы сможете наверстать самостоятельно.
Теперь об особенностях.
Первая — это цитаты из фильмов. Конечно вкусовщина, но мне кажется тут с этим перебор. Вторая особенность — это математический подход, который пронзает всю книгу, что делает её не лучшим выбором для совсем новичков. Однако студентам физико-математических факультетов эта книга зайдет. Я бы сказал, что она даже поинтересней чем Основы Python Аллена Дауни, которая тоже имеет математический уклон.
Поэтому если вы дружите с математикой и не боитесь сложностей, то можете смело её покупать. А если у вас есть опыт программирования на C++ или Java, то освоение Python будет совсем простым.
Кстати, чуть не забыл. Помимо 30 книг, у Алексея еще есть YouTube канал, на котором есть интересные уроки по Python, тоже с математическим уклоном. Заходите, подписывайтесь, ставьте лайки.