Данная статья является сборником кратких и субъективных мини обзоров четырнадцати докладов, представленных в этом году на конференции PyCon Russia 2023 в зоне Python. Сразу хочу заметить, что я не ставил цель в точности воспроизвести тексты или содержание выступлений спикеров, а скорее решил оставить в памяти присутствующих на мероприятии краткую эмоциональную зацепку об этом прекрасном событии, а у отсутствующих, если получится, вызвать интерес к изложенным темам, чтобы найти доклады в сети и ознакомиться с ними лично.

Так же, естественно, целью статьи является возможность поблагодарить организаторов за предоставленную возможность присутствовать на столь знаковом событии мира python, поблагодарить докладчиков за их труд при подготовке материала и за горы выплеснутого адреналина от публичного выступления, поблагодарить компанию Магнит, которая оплатила мне билет на данное мероприятие.

Еще небольшое отступление: данная статья — первая публикация автора для сообщества Habr, поэтому сильно не пинайте, все замечания будут учтены в будущем, а критика воспринята как желание сделать автора лучше.

Итак, начнем.

1. «Лимитируй это»

ДЕНИС АНИКИН

Первый доклад был, как его спозиционировал сам докладчик - кринж-доклад: Лимитируй это. Казалось бы, всем в теории известные и простые истины про то, что нужно ставить ограничения на различные ресурсные поинты... Денис рассказал нам историю развития проекта с точки зрения анализа ошибок, которые были допущены ими при разработке. Все мы через это проходили, и у каждого разработчика (в том числе и у вашего покорного слуги) есть минимум одна печальная история, с связанная с каким-нибудь оверфлоу… Слушая доклад, лично я будто смотрел в зеркало на самого себя, как бы парадоксально с точки зрения анатомии это не звучало. Денису спасибо и респект за невероятную смелость в публичном освещении того, что у многих сокрыто в дальних чертогах разума.

2. «А побыстрее можно?»

ЕВГЕНИЙ АФАНАСЬЕВ

Очень познавательный доклад от Евгения Афанасьева о внутренностях питона (двусмысленная фраза, но контекст решает). В частности, докладчик постепенно, очень аккуратно и, можно сказать, нежно погрузил нас на уровень интерпретатора питона. И оттуда, снизу, показал нам как программный код превращается в причудливые абстрактные синтаксические деревья, которые трансформируются в байткод и далее, путем дизассемблирования, предстают перед нами в виде байтовых инструкций. Другими словами, Евгений на примере простой функции продемонстрировал почему код на питоне медленный, рассказал про способы ускорения его выполнения, существующие на данный момент и про целое сообщество, созданное с одной единственной целью - делать питон быстрее. Выводы из доклада, которые сделал я лично для себя - то, что делает пайтон самым привлекательным языком в мире, одновременно делает его медленным. И, похоже, этого не изменить, по меньшей мере в обозримом будущем. Тем не менее, Евгению спасибо за увлекательное погружение в глубины питона. 

3. «Утечки памяти и дедлоки: как выстрелить себе в ногу»

АРТЕМ СТРЕЛЬЦОВ

Интересный доклад от Стрельцова Артема об утечках памяти. Как оказалось, никто не застрахован от ошибок, особенно от таких скрытых ошибок, как утечки памяти. Никто - это значит совсем, абсолютно никто, в том числе и стандартные библиотеки. И это особенно обидно. Вместо приятных прогулок по вечернему летнему городу и размышлений на вечные темы, замученный разработчик вынужден бесконечно дебажить в поисках дыры, через которую вытекает память приложения. Как этого избежать или свести риски к разумному минимуму рассказывал нам Артем. Простые и короткие советы, вымученные долгими часами поиска ошибок и отладки приложения: выбирать проверенные и популярные библиотеки, вкладываться в хорошее логирование, тестировать приложение на предмет утечек, проверять настройки тестового окружения. Артему спасибо за доклад и за то, что поделился с нами ценным опытом.

4. «Отладка на низком уровне»

АНДРЕЙ ШУБИН

Андрей Шубин в своем докладе рассказал про правильную и глубинную отладку кода в программах на питоне. В частности, нам были представлены различные сторонние решения для отладки кода и их сравнительный анализ. Андрей продемонстрировал как можно анализировать расход памяти приложением, расход процессорного времени, а так же анализировать сетевой трафик. Достаточно интересный доклад на не изъезженную тему. Самому не приходилось отлаживать свои приложения на таком уровне, но однозначно плюс в копилку знаний на тему deep debugging. Сам Андрей начал выступление с фразы: «Вы отлаживаете не правильно...», и он, по моему мнению, с лихвой оправдал свое утверждение. Спасибо ему за своего рода ликбез.

5. «Легковесный ЧПУ с EtherCAT на python и С»

ДАНИЛ КРЫЦЫН

Очень неординарную тему представил Данил Крыцын про применение питона в достаточно не типичной для него (для питона) отрасли - программирование станка с числовым программным управлением (ЧПУ). На первый взгляд, все достаточно логично: есть питон - язык программирования, есть станок с ЧПУ, т.е. станок управляемый программой. Казалось бы, складываем первое со вторым и имеем станок управляемый питоном... Но, естественно, не все так просто. Данил в своем докладе рассказал нам о том пути, который ему и его команде пришлось преодолеть от нематериальной идее, к физическому механизму, который из набора байт и куска дерева способен произвести, например, подставку для мобильного телефона. К стати, именно такую подставку, изготовленную на их собственном станке, привез с собой Данил и подарил ее за лучший вопрос из зала. Хочется поблагодарить Данила за действительно интересный доклад и пожелать успеха ребятам в их работе. Возможно, на следующем pycon они приедут с рассказам про робота, управляемого питоном, а может сам робот расскажет про это со сцены.

6. «Как использовать serverless и не наломать дров»

ПЕТЕР ИБРАГИМОВ

Следующий доклад был посвящен достаточно актуальной и относительно свежей теме serverless приложения. Как создать высокопроизводительное приложение и при этом не использовать серверы? На этот вопрос давал ответ Петер Ибрагимов из компании Whoosh. По его словам, одной из задач, которые решает серверлесс-подход - это возможность в конкретный момент времени использовать столько производственных мощностей, сколько необходимо для покрытия текущей нагрузки. Которая, в свою очередь, может то увеличиваться, то уменьшаться в разные моменты времени в зависимости от интенсивности использования вашего приложения. Например, это, как можно было предположить из названия представленной компании, нагрузка от использования арендованных самокатов: она минимальна ночью, когда пользователи спят, максимальна в утреннее и вечернее время, когда они едут на работу и домой, соответственно. Серверные мощности для покрытия нагрузки подключаются и отключаются автоматически средой, в которой развернут проект. При таком подходе, вы оплачиваете только реально потребляемые мощности сервера, не переплачивая простои оборудования. Звучит довольно неплохо, да? Но не всё так просто, как может показаться на первый взгляд. О тонких моментах, подводных камнях и темной стороне использования серверлесс-подхода говорил спикер в своем докладе с практическими кейсами и ценными примерами. Петеру спасибо за бесценный опыт и нескучное повествование. 

7. «Да кто такие эти ваши тайп-чекеры?»

МИХАИЛ ГУРБАНОВ

Глубокое и подробное исследование четырех популярных решений для проверки типов в питоне было изложено в докладе Михаила Гурбанова. Кроме этого были рассмотрены неочевидные возможности каждого из них. Очень приятный доклад в плане качества материала: все строго структурировано и классифицировано. Если в моей практике встанет выбор конкретного тайп-чекера, однозначно буду использовать данный доклад в качестве базы для принятия решения. В сравнительном анализе с большим отрывом победил MyPy и это ни сколько не удивительно, так как данный проект поддерживает сам Гвидо ван Россум. Спасибо Михаилу и всей их команде за исследование и за то, что поделились с нами.

8. «Software vs Hardware. Противостояние»

МИХАИЛ ДЬЯЧЕНКО

Второй день конференции открыл Михаил Дьяченко, который представил сообществу достаточно нетипичный доклад. Проект, над которым он работает, отвечает за удаленное обслуживание автоматических заправок. Они являются самообслуживаемыми и конструктивно состоят из нескольких блоков, выполняющих различные роли: прием оплаты, установка связи через интернет и прочие. Так вот вопрос, что делает каждый разработчик, когда его приложение или сервис начинает работать не так, как это задумывалось, т.е. когда программа начинает глючить? Правильно: в общем случае он идет искать ошибку в коде. А что будет, если код обслуживает сложное оборудование, которое тоже глючит и ломается? Тогда к ошибкам в коде добавляются глюки оборудования. И порой ситуация может дойти буквально до абсурда. Например, Михаил рассказал как долгая и мучительная отладка оказалось просто тщетной, когда выяснилось, что в агрегат, контролируемый программой, просто забралась гусеница, которая своим телом замкнула эклектическую цепь и изменила показания измеряющих приборов. Другими словами, доклад Михаила явился своего рода иллюстрацией ко всем известному анекдоту про лампочку и программистов. Спасибо Михаилу, что поделился с нами, а мы двинемся дальше.

9. «Через боль с dependency-injector»

ДАНИЛ ГУБАНОВ

Про реализацию патерна dependency injection (DI) рассказывал в своем выступлении Данил Губанов из компании Точка: какие проблемы способен решить DI, сложности и ошибки при реализации, выбор стороннего решения и разбор плюсов и минусов представленных в докладе библиотек. DI является одним из классических патернов в ООП и его основная цель - уменьшение связанности компонентов приложения, в следствии чего оно становиться легко масштабируемым, отладка и тестирование становится проще. Но это в теории. На практике же, неправильная имплементация данного патерна может нанести больше вреда, чем пользы. Например, ухудшится читаемость кода, что, как говорит один наш общий знакомый, увеличит когнитивную нагрузку на программиста, и, как следствие, увеличит количество ошибок, растягивание сроков реализации проекта и усложнит вход в проект новых разработчиков. Как этого не избежать и как правильно внедрять DI в свои приложения рассказал Данил, за что ему и его команде огромное спасибо.

10. «Функциональщина в Python — это плохая идея?»

АНДРЕЙ ВЛАСОВСКИХ

Искрометнейший доклад от Андрея Власовских расположился в пространстве между актерским перевоплощением и диссоциативным расстройством личности. На тридцать минут сцена превратилась в театральные подмостки, а докладчик в актера театра одной роли. Четыре личности, четыре мнения - один актер. При всём при этом, в докладе поднята достаточно актуальная и насущная тема - «Функциональное программирование против объектно ориентированного (ФП против ООП)». Тема довольно сложная и холиварная. На мой взгляд спикеру удалось выдержать некий баланс между апологированием и критикой ООП. Тем не менее, добиться идеального равновесия между двумя точками зрения не получилось - уже само название доклада семантически перевешивает в сторону ФП, плюс к этому, аргументы, хоть и были эффектно представлены, но защищали в большей мере ФП. И это не удивительно, так как докладчик и не скрывает своего предвзятого мнения, о чем он честно проговорил в дисклеймере к докладу. Спасибо Андрею за познавательный фан.

11. «Mojo — революция или хайп?»

АНДРЕЙ ГЕЙН

Доклад от Андрея Гейна. Mojo - тема сравнительно недавнего хайпа на просторах ит-сообщества. В мае 2023 года компания Modular представила на суд общественности Mojo. Что это? Новый язык, надстройка на python или фикция с кликбейтными бенчмарками, выложенными для привлечения внимания? Как заявляют разработчики нового языка, скорость работы приложения на нем превышает python в 35000 (Тридцать пять тысяч!) раз. Возможно ли это и если возможно, то за счет чего? На этот и другие вопросы отвечал докладчик в рамках проведенного им исследования новой технологии. В итоге, в ближайшем обозримом будущем нас ожидает новый, быстрый, высокопроизводительный язык программирования, который будет востребован в среде, где быстрые вычисления являются основой: ML, Data Science и Big data. Благодарим Андрея за прекрасный доклад и за время, потраченное на подробное исследование.

12. «Архитектура кнута и пряника»

НИКОЛАЙ ХИТРОВ

Николай Хитров из компании Литрес представил свой доклад про то, как линтеры помогают поддерживать код в приложении единообразным и чистым, согласно требованиям и стандартам проекта. Очень понравилась то, как легко и увлекательно была подана достаточно скучная информация. Ведь анализ возможностей современных литеров нельзя назвать увлекательным чтивом. Тем не менее докладчику удалось преподнести информацию с толикой достойного юмора и при этом донести основную мысль. Особенно повеселила начальная иллюстрация к выступлению, на которой с одной стороны была фотография Дональда Кнута, а с другой тортик из игры Portal. И если с тортиком, как аллюзией на пряник, более мене все понятно, то фото Д. Кнута сопровождалось эпичной фразой: «... а это Дональд Кнут, он смотрит на ваш код как на унылое г...но». В итоге, лично на меня доклад произвел определенное впечатление и вызвал желание, по меньшей мере, обозначить перед нашей командой необходимость использования литеров в проекте. На основании последнего, можно сказать, что спикер добился поставленной цели, как минимум в моем лице. Спасибо Николай.

13. «Эволюция нового сервиса и типичные ошибки при его развитии»

ДАНИИЛ СЕРБИНОВИЧ

Даниил Сербинович из онлайн кинотеатра Okko поделился с участниками pycon технологией эволюционного развития сервиса на пайтон. В ходе своего доклада он коснулся важных аспектов роста проекта от mvp до стабильной беты и далее. Рассказал, как им приходилось впихивать постоянно растущие потребности бизнеса в их приложение, и что в итоге у них получилось. Было много кода на экране, и это хорошо - лично я люблю код. Точнее люблю хороший код. Было очень интересно увидеть как построены процессы в таком высоконагруженном сервисе как онлайн кинотеатр. Меня до сих пор охватывает некий трепет, какое-то чувство потаенности, когда ты можешь заглянуть по другую сторону экрана своего мобильного телефона, так сказать, подглядеть в святая святых. Наверно это до тех пор, пока не окажешься там лично, с мышкой и клавиатурой в руках и кучей задач в джире. К слову сказать, автор данной статьи получил приз за лучший вопрос из зала и теперь является счастливым обладателем свитшота от компании Okko. Спасибо Даниилу за доклад и за выбор меня среди прочих достойных претендентов. 

14. «Почему мы написали еще один фреймворк для Python»

СЕРГЕЙ ВАРИАСОВ

Довольно качественный доклад на тему чистой архитектуры представил python-общественности Сергей Вариасов. Команда из компании Евраз смогла стартовать на своем предприятие новое направление python проектов, при этом, по словам докладчика, уже на этапе mvp добиться поставленной руководством цели по увеличению прибыли предприятия. Успех ребят не остался незамеченным бизнесом и команде была поставлена новая троекратная финансовая цель по увеличению прибыли... Которую наши коллеги с успехом достигли, с чем мы их и поздравляем! По словам Сергея, добиться положительных результатов в проекте помог подход «чистой архитектуры», благодаря которому разрабатываемое приложение получилось гибким, композитным и легко масштабируемым. Еще раз поздравляем ребят из компании Евраз с успехом, Сергею спасибо за историю успеха и желаю им двигаться в том же темпе, не теряя при этом мотивации к работе.

Заключение

В целом, можно сказать все доклады были очень качественными и информативными, а спикеры большие молодцы. Отдельно хочется отметить, что в конкурсе на лучший доклад по итогам голосования победил Андрей Власовских «Функциональщина в Python — это плохая идея?» за невероятную подачу материала.

Еще раз выражаю свою благодарность всем принимавшим участие в организации данного ивента. Увидимся на следующем в 2024 году.

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


  1. Sarjin
    10.08.2023 03:55

    спасибо за информацию.

    у конференции есть видео или только ортодоксальное конспектирование?


    1. mnemchinov Автор
      10.08.2023 03:55

      На данный момент организаторы обещают выложить видео докладов в течении месяца для участников мероприятия. Скорее всего, позднее сделают общедоступными. Ждемс... )