Привет, Хабр! Я Слава, руководитель команды «Профессиональные инструменты» в Циане, участник ПК Moscow Python Conf и член основного авторского коллектива Яндекс.
Практикума.
Вместе с ребятами мы разрабатываем курс «Разработчик среднего уровня Python» , и сегодня я хочу поделиться своим личным списком книг, которые помогут вам структурировать и углубить свои знания в области разработки на Python.
«Изучение Python», Марк Лутц
Открывается топовая книга Марка Лутца «Изучение Python».
Он занимает особое место в моей карьере — на нем основывалось мое изучение Python. Мне, будучи студентом, это казалось фундаментальным трудом – в книге почти полторы тысячи страниц! Книга позволит вам освоиться в Python, что называется, с нуля.
Почему люди программируют на Python? Кто сегодня использует Python? Что можно сделать с помощью Python? Каковы сильные стороны Python? Ответы на эти вопросы дадут вам общее представление о языке.
Книга знакомит читателя с интерактивным режимом — командной строкой Python. Вы узнаете о том, как выводить текст в стандартный вывод, о модулях и их импорте, а также об особенностях использования Python в Windows. Далее следует описание типов данных и особенностей работы с ними.
Отдельные главы посвящены работе со строками и словарями.
Вы узнаете о ветвлениях и циклах, итераторах, генераторах, функциях и их аргументах, модулях и пакетах как способах организации кода.
Далее следует введение в ООП: классы, наследование, перегрузка операторов, полиморфизм и метаклассы.
В нем говорится об исключениях и их роли в языке.
На мой взгляд, «Изучение Python» очень плавно и всесторонне знакомит читателя с миром Python, с одной стороны, не вдаваясь в подробности, а с другой, давая полную картину.
«Высокопроизводительный Python: Практическое руководство для людей» Миша Горелик, Ян Освальд
Второе место в топе занимает книга М.
Горелика и Дж.
Освальда «Высокопроизводительный Python: Практическое руководство для людей».
Книга позволит вам заглянуть под капот языка.
Что такое высокая производительность по отношению к Python? Книга знакомит с виртуальной машиной Python, учит использовать инструменты профилирования для поиска узких мест в использовании процессорного времени и рассказывает о типах данных с точки зрения их внутренней структуры.
Вы узнаете о многопоточности, асинхронном и многопроцессорном выполнении, о том, как организовать кластерные вычисления и как потреблять меньше оперативной памяти.
Для более опытных есть отдельная глава, посвящённая компиляции кода Python в C. Ваш код может быть абсолютно правильным, но недостаточно быстрым.
Чтобы ускорить процесс, вам нужно понимать, как работает язык, на котором вы пишете.
Это практическое руководство поможет вам глубже понять реализацию Python.
«Python. Разработка через тестирование», Гарри Персиваль
Следующая топ-книга — «Python. Разработка через тестирование Гарри Персиваля.
Мне посчастливилось поговорить с Гарри в рамках последнего Российская неделя Python 2020 .
Говорят, британцы чопорны и обладают странным чувством юмора.
Я думаю, что это стереотипы.
Гарри много и смешно шутил, улыбался, рассказывал истории из своей жизни и был очень открытым.
Лучше всего Гарри может рассказать вам о своей книге сам.
Люди иногда спрашивают меня, как я пришел к написанию этой книги.Книга позволит вам переосмыслить свою работу и подход к ней, и буквально изменит ваше мнение.Впервые я выучил Python по книге «Погружение в Python» — это было примерно в 2008 году.
Я изучал словари, строки, изучал разные особенности языка — все это.
И где-то где-то в главе 14 впервые появились слова о модульном тестировании.
Там нужно было написать калькулятор римских цифр.
И было написано, что сделать это гораздо проще, если написать юнит-тесты.
Я подумал: «О, это звучит круто!» Но это звучало как что-то, что ты должен делать.
Как чистить зубы зубной нитью – хорошо бы чтобы ты делал это каждый день.
Разумеется, при таком сообщении я полностью проигнорировал этот совет и тут же забыл о нем.
К этому моменту я программировал на Python уже три недели — зачем мне модульное тестирование? У меня и так дела идут хорошо! Если я напишу небольшое приложение Django, несколько веб-страниц, не проблема, я смогу все это протестировать.
И угадай что? Я действительно отлично справился.
Сначала.
Когда мое приложение было небольшим, было очень легко проверить руками, работает оно или нет. Где-то на второй неделе разработки у меня уже было восемь разных модулей, 12 веб-страниц, появилось множественное наследование веб-форм, и перед следующим изменением я начал так думать.
- Я внесу изменения здесь.
О нет, это сломает мне тот урок.
Я бы предпочел изменить это здесь.
Хотя.
есть риск, что веб-форма перестанет работать.
Здесь лучше.
Да, именно здесь! Ох, блин, он все еще сломан! И довольно быстро даже малейшее изменение стало для меня очень болезненным.
Я понятия не имел, что на самом деле от чего зависит, меня сдерживал страх внесения изменений, я не мог ничего рефакторить — мой код превратился в лапшу.
Когда я начал свою первую работу, они практиковали разработку через тестирование и экстремальное программирование.
И я был готов усвоить урок, но все равно много жаловался: «Юнит-тесты и функциональные тесты? Зачем так много тестов? Разработка была примерно такой: вносишь микроизменение и запускаешь тест. Вы вносите еще одно микроизменение и снова запускаете тест. И так все время.
Я сказал: «Вы серьезно? Разве мы не можем просто пропустить этот шаг, мы сэкономим время!» На что они мне спокойно сказали: «Нет-нет, Гарри, продолжай делать это».
Я жаловался, ныл, это было тяжело, это отнимало много времени.
Но! Через некоторое время мне открылась красота этого подхода! Я понял, что раньше делал что-то не так, и что это правильный путь.
Спустя пару лет я решил написать об этом книгу.
Разработка через тестирование не является чем-то естественным; Чтобы освоить это, нужна практика.
В книге я просто пытаюсь дать немного практики.
Многие рутинные вещи приобретут новый смысл, и к ним появится интерес.
Качество тестов заметно улучшится, а это неизбежно отразится на качестве кода и архитектуры приложения.
«Шаблоны архитектуры с Python: обеспечение разработки через тестирование, проектирование на основе предметной области и микросервисы, управляемые событиями», Гарри Персиваль, Боб Грегори
Я не мог не поговорить с Гарри Персивалем о новой книге «Архитектурные шаблоны в Python», которую он пишет в соавторстве с Бобом Грегори.
Книгу можно прочитать бесплатно на сайте.
Гарри продолжает.
В конце первой книги я начал говорить о разных типах тестов.Книгу стоит прочитать как продолжение «Питон.В проекте могут быть низкоуровневые юнит-тесты, интеграционные тесты, где мы проверяем интеграцию с API, или с файловой системой, или с базой данных, а также высокоуровневые тесты — e2e-тесты, функциональные тесты; возможно, тесты для всей системы.
Я начал говорить о правильном балансе, о том, сколько тестов должно быть — об идее пирамиды тестирования.
Я также говорил о цене, которую приходится платить за тесты: некоторые тесты очень быстрые, некоторые медленные, некоторые более надежные, некоторые менее надежные.
Оказалось, что сложно найти правильный баланс скорости тестов и уверенности в их надежности.
Новая книга пытается ответить на этот вопрос.
Речь идет о выборе архитектурных шаблонов, способов структурирования вашего кода, которые позволят вам получить максимальное покрытие модульными тестами и минимальное количество тяжелых e2e и интеграционных тестов.
И достигается это именно за счет хорошего дизайна вашего приложения.
Это не просто.
Мне невероятно повезло: я встретил своего коллегу Боба, который оказался знатоком этой темы.
Он стал соавтором книги и рассказал мне, как он решает эту проблему.
Мы перевели несколько хороших идей из мира Java и C# (представителей корпоративного мира) в мир Python. Конечно, мы не просто перебрасывали код Java в Python (это было бы ужасно), мы пытались ответить на вопрос, как лучше всего сделать это питоническим способом.
Главный вопрос, на который я пытаюсь ответить в этой книге, заключается в том, как архитектура приложения может помочь нам добиться высочайшего качества тестов.
Разработка через тестирование».
Если вам понравилась первая книга и идеи, содержащиеся в ней, нашли отклик у вас, то вторая книга ответит на все ваши вопросы и поможет воплотить подход в жизнь — на работе или в личном проекте.
«Питон.
К вершинам совершенства», Лучано Рамальо
Замыкает сегодняшний топ книга «Питон».
К вершинам мастерства» великолепного Лучано Рамальо.
Книга имела большой успех и была переведена на восемь языков.
Если бы я попытался суммировать суть этой книги в одной строке, я бы сказал, что она о том, как наилучшим образом использовать Python 3. Лучано 66 лет, он живет и работает в Сан-Паулу, Бразилия.
Мне посчастливилось поговорить с ним как часть прошлого Российская неделя Python 2020 .
Несмотря на свой возраст, Лучано показался мне очень живым, открытым и веселым собеседником.
В настоящее время Лучано работает над вторым изданием книги.
Он поделился, что главным изменением в новой книге станет глава «Введение в подсказки типов» — она еще не закончена, но ее объем уже составляет 60 страниц и это будет самая большая глава в книге! Однажды Лучано пригласили поиграть в волейбол.
«Я не умею играть в волейбол», — сказал Лучано.
«Никто понятия не имеет, как играть в волейбол, нам просто нужен еще один человек, чтобы сформировать команду», — ответили ребята.
Только капитан команды был профессионалом.
Он пояснил: игрок в глубине поля передает мяч игроку в центре, тот передает игроку под сеткой, который в свою очередь отправляет мяч на сторону соперника.
Это лучшая практика, так играют профессионалы.
Игра началась, команда действовала согласно инструкции и в итоге начала проигрывать.
Реальность заключалась в том, что никто, кроме капитана, не мог играть достаточно хорошо, и зачастую во время передач команда теряла мяч – он падал на землю, и ход переходил к сопернику.
Лучано собрал команду.
- Давайте давай перестанем притворяться, что мы профи — на самом деле мы не умеем играть профессионально! Давайте сразу перебросим мяч в сторону соперника, не проходя внутрь – так же, как мы это делали давным-давно в школе! И это сработало! Это не была лучшая практика, но это была лучшая тактика для ситуации и команды, которая у них была.
И в итоге это привело к победе.
Эта маленькая история также характерна для мира Python. Нужно понимать, что Python использует множество людей, не являющихся профессиональными разработчиками — это физики, биологи, социологи и другие.
Необходимо, чтобы инструмент не требовал от них выполнения Best Practice, а позволял решить насущную проблему.
И Python позволяет это.
Лучано любит программировать.
Он начал изучать Python 20 лет назад и с тех пор преподавал ему множество других людей.
Лучано обнаружил, что, поскольку Python настолько прост в изучении, иногда люди даже не читают руководство целиком.
Из-за этого иногда, читая чужой код, можно обнаружить, что человек пишет Java-код на Python или Ruby-код на Python, то есть он пытается повторить на другом языке то, к чему он привык.
Лучано создал курс «Python для тех, кто знает Python».
После этого он много говорил на тему того, как делать те или иные вещи питоническим способом.
Так родилась книга.
Книга стала очень успешной как в мире, так и для самого Лучано: он устроился на работу в ThoughtWorks. Он очень хотел там работать, но не решался отправлять им резюме из-за высоких требований к кандидатам.
После выхода книги они сами пришли к нему.
Сегодня ThoughtWorks поддерживает Лучано как оратора так же, как они поддерживают Мартина Фаулера.
Русское название книги было предложено разработчиком ядра Python. Юрий Селиванов .
Лучано считает, что это хороший перевод его книги.
Если вы серьезно настроены построить карьеру разработчика Python, то эта книга для вас.
Зачем читать книги
Я глубоко убежден, что книги нужно читать людям всех возрастов.Не только профессиональная литература, но и художественная.
Книги действуют на человека, как точильный камень на саблю – они придают знаниям острую грань.
Стивен Р.
Кови в своей книге «7 навыков высокоэффективных людей» называет это «заточкой пилы».
Этот навык – ваши личные ресурсы и средства.
Он поддерживает и развивает ваш самый ценный ресурс – вас самих.
«Как узнать новоеЭ» — вопрос, который я обычно задаю кандидатам во время собеседований.
Для меня действительно важен ответ, и мне недостаточно услышать о чтении статей, просмотре видео на YouTube или прослушивании подкастов.
Только книги структурируют знания, ведут читателя к просвещению без перерывов и с полнотой контекста.
Перефразируя Антона Птушкина, скажу: «Читайте, оно того стоит!» P.S. Список книг, о котором мы сегодня говорили, не претендует на полноту.
Если вы считаете, что есть книга, которая не менее других достойна занять свое место в рейтинге, то приглашаю вас присоединиться.
Доска Трелло , где мы, российское сообщество разработчиков Python, формируем собственный рейтинг книг о разработке на Python. Чувствуйте себя как дома — голосуйте за существующие книги, добавляйте новые книги или целые категории! П.
П.
С.
Остались вопросы? Найдите меня онлайн: slavabezborodov.com Теги: #python #программирование #Образовательный процесс в IT #обучение #Профессиональная литература #Яндекс.
Мастерская #книги #книги #учебная литература
-
Метрики — Показатели Здоровья Проекта
19 Oct, 24 -
Встречайте Intellij Idea 14 Уже Здесь
19 Oct, 24