Продолжаем поиск лучшей книги по Питону для новичков.
Сегодня на обзоре «Основы Python — научитесь думать как программист» Аллена Б. Дауни. Профессора компьютерных наук, автора полутора десятка книг по программированию, доктора философии Беркли, магистра наук MIT и обладателя еще множества разных регалий и наград.
Что уже поднимает планку довольно высоко. К тому же оригинальная книга вышла под издательством O'Reilly медиа, что также говорит о качестве. В России же книгу выпускает »Манн Иванов Фербер».
Странная история этой книги
Но это всё лирика, давайте к делу. И свой обзор я начну с обложки, на обратной стороне которой написано, что книга подходит новичкам, а также тем кто уже знает Python, но хочет структурировать свои знания и иметь под рукой справочник. При этом для освоения материала вам не потребуются специальные навыки или серьезные математические знания.
Осталось лишь разбираться с тем, что же автор имеет в виду под серьезными математическими знаниями и их отсутствием.
Вообще, когда я еще только просматривал содержание книги перед покупкой, то сразу обратил внимание на нестандартную последовательность тем.
Например, функции в книге даются до условий или циклов, что довольно странно. Да что уж там, списки идут только в 10 главе, а понятие рекурсии вводится в пятой, а ведь рекурсия — это не самая простая тема. Особенно если сравнивать со списками.
Это меня заинтересовало, я купил книгу и начал её читать прямо с предисловия, которое начинается с заголовка «Странная история этой книги».
Оказалось, что автор изначально преподавал Java и в рамках своего курса в университете написал небольшую книгу в помощь студентам. Чтобы им было проще учиться. И выпустил её под свободной лицензией.
Позже один из учителей адаптировал эту книгу под Python, а еще чуть позже Аллен Дауни сам начал преподавать Питон и продолжил развивать и дополнять книгу. В конечном счете она вышла в печать под названием «Основы Python» или в английском варианте «Think Python».
И из всего вышесказанного важны две вещи: во-первых, книга изначально создавалась в помощь студентам и во-вторых, автор преподавал в техническом ВУЗе.
Отсюда вытекает целевая аудитория книги — студенты технических ВУЗов и вот с учетом этого становится понятно почему функции идут до списков. Ну или почти понятно.
Первый взгляд на содержание
Давайте всё-таки посмотрим контент. И книга сразу бросает вас в бой. Тут нет многостраничных описаний возможностей Python, сфер его применения или набора скриншотов процесса установки. Ничего такого. Автор сразу предлагает вам начать писать код через сервис PythonAnyWhere, который позволяет запускать программы прямо в браузере. Почему бы и нет.
Разумеется первые примеры несложные — вам надо будет выполнить простые арифметические действия: сложение, вычитания, возведение в степень. Просто чтобы почувствовать Питон. В конце главы идут, опят же, несложные задания, с которыми вы скорее всего справитесь.
Но я бы сильно не обольщался простотой первой главы. Ведь нас еще ждут следующие, но перед тем как перейти дальше, поговорим об авторском стиле, ведь нас интересует не только структура, но и подача, а также глубина материала. И тут есть особенность. С одной стороны, автор довольно понятно и легко пишет. Приятно читать.
А с другой стороны в книге даётся самый минимум. Она скорее похожа на хорошие сопроводительные материалы к лекции, чем на самостоятельное издание.
Преподаватель подробно что-то дает на паре, а далее студент открывает «Основы Python» и использует книгу как конспекты или справочник.
Например, возьмем функции. Непростая тема для новичков в программировании, однако тут их вводят уже в третьей главе. При этом материал подается легко и понятно. Но Аллен Дауни не описывает все возможности Python-функций, а дает только то, что нужно для решения заданий и продвижения по книге далее. Вы не найдете тут информацию про позиционные и именованные аргументы, или про то как создавать функции с произвольным количеством параметров.
Ничего такого, тут чисто про то, что такое функции, как их использовать и зачем они нужны. И сразу в бой. В этой же главе же автор знакомит читателя с библиотекой math и математическими функциям. Что опять же подтверждает математический уклон книги.
Погружение в математику и программирование
А в четвертой главе автор знакомит с библиотекой turtle, с помощью которой можно рисовать несложные картинки.
Сама глава называется «Практический пример: разработка интерфейса». И не подготовленный читатель, который не смотрит мои обзоры, может ожидать, что тут будет создавать какой-то графический интерфейс.
Но речь на самом деле про интерфейс функции. В этой же вы узнаете про инкапсуляцию и рефакторинг.
Примечательно, что в современном программировании речь про интерфейс или инкапсуляцию обычно заходит в рамках Объектно-ориентированного подхода. Однако тут автор вводит эти понятия применительно к чистым функциям. И в целом — это для того, чтобы показать вам не только синтаксис Python, но и чтобы познакомить вас с программированием как областью деятельности.
Собственно в этой же главе вы найдете что-то вроде алгоритма создания, документирования, отладки и рефакторинга функций. То есть проходим по всему процессу разработки. А в упражнениях вас ждет практика рисования вот таких фигур:
И вот тут без математики вам точно не обойтись.
Но, к слову, рядом с каждым заданием есть ссылки на исходники с решениями на Гитхабе и эти ссылки работают. Что как мы уже знаем не всегда бывает с книгами. Поэтому если вы не захотите решать задачи, то можете спокойно подсмотреть код.
Итак, закончив изучение функций мы переходим к 5 главе, где на самом деле только начинается настоящее изучение функций, так как глава называется «Рекурсия».
Тут же автор знакомит с условиями, что логично, так как без условий написать рекурсивную функцию нельзя. И собственно, в конце главы вам будет предложено нарисовать Кривую Коха.
И опять же — это не простая задача. Мы с учениками проходим эту тему только в курсе по Алгоритмам, к которому нужно приступать когда ты уже более-менее умеешь программировать. Поэтому перед покупкой «Основ Python&187; стоит оценить свои силы. И это только 5 глава из 21.
И далее автор еще больше погружается в рекурсию и математику и делает послабление лишь к 7 главе, когда начинает изучение итераций. То есть циклов, а после и строк.
При этом в рамках главы про строки автор приводит функцию find, которая ищет позицию символа в строке. Вообще полезно уметь писать такие функции, однако будучи Python разработчиком, такую задачу на практике вы решать не будете, так как для строк в Питоне есть встроенный метод find, который делает то же самое. Собственно автор об этом так прямо и говорит. Остается вопрос, зачем вообще программировать такую функцию если она есть готовая. И тут всё просто: книга для студентов, которые хотят научится программировать на Python, и ключевое тут «научиться программировать», а Python — это лишь один из языков, которые можно использовать.
И это чисто классический Вузовский подход, который мы видели у Златопольского, который является преподавателем и в Укусе Питона, где книга похожа на дипломную работу. Тут примерно так же. Разве что выбор тем гораздо более продуманный нежели чем в Укусе.
Кстати, списки в «Основах Python» вводятся только в 10 главе, после циклов, что еще раз подтверждает мои слова по поводу классического обучения программированию.
Полезные примеры
После списков идут словари и примечательно, что в словарях приводится пример оптимизации рекурсивных вызовов функции Фибоначчи. И это очень важно по двум причинам:
Во-первых, автор показывает, что словари можно использовать как временное хранилище для промежуточных вычислений. Об этом я как раз говорил в обзоре на книгу Python. Экспресс-курс Наоми Седер.
А во-вторых, автор не просто показал алгоритм вычисления чисел Фибоначчи, а еще и показал один из способов оптимизации рекурсии. А это круто.
Погружение в классы
Но давайте пойдем далее. Далее идут главы про кортежи, файлы и классы. Причем классам посвящено несколько глав: отдельно про объекты, отдельно про методы, отдельно наследование. То есть ООП автор уделяет много внимания, что логично, ведь это Python. Напомню, что у того же Златопольского вообще ничего нет про классы. А тут всё ОК.
После основ программирования Аллен Дауни решает немного подсластить синтаксическим сахаром: приводит однострочный if, генераторы, множества, функции all и any, знакомит с модулем collections. Не очень глубоко, но в целом неплохо.
Завершается же книга главой про отладку программ и анализом алгоритмов.
Выводы
Что же перейдем к выводам.
И в целом книга мне понравилась, в ней логичное повествование и понятный язык, но всё же я считаю, что она не подойдет совсем новичкам, в силу своей математической сложности. Да, автор с обложки говорит, что вам не понадобятся серьезные математические знания. Но сравнивает он скорее не со школьной программой, а с дисциплинами, которые проходят в университетах, где он работал. А там совсем другая математика.
И поэтому книга будет отличным дополнением если вы студент технического ВУЗа и вам читают курс по Python.
При чем курс именно в рамках программирования, а не знакомства с языком. Тогда эта книга может быть полезной. К тому же задания, которые в ней приводятся вам точно понравятся. Там есть над чем поломать мозг. Также если вы учитесь в школе в каком-нибудь физ. мат классе, и обучение программированию и математика даются вам легко, то тоже можете взять эту книгу. Будет полезно.
Если же вы совсем новичок и не дружите с математикой или же хотите глубоко освоить именно Python во всем его великолепии, то лучше выбрать другие книги.
На этом у меня всё.
Пока и успехов в Учебе!