Лаборатория Математики и Программирования Сергея Бобровского
1.39K subscribers
1.42K photos
28 videos
1.07K links
ЛаМПовое с Бобровским
Download Telegram
Вы сеньор архитект тим/тех лид. Делаете ли вы ревью кода/архитектуры, сгенерённых AI-агентами?
Anonymous Poll
30%
Регулярно ревьюим всё
16%
Ревьюим разумно
1%
Изредка, случайно/нерегулярно
3%
Почти никогда
51%
Я пока не этот
👍36
Вы сеньор архитект тим/тех лид. Выполняете ли вы *вручную* рефакторинг кода/архитектуры, сгенерённых AI-агентами?
Anonymous Poll
11%
Регулярно рефакторим всё
23%
Рефакторим разумно
8%
Изредка, случайно/нерегулярно
4%
Почти никогда
54%
Я пока не этот
👍32
РКН, пощади!

YouTube наблюдает, как вся их инфраструктура взрывается из-за того, что 32 128 512 concurrent viewers не удалось развернуть.

Навайбкодили.
😁44🐳7🏆4
Ставь китика, если не знаешь, что это за логотип.
😁92🐳43🤓133🤔2
Делаю для ментатов "свой ai-агент", будет код ревью, рефакторинг и обучалка в одном. Сперва для учебных решений, потом можно будет и ваш рабочий код проверять, а потом и архитектуру.

Сам движок, альфа-версию, собственно, я сделал (handmade 100%), на F#, модельку любую вообще можно выбрать (но хочу, чтобы работало в итоге вообще на любых дешёвых бесплатных нейронках).

Главное -- далее грамотно наполнять его базу, хочу загнать все знания программной инженерии за последние 60 лет, но главный акцент на формальных методах, математике, теории типов, текоркате... Всё планирую готовить вручную, так-то обычного поисковика более чем достаточно. Нейронки тут совсем шлак выдают.

Конечно, говорить агенту "сделай code review, вот тебе шаблонные skiils", это детский сад. Я сделал для начала базовый пайп 5-7 шагов, с разбором кода до AST, рефакторинг чистой семантики, program synthesis, вся база computer science. Вытаскиваем самые глубины смысла :)

А так как в проекте физически нету ничего кроме кода, и любые абстракции и архитектуры -- это чисто умозрительные концепции в уме, то в принципе очень-очень многое о системе в целом, можно сказать по довольно небольшой части кода, ну и изменить тоже (тут можно приплести голографический эффект, фракталы, квантовую физику бла бла бла :).

Поэтому крайне важна соответствующая интуиция. Ну примерно как покермэны, получив десятку и туз, могут только по двум картам весьма точно оценить вероятность выигрыша :) Они тренируются специальным софтом, на рынке немало equity/odds trainers, покерных калькуляторов солверов, exploits, apd gto-комбы... При том, что тут есть глубокие инсайты из теории групп (вы же смотрели "Поедем с тобой в Макао"?).
Вот делаю примерно такое, только для программистов, с учётом, что человеческие скиллы стремительно сдвигаются именно в этом направлении (системные/архитектурные инсайты).


...Ну а пока добавьте в ваши агентские skills самую малышовую базу =>

1) Extract pure functions (separate effects)
2) Replace loops with map/filter + fold(reduce)
3) Reduce mutation / prefer immutability
4) Replace null/exceptions with Option/Result-style explicit handling
5) Function composition / pipelines
5🔥47❤‍🔥85
Ну что айтишники, и особенно программисты -- лохи от природы, это база. Сам такой :)

А так как зарплата даже крепкого миддла входит в топ 3-5% зарплат по России, а манипулировать программистом в социальном плане легко и просто, + в гаджетах он хорошо разбирается, вот девушки и не теряются 👍

Как понять, лох ты или нет? Ну вот если трусишь скрыть на собесе свою зп, когда об этом хмурая хрюша спрашивает прокуренным голосом, значит лох 💯
Ну в самом крайнем случае, если совсем трусишка, назови +50% к текущей, а если будут что-то вякать про "проверим", "а по нашим данным", ссылайся (если голос не задрожит :) на защиту персональных данных - за подобное ведь, если не давал согласия на их сбор и использование, сразу штрафы, статьи.
43😁127🤝2👍1
Логика "буду использовать жпт и агентов, чтобы побыстрее делать рабочие задачки" настолько безмозглая, что представьте, что вы отказываетесь от всей своей профессии вместо того, чтобы приложить хоть каплю усилий, чтобы действительно преуспеть в ней.
Такое мышление сделает тебя бесполезным вообще на любой работе.
1🤔31💯189👍4
"Онлайн-образование топчется на месте"
"...заметно ухудшились показатели школ программирования: если по итогам 2024 года они росли быстрее всего сегмента (около 36%), то по итогам 2025 года многие из них вышли в минус."

С чего бы это? :)

Я год никого не брал, весной протестирую текущую ситуацию: возьму 1-2 человека на обучение с полного нуля, и 1-2 из тех, кто уже работает. Раньше места кончались за 5 минут, но совершенно не удивлюсь, если вообще желающих не будет. Я к этому давно подготовился через нетворк :)

AI позволяет сегодня любому создавать простое программное обеспечение, но не позволяет никому сегодня создавать простое программное обеспечение.

p.s. Никита второй!!!11 🏆🏆🏆
14611👍6
Пример, как работает мой агент. Вот я загнал в него ценный пейпер "Recursive Program Synthesis using Paramorphisms".

Как пишут рекурсию 98% программистов:

int SumPositiveNodes(Node node)
{
if (node == null) return 0;

int left = SumPositiveNodes(node.Left);
int right = SumPositiveNodes(node.Right);

int self = node.Value > 0 ? node.Value : 0;
return self + left + right;
}


Вот как напишут 2% ребят с хорошим университетским образованием (и кто вдумчиво решал мои доп.задачки на второй части АСД :) =>

int FoldTree(Node node, Func<Node, int, int, int> f, int seed)
{
if (node == null) return seed;
int left = FoldTree(node.Left, f, seed);
int right = FoldTree(node.Right, f, seed);
return f(node, left, right);
}

int SumPositiveNodes(Node root)
{
// чистая нерекурсивная логика
return FoldTree(root, (n, l, r) =>
{
int self = n.Value > 0 ? n.Value : 0;
return self + l + r;
}, 0);
}


Да, но это пока классический fold (катаморфизм), когда достаточно только одного результата.

Параморфизм требуется, когда в рекурсивной ветке нам нужно также иметь доступ к самой структуре (хвосту/поддереву).

ListNode DropLast(ListNode list)
{
if (list == null) return null;
if (list.Next == null) return null;

return new ListNode(list.Value, DropLast(list.Next));
}


=>

TOut Para<TOut>(ListNode list,
Func<int, ListNode, TOut, TOut> cons,
TOut nil)
{
if (list == null) return nil;
var rec = Para(list.Next, cons, nil);
return cons(list.Value, list.Next, rec);
}

ListNode DropLast(ListNode list)
{
return Para(list, (head, tail, rec) =>
{
if (tail == null) return null;
return new ListNode(head, rec);
}, null);
}


Результат: исходный код был краток и прозрачен для понимания, а нового кода стало существенно больше, и теперь нифига не понятно :)

Вот в чём сермяга: Para -- это универсальный рекурсивный каркас (порядок обхода и базовые случаи единообразны), который мы тестируем 1 раз.

Далее нам достаточно только проверять нерекурсивную логику внутри различных cons под этот паттерн в нашем проекте.

+ можем использовать Para как fold:

int SumPositive(ListNode list)
{
return Para(list, (head, tail, rec) =>
{
int self = head > 0 ? head : 0;
return self + rec;
}, 0);
}


Где это полезно? В работе со списками и деревьями, в обработке json и подобных структур, в ETL - сокращаем кучу рекурсивного кода (возможно, вообще до одного параморфизма), а добавлять новую логику можно императивно. Но это конечно уровень больше архитектурного code review.

К весне, надеюсь, кто у меня (пере)проходит тему АСД, бета-версия агента будет периодически делать такое ревью решений через клода4.6 и жпт5.3 (бесплатно).
👍37153
Любой, кто серьёзно относится к разработке программного обеспечения, должен сегодня учиться программировать с помощью искусственного интеллекта.

По иронии судьбы, любой, кто несерьёзно относится к разработке программного обеспечения, также должен сегодня учиться программировать с помощью искусственного интеллекта.
😁42💯1764
Все хотят использовать искусственный интеллект.
Никто не хочет использовать свой мозг.
👍35❤‍🔥14😎103🤔2
Вот как надо норм делать (а не эта ваша хипстерская клешня) => mimiclaw

Run OpenClaw on a $5 chip. No OS(Linux). No Node.js. No Mac mini. No Raspberry Pi. No VPS. Local-first memory. Shareable. Portable. Privacy-first. Smarter than PicoClaw.
👌27🏆84👍1
Или вот ещё, от самого Карпатого: микрожпт

Обожаю =>
random.seed(42)

200 строк кода (с комментами), ноль зависимостей.

The most atomic way to train and run inference for a GPT in pure, dependency-free Python.
This file is the complete algorithm.
Everything else is just efficiency.


Это лучшее в мире обучение программистов искусственному интеллекту, которое только существует сегодня в Сети.
2468👍1🔥1
Свежий пейпер "Evolution of Stacks and Moduli" (современные методы построения пространств модулей) Вашингтонского универа, где не рассказывается, а мы уже сами, по заветам Гротендика, выводим в наши интересы, что тамошний "стек" -- это "тип с контекстом выполнения", где равенство типов заменено эквивалентностью морфизмов. То есть это прямая аналогия между 2-категориями/стеками (пруф) и типизированными эффектами!

В завтипчиках мы можем иметь тип изоморфизма, но в стеке мы проверяем не равенство объектов, а выясняем, как именно они изоморфны, и как в нём склеивать объекты.

Монады -- это частный случай стеков (категория Клейсли для монады), и мы можем теперь композировать эффекты не только последовательно, но и параллельно, с синхронизацией по изоморфизмам!

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

Ну и? Ну это всё например хаскелевские темки Parameterized monads и Graded monads, которые можно поразвивать.

А для моего обучающего агента я выжал отсюда чек-лист "корректен ли код с точки зрения теории категорий". Например, что ты будешь делать, если у объекта появится нетривиальный автоморфизм?:)
👍2896❤‍🔥1
Простите меня дурака, дорогие! 🙏

И я, кого обидел, всех прощаю! 😇

Пусть все простят друг друга. Пусть не таят обид и ненависти и отпустят желание мести. Пусть более не причиняют вреда друг другу и пусть знают, как уберечься от страдания и опасности.

Пусть возникнут осознанность, сосредоточение и мудрость, и пусть они превратятся в правильное воззрение и устранят неправильное воззрение, положив конец неведению, загрязнениям, влечению, цеплянию и всем оковам, раз и навсегда.

Завтра начинается Пост + 23ф, в честь такого, кто начнёт новый курс до весны-26, на него будет скидка 50% 🔥 (а для дам срок продляется до 09.03.26 вкл).
49👍12🙏6
Теперь это звучит ещё более жалко, когда программисты говорят, что устали после "долгого рабочего дня" потому что много думали, поскольку всё, что мы делаем сейчас -- это буквально заставляем компьютеры выполнять всю нашу прежнюю работу.
3213😁52🐳2
Большинство людей, которые утверждают, что разбираются в программном обеспечении, понятия не имеют, как создавать программное обеспечение.

Если вы думаете, что разработка ПО -- это программирование/написание/генерация кода, то вы никогда не были действительно хороши в разработке.
34💯146👍5
.

Облако драгоценностей за неделю.

Кто начнёт новый курс до весны-26, на него будет скидка 50% 🔥 (а для дам срок продляется до 09.03.26 вкл).

Начинаю с сегодняшнего дня тестировать моего обучающего ai-агентa на живых, отдельно напишу.

Приватный клуб.

null

Для донов-начинающих:


- Обучаете ли вы программированию на C++ с нуля?
- Нет, C++ не обучаю и никому не советую в качестве первого языка, потому что ...

Для донов-неначинающих:

Продолжаю выкладывать для донов материалы СильныхИдей — доступны моим курсантам, но тут расширенные и дополненные версии.
76. И снова про тесты и TDD
Важно: всё что я пишу про тесты -- это тестирование спецификации! Это база, и я продолжаю рекомендовать TDD: сперва пишем тесты, потом реализацию...

(все старые материалы для донов быстро сгорают)

=

Первые сериалы из существенно переработанных и улучшенных материалов СильныхИдей (по сути четыре книги) доступны на бусти:
1. БАЗА программной инженерии
2. Software Design с акцентом на Programming in Small
3. SOLID-25
4. Software Design с акцентом на Programming in Large

=

Новые материалы для ментатов Лаборатории.

В "Бесстрашные переговоры о зарплате" добавлен материал
"56) Самый сложный тип компаний для ведения переговоров о зарплате - 2".
В продолжение "Самый сложный тип компаний для ведения переговоров о зарплате" (с курса карьеры). Но в 2026-м уже надо учитывать, что ...

"Математика высокой продуктивности - 5" - дополнение.

Новый п.7.0.5 правил: как избавляться от набранных предупреждений.

💪🏻

it's a privilege to do things that are hard.

=

Гайд про функциональные архитектуры, 53 топика (+0), как наберётся 64, дам ментатам доступ.

=

- Ты слышала полный отчёт Гильдии?
- Только резюме. Этого достаточно?
- Да, вероятнее всего достаточно.
- Будьте осторожны с термином "вероятнее всего" - никто не должен думать, будто вы ментат.

"Бог-Император Дюны"
32👍82
Мой handmade агент ↑↑↑ правит стиль Карпатого :)

не ну а чо, Андрей же не профессиональный кодер.

Алгоритм гениальный, но сам по себе это типичный скриптовый говнокод с глобальными переменными, наплевательское отношение к ресурсам (файл не закрывается), нереально отлаживаться (попробуйте тензор в консоль вывести)...

AK не мог попросить своего агента простейший код ревью сделать?

Математики вообще жутко косячат в software design, достаточно на внутрянку экосистемы хаскеля посмотреть ахаха
(а уж как они там срутся друг с другом, одна из топовых эко по токсичности...).

На этой неделе у некоторых из ментатов в лк будет появляться ссылочка "Code Review", просто проходите по ней, и там будет ревью какого-либо вашего кода -- может, с занятий по АСД, может по архитектурам, может по Hard Work и т.д., разберётесь.

Пока бета-версия, отлаживаю скорее свою агентскую технологию (handmade 100%). Я её делаю сразу с прицелом на многое чего, обучение лишь одна из сторон.

Поэтому слишком в рекомендации не погружайтесь :) они сейчас не то чтобы не актуальные, а скорее оверинжинирные.

К тому же карпатовскому коду можно придраться, что дескать
keys[li].append(k) - мутабельное зло
и надо делать чистую функцию (при том что сразу экспоненциально просядем в эффективности, т.к. cpython делает append за O(1)).

Все эти все вещи пофикшу постепенно.
🙏336👏63