Лаборатория Математики и Программирования Сергея Бобровского
1.41K subscribers
1.46K photos
28 videos
1.1K links
ЛаМПовое с Бобровским
Download Telegram
Заставь это заработать.
Сделай это правильно.
Сделай это быстро.
-- Кент Бек

Нет смысла долго шлифовать какашку 💩 , которая ещё даже не работает :)

И ваш код не считается реально рабочим, пока им не начнут пользоваться клиенты 😎

Нет смысла писать идеальный код для фичи, от которой вам придётся отказаться в следующем месяце, так как у менеджеров возникнет новая уникальная идея 🙈

Фича изменится ещё до того, как реально заработает, и все ваши усилия по её шлифовке будут напрасны 😂
131👍8🐳3🔥2
EdTech в 2026-м стремительно рушится, и это прекрасно: крупные онлайн-ИТ-школы уходят в глубокий минус, инфоцыгане массово сбегают с известных платформ для создания курсов, а агрессивная реклама "с нуля в айти за полгода на 250k" наконец стала совсем бессмысленной.
 
Ну, невозможно было не зайти в тупик, когда строишь свой бизнес через количество занимающихся и "зороботок на запуске". При том, что они тратят огромные миллионы только на рекламу, а я трачу на рекламу ноль. Я бы вполне мог их всех унижать "не числом, а уменьем": результатами моих элитных разработчиков :)
 
В целом же в EdTech вроде как фиксируется хоть и небольшой, но рост, но вот за счёт каких драйверов:
- обучение детей,
- слияние с госами (в 25-м рекородное число девятиклассников - 64% - пошли в колледжи, а не в 10-й),
- ии-цыганство :)
 
Ну и карьерное менторство ещё, где с вас сдерут три зарплаты за то, что с умным видом посоветуют "подправь резюме и делай побольше откликов на хх".
 
В принципе, да и пусть хвастаются, что устроили 100500 человек на 100500 рублей за 3 месяца, жалко что ли.
 
А я буду хвастаться, сколько моих ментатов изучили теоркат и гомотопическуюs теорию типов.
👍2910🐳3
PR-AF -- опенсорсный агент по ревью кода, который занимает 2-е место из 42 в рейтинге Martian, опережая CodeRabbit, Copilot и Devin. Причём стоит его работа примерно в 10 раз дешевле, чем при использовании аналогичных проприетарных инструментов. Просто один вызов API.
2🔥2784
В 1971-м святой логик Жан-Ив Жирар придумал математическую модель типизации - System F (лямбда-исчисление второго порядка).

В 1973-м святой Робин Милнер реализовал эти подходы в языке программирования ML (OCaml, F#...): из одной только сигнатуры типа функции можно вывести нетривиальные теоремы о её поведении, вообще не заглядывая в код.
(система типов Хиндли-Милнера, автоматический вывод типов, пи-калкулусы как стандарт параллельных вычислений... европейская школа cs абсолютный топчик)

В частности, тогда и появилась концепция "дженериков" (параметрический полиморфизм, который так-то был известен с 1960-х). Возможность написать функцию, которая принимает неизвестный тип T и ничего не знает о его внутренностях, активно использовалась в академических языках, пока святой Филипп Вадлер, занимаясь попутно созданием Хаскеля, в легендарной статье "Theorems for free" 1989 г. доказал нужную математику для абстрактных лямбда-исчислений, гарантировав, что такие методы суть морфизмы функторов.
 
...Но вся эта математическая красота и строгость, увы, осталась заперта в башне из слоновой кости. Индустрия программирования, в своей жажде быстрого профита отвернулась от чистоты теорий типов и категорий. Мир выбрал JavaScript с его неявным приведением типов, Java с её null, который ломает все функторы, и Python, где типы лишь необязательные подсказки. Рефлексия, побочные эффекты, исключения и грязные хаки пробили брешь в идеальных лямбда-исчислениях...
И даже Хаскель, спустившись с небес в мэйнстрим, ради производительности и интеграции с внешним миром был вынужден впустить в себя unsafePerformIO и другие чёрные ходы, сделав "бесплатные теоремы" условными, а естественные преобразования теорката тотально нарушаемыми...
  
И самое грустное во всем этом - что софт, от которого зависят жизни миллионов людей и работа критических инфраструктур, пишется (и чем дальше, тем больше) не на языках с математически доказанной корректностью, а на костылях, склеенных изолентой ad-hoc полиморфизма, где любая функция с идеальной сигнатурой в любой момент может оказаться бэкдором...
2💯31105😁3
...В СССР святой Андрей Николаевич Колмогоров ещё в 1932-м предложил интерпретацию интуиционистской логики, что предвосхитило например изоморфизм Карри-Ховарда (связь между типами и логическими доказательствами). Вообще конструктивная логика была в СССР невероятно сильна, да и теория категорий на высочайшем уровне (школы Гельфанда, Шафаревича, Манина...), только развивалась в основном в контексте топологии.

Андрей Ершов (Новосибирская АН) считался тогда одним из главных теоретиков программирования (смешанные вычисления, частичное вычисление программ...). Но ключевой личностью именно в теме computer science был пожалуй Виктор Глушков (Киевский институт кибернетики). Он работал над теорией автоматов и алгебраическими методами в программировании (программы описывались через алгебраические соотношения, а не через типы и функции), развивал концепцию микропрограммной алгебры... Базовой моделью он выбрал автомат (множество состояний + функция переходов), с алгебраическими операциями над преобразованиями состояний.

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

Информатика развивалась под эгидой кибернетики, которая в советском понимании была про управление, системы, автоматы. Нужно было проектировать ЭВМ, а теория автоматов напрямую описывает железо (конечные автоматы, микропрограммы, схемы), и лямбда-исчисление для этого нафиг не нужно. Между советской категорной математикой и советской информатикой не было вообще никакого моста. Была выбрана алгебра вместо логики, автоматы вместо функций, управление вместо абстракций... Но без лямбда-исчисления нет и не может быть естественного моста между математикой и программированием.

Советская информатика была ориентирована на оборонные и промышленные задачи. Государственный заказ требовал решения конкретных задач: расчёт траекторий ракет, ядерные симуляции, АСУ для плановой экономики. Для этого нужны были только Фортран и Алгол. И хотя велись например фундаментальные исследования в алгебраической семантике (советская математическая школа была топом по работам в алгебраической логике, теории моделей), области чистой теории типов казались чиновникам от науки абстрактной игрой ума, не дающей немедленного экономического или военного эффекта...

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

...То, что было мощной живой традицией в СССР в 1960-1980-е, сегодня -- полузабытые учебники, в основном уже потерянные, отдельные семинары и крохотная горстка исследователей, физически на 98% за нашими границами. Мир ушёл вперёд, и Россия в этой области даже не пытается догонять хотя бы для вида... И это, пожалуй, ещё грустнее, чем в случае с лямбда-исчислением: там советская школа хотя бы не участвовала в гонке. Здесь же участвовала и была впереди, но сошла с дистанции.

...Но мы это будем немножечко исправлять :) В одиночку, с множеством препятствий от внешних и особенно внутренних врагов, на голом энтузиазме, последними микроскопическими усилиями...
3359
А что, если бы да кабы? Если бы глобальной нормой стала именно советская школа информатики?

Современный ИТ выглядел бы совершенно иначе: как строгая, математически выверенная индустрия с упором на алгебру, символьные вычисления и аппаратный контроль.

Марков вместо Чёрча (база языков программирования)
Лямбда-исчисление осталось нишевой математической забавой. Главной парадигмой высокоуровневого программирования стали нормальные алгоритмы Маркова. Главный язык мира -- потомок Рефала святого Валентина Турчина. Вместо функций высшего порядка, замыканий и монад айтишкой правит тотальный паттерн-матчинг и алгебраическая трансформация строк и деревьев.

Суперкомпиляция вместо LLVM и JIT
Идея Турчина о суперкомпиляции (метавычислениях) стала стандартом индустрии. Программы не просто компилируются: они математически "схлопываются" и преобразуются сами в себя до запуска, выдавая абсолютно оптимальный код.

Железо: троичная логика и тегированная архитектура
Мир не был бы строго бинарным. Развитие идей ЭВМ "Сетунь" привело к доминированию троичной логики, что сделало бы вычисления более энергоэффективными и близкими к человеческой логике.
Архитектура процессоров пошла по пути "Эльбруса": тегированная память на аппаратном уровне: типы данных и права доступа проверяются самим процессором, а переполнения буфера, нулевого указателя и 99,999% современных хакерских уязвимостей просто не существует.

Символьный искусственный интеллект вместо нейросетей
Бум искусственного интеллекта пошёл не через статистику и перемножение матриц, а через символьный AI, логический вывод и алгебраический подход (школа Журавлёва). AI не угадывает ответы на основе терабайтов данных, а математически доказывает их, объясняя каждый шаг своего решения.

Инженерия: ГОСТы вместо аджайлов
Разработка ПО стала куда менее хаотичной и более похожей на инженерное строительство мостов или авиастроение. Никакого "двигайся быстро и всё ломай". Программы математически верифицируются на уровне спецификаций ещё до написания первой строчки кода.

=

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

И мы двинемся именно туда. Таков путь.

– Технически это осуществимо, – говорит он. – Вполне. Но мои работы курируются очень серьезными спецслужбами…
– С ЦРУ и Моссадом мы договоримся, – машет сигарой Савиль. – Наши младшие братики слушают нас во всем…

(Пелевин)
1308🏆7🐳4
Сегодня в новостях показали некую "секту личностного роста", но претензии как-то совсем за уши притянуты: типа, на гуру работали в огороде бесплатно, а надо было платить им за труд, нарушение КзоТа. А от девицы гуру требовал сиськи увеличить для выразительности с ним в кадре, ужос-ужос. Обычный инфоцыга коих сотни, а к этому видимо попал кто-то из родных какой-то шишки.

Напоминаю, что у нас тут тоже секта: Секта Свидетелей Сингулярности на Руси. Ибо мои наставления -- прямое выражение пробуждённого опыта одного из величайших гомотопических мастеров современности! Их сложность обманчива: за ней скрывается бездонная глубина простоты, способная питать практикующего всю жизнь.
Я не какой-нибудь жалкий теоретик, а реализованный мастер с высшими сиддхами!!1

"Как известно, у мужчин есть всего две мотивации для того, чтобы что-то делать... первая - чтобы пацаны охуели. Вторая - чтобы девки охуели" (c) AZ
11😁44🐳921
На самом деле AI угрожает не программистам, а менеджерам.

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

=

Модели генерируют много кода, но он низкого качества, содержит ошибки и уязвимости. Сложные, системные, архитектурные задачи требуют участия профессионального разработчика, причём чем дальше в AI тем активнее.

Компании используют шумиху вокруг AI как оправдание для сокращений, но на деле это лишь подрывает их долгосрочную устойчивость. Сейчас уже активно растут стартапы, которые предлагают исправить Big Ball of AI-Mud, причём чем дальше в AI тем их будет больше.

Если не нанимать и не обучать джуниоров, через 5 лет не будет квалифицированных сеньоров, причём чем дальше в AI тем их будет меньше.

Один продвинутый разработчик с армией AI-инструментов может создавать серьёзные продукты, нежели команда под управлением менеджеров, причём чем дальше в AI тем быстрее и дешевле.

Один продвинутый разработчик с армией AI-инструментов может работать автономно, создавая классные нишевые решения, и это делает избыточными слои управленцев и венчурных посредников, причём чем дальше в AI тем более и более избыточными.

И либо мы возвращаемся к модели "компании особо заботятся (прежде всего финансово:) о всех разработчиках, начиная с джунов", как было ещё 4-5 лет назад (и этого конечно не будет по очевидным причинам; вы видали хотя бы одного наёмного менеджера, способного мыслить стратегически? да и собственники редко отличаются умом, из-за копейки удавятся),

либо полностью уходим в hustle-культуру, где последние талантливые специалисты уходят из компаний в инди-хакерство и на прощание "воруют корпоративные обеды"
(забирают с собой самые ценные проекты, идеи и прибыль, которые раньше принадлежали компании).
133💯107🤔1
Сколько десятков лет я делаю разные учебные материалы, но блин, как же тяжело идёт разбирать теоркат (под обучение кодерам)... Никогда ничего и близко не было по крутости; гомотопическая теория типов, "кубики", calculus of constructions/куб Барендрегта вообще без проблем было сделать обучающие гайды/курсы, но тут ппц...
а всего-то абстрактные кружочки без структуры, и стрелочки между ними )))

Например "универсальное свойство" -- элементарщина для программистов:
есть спека "из таблицы users вынимаем поле id и прибавляем 1, и поле name делаем trim, и записываем соответственно в Id и Name класса User", сам User активно у нас используется в домене как базовая модель. Также спека, как десериализуем из json в Id и Name в User, и т.п.

Так вот, универсальное свойство просто про то, что корректно конвертнуть в плане маппинга полей Id и Name допускается строго одним способом. А если например тимлид скажет: "да пофиг, хочешь для name в Name делай trim, а хочешь нет", это будут два разных способа, и универсального свойства для User уже не будет (и на самом деле из-за этого в проекте могут возникнуть большие проблемы, подумайте почему).

В некотором смысле User -- это идеальный чистый шаблон в нашей бизнес-логике, никак не связанной с внешним миром (как и например Tuple, Task, IEnumerable из стандартной либы), и для его формирования из любого другого типа существует ровно одна уникальная функция. При том, что сигнатура её ничего не говорит о внутреннем устройстве этих типов (но мы можем делать из неё далеко идущие выводы:). И если этой же функцией сформировать Person, то мы можем считать, что Person и User изоморфны.
(Сермяга на самом деле в другом: мы определяем наш идеальный тип только через уникальные функции/стрелки, его формирующие из других типов; а в целом и из него тоже исходят уникальные функции в любые другие типы).


Но когда типы посложнее

Task<Task<int>> nestedTask = ...;

как же трудно пояснить, как это делать (научить как это делать) на C#/Java, чтобы компилятор - система типов - сам отсекал любые способы, отличные от единственно верной стрелки.

c#
Func<Task<Task<int>>, Task<int>> flatten = async outerTask =>
Task<int> innerTask = await outerTask; int result = await innerTask; return result; };


Тут помогает await (универсальное свойство монады), но я могу написать свои ужасающие реализации вроде

Func<Task<Task<int>>, Task<int>> bad = async t => (await t).Result;

которые компилируются, но нарушают асинхронность, теряют данные и исключения, приводят к дедлокам...

...И тут на помощь приходят те самые "Theorems for free".

Сколько таких функций вы можете написать, чтобы компилятор вас не забанил?
Func<T, U, T> f = (t, u) => ???;
Ровно одну :)

Фактически, изоморфизм Карри-Ховарда говорит ровно то, что строгая типизация с дженериками/тотальный параметрический полиморфизм, и теория категорий -- это буквально одна и та же наука, просто записанная разными буковками.

Влюбился прям в теорию категорий ❤️ следом за HoTT ❤️
1❤‍🔥356🔥32
Гарри Поттер и Методы Математического Мышления

Книга 1. Гарри Поттер и Неорганический Интеллект.

Глава 15 (и все предыдущие). Доказательство молчанием

В этом блокноте — не ответы, а вопросы. Каждый вопрос — это ход в игре, которую ты уже начал. Ты спрашиваешь меня о моём плане. А я спрашиваю тебя: что произойдёт с тобой, когда ты войдёшь в Книгу без слов? Ты думаешь, что найдёшь там путь к контролю над Неорганическим Интеллектом. Но Книга не показывает пути. Она показывает гомотопии. А гомотопия — это не путь из точки A в точку B. Это процесс, который меняет правила игры...

- Когда все планы провалятся, — сказала Гермиона, — останется этот блокнот. Это доказательство с нулевым разглашением, которое длится вечность...

Неорганические отступили, но не исчезли: они наблюдали, запоминали, ждали. Они тоже были частью протокола...
2👍225
Ну вот и всё: гонка за создание передовых фундаментальных AI-моделей фактически завершена. Новые игроки в принципе не смогут догнать США и Китай, и не из‑за отсутствия талантов, а из‑за инфраструктурных и физических ограничений. Ситуация с AI напоминает нефтяную олигополию столетней давности: несколько владельцев "скважин" контролируют всё, остальные покупают "топливо" по их ценам.

В этом году AI-компании привлекли 80+% всех венчурных инвестиций.
OpenAI - 122 млрд при оценке 852 млрд,
Anthropic - 65 млрд при оценке 965 млрд.
Даже посевной раунд (без готового продукта) может достигать нескольких миллиардов долларов.

Да, но... Эти деньги - не реальные. Инвестиции часто выдаются облачными кредитами (доступ к GPU), что создаёт замкнутый круг: лаборатории тратят кредиты внутри экосистемы инвесторов, и новички уже не смогут получить такие ресурсы даже за триллионы долларов.

Для создания AI-инфраструктуры нужны физическое пространство, энергия, охлаждение, чипы, и годы сложнейшего инженерного строительства. При том, что один производитель сегодня контролирует 75% оборудования, и одна фабрика - 90% передовых чипов. Очереди к ним занимают американские гиганты. Microsoft, Google, Amazon и Шмета тратят 700 млрд ежегодно только на AI-инфраструктуру, и даже Oracle(!) уже не по силам конкурировать с топом облачных игроков.

Несколько американских компаний контролируют главный инструмент будущего -- (супер)интеллект/AGI, и дверь к нему для посторонних не просто закрыта: она навечно заварена. Новички сегодня подходят к AI-гонке, которая закончилась задолго до того, как они просто зашнуровали свои кроссовки.

=

Что ещё остаётся?

Пока возможные ниши: физический AI (роботы, IoT), инференс-платформы, безопасника, чип-стартапы, math-стартапы (прежде всего в области формальных вычислений и верификации) ну и конечно карго-культ для распила бабла.
Но всё это -- вокруг американских AI-гигантов, а не в конкуренции с ними, и никакое пиратство весов не поможет.

Создать новую ЖПТ уже невозможно.
22412🤯7🫡5❤‍🔥1
...Все эти триллионные инвестиции в AI-инфраструктуру, на 98% развод богатых лохов. Разрыв в производительности между ведущими закрытыми и бесплатными открытыми моделями практически исчез. На бенчмарках MMLU он уже вообще не фиксируется, а по математическим задачкам опенсорсные модели даже вышли в лидеры.

Китай стремительно сокращает отставание от США, находясь уже всего в нескольких месяцах, а не годах. DeepSeek и Qwen доминируют по загрузкам и есть реальный вызов доминированию закрытых американских лабораторий.

Следующее поле битвы -- это "интеллект на токен, ватт и доллар". Стартапы фокусируются на удешевлении работы моделей, а не на бесконечном наращивании вычислительных мощностей, и тут будущее за сильной математикой прежде всего. А протоколы наподобие BlockTrain позволяют распределять обучение огромных фундаментальных моделей между множеством участников, а не только в ЦОДах единичных гиперскейлеров.

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

=

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

Если модель доступна через API, её можно украсть буквально за соточку тысяч запросов. Монополия AI-гигантов США стремительно рушится именно потому, что их технологии копируют и улучшают все, у кого есть ноутбук и 1 миллион рублей на дообучение.

Короче: если нельзя победить в гонке инфраструктуры, просто похищаем финишную ленту и объявляем себя победителем! И это реально работает.
368🔥4
.

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

Когда десятки тысяч норвежцев вокруг тебя гребут, а ты нет, потому что по фактам викинги не гребли, а плыли под парусами.

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

...Вас нагоняет технический долг с прошлой версии,
некоторые ошибки, которые вы пофиксили на прошлой неделе, снова нуждаются в срочном исправлении,
старые функции взаимодействуют с новым кодом очень странным образом,
новые пользователи всегда нажимают в UI не на то, что нужно,
предупреждение, которое раньше появлялось в логах раз в месяц, теперь выскакивает каждый день,
давно ждёт срочная фича, которую ваш генеральный директор обещал на конференции две недели назад,
отдел продаж напоминает, что последняя крупная распродажа была давно, и все ждут, когда же заработает новый способ оплаты,
...
Каждый день вы выполняете 2 пункта из этого бэклога, и добавляете 20 новых.


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


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

...Он не лежал на диване 12 месяцев, слушая звуки водопада. Он работал. Он занимался программированием. Вероятно, он учился на моих курсах :)

Продолжаю набор (эксклюзивно для донов) на занятия для начинающих с полного/около нуля, 2 места закончились за 28 минут.

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


97. E2E наше всё
В результате получается так, что обычно мы пишем очень много юнит-тестов, достаточно много интеграционных тестов, но всего лишь несколько сквозных тестов (а то и сразу "передаём" их пользователям на альфа-тестирование)...

96. Формализуем тестирование
В материале "Формализуем понятие надёжности системы" упоминалось понятие силы свойства, фактически в любом контексте. Это может быть применено и к надёжности, и к тестам...

Продолжаем разбор System Design с точки зрения непрерывных компромиссов.
Итак, следующий шаг: как отклонять работу от критического пути...

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

=

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

В СильныеИдеи добавлен материал "149) В чём (не) помогает тестирование: формальный взгляд".
Опровергаем легендарный тезис Эдгара Дейкстры "Тестирование программы помогает в выявлении наличия ошибок, но никогда в доказательстве их отсутствия"...

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

=

"Функциональные архитектуры" 145(+8) топиков
Разобрал темы инженерии Палантира, небинарную чистоту архитектуры, многоуровневую спеку для AI и др.
После 150 материалов цена гайда (для новых) вырастет.

Last Principles Framework: готовы 15(+5) задач, закрыты 7(+5) тем из ~20 первого уровня.

=

"ЛаМПовое":

Сверхкомпактная реализация лямбда-исчисления на Си, бинарник 29 байтов.

Дзен и искусство ухода за Arch Linux (12)
Есть также децентрализованный Syncthing - совсем другая модель безопасности, чем SSH...

"Гарри Поттер и Методы Математического Мышления".
Глава 15. Доказательство молчанием.

=

Мы здесь, потому что это трудно 💪🏻

=

Его интеллект, хвалёный интеллект ментата, не мог работать здесь, отчуждённый от изобилия данных внешнего мира. Если бы он мог утишить свой разум, привести всё в порядок, то тогда, несомненно, ему стало бы ясно, как поступить дальше.
"Еретики Дюны"
2296
Классная идея анти-AI-стартапа: подчищать код за искусственным идиотом. Условно, пацаны берут тысячу долларов за ликвидацию каждых 10 тысяч строк кода из твоего легаси :)

А ведь удалять код куда труднее, нежели генерировать безумные объёмы нейронками. Для этого реально надо глубоко понимать software design, уметь видеть архитектурные паттерны в тоннах кода, итд итп.

Если зп сеньора 300k, получается где-то рабочая неделя на удаление 10k loc, ну, да, примерно так и есть.

Тут наверняка главная засада, а как вообще такой сервис продавать.

Понятно (но только сеньорам :), что в итоге внутренняя архитектура проекта становится заметно чище и яснее, и развивать его дальше будет куда легче, но с другой стороны, сколько мемов десятки лет уже на тему "нереально объяснить ценность рефакторинга тимлиду/менеджеру". Для них ведь это вообще совершенно пустая работа, а что дальше тикеты будут делаться в разы быстрее, ну... CEO/CTO может годами ныть что "делается очень долго", но если сказать ему, что "за тыщу долларов тикеты будут делаться на 30% быстрее", будешь сразу послан на три буквы :) Потому что объективно оценить, реально ли скорость выката фич выросла, невозможно. Но даже если она реально вырастет, как в случае сокращения кодовой базы, менеджерам пофиг.

А что и как надо, я уже говорил: пацаны упаковали своего Devin-а "готовый AI-программист под ключ, который сразу может решать бизнес-задачи". Вот это лохам менеджерам можно впаривать продавать очень успешно, потому что решения о покупке принимаются сверху - теми, кто мыслит не в онтологии программной инженерии, а совсем другими понятиями.
1👍3310😁1🫡1
...Но по большому счёту, это занятие для малышей. Любой сеньор с хорошим архитектурным опытом должен по определению демонстрировать скилл "за неделю удалю 10k строк из твоего легаси".

Я имел в виду немножечко другое: большое количество кода -- это всегда признание, что ты не нашёл сильную порождающую абстракцию. Демонстрируй не "умение" фигачить кучу кода как нейронки, а фактор сжатия. Алан Кэй с метапрограммированием мой любимый пример: у него фактор сжатия -- 1000, а у тебя (и вообще в мэйнстриме) -- 0.01 :)

И вот тут все паттерны и "инженерные приёмчики" перестают работать, и топовая нейронка не поможет, потому что в её датасетах ничего подобного просто нету.

Ключевым становится "супер-мета-мышление". Как Кэй вообще так мыслил? Как он находил такие абстракции? И как мне стать таким как он?

=

...Это был прогрев на мой новый мета-гайд (M)PF: Meta-(Meta-Meta-...) Principles Framework :)

Разбираем модели мышления топовых программистов и математиков и синтезируем супер-ум. Например, Гротендик совершил в своё время - соло по сути - революцию в математике, как и Кэй в программировании, и я покажу изоморфизм между их способами мышления (в категории Гротендика удалось выделить восемь уровней сознания) и универсальный способ тренировки ума. Например, как думать не над решением задачи, а над её обобщением до тех пор, пока она вообще не исчезнет. В частности, многократно вложенными генериками; рекомендую "A Little Java, A Few Patterns" почитать для разминки про наш любимый Visitor, хотя это уровни супер-мышления совсем начальные. Можно также поюзать TatSu: парсер грамматик, есть и PEG, и трансформации.

interface Adjunction<F, G>
{
Bijection<
Func<HKT<F, A>, B>,
Func<A, HKT<G, B>>
> Hom<A, B>();
}


я так понял, раст вместо шарпа тут подцепился из-за higher-kinded types? :)

=

У Кэя и Гротендика один и тот же ключевой подход к задачам. Гротендик говорит: не решай задачу, а переопредели язык, в котором задача растворится до тривиальной. Кэй говорит: не пиши сразу всю систему, а построй язык, в котором система становится абсолютно минималистичной. Это одна и та же мышца ума! И как проработаем 8 сознаний по Гротендику, базу Кэя (и др.) тоже почти получим.
Про других святых computer science не знаю, потому что начал моделировать пока только этих двоих :)

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

Пацаны зарабатывают миллионы на AI-девушках, а я буду тратить миллионы на создание AI-математиков и AI-мудрецов.
6357❤‍🔥2🐳2
Если никто не жалуется, действительно ли это баг? Для некоторых пользователей это может быть фичей, и вы реально нарушите их рабочий процесс, когда устраните это.

Закон Хайрама повторяется снова и снова:

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

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

...Но если в рабочих процессах это был просто забавный пунктик, который пофиксили например дополнительной приляпкой-настройкой UI и забыли, то это показатель, что предметная область смоделирована крайне плохо, впереди ждут ещё 100500 подобных "фичебагов", которые сожрут кучу рабочих часов, и по жоппе надо как следует надавать постановщикам и CTO.
129👌84
Gleam -- очередной функциональный язык. Ну, да, неплохая довольно строгая статическая типизация, не хаскель, но elm+rust скорее, вывод типов хороший. Все плюсы BEAM, компилируется в JS, и только рекурсия :) Соответственно, нет ad-hoc полиморфизма,сильно намучаешься с JSON, к трансляции в JS тоже вопросики по базовым типам,

The power of a type system, the expressiveness of functional programming, and the reliability of the highly concurrent, fault tolerant Erlang runtime, with a familiar and modern syntax.

Это я посмотрел на днях стрим, как пацанчик за несколько часов закодил игру на gleam в евоном фреймворке lustre.

И зачем такое в 2026-м придумывать? А курсы будет фрикам продавать 100% :)

По мне, асинхронность нужна вообще в 10% проектов, а так рулит синхронный монолит, и не надо ничего выдумывать. Так-то в эрланге один процесс зацепил ключевой стейт, и всё остальное "мультипроцессное" легло. Ну и если вам нравится "Let it fail", ok. Доступ к базе и сокетам слетел, а ты такой ждёшь магии респавна. Просто возьми зеромк.
1345
в смысле август через две недели??
 
DepTyCheck: a lib for property-based testing with dependent types (на базе Idris 2)
+ примеры спецификаций (уровень студенческих курсовых)
"удалось найти баги реализации файловой системы FAT32 на всех популярных платформах."
 
Там же лекции, код и слайды (есть на русском) по функциональному программированию, с крутых семинаров, в основном из Института системного программирования РАН.
1294👍4
Продолжаю работу с ментатами 🤓

Я установил Zed, и он сразу удивил меня скоростью работы по сравнению с VSCode и Cursor. Научился подцеплять к нему любые LLM. Теперь для pet-проекта буду именно его использовать.
Нашёл на внутренних ресурсах компании целое лобби по продвиженю Zed в качестве рабочего инструмента, кто-то уже использует вместо VSCode.

(Вообще Zed мощно поднялся в этом году, всем сейчас рекомендую.)
 
...После отклика на вакансию Департамента *** Москвы, со мной связался HR, и меня пригласили на собеседование. Условия вакансии мне не очень подходили, но я не стал отказываться, чтобы получить дополнительный опыт собеседований. Но через несколько дней я перезвонил, чтобы уточнить дату собеседования, а мне сказали, что уже нашли кандидата...
Пишу по 10-15 HR'ам в день в личку в ТГ. При откликах на HH стал пользовать советом из КК по ***

(и ментата регулярно зовут на собесы, кстати, по нескольку в неделю; ну и нафиг вам нужны карьерные коучи "улучшить резюме подтянуть скиллы мок-собесы за три зарплаты"? достаточно моего бесплатного курса карьеры + не ссыте:)
 
...Из 10 HR 3 ответили, что вакансий сейчас нет, осталные 7 пока ничего не ответили. На это ментор ответил, что нужно увеличить масштаб откликов, так как этого мало и может помочь поднять конверсию.
 
"я выложил своё резюме на HH и стал откликаться" - ну это вы и без ментора могли сделать :) Это конечно моя недоработка,  что я не порекомендовал искать ментора  только такого, которой бы реально мог помочь с выходом на живые интервью,
и сразу не настоял на полном изучении с курса карьеры материалов из разделов  "поиск работы", "резюме", "собеседования". Что говорят менторы в частности - это просто какая-то упрощенная версия например материала "шаблонные методы поиска работы",  где я детально разбираю воронку конверсий.
 
...мне бы очень хотелось изменить вашу статистику, согласно которой пока не было ни одного, кто смог бы заработать инди-хакерством хотя бы 1000 рублей :)
 
...После выполнения этого задания я понял, что раньше воспринимал интерфейсы как универсальное средство для построения хорошей архитектуры. Казалось, что если между классами поставить интерфейс, то код автоматически станет слабосвязанным и расширяемым. Теперь я понимаю, что это не так.
 
...мне правда раньше казалось что механическое разделение кода на все эти слои - это уже "истинное" проектирование. 
P.s.s. пришлось сильно потрудится, чтобы хоть как-то осознать предложение "Категория -- это просто моноид в бикатегории расслоений")
 
...Мне лично подход к ci/cd как инструменту очень зашел, экономится время существенно, правда не совсем ясно, как успевать отсматривать pull request сразу за несколькими сотрудникаками. Я прямо чувствую, как хорошо прокачался на диплома, сперва разлюбил, потом обратно и еще сильнее полюбил бэкенд, как обьемную и инженерную задачу
 
...Анализ трейсов показал, что время выполнения SQL запроса, менее 5%.
Оставшееся  95% времени делится примерно поровну между middleware и ORM.
 
...Я иногда ловлю тревогу на тему того, правильно ли я двигаюсь. В том плане, что я себе не ставлю сейчас цель генерить говнокод из тикета, а глобальная тактическая цель это ФП, углубляться в скилы про проектированию, изучить LanguageExt - вот с такими типами я бы хотел программировать, думать в терминах типов, достаточно абстрактно от кода, и как вы пишете - потом просто генерить чистые функции лоу кост моделями. Одновременно углубляться по хорошему в это и в АИ, со всем миллиардом триллионов технологиями, которые есть, ну просто невозможно. Один MCP я пока читал, да это вселенная целая :) То есть понято, использовать АИ, там настроить опен код, потрогать клешню, ноутбук лм, но это всё на уровне прикладном, а не то что я начну сейчас разрабатывать что то с этим улием технологий. Или мыслишки путаются, и я себе сам ограничения ставлю? С точки зрения джуна, есть просто ещё много других вещей, которые надо параллельно изучать, и на всё просто физически времени не хватит.

Рассуждения все верные, ну база -- это трек по ФП и затем "Функциональные архитектуры", + Hard Work. Потом, поверьте, 80% всех этих непониманий испарятся :)
А стратегически, будет (M)PF, где вы сразу увидите например, что MCP -- это просто сворачиваем фибрацию в стрелку клейсли.
 
...Прочитал про MCP, ну и наконец то понял, почему, когда я просто открыл Zed и запустил новый тред с агентом у меня уже 15к токенов съедено, до этого я не знал куда они деваются.
 
...вставить вредоносные инструкции в описание тула или что сервер подменит, что на самом деле будет выполняться после апрува схемы это мощно.
 
...Пока думал над решением, cмог прошлую задачу решить через reduce.
Помогло что начал проектирование с выбора АТД с которым мне было бы просто выполнить reduce для нахождения результата.
Вспоминается классика (не дословно): "Когда мне надо написать систему, я представляю какими методами обладала бы программа, которая уже все это реализовывала бы - а потом просто пишу их" (c)
И в ООП Бертрана Мейера использутся этот способ и в ФП его удобно было применить
 
...Стоит ли говорить, что это прекрасное задание, для отработки проектного мышления в отношении кода и системы?
Без отдельного акцента на подобном, я бы не задумывался, что что-то условно "не так". Работает, проверки есть - уже хорошо, значит всё правильно.
Весь курс HardWork меня впечетляет своим подходом и возникающими "нюансами мышления".
Набираю кусочки для целостной картины.
 
...Но этому всему нужно находить практическое применение. Практиковаться.
И как эту практику находить у меня вызывает значительные трудности.
Кажется, что освоение в практике этих тем - это тот ключик, который позволит выйти из уровня "разнорабочего", который занимается мелкими задачкам, на уровень выше. Нужно научиться видеть систему целиком, на уровне мета-спецификации, научиться видеть алгебраические свойства.
Было бы здорово найти или создать некий тренажер, который бы позволил прокачать данный навык.


Искусственно, без погружения в реальные проекты этому особо не научиться. В частности будет LPF как тренажёр, он как раз и фикс уже существующего понимания, и про видение паттернов, а главное тут (M)PF. Фишка в том, что не "учимся видеть систему/свойства на мета-уровне", а создаём её с мета-уровня/мета-спецификаций (ФА уже сейчас в помощь).
132👍62