Лаборатория Математики и Программирования Сергея Бобровского – Telegram
Лаборатория Математики и Программирования Сергея Бобровского
1.29K subscribers
1.19K photos
24 videos
930 links
ЛаМПовое с Бобровским
Download Telegram
Вместо обучения императивщине последовательностям выполнения инструкций, привязанных к синтаксису конкретного языка, что сильно сбивает начинающих, которые начинают "мыслить" комбинированием команд и токенов, подчас просто пытаясь угадать решение, и в дальнейшем приучаются к такому кривому стилю,

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

В TaPL есть несколько главок по такому подходу, я на треке по вычислительным моделям предлагаю лайт-версию этой темки, но вопрос, конечно, риторический... Зачем, когда у всех теперь есть ЖПТ.
141👍18❤‍🔥6
.

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

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

Если бы для разработки критических информационных инфраструктур использовались мэйнстримовские (== абсолютно недисциплинированные) методы разработки (например, предоставление IDE миллиону обезьян), то единственное, на что можно было бы надеяться — это что на каждую кодовую обезьянку найдётся целая армия тестировщиков...

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

База по карьере, серия 20:
...И это подводит нас к вашим сильным сторонам. Мы не только оцениваем свои сильные стороны, основываясь на неправильных "игровых досках": даже когда у нас есть на примете правильная игровая доска, мы часто не умеем определить реальные сильные стороны, которые необходимы для успешной игры.

Бесплатное образование доступно всем, в интернете его пруд пруди. Чего не хватает, так это...

— Сергей Игоревич, я изучаю серверную часть на Java Spring, но Quarkus выглядит безумно быстрым. Он примерно в 10 раз быстрее и поставляется со всеми встроенными функциями. Должен ли я переключиться на Quarkus?
Вопрос выглядит просто, но на самом деле он указывает на нечто более глубокое...
Это то чувство, когда хочется бросить всё, чему ты научился, и гнаться за тем, что кажется новым, быстрым, модным или крутым -- Quarkus, Micronaut...
И я полностью вас понимаю...

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

...Вы действительно достигли своих целей на октябрь?
Или месяц СНОВА пролетел незаметно в суматохе забот?
Если вам всё-таки удалось достичь своих целей, то поздравляю!
Но если вы этого не сделали, тогда нам нужно серьезно поговорить...

Продолжаю выкладывать для донов материалы СильныхИдей — доступны моим ментатам, но тут расширенные и дополненные версии.
62. Проектные требования или проектная онтология?
Прежде всего, всегда исходите из того, что "требования заказчика" всегда надо воспринимать как "фантастические представления заказчика о требованиях" :)

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

=

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

=

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

В курс карьеры добавлен 119-й материал "Смейся и учись!".
Проблемы -- это неотъемлемое качество жизни.
Правильное мышление -- вот решение и ответ.
А теперь перейдем к этому важному и неизбежному вопросу:
КАК вы взаимодействуете с трудностями в карьере и жизни?

В СильныеИдеи добавлены материалы
"127) Что должен уметь архитектор в реальных проектах"
Что должен уметь архитектор (сеньор, техлид...) в реальных проектах прежде всего...
"128) Три признака, что ваш ООП неверный"
Старая школа учит, что массово распространённое сегодня словосочетание "вызов метода" -- это слабый и поверхностный подход, в котором нету никакой глубины. Можно упомянуть и Алана Кэя, и формальное описание ООП (сигма-исчисление Луки Карделли), которые всегда учили, что правильное понимание объектного подхода -- это прежде всего "отправка сообщения"...

💪🏻

Мы здесь, потому что это трудно.
it's a privilege to do things that are hard.

"ЛаМПовое": Lean на микроконтроллере, Хищник лол, Киану Ривз коммунист, свежак от Страуструпа.

=

Гайд про функциональные архитектуры в активной работе, готово 40 топиков.
Пока такие модули: База, Архитектура портов и адаптеров, ФА и системы типов, Архитектуры: разное, Теория и продакшен, Архитектуры и ООП, Архитектуры и гомотопии.
38🔥10❤‍🔥1
Из сегодняшней переписки с техподдержкой:

...Ваш сервер находится сейчас в зоне риска, и мы уже приняли меры по его защите. Однако, хотим обратить Ваше внимание, что услуга виртуального хостинга довольно уязвима для подобных ситуаций, так как сайты разных клиентов находятся в едином пространстве. DDoS-атака затрагивает Ваш общий с другими клиентами IP-адрес, и под ударом может оказаться целый ряд ресурсов. Более устойчивым решением является VPS-сервер, так как каждый сервер имеет свой выделенный IP.

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

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

Скучно не будет!

=

Выбирайте такие сервисы, где ответственность можно делегировать поставщику по максимуму, а проект готовьте так, чтобы его можно было легко и просто перетащить к другому сервису автоматическим скриптом.
149115
Продолжаю работу с ментатами 🤓

...После завершения курса по ООАП-3 имеется дикое желание всё бросить и больше никогда не приступать к этому.

(Аналогично у 98%, кто никогда не занимался проектированием по-взрослому :)

...уничтожение ООП пугает. ))) Хотя мой друг устроился работать аналитиком данных в компанию, занимающуюся облигациями, и он давно и плотно использует R. И ему непонятны вызовы в стиле result.filter(args), прям гадость, говорит. То ли дело filter(result, args). )))

...Сейчас работаю над time-shift аугментацией, разбираюсь в чужом коде, пытаюсь применить требуемые в рамках моего задания изменения. Тот факт, что я невзлюбил ООП, сейчас мне аукается)))

...Я применял некоторые элементы ФП (вот этот класс будет иммутабельным, вот та функция будет рекурсивной с аккумулятором), но даже близко не проносилось мысли о том, что на ФП можно заниматься проектированием проекта. Особенно восхитило, порадовало, возмутило и огорчило одновременно то, что все паттерны проектирования, которым меня учили последователи ООП можно отправить в утиль после того, как ФП впитается в кончики пальцев.
Также очень сложно было укладывать такое понимание основного цикла видеоигры: это не цепочка состояний, а цепочка событий.

...Рассматриваем ООП и ФП в частности через призму OCP. Удивительно, что в одной парадигме к нужно целенаправленно стремиться OCP (как и вообще к многим хорошим практикам в ООП), а в другой -- всё есть из коробки.

...Реальные примеры в работе... Ну опять – линзы! линзы классные, мне нравится! Если язык достаточно выразительный, то здорово иметь еще и определение линзы, прям классная "интерфейсность", понятно что извлекается. на текущей работе я в таком положении что могу писать такой код, лишь бы была задача)))) Коллеги все равно ничего не понимают из того что делают, а курсор увидив мой код будет... Получше код дописывать (правда, LLM фп код лучше понимает чем ооп лапшу)

...Вот и прошла вторая неделя в новом формате карьеры.
За данный период я получил оффер на позицию Senior Go-разработчик (формально), хотя себя я чувствую на middle/middle+. Уже успел окунуться в рабочие процессы и понять как все устроено.

...вчера меня официально подписали на позицию старшего разработчика (хотя по компетенциям я себя чувствую на мидла);
- получил зп в размере 350 тыс. руб;

...Продолжил откликаться на hh. Сделал 30 откликов, получил 2 тестовых задания(сейчас в работе), 2 созвона с hr. На одном созвоне по вакансии full stack предложили рассмотреть их вакансию по backend на грейд middle

(Такого в чатах у меня много кстати, и что все плачут что найм сломан? Стандартная конверсия 10% в созвоны вполне реальная, так и всегда так было, и 10 лет назад).
41❤‍🔥9👍7😎1
Свежак: Гвидо наш Россум рубит сермягу про будущее программирования и сражается с корпорациями ветряными мельницами:

"... I honestly think the importance of the GIL removal project has been overstated. It serves the needs of the largest users (e.g. Meta) while complicating things for potential contributors to the CPython code base (proving that new code does not introduce concurrency bugs is hard) ...
...But we don’t use “vibe coding” — we stay in control where it comes to architecture and API design."
1368😁4👍3
Cloudflare outage on November 18, 2025 - Caused by single .unwrap()

Что толку, что Rust - прекрасный безопасный язык со строгой системой типов, если вайб-кодер копипастит код ЖПТ, который из-за собственной тупости "для удобства" добавляет unwrap(), потому что иначе код не соответствует промпту/не проходит тесты.
3💯41😁136
Инструменты искусственного интеллекта очень хороши для профессиональных программистов, которые знают, как программировать, а особенно для сеньоров с опытом проектирования и архитекторства, усиливая их в десятки раз -- и столь же ужасны для джуниоров и всех людей, которые учатся программировать, лишая их даже призрачных перспектив на рост.

Первые специалисты-профи исчезают естественным образом, на смену им скоро приходить будет уже некому, а так как менеджеры везде живут по принципу "после нас хоть потоп", следствие выведите сами :)

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

Очные университеты и колледжи станут той самой единственной лакмусовой бумажкой, где живые люди продолжат проверять реальные знания классическим способом - вживую, а не в онлайне, и диплом будет относительно объективным показателем, что человек действительно учился программированию по-взрослому, и не 5 месяцев, а многие годы.

"Why the fuck do we let people that have no computer science backgrounds write code? Unacceptable!"
👍441310👌1
Ну ок, лицензию на убийство пилота можно и на онлайн курсах в АУЦ получить без диплома, а вот прорабом без диплома не станешь в принципе. И тут кстати довольно показательное различие. Казалось бы, у пилота даже больше ответственности за жизни?

Вся засада в структуре деятельности. ИКАО тотально унифицированы, внештатные ситуации тщательно отрабатываются на симуляторах, а реальные риски возникают фактически только в реальном времени и длятся от часов до секунд. На программирование это ну совсем не похоже. В конце концов, для водителя автобуса и такси диплом не нужен.

А вот в строительстве последствия проявляются значительно позже. Каждый мост это уникальный проект (грунты, рельеф, климатические условия, материалы - всё разное). Украл стройматериалы, а мост рухнул только через 3 года после сдачи в эксплуатацию. Закрутил не ту болтовую группу -- будешь всё переделывать заново вплоть до демонтажа.
Программисты, знакомо? :)
35👍134👏3
Закон Бобровского:

UI любой соцсети со временем становится только хуже.

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

ЯндексМузыка летом удалила удобный старый дизайн, а на смену пришло запутанное и нефункциональное. Я не могу например теперь выбрать "техно" + "спокойное".

В Телеграме на днях внизу появилась гадская ненужная плашка, занимающая немало видимого пространства.

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

Только MAX пока держится )))
2😁52💯187
Я лучше буду часами копаться в чём-то, вместо того, чтобы читать документацию в течение трёх минут.
2😁55💯8
This media is not supported in your browser
VIEW IN TELEGRAM
Программистам Haskell может не нравиться отсутствие эксплицитного IO-типа в F#.
Программистам F# может не нравиться отсутствие типов в Clojure,
а программистам Clojure могут не понравиться монады.

Но прекратите сражаться! Сегодня нефункциональные языки захватили все компьютерные СМИ и фонды OSS, AI-движуху и BigTech!

Внутри ФП пока перемирие. Друг с другом мы станем спорить в недалёком будущем, где функциональные языки победят весь мэйнстрим.

База качественного кода в функциональном стиле (крайне перспективная для AI):
если код компилируется, значит он работает 💯
238💯15❤‍🔥64
Доброй субботы, вайб-программисты! 😁

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

Пока ты собираешься на футбол, твой конкурент старательно изучает модный технический стек из вакансий.
3👍48😁6🤔4🫡4🤓3
Общество: не доверяйте незнакомым людям, не отвечайте на неизвестные звонки, не проходите по мутным ссылкам...

Программисты такие:
npm added 32192 packages in 1.2s
1😁50💯18👍4🫡42
Big Ball of Mud - самая популярная ИТ-архитектура в мире, которая работает на 98% сайтов и любых других систем....
2💯48😁15👍41
.

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

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

Писать правильный и хороший код сложно. Разница между правильным и катастрофически плохим кодом может быть чрезвычайно тонкой! НЕ-тренированный глаз легко пропустит эти различия, и вы, возможно, даже не сможете привести пример, в котором неправильный код даёт сбой, потому что в его первоначальном контексте это не так.
...Ok, но ведь и джуниоры иногда пишут ужасно некорректный код, который, кажется, работает? Да, но мы ожидаем от них прежде всего, что они при этом учатся правильным подходам!

8 советов по software design и архитектурам...


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

Глава Zoom Эрик Юань заявил, что не верит в баланс работа-жизнь. Дескать, работа это и есть жизнь, а всякие хобби трата времени. Сам он вообще ничем не увлекается, кроме Zoom. Ну и?

Даже начинающие с нуля (!) обижаются, когда указываешь на очевидные ошибки, не говоря уж о стилистических неточностях...

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

Продолжаю выкладывать для донов материалы СильныхИдей — доступны моим курсантам, но тут расширенные и дополненные версии.
63. Инварианты и качественный код
Идея в том, что инвариант может быть нарушен только в том случае, если в вашей программе есть ошибка.
Мы как бы закладываем в программу некие неоспоримые утверждения, которые обязательно должны соблюдаться -- в идеале, на уровне невозможности компиляции кода, если инварианты нарушены, но такое возможно пока в основном в языках с зависимыми типами...
64. Три типа программных ошибок
Любая система может сломаться: пользователь введёт неверные сведения, данные в базе окажутся некорректными, откажет сеть или интернет, проявятся обычные баги, в параллельных процессах возникнет клинч или гонка, космические лучи инвертируют бит...

...в таком случае мне на 100% понятно, какого же хрена чел завис и уже 1-2-3 года не может вырасти в профессии.

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

=

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

=

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

В курс карьеры добавлен 120-й материал "Баланс между работой и личной жизнью -- это миф (ч.2)".
Трудно поверить, что достижение чего-то стоящего стало результатом чьих-то 20% усилий, которые дали якобы 80% результата. На самом деле, я в это не верю. Напротив, я считаю, что исключительно упорный труд -- необходимое условие для достижения любого крупного, впечатляющего и трудного результата.

В раздел "Элитный программист" добавлены материалы
81) Адаптация Помодоро под себя.
Вот ещё несколько простых способов слегка адаптировать Pomodoro под себя...
82) Это всё?
В целом закончен (по содержанию) большой блок ЭП, но развитие данного трека не прекращается, а наоборот, дальше продолжим делать новые акценты на всех этих темах!
Мы узнали о различных методах, позволяющих добиться максимального успеха в карьере разработчика, но принципиально не рассматривали какие-либо технические навыки, характерные для программирования, поэтому все описанные здесь методы в равной степени применимы к другим профессиям, а также к вещам, не связанным с вашей работой.

💪🏻

Мы здесь, потому что это трудно.
it's a privilege to do things that are hard.

"ЛаМПовое": arch linux, геймдев эпикфейл, C++20 concepts, бабка-рэмбо

=

Гайд про функциональные архитектуры в активной работе, готово 50 (+10) топиков. Как будет 100+, дам ментатам доступ.
23713🔥3
Возможно, я единственный человек в мире, который до сих пор не использовал sora2 и нанобанану.
👍52🤝94❤‍🔥3
Я скучаю по тем временам, когда 16 Гб оперативной памяти было достаточно вообще для любых нужд программиста. Ну разве что для terms rewriting требовалась пара сотен гигов.
Теперь же оперативка на 32 Гб стоит столько же, сколько RTX 5060, а 64 -- как плейстейшен 5.
140👍10
...масштабная компрометация экосистемы npm:
злоумышленники запустили вторую волну атаки самореплицирующегося червя Шай-Хулуд, заразив 492 npm-пакета, чья суммарная аудитория составляет 132 миллиона загрузок в месяц.

А я всего три дня назад предупреждал про npm. Штош.

"Скоро мы вступим на территорию песчаных червей. Нельзя идти обычным шагом. Иначе мы все умрём".
1🤯271292
Я бы предпочел зарабатывать 100,000 рублей в месяц самостоятельно, чем 1 миллион рублей в месяц на работе с 9 до 18.
1😁5013🤔9💯5👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Когда вышел первый день на новую работу, и тебе сразу набросали кучу тикетов по огромной легаси-базе :)
1😁545💯3