uk
Feedback
Лаборатория Математики и Программирования Сергея Бобровского

Лаборатория Математики и Программирования Сергея Бобровского

Відкрити в Telegram

ЛаМПовое с Бобровским

Показати більше
1 390
Підписники
+124 години
+107 днів
+2930 день
Архів дописів
Большинство людей, которые утверждают, что разбираются в программном обеспечении, понятия не имеют, как создавать программное
Большинство людей, которые утверждают, что разбираются в программном обеспечении, понятия не имеют, как создавать программное обеспечение. Если вы думаете, что разработка ПО -- это программирование/написание/генерация кода, то вы никогда не были действительно хороши в разработке.

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

Простите меня дурака, дорогие! 🙏 И я, кого обидел, всех прощаю! 😇 Пусть все простят друг друга. Пусть не таят обид и ненави
Простите меня дурака, дорогие! 🙏 И я, кого обидел, всех прощаю! 😇 Пусть все простят друг друга. Пусть не таят обид и ненависти и отпустят желание мести. Пусть более не причиняют вреда друг другу и пусть знают, как уберечься от страдания и опасности. Пусть возникнут осознанность, сосредоточение и мудрость, и пусть они превратятся в правильное воззрение и устранят неправильное воззрение, положив конец неведению, загрязнениям, влечению, цеплянию и всем оковам, раз и навсегда. Завтра начинается Пост + 23ф, в честь такого, кто начнёт новый курс до весны-26, на него будет скидка 50% 🔥 (а для дам срок продляется до 09.03.25 вкл).

Свежий пейпер "Evolution of Stacks and Moduli" (современные методы построения пространств модулей) Вашингтонского универа, гд
Свежий пейпер "Evolution of Stacks and Moduli" (современные методы построения пространств модулей) Вашингтонского универа, где не рассказывается, а мы уже сами, по заветам Гротендика, выводим в наши интересы, что тамошний "стек" -- это "тип с контекстом выполнения", где равенство типов заменено эквивалентностью морфизмов. То есть это прямая аналогия между 2-категориями/стеками (пруф) и типизированными эффектами! В завтипчиках мы можем иметь тип изоморфизма, но в стеке мы проверяем не равенство объектов, а выясняем, как именно они изоморфны, и как в нём склеивать объекты. Монады -- это частный случай стеков (категория Клейсли для монады), и мы можем теперь композировать эффекты не только последовательно, но и параллельно, с синхронизацией по изоморфизмам! То есть тип эффекта будет нести не только множество значений, но и группу симметрий этих значений, и получаем вдобавок формализацию идемпотентности в коде с побочными эффектами. Надеюсь, понятно пояснил. Ну и? Ну это всё например хаскелевские темки Parameterized monads и Graded monads, которые можно поразвивать. А для моего обучающего агента я выжал отсюда чек-лист "корректен ли код с точки зрения теории категорий". Например, что ты будешь делать, если у объекта появится нетривиальный автоморфизм?:)

Или вот ещё, от самого Карпатого: микрожпт Обожаю => 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. Это лучшее в мире обучение программистов искусственному интеллекту, которое только существует сегодня в Сети.

Вот как надо норм делать (а не эта ваша хипстерская клешня) => 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.

Все хотят использовать искусственный интеллект. Никто не хочет использовать свой мозг.
Все хотят использовать искусственный интеллект. Никто не хочет использовать свой мозг.

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

Пример, как работает мой агент. Вот я загнал в него ценный пейпер "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 (бесплатно).

"Онлайн-образование топчется на месте" "...заметно ухудшились показатели школ программирования: если по итогам 2024 года они росли быстрее всего сегмента (около 36%), то по итогам 2025 года многие из них вышли в минус." С чего бы это? :) Я год никого не брал, весной протестирую текущую ситуацию: возьму 1-2 человека на обучение с полного нуля, и 1-2 из тех, кто уже работает. Раньше места кончались за 5 минут, но совершенно не удивлюсь, если вообще желающих не будет. Я к этому давно подготовился через нетворк :) AI позволяет сегодня любому создавать простое программное обеспечение, но не позволяет никому сегодня создавать простое программное обеспечение.

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

Ну что айтишники, и особенно программисты -- лохи от природы, это база. Сам такой :) А так как зарплата даже крепкого миддла
Ну что айтишники, и особенно программисты -- лохи от природы, это база. Сам такой :) А так как зарплата даже крепкого миддла входит в топ 3-5% зарплат по России, а манипулировать программистом в социальном плане легко и просто, + в гаджетах он хорошо разбирается, вот девушки и не теряются 👍 Как понять, лох ты или нет? Ну вот если трусишь скрыть на собесе свою зп, когда об этом хмурая хрюша спрашивает прокуренным голосом, значит лох 💯 Ну в самом крайнем случае, если совсем трусишка, назови +50% к текущей, а если будут что-то вякать про "проверим", "а по нашим данным", ссылайся (если голос не задрожит :) на защиту персональных данных - за подобное ведь, если не давал согласия на их сбор и использование, сразу штрафы, статьи.

Делаю для ментатов "свой 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

Ставь китика, если не знаешь, что это за логотип.
Ставь китика, если не знаешь, что это за логотип.

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

Короче, что выбираешь? )))
Anonymous voting

Вы сеньор архитект тим/тех лид. Выполняете ли вы *вручную* рефакторинг кода/архитектуры, сгенерённых AI-агентами?
Anonymous voting

Вы сеньор архитект тим/тех лид. Делаете ли вы ревью кода/архитектуры, сгенерённых AI-агентами?
Anonymous voting

Вы сеньор архитект тим/тех лид. Требуется ли вам понимать, как *внутри* устроены проекты, сгенерённые AI-агентами?
Anonymous voting

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