Лаборатория Математики и Программирования Сергея Бобровского – Telegram
Лаборатория Математики и Программирования Сергея Бобровского
1.3K subscribers
1.19K photos
24 videos
934 links
ЛаМПовое с Бобровским
Download Telegram
Если вы пишете код, чтобы снять стресс, то, вероятно, вам суждено стать разработчиком.
👍1
Грустная закулисная история, как попытки стандартизации UML2 потерпели грандиозный провал из-за бюрократов. Но тогда лучшие специалисты хотя бы пытались добиться глобального прогресса.
Сейчас же весь ИТ-мир отказался вообще от всего передового, кроме косметических улучшений. С другой стороны, это отличный шанс для прорывного развития в парадигме импортозамещения.
А глобально надежда сохраняется в основном в тренде web3, в поколении совсем молодых ребят.
1
Лаборатория Математики и Программирования Сергея Бобровского pinned «Грустная закулисная история, как попытки стандартизации UML2 потерпели грандиозный провал из-за бюрократов. Но тогда лучшие специалисты хотя бы пытались добиться глобального прогресса. Сейчас же весь ИТ-мир отказался вообще от всего передового, кроме косметических…»
Получал ЭЦП для ИП в ИФНС, народу было много, однако весь процесс от получения талончика до получения пропатченного токена занял менее 10 минут: рабочие процессы отлажены идеально. Если бы не одно но: до получения талончика я тоже потратил минут 10 просто на выяснение, а куда вообще нажимать?

Свободных талон-автоматов было полно, однако я облазил все меню, и ничего похожего на "получить ЭЦП" не нашёл. Консультант пояснил (прокомментировав "что же вы все одно и то же спрашиваете..."), что надо войти, не помню, в какую-то непонятную мне условную абракадабру XYZ, и там и будет нужный талон. Хм, ну я бы ни в жизнь не связал XYZ с ЭЦП.

Как правильно: консультанты собирают в течение дня 5-10 самых частых вопросов, и вечером или с утра айтишники патчат схему меню, чтобы ответы на эти вопросы (дословно, буквально как люди спрашивают - это важно) появлялись сразу на 1-2 уровнях меню.
1
Не перестаю удивляться тому безвыходному тупику, в который ИТ загнало само себя. Например, свежая книга "Linux Kernel Debugging" -- 638 страниц плотного текста. Сколько месяцев её изучать? И это учебник только по одной узкой теме, коих насчитываются в ИТ уже многие сотни, если не тысячи.

Подготовка каждого грамотного специалиста в ИТ обходится сегодня обществу очень дорого, это буквально штучный процесс. И дальше — с учётом всех печальных трендов в ИТ и не только — цена спецов продолжит ещё сильнее расти.
С 1 ноября 2022 г. по 30 апреля 2024 г. начнётся, экспериментальное(!) создание национального репозитория ПО с открытым кодом (аналога GitHub).
А чего экспериментировать-то? Берите и делайте сразу нормально, совершенно ничего уникального тут нету, шаблонный проект.

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

P.S. Как бы я делал, подобное? :)
Ну, однозначно ориентировался бы прежде всего на то, чтобы сделать не унылый клон сервиса 10-летней давности, пусть и норм работающий, а чтобы объективно вышел мировой топчик, чтобы сразу делать стратегически очень круто, SotA.
Это кстати абсолютно ко всем темам импортозамещения относится: поясните, какие наукоёмкие идеи закладываете? Увы.

Взял бы например за основу DataHub -- продвинутый проект Массачусетского технологического института:

... an experimental hosted platform (GitHub-like) for organizing, managing, sharing, collaborating, and making sense of data. The hosted platform provides easy to use tools/interfaces for:
- Managing your data (ingestion, curation, sharing, collaboration)
- Using others' data (discovering, linking)
- Making sense of data (query, analytics, visualization)
Иммигранты основали более половины американских стартапов стоимостью 1+ миллиард долларов (которых около 600).

Но только это совсем не "призыв к активности", потому что даже в самом лучшем случае "свой ИТ-стартап" выливается примерно в такое: вы пашете три года по 120 часов в неделю, наконец запускаете своё приложение по доставке какой-нибудь фигни по подписке, потом его приобретает компания "Proval & Co", вы получаете единоразовую выплату в размере 50,000 долларов (после того, как инвесторы и налоговики забрали свою долю), и теперь вы пожизненный лидер в своём стартапе, который невозможно продать и который теперь на многие годы превратился в тяжёлую гирю на вашей ноге. Стоит того.

Как правильно? Я бы например поэкспериментировал в web3 -- в течение года сделал бы несколько десятков маленьких приложений в разных профильных темах, и посмотрел на реальный интерес + получился бы отличный нетворк.А стратегически, кто у меня занимается, поизучайте материал курса карьеры "Какой будет следующая большая возможность в ИТ?"
Как же быть, как создать стартап на миллиард долларов? Ну если вы уверены в своей очередной "гениальной" идее... Ко мне раньше каждый месяц цифровые сумасшедшие обращались с просьбами оценить их идею на миллион долларов (которую рассказывают осторожными намёками, вдруг я её украду )))); теперь я таких просто сразу баню.

Дорогие, цена абсолютно любой вашей идеи ноль рублей ноль копеек; сделайте прототип и получите реальную обратную связь. Есть классическое А/Б тестирование. Создаёте пробную версию не более чем за две недели (80..100% обещанной функциональности можете пока выполнять вручную), после чего даёте рекламу и смотрите, будет ли интерес к вашей идее хотя бы немного отличен от нуля. Если конверсия в рекламе хотя бы 1% будет (скорее всего нет), то дальше уже легко смасштабировать расходы (на рекламу и разработку) на возможный доход. Но всё равно следующая итерация не должна превышать 2 месяца, и т. п.

Первый шаг -- создайте стартап хотя бы на тысячу рублей. Это вообще элементарно, но даже на это авторы гениальных идей не способны, как показывает практика :) Поэтому и говорить с ними не о чем.
В vk забросали вопросами "а как это, стартап хотя бы на тысячу рублей?"
Дорогие, ну вы чего? :)
Ну ок. Алгоритм 5 шагов.

1. Определитесь с тематикой, в которой вы шарите: например, GameFi, или машинное обучение, или прозаический классический бэкенд.

2. Ищете по этой теме не менее двух заказчиков на сайтах фриланса, демпингуя по любым заказам до уровня 1000 рублей. Ничего страшного, если работы за такую цену будет куда больше: просто начьните :)
Если получится за большую цену, тоже хорошо; главное, чтобы цена в 1,000 рублей не становилась отмазкой в духе "не возьмусь, это много работы, лучше ещё поищу заказы повыгоднее".

3. Сделайте заказ качественно и не дольше чем за 3 недели; получите деньги за работу, и потратьте их в течение 24 часов.

4. Повторяйте пункты 2-3, чтобы на протяжении не менее двух месяцев вы выполняли не менее двух заказов одновременно.

5. Теперь повышаете текущую цену в два раза (если была 1,000 -- будет 2,000 рублей; было 4,000 - делаете 8,000 и т. д.), и начинаете сначала.

За первый год такой активности вы получите прекрасный опыт, а на второй год доберётесь уже до достаточно серьёзных заказов, когда можно вполне расширяться и оформлять ИП или даже ООО.
На днях прочитал саркастическую новость, что дескать телекомовское оборудовавние, где теперь работает российский софт по импортозамещению, подорожало на 50%.

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

В паблике vk немного рассказываю, как стратегически существенно понижать сложность и стоимость подобных проектов. Например, один из американских гуру по встраиваемым системам достиг такого kung fu, что переносил драйверы на новое железо за один час!
Забавная ностальгическая и поучительная история
"Как мы (невероятно криво) делали Старкрафт".
Очень много багов пришлось на самопальные реализации двунаправленных связных списков
(наглядный ответ на вопрос "зачем вообще надо изучать АСД?"):
Unfortunately, each list was "hand-maintained" -- there were no shared functions to link and unlink elements from these lists; programmers just manually inlined the link and unlink behavior anywhere it was required.

Ну ладно, монадические трансформеры не использовались :)
но категорные типы (например, terminal coalgebras) для декомпозиции можно было бы задействовать? а не лепить на коленке эти жуткие иерархии классов.
Это был сарказм :) Один сеньор на миллион такое умеет, а я научу курсантов подобному на формате hard work.
Лаборатория Математики и Программирования Сергея Бобровского pinned «Забавная ностальгическая и поучительная история "Как мы (невероятно криво) делали Старкрафт". Очень много багов пришлось на самопальные реализации двунаправленных связных списков (наглядный ответ на вопрос "зачем вообще надо изучать АСД?"): Unfortunately…»
Задачка для джуниоров (с собеседования в IBM):
множество, содержащее только пустое множество -- {{}}
считается пустым или непустым?
Для большего запутывания напомню: пустое множество {} считается подмножеством любого другого множества, например {{1}}, но в том числе и пустого {}
(можете это проверить в своём языке программирования со стандартным типом данных Set, или даже с пустыми строками).
P.S. Ответ завтра будет.
Ответ на вчерашнюю задачку: {{}} -- это непустое множество. Но совсем не потому, что это естественно, а наоборот -- всё очень запутано:)

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

Существуют некоторые математические предположения (даже можно сказать, доказательства теорем), которые недоказуемы в определённой формальной системе (например, в аксиоматике арифметики Пеано, непротиворечивость которой недоказуема по Гёделю (но доказуема в конструктивистских подходах)). Как вообще мы узнаем, что некоторые теоремы в ней недоказуемы, если они достаточно сложные (например, о криптостойкости некоторого алгоритма в модели, отличной от давно устаревшей Долева-Яо, которой однако и сегодня массово учат в университетах по критобезу, чему хакеры очень радуются:) правильно сегодня учить этому вот так)?
Готовлю лекцию "Про инопланетян, плоскую землю и функциональное программирование". Вы узнаете такие невероятные факты, что
a) Haskell значительно старше, чем Java, и
b) Haskell сейчас в том возрасте, в каком был Algol, когда родился Haskell.
Ещё смешное, в тему: Monad_tutorials_timeline
В 100500-й раз про то, как преобразовывать профунктор в комонаду через коалгебру, снова вот это вот всё.
Если вы думаете, что знаете, на что способен type inference, подумайте ещё раз: профункторные линзы на PureScript
(нет, это совсем не похоже на TypeScript, это скорее хаскель для фронтенда)
вот какие красивые композиции можно выделывать
Однако если вы хотите изучить функциональное программирование "для практики", не вздумайте браться за хаскель, потеряете кучу времени совершенно впустую. Самый прагматичный подход: сперва изучаете C++20 просто по хардкору, и затем берётесь за stl, в которую Степанов сразу заложил мощную математику -- в ней идеологически полно функциональщины. И потом смотрите, что в вашем языке из стандартных либ есть подобного (хотя вряд ли), ну по кр.мере пытаетесь придерживаться стиля stl. И в целом, от темплейтов остаётся всего один шаг до метапрограммирования.
Пытаться представить систему как рекурсивную схему вложенных друг в друга под- и подпод-систем -- это катастрофа. Не делайте этого.
Как правильно, для курсантов выложил материал "Формализуем многослойную архитектуру".
Задачка по импортозамещению: спроектируйте логическую плату (напишите функцию, условно), у которой три входа и три выхода. При подаче на любой вход 1 или 0 на соответствующем выходе появляется инвертированный сигнал 0 или 1. Вы можете использовать произвольное количество AND и OR, но из-за санкций только два элемента NOT.