Кажется, LLM неожиданно хороши в создании DSL

Предметно-ориентированные языки, когда они используются эффективно, поднимают уровень абстракции над программными идиомами и паттернами проектирования. Они позволяют разработчику выразить свои намерения на соответствующем уровне абстракции. Роберт Мартин, «Чистый код» Многие программисты считают создание собственного языка программирования чем-то типа вершины возможного творчества. Но не потому что это требует насмотренности и развитого дизайнерского чутья, а потому что это просто технически сложная задача, требующая многих часов работы редких по интеллекту людей. Но теперь, кажется, это больше не так....

December 11, 2025

Beautiful reprs

When creating libraries in Python, I have always strived to make their behavior transparent to other programmers. No matter how complex the library is internally, it should have a clear and obvious facade externally. One of the important parts of such a facade is the way objects are presented as strings. What does a user do when they first encounter my library? I assume they try to run it in REPL....

November 19, 2025

INSTLD: делаем с пакетами странное

Чуть больше года назад я задался вопросом, из которого потом вырос целый небольшой пэт-проект: возможно ли прямо в рантайме установить питонячий пакет и воспользоваться им? Оказалось, что да, можно. Сегодня я расскажу, как это сделать, как это работает, и какие уязвимости открывает перед всей питонячьей экосистемой. Первая доза бесплатно Инструмент, который я по итогу написал, называется INSTLD. Устанавливается он одной командой: pip install instld Давайте проверим, что он работает. Вбив команду instld в консоль, вы увидите приглашение ко вводу текста, которое выглядит примерно так:...

February 12, 2025

Многопоточный Python на примерах: токены отмены

В этой статье мы обсудим паттерн “Cancellation Token” (или по-русски - “токен отмены”), популярный в некоторых других языках, но почему-то обойденный вниманием в Python-сообществе. Он о том, как безопасно и красиво завершать работу функции, треда или корутины. Эта статья — уже третья в серии про многопоточное программирование на Python. Предыдущая была про защиту от дедлоков, но читать её для понимания этой не обязательно. Вся серия предназначена для программистов, знакомых с базовыми концепциями многопоточного программирования....

November 21, 2023

Многопоточный Python на примерах: избавляемся от дедлоков

Дедлоки — распространенная проблема в многопоточном программировании. В больших приложениях вручную отслеживать порядок блокировок может быть достаточно сложно, причем эта проблема может не всплыть на этапе тестирования и случиться только в каких-то сложновоспроизводимых кейсах при реальном использовании. Существует много способов их избегания, но здесь мы рассмотрим только один — автоматическое выявление дедлоков на основе графа ожидания. Эта статья — продолжение серии про многопоточное программирование на Python. Предыдущая была про хранение настроек в многопоточном приложении, но читать её для понимания этой не обязательно....

June 16, 2022

Многопоточный Python на примерах: как правильно хранить настройки приложения

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

November 18, 2021

«Оптимизируем» функции на уровне AST

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

September 7, 2021