Предсказания будущего и последствия второго-третьего порядка

Мы слышим много разной аналитики и предсказаний, которые опираются на очевидный здравый смысл. Появился крутой ИИ, способный делать работу за человека — все сразу говорят либо о том, как он провалится (ресурсы у OpenAI кончатся, парадигма не та и так далее), либо как он непременно и скоро вытеснит отовсюду людей. Другой пример поймут те, кто жил в России в 2022: вспомните, как многие экономисты, политологи и прочие обещали непременный и оглушительный крах страны в самом скором будущем....

February 10, 2026

Не «тренируйтесь» писать код, вы — лимбическая система

Я регулярно встречаю в чатиках программистов людей, которые считают, что нужно продолжать кодить руками, «чтобы не деградировать». Не чтобы сделать лучший продукт, не чтобы защититься от накопления техдолга, а именно вот в физкультурном смысле, чтобы так сказать мозг жиром не заплывал. Все это, на мой взгляд, указывает на фундаментальное непонимание, куда сейчас движется ИИ. Он все еще уступает человеку в 3 аспектах: «Сила» системы 2 по Канеману. Пока что ИИ тупо хуже думает, чем лучшие из людей (это важно: в большинстве задач ИИ уже умнее среднего человека, но прогресс вперед двигают лучшие, и вот им он пока уступает)....

February 2, 2026

Абстракции приходят с подарками, но они не друзья

Гравитация как сила практически не существует в мире атомов и молекул, но она определяет, как устроен мир глобально: на уровне звезд, галактик и так далее. В программировании есть один трейдофф, который ведет себя точно так же: незаметен «снизу», но определяет практически все «сверху». Мы, программисты, мыслим абстракциями. Не все одинаково, конечно. Там, где написанный код видно сразу, то есть например во фронтенде или в графическом софте, слой «абстрактности» потоньше и вещи немного поосязаемее....

January 29, 2026

Хорошо ли, если все перепишут на Rust?

В последние пару-тройку лет все больше популярных питонячьих инструментов либо переписываются на Rust, либо просто полностью копируются на нем. И все чаще в сообществе встречаются люди, которые утверждают, что Rust во всем лучше, что там zero-cost абстракции смешаны с «синтаксисом в стиле Python». Если это действительно так, почему мы переходим не на Rust, а на инструменты, написанные на Rust? До Rust мейнстримным «быстрым языком под капотом» для питонистов был C, но там трейд-офф был всем понятен: писать больно и тяжело, зато работает быстро....

December 27, 2025

Кажется, 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