Привет, Хабр!

Давайте знакомиться: меня зовут Никита Соболев, я core‑разработчик CPython, mypy и typeshed. Некоторое время назад я понял, что на русском языке довольно мало контента про устройство CPython внутри. В основном доклады с конференций и статьи. Где‑то про память, где‑то про GIL, где‑то про парсер. Но чтоб системно и по всем основным частям в одном месте — такого я не нашел.

И решил сделать своё! Под катом я расскажу, как я делаю «Лучший курс по Питону»* на Ютюбе. Почему он бесплатный. И почему он такой, какой есть. А еще я расскажу, какая польза будет разработчикам от его просмотра.


* «Лучший курс по Питону» по версии CPython core-разработчиков в России :trollface:

Формат

Нельзя не сказать, что последнее время в интернете стало очень много образовательного контента. Обычно — не очень высокого качества. Даже на Ютюбе каждый день вылезают видео типа «Python за 5 часов», «Как поднять зарплату?» или очередные выборы очередного фреймворка для вебчика. Наверно, кому‑то такое может быть полезно. Однако, более глубокий технический контент вымывается из публичной плоскости. Что для меня, как для большого любителя узнать побольше про детали устройства той или иной технологии — довольно печально.

Плюс, довольно много контента делает упор чисто на практику: «как решить задачу Ч или Ц?». Что уже, конечно, намного полезнее, но все еще не дает возможности утолить свою жажду знаний.

Ну и самое важное: почти все существующие курсы делают для полных новичков. Если ты хочешь с уровня джуна качаться дальше — то ты сам по себе. Ищи, читай, смотри. Может быть в компании помогут. Если повезет.

С таким мыслительным фоном, я приступил к созданию своего концепта.

Что получилось?

Во-первых, я решил оставить за скобками вопрос «практической применимости». Можно ли где‑то на практике применить оптимизацию инструкций байткода в CPython — каждый решает для себя сам. Вопрос, конечно, спорный. Много людей в комментариях пишут: «зачем мне знать, как устроен float»? Ответ очень простой: знание внутренностей позволяет делать более надежные, простые и корректные решения.

Далее: каждое видео строится вокруг одной узкой темы и рассматривает её со всех сторон. Например: в видео про float есть и про токенайзер, и про C структуру PyFloatObject, и про вопросы точности и применимости данного объекта.

Ну и самое необычное: я решил сделать каждое видео разделенным на три части по уровню сложности. Для джунов, мидлов и сеньоров. Например: в видео про + (да, про плюс) на уровне для джунов мы повторяем историю с __add__, __radd__ и NotImplemented . На уровне для мидлов уже говорим про более сложные вещи: атомарность __iadd__, как работает приоритет операций через определение PEG‑грамматики и про ast для сложения. Ну а на уровне для товарищей помидоров говорим про: оптимизацию байткода сложения, тайпслоты для сложения чисел и коллекций.

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

Ну и нельзя не упомянуть формат с интервью. Не все темы я могу подробно и полно изложить самостоятельно. Например: я плохо знаю историю стандрарта IEEE-754 (учитывая, количество версий и обновлений данного стандарта). Но, рассказать про него было необходимо. Я понял, что мне нужна помощь. И я пригласил члена рабочей группы по стандартизации чисел с плавающей точкой из IEEE для интервью об истории и будущем данного стандарта.

У меня уже побывали:

  • Mark Dickinson — core‑разработчик CPython с практическим интересом в числах

  • Michael Overton — автор книги про IEEE-754 и член рабочей группы IEEE по стандартизации чисел с плавающей точкой

  • Alex Waygood — core‑разработчик CPython, typeshed и ruff

И конечно же, все материалы (плюс дополнительные ссылки и практические задачки) лежат в репозитории на гитхабе.

Самый важный для многих вопрос. Почему бесплатный? Кажется, что такой формат единственный возможный: чтобы привлечь известных людей участвовать в нем. И чтобы привлечь аудиторию к самим видео. Ну и я наивно верю, что знания должны быть доступны всем :)

Дальнейшие планы

Планов — очень много! Столько всего, про что нужно рассказать! Про устройство строк и планы по переходу на utf-8 внутри PyUnicodeObject в новых версиях питона. Про функции, PyCodeObject, tp_fastcall, PyFrameObject, замыкания. Про symtable и разные типы "переменных". Про классы и ООП (потребуется видео 3 или 4). Про разные аллокаторы и особенности их работы в режиме nogil. А уж про typing сколько всего можно рассказать, ух!

Суммарно я планирую сделать где-то 50 видео. А может и больше.

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

Заключение

Если в вашей компании есть Python разработчики, и если вы хотите углубить их знания – то смело закидывайте в них ссылку на весь плейлист.

Надеюсь, что людям будет полезно и интересно!

Комментарии (7)


  1. Maslukhin
    18.07.2024 13:21
    +8

    Я не понимаю, почему так мало плюсов и ни одного комментария. Это же отличная новость!


  1. ThatSeemsLegit
    18.07.2024 13:21
    +4

    Также ещё есть хорошая книжка на тему python internals https://leanpub.com/insidethepythonvirtualmachine/read#leanpub-auto-from-class-code-to-bytecode


  1. pvzh
    18.07.2024 13:21
    +2

    Курс прекрасный, спасибище! А кроме неугодного кое-кому Ютьюба будет ещё какой-нибудь запасной вариант хранения этого сокровища? Может иногда обновляемая раздача через Торрент или IPFS-сайт?


    1. sobolevn Автор
      18.07.2024 13:21
      +3

      Надо подумать, спасибо!


  1. domix32
    18.07.2024 13:21

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

    Похожая же история и в диалоговых видео - оба спикера смотрят куда-то направо, а не друг на друга.


  1. Animemchik
    18.07.2024 13:21

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


  1. HyperWin
    18.07.2024 13:21

    Очень интересно, будем ждать. Пишем свой язык, очень интересно узнать как CPython управляет всеми встроенными типами данных и как определяет кастомные, как хранит