Лаборатория Математики и Программирования Сергея Бобровского – Telegram
Лаборатория Математики и Программирования Сергея Бобровского
1.3K subscribers
1.19K photos
24 videos
933 links
ЛаМПовое с Бобровским
Download Telegram
Надеюсь, вы активно используете sed, но он универсальный, а нередко требуется нечто более продуктивное под определённую специфическую задачу. Например, разбираться с этими гадкими безтиповыми json-ами -- лакмусовой бумажкой того дна, в которое скатилось ИТ :)

jq -- a lightweight and flexible command-line JSON processor.

jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.
...it has zero runtime dependencies.

Я посмотрел, как он устроен внутри -- ну, да, jq создаёт внутреннее представление json-а, так что вы используете изоморфизм :) На эту тему в СильныхИдеях будет материал скоро.

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

Хорошо бы конечно отдельно пройти курсы по мат.логике,

а на уровне джуниора/миддла очень рекомендую порешать задачки из книг Рэймонда Смаллиана для малышей: "Принцесса или тигр?", "Алиса в стране смекалки", "Загадка Шехерезады". Далее, если будете это легко решать (но это вряд ли :), попробуйте осилить "Вовеки неразрешимое", и после этого уже вполне можно взрослый курс по логике изучать.

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

вылечит и психа
и лунатика
кодоприкладная
математика
👍1
Привлекли микрософтовских буржуев к общественно полезным работам ))

In 2020, Core Developer Mark Shannon drafted an Implementation plan for speeding up CPython (the most common implementation) by five times. Python 3.11 has already seen speedups of 10-60% in some areas of the language.

P.S. В сентябре кстати я говорил, как microsoft подставляет разработчиков своим copilot-ом, и вот на днях им выкатили иск на 9 миллиардов долларов, и поделом.
Тим Бернерс-Ли (отец Интернета) призвал на днях "игнорировать" криптодвиж, и заявил, что он не считает блокчейн жизнеспособной технологией для создания интернета следующего поколения.

Он также возмутился, что дескать термин "Web3" скрали пацаны из Ethereum для своих блокчейн-проектов.
"Web3 is not the web at all"

При этом однако Папа продвигает свой собственный децентрализованный(!) проект Solid под брендом "Web 3.0" :)
Идея проста: единый логин везде для всех, и "common universal API" для скачивания данных. Но пока он поднял на свои идеи лишь 30 млн. долл.

P.S. В масштабе одной страны, впрочем, вполне годная идея -- при условии, что реализация действительно будет прозрачная и разумно децентрализованная. И никаких блокчейнов.
EA закрыла серию Project CARS, и это понятно. Насколько изумительной была Project CARS 2, настолько отстойным дном стала Project CARS 3 :)

Вот был классный продукт CARS 2 для очень лояльной и весьма хардкорной аудитории любителей автосимуляторов, причём с очень корректной регулировкой сложности, чтобы вообще почти с нуля и до импассибла. Так нет, решили сделать откровенную попсу CARS 3, ну и...
Вон линейка WRC многие годы клепается подобными друг другу релизами, и норм живут. Правда, уровень для слабачков так и не сделали :) Может, и правильно, держат планку входа для определённой проверенной аудитории.

Обычно ругают программистов за кривые руки, но на практике, в 98% провалов (особенно финансовых) ИТ-проектов напрямую виноваты менеджеры буквально всех уровней.
Смешное: компиляция gcc проекта на плюсах в Linux + ext4 выполняется в 5-10 раз быстрее, чем в Windows + NTFS (на одном и том же компе с одной и той же SSD). Более того, даже если юзать встроенную в винду убунту WSL2, всё равно проигрыш получается в разы, что тоже объяснимо, т.к. ext4 там виртуальная; хотя даже если и примонтировать NTFS, всё равно получается медленно и печально.

год как пашет таня
в секторе айти
и теперь от глюков
таню не спасти
В рамках исследования "Python Coding Style Compliance on Stack Overflow" 2019 было просмотрено 400 тысяч кусочков Python-кода (не менее 6 инструкций) на StackOverflow.
-- 94% кусочков нарушают PEP8;
-- в среднем 0,7 нарушений на каждую (!) инструкцию;
- даже самые авторитетные комментаторы ничем не лучше других по критерию плохого стиля.
В мэйнстриме традиционное дно, и AI-ассистанты активно на этом всём обучаются.
Илон Маск погнал программистов из Теслы (плюсы и python) делать code review миллионов строк кода твиттера (javanoscript и scala), откуда сеньоры сразу после сделки разбежались, и хотя их теперь зовут обратно с бонусами, возвращаться не хотят, и правильно. Никогда не возвращайтесь туда, где с вами хотя бы раз поступили непорядочно или неуважительно.

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

Однако есть простое, хоть и неочевидное решение, если подумать, чему изоморфно подмножество допустимых плейлистов (и при чём тут биективный гомоморфизм моноидов :). Курсантам в СильныхИдеях скоро поясню эту тему примерами кода.
"Need to take moment to completely rewrite the software stack’"
-- Elon Musk

Раньше: программная инженерия, capability maturity model, классические итеративные подходы, аджайл-методики...

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

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

-- Вещи, которые должны изменяться вместе, находятся вместе в проекте ("физически" в условной проектной папке).

-- Вещи, которые не должны изменяться вместе, находятся в разных местах. Где? Это вам и надо определить, товарищ проектировщик. Но, скорее всего, вместе с теми вещами, которые должны меняться одновременно с ними.

Бертран Мейер в своей методике ООАП рекомендует вроде бы другой подход: группируем в проекте классы в кластеры по их логической общности (например, все классы оружия или все классы ролей пользователей), но если подумать, этот подход будет почти изоморфен Беку. С какой стати вдруг потребовалось одновременно изменять классы, по смыслу не связанные? Хотя правильно спроектированное ООП подразумевает смысловую правку ровно одного класса, если SRP хорошо выдержан.

Тут главная фишка, что думаем об этом всём именно в контексте cohesion, не скатываясь в coupling.
Чем больше вы тренируете свою способность формально рассуждать об изоморфизмах, тем больше расширяется ваша способность признавать разрозненные вещи эквивалентными и устанавливать интересные связи между ними. Например, свободное владение многими распространёнными изоморфизмами будет очень полезным навыком для проектирования API, потому что часто существует способ взять API, который не очень "эргономичен", и отрефакторить его в эквивалентный (изоморфный) API, который гораздо более удобен в использовании.

Вот хороший разбор темки для тех, кто владеет хаскелем:
what-does-isomorphic-mean-in-haskell
а я курсантам в СильныхИдеях дам более простой разбор на питоне.
Смешное: "Why aren’t regular expressions a lingua franca?" 2019

15% регэкспов в разных языках будут работать по разному, т.е. они фактически непереносимы на уровне реализации. В то же время 90% программистов тупо копипастят подходящие регэкспы из интернета, не заморачиваясь контекстом, в котором они обсуждаются.

Всегда помните, что regex, скопипащенный из программы на PHP, скорее всего будет вести себя несколько иначе в JavaScript.
Миллиарды, вложенные венчурными инвесторами в стартапы -- против маленького веб3-агрегатора децентрализованных финансов, DefiLlama со смешной ламой, движок полностью доступен на гитхабе. Как думаете, кто победит? :)

Мировое рептилоидное правительство проводит глобальную операцию прикрытия: всем либеральным СМИ велено трактовать происходящее исключительно как "лопается криптопузырь" и "крипта это мошенничество и криминал", а властям США и главам зависимых центробанков приказано начать жёсткое регулирование криптопроектов.

Это не крипто-пузыри, а классические банковские пузыри. Кредитование не тех субъектов, неверные оценки залога, высокомерные нефтяные шейхи, и затем бегство вкладчиков. В FTX/Alameda инвесторы вкладывали безумные деньги, сотни миллионов долларов за считанные месяцы. Тут достаточно просто почитать про хедж-фонд Long Term Capital, едва не обрушивший мировую финансовую систему, суб-прайм ипотеку, кредитно-сберегательный кризис Savings & Loan...

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

Рептилоиды чётко работают против светлого децентрализованного будущего :)

Но ничего, они жёсткие и умные, но мы жёстче и умнее :)

DeFi -- не проблема, DeFi -- решение.

P.S. Стабильнее всего зарабатывают на этом всём конечно программисты )))
Баги в реализациях regex найдены например в движке V8, а также в Python, Rust, Ruby, однако имеются они и в самих регэкспах :) Почти половина из них связана с неправильным поведением регулярных выражений, а около 10% -- с неправильным использованием API regex. В работе "An Empirical Study on Regular Expression Bugs" 2020 приведена подробная иерархия причин ошибок и даны 10 паттернов, которые исправляют многие распространенные баги regex.
Илон Маск не перестаёт радовать :)

Разослал сотрудникам письмо "Twitter 2.0", где заявил, что новая версия твиттера "need to be extremely hardcore" -- должна работать под критической нагрузкой многие часы. Кто не подтверждает участие в этой движухе в течение 24 часов, получает трехмесячное выходное пособие и пендаль.

А через сколько секунд развалится твоя система на первой тысяче rps, бро? :)

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

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

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

P.P.S. Пожалуй, за компанию обновлю и мою Школу до 2.0 :)
Channel name was changed to «Высшая школа программирования Сергея Бобровского 2.0»
Спрашивали по вчерашнему, а как это "по-взрослому" такие проекты делать?

Ну вот эталонный современный уровень System Design на примере рекомендательной подсистемы тиктока:
"Monolith: Real Time Recommendation System With Collisionless Embedding Table"

Крайне показательно также, насколько сегодня важно хорошо знать АСД, если вы хотите стать элитным программистом.
Зарегился наконец в Mastodon, скорее всего и сервачок подниму. Давно хотел, и вот вчерашняя заметка подстегнула:
"Как зарегистрироваться в Mastodon. Твиттерские переселяются в соцсеть после ультиматума Илона Маска"

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

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

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

Отчасти сила Mastodon заключается в её децентрализованной природе. Это истинный веб3 и это плюс, когда мы говорим о технологиях и инновациях. Это минус, когда мы волнуемся о централизованной синхронизации и возможности злоупотреблений. Электронная почта так и не смогла оправиться от своего открытого духа, что позволило спамерам и мошенникам делать то, что им нравилось, а несовершенные фильтры помогали слабо.

Сознательная децентрализация и федерализация Mastodon пытается сделать подобные фильтры более естественными и более продуктивными. И, да, тут нету единой точки сборки, которая так и просится, чтобы её взломали токсичным поведением. Это чуть больше похоже на реальную жизнь и чуть меньше -- на традиционные социальные сети, которые умышленно провоцируют хайп в комментариях, как в яндекс-дзене, чтобы получать прибыль.

И, наконец, федеративная культура пока ещё создается. Многие из тех, кто только что к ней присоединится, станут авторами этой культуры нового поколения, и если они поймут, как хорошо быть щедрыми и добрыми, то и будет создано именно то, что надо.
Смешное: AI-ассистанты, помогающие писать код (вроде микрософтовского copilot), "помогают" так, что число уязвимостей в проекте только растёт, причём вдобавок вылазит когнитивный баг: программисты полагают, что их код с помощью AI наоборот стал более защищённым. Ну, понятно, так удобно перекладывать ответственность за свой код на других.

Исследование Стэнфорда: "Do Users Write More Insecure Code with AI Assistants?"
Вообще-то это не code review, а системная архитектура. А где use cases, которые её определяют? И куда они спрятали ту самую 1,000 RPC? :)
Квадратики и стрелочки, фактически одна view model, и всё. Какой-то детский сад на уровне собеседования во второсортную контору :)

"ISO/IEC/IEEE 42020:2019. Software, systems and enterprise — Architecture processes" ? Нет, не слышали.

P.S. С другой стороны, 80% айтишников уволено, а твиттер всё ещё работает, так что прежняя архитектура не такая и плохая.
P.P.S. 28:1 :)