Лаборатория Математики и Программирования Сергея Бобровского – Telegram
Лаборатория Математики и Программирования Сергея Бобровского
1.29K subscribers
1.19K photos
24 videos
930 links
ЛаМПовое с Бобровским
Download Telegram
В честь дня математики написал пост в вк.

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

Я не забросил кстати игру для обучения программированию (которую обещал к 1 декабря :). На самом деле 80% времени ушло на UI. Я перебрал с десяток самых разных 2D-движков - ни одного и близко нету , чтобы отвечал моим достаточно простым требованиям. Поэтому как обычно пришлось всё делать самому :) графика , анимация, переопределение кучи стандартных контролов UI...
Возможно к 1 января сделаю какой-то альфа-прототип с начальными уровнями, если снова не возникнет засад с UI (не забывая, что всем абсолютно пофиг:) .

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

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

После чего достаточно естественно мы приходим к языкам наподобие Erlang, где модель акторов прекрасно формализуется с помощью activity semigroups (фундаментальная часть математической семантики эрланга), ну и т.д.
Загадывать ничего не буду конечно, ведь надо ещё и что-то кушать...

=

"Не учишь матан -- превратишься в метан." (с)
(матан на самом деле наименее востребован в cs, а что надо - в закрепе основного паблика)
🔥58👍223🏆2🥰1
В продолжение вчерашнего ↑↑↑
Чем раньше начинающий начнёт въезжать в эти темки, тем лучше, потому что если человек, претендуя на звание Программиста, по жизни потенциально годится лишь клепать CRUD и рисовать формочки мышкой, то его надо поскорее отправить в биореактор на курсы "как быстро войти в ит с гарантией трудоустройства".

Где-то с уровня рекурсии пропадает классическая схема составления кода из последовательности инструкций, "оно" какой-то магией начинает работать само, но как правильно составлять подходящие сложные заклинания, совершенно непонятно, а вся предыдущая муть императивщина и 100500 решённых задачек на литкоде/с собесов с этим вообще никаким боком не стыкуется.
1👍56🔥10🤔4
"Ну и что полезненького мне даст вся эта ваша математика??"

Например, вот как писать код по-взрослому:
Dependently-typed HTTP headers in Idris
(моделирование HTTP-заголовков строго по RFC )

Дана сермяга с достаточно подробным разбором: завтипы, correctness by construction, making illegal state unpresentable etc.

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

Хотя... если вы оцените, сколько часов/дней/недель... подчас тратите на отладку небольших кусочков кода, возможно даже такой формальный подход окажется стратегически куда выгоднее.
👍5997👏2🤝1
Вдогонку-2. На самом деле практически в любом функциональном языке вы можете легко и просто реализовать парадигму MISU (marking illegal states unrepresentable)! Потому что по большому счёту ФП именно MISU и подразумевает автоматически.

Вам остаётся лишь make representable states valid. Для этого вам прежде всего понадобятся sum types: если вы с их помощью определите набор допустимых состояний, то все эти состояния должны быть корректными и иметь определённую семантику. Другими словами, если ваш тип описывает все возможные состояния, то каждое из этих состояний должно иметь осмысленное значение в контексте вашей программы. Нельзя оставлять "дырки" в определении типа (когда некоторые состояния не имеют смысла).

Далее вам надо задействовать exhaustive pattern matching, чтобы не забывать обрабатывать все возможные состояния в функциях, использующих соответствующий тип. Если вы упустите какое-либо валидное состояние, компилятор выдаст ошибку.

И поскольку типы строго определены, а все возможные состояния перечислены, невозможно будет создать или вернуть "нелегальные" состояния: сам компилятор не позволит вам сделать это.
👍6065🤔4💯3
AI изобрёл ветряк, который в 7 раз эффективнее традиционной версии, настраивается на турбулентность окружающих зданий, эффективно работает при скорости ветра 3,6 м/с (номинал большинства турбин -- 10 м/с) и т.п.
(отсюда)

Белковый инженер до таких конструкций (справа вверху) скорее всего не додумался бы в принципе :)

Подозрение, что и будущие ИТ-архитектуры, которые станет создавать AI с нуля, тоже смогут работать значительно продуктивнее современных, но... внутри будут так невероятно "запутанны" для человеческого понимания, что кожаным станут совершенно недоступны.

Но зато удобны и понятны для инопланетной логики. Возможно, это будет нечто смахивающее на "квантовое": каждое условие одновременно может быть и истинно, и ложно :)

Вместо значений — "волновые функции", вместо ИЛИ -- их "суперпозиция", вместо И -- их "коллапс" и т.п. Такие "калкулусы" могут быть представлены многомерными тензорными вычислениями, где каждое измерение соответствует отдельной "оси" параллельных операций etc.
🤔44👍21🔥7🐳75
Если вы сеньор или тимлид, при устранении всяческих багов и неполадок (не ваших :) придерживайтесь дублирования: лучше, чтобы этими правками занималось сразу несколько человек (достаточно автономно, но и достаточно синхронно).

А по-взрослому, донам сегодня выложил очередной материал "Отладка как наука". Существует ли теория отладки в целом? В основе теории отладки лежит универсальный метод: вы можете её ускорить так [...]
👍51😁14🤔2
Думаю вот, а тем ли я вообще занимаюсь? ↑↑↑

Программист приходит к гадалке, она ему:
-- Я вижу в вашем будущем много кофе и бессонных ночей...
-- Да это не будущее, это мой обычный спринт!
😁637🤯4🤔3🐳3
ит-работодатели: я открыл вакансию джуниора, и мне за день насыпалось 100500 резюме гы гы гы

ит-сеньоры: я открыл своё резюме, и мне за день насыпалось 100500 вакансий гы гы гы

Хвастанье, что толпа ломится на джуниора -- это просто от безысходности (хотя конечно щёки приходится надувать: дескать у нас такая крутая команда супер-пупер-спецов, просто вот в помощь им набираем; ага ага).

Попробуйте найти даже не сеньора, а хотя бы одного крепкого мидла с норм опытом. Ну или продолжайте пилить проэкты пионерскими дружинами, постепенно раща их в комсомольцы. Их уже ждут в других, более адекватных местах :)
👍52💯133❤‍🔥3🏆1
Сегодня связываться с hr-юшами и рекрутерами становится буквально физически опасно. Они успешо сломали цивилизованный найм более чем полностью, а дальше активно переходят на откровенный скам.

Вам могут дать тестовое задание с "секретным" компонентом без исходников, а когда вы его активируете, ваш компьютер скушает вирус-шифровальщик. Или симпатичная эйчарка разведёт нас на секс крипту. Или вам "гарантируют" помощь и трудоустройство с постоплатой со своей зарплаты, вы найдёте работу на 98% своими усилиями, но потом будете месяцами отдавать до 80% зарплаты. (И не исключено, что вас выгонят достаточно быстро: возможно, это был целиком развод со стороны пары рекрутер-кадровик для распила корпоративного бюджета.)
Или вы будете бесплатно работать "за опыт" над реальными проектами. итд итп.
Это всё реальные неоднократные случаи, на ютубе можете легко найти.

=

Это всё пока было на уровне "физиков", но сейчас растёт ещё одна волна скама -- уже на юридическом уровне. Почему, совершенно понятно: весь этот, мутный кадровый эгрегор:) от низкостатусных рекрутерш до начальников кадровых отделов и топовых техдиров и CTE, работает исключительно в интересах собственников-коммерсантов (чтобы они могли поскорее обновить порш и любовниц). Если например вы трудились программистом в госконторе, то они будут презрительно кривить губы над вашим резюме: "это за опыт мы вообще не щитаем".

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

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

Будьте осторожны и всегда оставляйте за собой немного свободы действий. Возможно, вы действительно не прошли собеседование (и хорошо ещё, что вас при этом ушлые эйчары не развели на деньги).

Но, с другой стороны, всё более вероятно, что на этой вакансии вообще никто не получил и не получит работу…

Будь осторожен. Следи за собой. (с)
46🤔25💯10🙏6🔥4
Такое мы сразу ставим: qutebrowser is a keyboard-focused browser with a minimal GUI. It’s based on Python and Qt and free software.

Однако ключевая его фишка даже не столько клавиатурное управление, сколько "VIM-like browser".

Ньюбы могут предварительно геймифицироваться в теме тут:
vim-adventures.com
47👍7😁7❤‍🔥4🤔2
Я сперва подумал, это прикол такой типа "альтушки для скуфа".
Оказалось, нет.

"C 1 декабря любой гражданин РФ может получить сертификат на бесплатное IT-обучение.
Минцифры приводили статистику о нехватке порядка 700 000 человек в области инновационных технологий. В интересах страны сократить кадровый голод и пополнить резерв новыми специалистами до конца года."

Для этого достаточно пройти вышеупомянутый тест про бабочек в животе например тут:
дефицит-профессий.рф

По поводу тестов для вайтишников на уровне "у кого хобот длиннее", ну тут как бы и комментировать нечего. Я отправлял кстати совершенно абсурдные ответы, стараясь максимально не подойти, но мне выдалось в итоге классическое инфоцыганское:
"Поздравляем! Вы можете начать бесплатное трехмесячное обучение!
Заполните форму и вы узнаете свою идеальную IT профессию"

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

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

Сама по себе эта активность безусловно полезная, но... не менее странен и её фокус на борьбе с нехваткой 700 тысяч айтишников. Сегодня 1024 резюме приходит на одну вакансию для джуниора, а через полгода такого "бесплатного IT-обучения для всех желающих" на одну вакансию для джуниора просто будет приходить 8192 резюме. Ну и?

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

=

Но главное: зачем сегодня вообще такие курсы??

Попросите AI (модельки надо брать уровня жпт4o или клода 3.5, окно ставьте 32+)

- написать детальный мета-промпт для создания роадмапа с нуля по обучению в интересующей вас теме в айтишке (например, стать тестировщиком),

- затем скормите ему же этот промпт, получите трек развития,

- попросите его помогать вам на каждом шаге трека, придумывать задачки, проверять ваши решения, подсказывать/помогать итд

-- и он будет (относительно) бесплатно это делать 24/7, причём индивидуально под вас.

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

И в принципе всё.
2😁4329👍182🐳1
Для программиста среда -- это новая пятница!
1😁59👍12💯4
Вот вы говорите "геймдев всё" (регулярно это слышу лет 25 :), огромная конкуренция, даже сеньору устроиться сложнее чем джуну на бэк патамушта каждый школьник мечтает разрабатывать игры, полным полно готовых гейммейкеров без программирования, денех там мало, и вообще невероятно сложно сегодня заработать...

Этой осенью мне предлагали тысячу долларов (но просили чтобы именно я сам делал) за скрипт(!) для хака мобильной игры (нет, не хомяк:): чтобы лут золото бриллианты из сундуков побольше вываливался, чтобы бустить фастпуш и врагов на фраги, чтобы когда с 5лв зашёл такой в кооп, то вышел уже с 25м )))

А главная цель конечно чтобы в итоге всех выносить в pvp и войти в топ рейтинга.

Ну, когда киты донатят сотни тысяч руб в месяц на любовниц свою гильдию, на навороченные скины, на вип-доступ, совершенно не удивлён...

За недельку наверное сделал бы, поюзал anrc , xposed etc, но совсем маловато денежек за такой срок работы дают.
1🤔51👍126🤯2
Вечерние размышления "письмом" )))

Ну блин на дворе третье десятилетие 21 века, но на протяжении 40 лет по-прежнему лучше всего работает дедов принцип

хочешь сделать хорошо -- делай всё сам


Как святые computer science того времени писали САПР-ы с нуля на стековом форте (а это на минуточку посложнее ассемблера будет), так и сегодня приходится им следовать фактически.

1. Сейчас глубоко копаю в learning distillation. Это настолько сложная аналитическая задача, что современные ллм-ки + векторные базки даже и близко темку не вытягивают. Так вот мне под это нужен совсем простой но эээ достаточно специализированный конструктор курсов с максимально простым UI, а те, что я уже сделал для Школы, под эту специфическую задачу не очень подходят.

Я, условно, некоторым ноу-хау "генерирую" мета-мета-выжимки: концентрат из нескольких технических книг на английском компактно в десятки раз без потери смысла (semantic embeddings). Представляем пути в пространстве эмбеддингов между семантически близкими концептами как гомотопические классы. Результат получается в некоторым достаточно запутанном формате, которые надо просто аккуратно распарить с учётом всех многомерных смысловых и синтаксических связок, которые уже успешно свёрнуты.

Я пересмотрел несколько десятков доступных конструкторов курсов, ну да, есть 3-4 с минимально удовлетворительными возможностями и rest api. Но до чего же они громоздкие, неудобны и человеконенавистнически в плане UI. Я сам на них регулярно разные курсы прохожу, и в лучшем случае на троечку они тянут.
Поэтому ёлки но опять придётся всё делать самому!..

Контент для одного такого курса у меня в сыром виде на 30% готов -- на тему одного из продуктивных и достаточно известных, но не очень распространённых аджайлов.
Нет, не скрам :) методика достаточно простая, но конкретно заточена на формализацию требований, что классно сегодня ложится на взаимодействие с AI.
1343👍203🔥2🤔1
2. И классическая тема оплаты: хочу сделать эти курсы уже для всех доступными и относительно недорогими, но для этого нужна прозаическая автоматизация приёма оплаты с молниеносный выдачей новых логина пароля к курсу. Да, существующие сервисы по созданию курсов подобное предлагают, ну там во-первых надо полностью завязываться только на них, а во-вторых у них такая мутная интеграция с кассами/эквайрингами, вот реально проще сделать самому. Можно также ставить себе или интегрироваться со всевозможными срм-ками, но всё это возня получается вообще как ужасающий-3.

Ведь так-то я хочу совсем простой мета-сервис: вы принимаете деньги за чей-то курс на свой счёт, сами выдаёте чеки, и переводите на р/с автора например за 10-15% комиссии. И сразу при поступлении оплаты дёргаете пых-скрипт на сайте автора, уведомляя об оплате, сразу получаете от него логин-пароль, показывайте клиенту и шлёте на почту и всё,

Но ничего подобного (в России) ВООБЩЕ нету, Карл!

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

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

Вот если бы это был чисто автономный сторонний продукт...

=

Однако хорошая новость: я джва дня плотно общался с техподдержкой т-банка (нереклама, блин! искренне пишу), как бы мне такое запилить -- и они прям реально чётко помогли, респект от души, всё получилось!

Но ведь опять такое приходится делать самому...

"Нет школы лучше, чем старая школа" (с) Рок-н-рольщик
2🔥64👍183👏1
Для усиления самомотивации, по вчерашним темам, буду здесь выкладывать прогресс по продвижению к условной Школе 3.0.

1. "Движок".
Архитектура, математика: 42%
Реализация (грузим серию книг по теме и получаем на выходе сырую структуру курса): 30%

2. Фреймворк курса: 0% :)

3. Автоматизация платного доступа к курсам для всех желающих: 23%
Но в первую очередь эти условные курсы 3.0 будут в "раннем доступе" со скидками моим курсантам, и оплатить их можно будет как обычно.

4. Текущий (самый первый) курс: 30%

Буду регулярно отчитываться о продвижении; подозрение однако, что по мере приближения к конечной цели процесс из линейного превратится в логарифмический 😅

/wow (way of the wizard)
Трудно выразить, насколько ценны инженеры, умеющие просто объяснять сложные концепции. А вот если ещё их мышление смоделировать...
149👍31🔥8🤔2🫡2
О продвижении по плану
(100% запланированных задач и 100% незапланированных багов)

1. "Движок". 41%
Архитектура, математика: 42% => 52%
Реализация (грузим серию книг по теме и получаем на выходе сырую структуру курса): 30%

Весьма вероятно что я первый человека в мире кто реализовал гомотопическую теорию типов HoTT на PHP 🫢
PHPoTT )))
А на хаскеле или прувере, так-то любой дурак сумеет.

Пока 900 строк пыха, и потратил где-то около 100 долларов на жпт, а до достаточно полной версии ещё наверное пара сотен уйдёт.
Веб-консоль работает у меня на сайте уже, думаю сделать на её основе игру для обучения вот этому всему (с pvp и донатом, без иронии), ну это пока в далёкой перспективе.

Я запилил сперва λCω (топчик в кубе Барандрегта), но хотт куда мощнее конечно. Сделано: базовый тайпчекер с universes, identity types и пути, j-элиминатор, унивалентность, эквивалентности, гомотопии, n-типы...
Хотел на этом остановиться, но не удержался, выдохнул и за ночь допилил высшие индуктивные типы (HIT) и типы тождества.
Сильно конечно упоролся на фундаменте: вывод типа для терма, затем с уровнями универсумов, потом позабыл технический момент, что коли хочем унивалентность, пути между типами (формальное равенство) всегда должны находиться в следующем универсуме, иначе получается парадокс Рассела, и т.п.

В перспективе будет кубик обязательно (composites, fills) и ещё много чего, но пока хочу закончить БАЗУ PHPoT. Сделано "из запланированного" :) 20%, но процесс на самом деле уже чисто технический. Главное было выгрузить смысл/связки/понимание из учебников HoTT (и моей головы) в ТЗ, чтобы его минимально понял жпт.
Первый курс 3.0 кстати будет как раз о подобном.

Но на самом деле, особо сложного тут нету ничего. Это уровень примерно второго третьего курсов computer science хороших универов из первых десяток мирового рейтинга. Раньше я рекомендовал что тут можно поизучать с околонуля, если вы отучились хотя бы на первом курсе любого инженерного ВУЗа, но потом перестал. Зачем? Лучше я сам вас на этой базе обучу и этой базе, и сильному мышлению в относительно прикладных темках.

Но если прям очень хочется, хоть и не очень понятно а нафига, забустите 50 сердечек, тогда поясню.
Ладно, считаем сердечки + звёзды )
p.s. ну ок) вы красавцы 🙏

В сказке после слов "и жили они долго и счастливо" история заканчивается, а в плане разработки после слов "финальное тестирование" всё только начинается!
❤️❤️❤️❤️❤️
176147🤯10🎉2🔥1