Написать хороший учебник по Python сложно. Пожалуй, сложнее, чем по любому другому языку программирования. Как ни странно, из-за того, что Python — универсальный, распространённый и очень простой язык программирования. Давайте разбираться. Python не зря называют языком с низким порогом вхождения: объяснить новичку основы синтаксиса несложно. Главное — правильно отсчитывать отступы. А для тех, кто уже имел опыт программирования на других языках — постараться забыть про всякие begin, end, фигурные скобки и не забывать ставить двоеточия. Изучив синтаксические конструкции, каждый может начать писать на Python простые программы. При этом Python — это язык с очень развитым «синтаксическим сахаром». Почти все задачи на нём можно решить несколькими способами. И каждый из этих способов по-своему хорош. Вообще-то это замечательное свойство — каждый может выбирать синтаксические конструкции себе по душе. Но научить всем этим вариантам новичка будет очень непросто. Представьте себе, что вы пишете учебник по Python. Вы хорошо продумали структуру разделов, выстроили логику повествования. Вы начинаете добавлять примеры и тут, как вредный чёртик из табакерки, перед вами выскакивает этот самый сахар. Какой из вариантов решения выбрать как основной? Какие варианты нужно привести как дополнительные? А какие использовать в последующих примерах? Все эти вопросы непременно встают перед каждым автором учебника по Python. Если не найти на них ответ, то учебник превратится в череду бесконечно ветвящихся описаний вариантов решения одной и той же задачи. Python также очень универсальный язык. От простых программ достаточно легко перейти к сложным. На Python можно запрограммировать почти всё. А если как следует подумать, то вообще абсолютно всё. Для решения любой популярной задачи в сети есть готовый модуль, который можно быстро скачать с помощью несложной команды. Главное — знать, что скачивать. После этого, написав всего несколько строк кода, можно обращать вспять реки и передвигать горы. Создать свой веб-сервер, спроектировать Telegram-бота, построить нейронную сеть для распознавания на фотографиях усатой физиономии своего кота — раньше решение таких задач было недоступно новичкам. Python открыл ящик Пандоры — теперь любой, кто изучил основы синтаксиса может почувствовать себя всесильным разработчиком. К сожалению, именно почувствовать, а не стать. Ведь когда на пути такого «профессионала» возникнет задача, для которой нет готового модуля, он не будет знать, что делать. Каждый автор должен понимать, что читатель его учебника наверняка уже насмотрелся статей о том, как на Python за 5 минут создать свою маленькую Вселенную. После этого он будет искренне недоумевать, зачем его пытаются заставить понять разницу между изменяемыми и неизменяемыми типами данных. Ведь при конструировании Вселенной из готовых кубиков это не понадобится. Так что написать действительно хороший учебник по Python — это довольно непросто. Но Аллену Дауни, профессору компьютерных наук, это, похоже, удалось. Представим, что Python — это не язык программирования, а иностранный язык, который нам нужно выучить. Безусловно, без изучения синтаксических конструкций и постоянного пополнения словарного запаса не обойтись. Но этого мало. Для того, чтобы действительно изучить иностранный язык, нам рано или поздно придётся начать думать на этом языке. Именно этому и учит читателей Аллен Дауни. Не зря книга в оригинале называется Think Python. Подзаголовок книги: «Научитесь думать как программист». Автор ставит перед собой непростую задачу: не только научить читателя новому языку программирования, но и рассказать ему об основных методиках, понятиях и приёмах разработки. В конце концов, с синтаксисом языка можно ознакомиться и по справочникам. Но научиться программировать они никак не помогут. А без этого изучение любого языка — довольно бессмысленное занятие. Иногда описать хорошую книгу можно просто перечислив, чего в ней нет. Итак, в книге «Основы Python» нет: описаний популярных сторонних модулей; рецептов того, как сделать что-то за 5 минут; методики разработки приложений с GUI (за исключением вездесущей черепашки — модуля turtle). Если читатель действительно хочет как следует изучить новый язык программирования, то всё перечисленное будет сильно мешать. Ведь только изучив основы, — если хотите, «философию» языка, — можно двигаться дальше. Всемогущие модули, фееричные интерфейсы, универсальная кроссплатформенность — всё это будет потом. Для начала же надо погрузиться в те тезисы, которые выводятся по команде import this. Но не думайте, что в книге Аллена Дауни есть только сухая теория, которая обычно предшествует практике. Как раз практики в книге более чем достаточно. Причём от классического «Hello, world» читатель совершенно незаметно и довольно быстро переходит к задачам, о решении которых до прочтения книги он не осмелился бы даже подумать. Как вам, например, разработка программы, которая анализирует текстовый файл с какой-нибудь книгой и с помощью цепей Маркова сочиняет новый текст с использованием словаря этой книги? Такой пример — прекрасный повод изучить кортежи. Будьте уверены, у автора книги найдётся интересное упражнение для изучения любого аспекта языка Python. Если вы изучаете обязательный в таких случаях модуль turtle, то будете рисовать с помощью черепашки не просто какие-то скучные прямоугольники, а буквы алфавита и спираль Архимеда. А в следующей главе — почему бы нам не нарисовать один из самых знаменитых фракталов — кривую Коха? Если вы знакомитесь с понятием функции, то вместо скучных вычислений попробуйте найти решение уравнения Великой теоремы Ферма. Правда, не обошлось и без традиционных банальностей. В каждой второй книге про Python встречается пассаж о правильном произнесении слова tuple (кортеж). Не удержался от этого и Аллен Дауни. С другой стороны, это довольно интересная информация, подходящая для первого учебника по Python. Как известно, программист — это не тот, кто пишет программы. Программист — это тот, чьи программы работают. Аллен Дауни это прекрасно понимает — не зря он много лет преподаёт программирование студентам. Поэтому в конце каждой главы книги «Основы Python» есть подраздел «Отладка». Там автор подробно и последовательно рассказывает о методиках отладки кода. Попутно он знакомит читателей с такими понятиями, как рефакторинг, трассировка, отладочный код. В конце каждой главы есть словарик, в котором перечислены все новые термины. Например, там даны определения таких терминов как композиция и инкапсуляция. Мне кажется, что это очень правильный подход: сначала простым языком объяснить читателям смысл понятия или объекта, привести примеры, а уж потом в словаре дать его формальное определение. Ещё одно достоинство книги — в выбранном стиле изложения. Автор общается с читателем не как лектор и не как составитель справочника, а скорее как коллега-гуру, который хорошо знает язык программирования и хочет рассказать вам о нём как можно проще и понятнее. Именно поэтому книгу просто интересно читать — последовательно, страница за страницей. Даже если вы возьмёте её почитать вдали от компьютера, где-нибудь на скамейке в парке, вам будет не скучно — повествование захватывает. А упражнения вы сможете выполнить и потом, дома у компьютера. Вот что автор пишет в первой главе: «Единственный самый важный навык для разработчика — умение находить решение задачи. Для этого он должен сформулировать задачу, подойти творчески к поиску решения, а затем точно и ясно его реализовать». Именно этому навыку и учит книга Аллена Дауни. А способ достижения этой цели — изучение языка программирования Python, который идеально для этого подходит. Если вы хотите не только изучить Python, но и действительно научиться программировать, эта книга вам идеально подойдёт.  Статья была впервые опубликована на другом ресурсе 8 июня 2022.  Техлид, технический писатель, программист