Лаборатория Математики и Программирования Сергея Бобровского – Telegram
Лаборатория Математики и Программирования Сергея Бобровского
1.29K subscribers
1.19K photos
24 videos
930 links
ЛаМПовое с Бобровским
Download Telegram
Java/C#/C++ программистам очень полезно периодически кодить на Python, чтобы никогда не забывать, какая это боль, если не используешь хорошую static type system.
😁61👍15🐳5🔥2💯2
Совершенно не удивлён: когда ты монополист, можно откровенно плевать на своих самых благонадёжных клиентов.

И что это за служба безопасности, которая даже не может сама отследить, откуда мне донаты приходят? :)

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

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

Ну ок, уйду на бусти например.
34🤯24👍13🫡10😁3
А чего так на "Смуту" набросились? Рассматривают под микроскопом, придираются к каждой детали.

"Текстурки разъехались... Сценка не проработана... Графика на максималках всё равно не топ..."

Ну игра и игра. Мне не нравится только, что бегать надо многовато по локациям (наверное, коня дадут?), а так норм.

Не знаю, это анрил наверное просит установить Visual C++ 2015 Redistributable? :)
😁62🤔8👍7🎉4🐳3
Самое лучшее в работе программиста -- это то, что вы можете постоянно говорить, что застряли на одном и том же месте, и вам не нужно давать какие-то дополнительные пояснения.
😁695🤔4👍3🐳1
Завтра выложу в вк пост, почему будущее -- за монолитами :)

В частности, потому, что микросервисы -- это вот нечто подобное ↑
😁60🔥10👍8🤔6❤‍🔥3
Выложил на курс карьеры 82-й материал "Стоит ли работать в МОСЯ/FAANG?".

Одна из серьёзных загвоздок в начале карьеры -- это отсутствие правильных ответов на многие ваши вопросы. Почему так, а не иначе? А как сделано вот это? А как хорошо сделать вот такое?

Если вы начинали свою карьеру программиста в небольших компаниях или стартапах, от вас требовалось ровно одно: заставить это работать. И если это работало хотя бы на троечку с минусом, то считалось, что дело сделано. При этом, конечно вы не писали никаких тестов, не имели никакого представления о паттернах проектирования, не говоря уж о software design, не уделяли никакого внимания вопросам масштабируемости или возможности долгосрочной модификации.

Люди писали, и всё также же активно пишут говнокод, постоянно изобретая велосипеды программной инженерии на ходу. И хотя мы можем целую вечность спорить о том, правильный ли выбор сделали организаторы стартапов, и мне, и большинству серьёзно настроенных ребят со временем становилось ясно, что это неправильно...
👍617🔥43🫡1
Прекрасное от создателя кложа, очень рекомендую =>
"Hammock Driven Development"

Как говорил Алан Кэй,

"OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP."

Как они так мыслят? Точнее, как они доходят до такого мышления? изучаю, разбираюсь в этом постоянно, понемногу взламываю и моделирую ) мой формат hard work в помощь.

Это ведь не просто фраза, сгенерированная нейросеткой мозга, а мета-скилл, умение создавать в такой парадигме качественные проекты на миллионы строк кода.
👍4253🔥2🤔1
К предыдущему: те, кто выбрал неверный вариант, полагаю, ещё не знают, как больно отлаживать длинную цепочку наследования, которая ведет себя неправильно, и никто не знает, почему :)

Чем больше у вас в проекте полиморфизма (который не надо путать с генериками), тем больше у вас будет glue code (это тёмная материя программного обеспечения, которая в значительной степени невидима, и мы знаем о ней очень мало :).

Вообще, сила системы типов абсолютна: порядок всегда бьёт класс.

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

Итак, идите и пишите правильный код, и да пребудет с вами Сила Куба Барендрехта! :)

P.S. Лет шесть назад кстати я писал об этом, вот думаю, не вернуться ли к тем планам? Все остальные курсы для Школы, которые хотел, уже сделаны.

...Вы сможете предлагать уникальный сервис, где вообще нету конкурентов -- разработку мощных языков программирования (верифицированных!) под конкретные ниши ML, с доказательством корректности кода. ...Совсем прозаическое -- что-то хотя бы на уровне System F для 1C :)
...Вы встанете вровень с Джеймсом Гослингом и Ван Россумом, Аланом Кэем и Андерсом Хейлсбергом, Юкихиро Мацумото и Грейдоном Хоаром. Это проект саморазвития даже не на одну жизнь, а на многие жизни вперёд.
...Ну и в любом случае, вы научитесь мыслить в программировании так, как никто больше практически, ну может несколько сотен человек во всём мире. Это объективно самый программистский топ.
👍4011🤔751
"В правоохранительных органах ТАСС сообщили, что сбой в базах ГИБДД произошел по стране в связи с переходом на новое программное обеспечение..."

Совершенно не удивлён, и дальше, по мере роста объёмов кода, будет только хуже.

Азы программной инженерии? PMBoK? SMBoK?
Хотя бы CI/CD на студенческом уровне?
Нет, не слышали.

Я не зря сделал это девизом Школы :)
"Why the fuck do we let people that have no computer science backgrounds write code? Unacceptable!"

В США нельзя получить достаточно серьёзный гос- или оборонный ИТ-заказ, если подрядчик не сертифицирован хотя бы по 3-му (из 5) уровню модели зрелости программных процессов CMM Карнеги-Меллона, много об этом писал.

В конце 90-х одна московская контора (сотни программистов работали по оффшорным подрядам) прошла эту сертификацию на 4 (из Америки к ним приезжал CMM-гуру), я тогда большой материал об этом писал. Ну и ISO 9001 где-то рядом. Они действительно серьёзно работали над рабочими процессами, покупали например аналитические отчёты Cutter -- 2-3 странички стоили 300-400 долларов, мне их босс по дружески сканировал, и я потом классные статьи писал по эксклюзивной инфе 😎

=

Но для подобной сертификации нужна действительно независимая организация, с гарантированно неангажированными экспертами, а где же таковых в России найти? )))
30🔥16👍11🤔10😁2
Эта мания с тёмным режимом в вашей IDE и ваших редакторах должна наконец прекратиться! :)

Скажу больше, это выглядит просто ужасно, так что я склонен быть классиком и минималистом в этой теме. Когда вы в последний раз писали что-то на чёрной бумаге? Вы просто не делали этого никогда, так что я предпочитаю светлый режим с очень минимальной подсветкой синтаксиса. Это в основном чёрный текст на белом фоне, малиновый для ключевых слов, серый для комментариев, и тёмно-синий для значений, вот и всё, что вам нужно. И если вы попробуете так хотя бы 1-2 недели, вы наверняка скажете, что вашим глазам стало лучше, и это действительно приятно.

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

Я давно ещё писал, почему подсветка синтаксиса -- вообще зло.

...любой нормальный человек, увидев невероятную палитру текста программы в иных современных фреймворках, просто из здравомыслия признает, что так работать неудобно. Представьте, что в чёрно-белом книжном тексте разные слова подсвечены совершенно разными цветами, и вдобавок иногда выделены жирным или наклонным. А если, например, так распестрить математическую статью? Она станет на порядок более непонятной!
🤔50👍22🤓16🤯103
Лучшие книги и курсы для программистов -- это не те, которые вы читаете/проходите в начале своей карьеры. Это те, которые вы начинаете ценить лет через пять.

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

Однако потребуется время, чтобы понять и оценить более глубокие идеи. Вам нужно сперва как следует поработать над реальными проектами-вызовами. И вам нужно продержаться в них достаточно долго для того, чтобы почувствовать последствия своих действий и понять и оценить, насколько важны фундаментальные академические знания computer science.

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

Как правильно? Объяснять фундаментальные принципы, универсальные базовые строительные блоки, и позволить вам самостоятельно разбираться в деталях.
👍58🔥105🫡5🤔3
Хардкорное кодирование -- это когда допускается открыть в браузере только одну вкладку.
😁545😎5👍3🤔3
Дам пацанам бесплатные советы :)

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

Почитать эту статью, обратиться к автору,
ну и действительно, попробовать самим написать на плюсах Clickhouse UDF/UDAF.

Можно также поэкспериментировать с Presto или Spark, они тоже с регэкспами работают. Druid, Kylin...

Да, но даже 3rps не тянет :) Когда архитектурная ошибка была сделана исходно стратегически, поздняк метаться :)

P.S.1. Как тут не вспомнить разработку IBM IMS/DB в 1970-х, когда программисты говорили: "Мы ненавидим сложность, она почти всегда ненужная. Мы можем легко и просто хранить данные в плоских файлах, организованных в иерархию. Просто скажите нам ваши запросы, прежде чем мы начнём работать над дизайном схемы БД".

P.S.2. Ну и вообще-то любая аналитическая БД по дефолту подразумевает быстрое чтение и тормоза на запись. Тут уж либо OLAP, либо OLTP :)
50👍114😁2🏆2
Однажды я проработал ~12 часов, причём за это время я:

1. Не написал ни одной строчки кода.
2. Не набрал (и не написал) ни одного символа, связанного с работой.
3. Не читал и не слушал ничего связанного с работой.
4. Ни с кем не разговаривал ни о чём, связанном с работой.

Тем не менее я упорно трудился и добился немалых успехов.
👍43😁18🤔10💯54
Прежде чем ныть, что очередной ютубер "неправильно прочитал документацию" по вашему любимому языку/библиотеке (например, вот так :), попробуйте сами написать сотни строк проекта с нуля в прямом эфире перед сотнями зрителей, развлекая их (а некоторые целенаправленно пытаются отвлечь вас в чате:). Да, и всё это бесплатно.
🤔368👍8🏆62
Если кто-то захочет проспонсировать меня на создание отечественной плейстейшен, которая сразу же после выхода станет легаси, я сделаю это за 3 года вместо 5 лет, и всего за 100 млн. рублей вместо 5 млрд.
32👍24😁20😎17🔥3
Написал сегодня пост в вк, насколько (абсолютно!) важно качество кода/дизайна/архитектуры, и почему компании-разработчики софта не несут (пока) никакой юридической ответственности за забагованный софт? ИТ -- единственная в мире инженерная отрасль, где считается чуть ли не нормой продавать бракованные продукты.

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

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

Поэтому, предлагаю посоздавать побольше прецедентных случаев.
🤔57👍13🐳4🫡4🤓3
Сегодня в Москве несколько часов не работал мтс-овский петушеринг:
"У нас прилег сервис, мы видим проблему и стараемся решить её как можно быстрее."
(раз используете "ё", так уж будьте последовательны, ставьте везде)

Причин три:
1) либо условный "джун" задеплоил что-то не то: виноват сеньор, не сделавший code review;
2) либо накосячили dev/sys - админы: что-то не то сконфигурировали, что-то "само" апдейтнулось криво, сервак сгорел, забыли хостинг оплатить... -- виноват тимлид, не настроивший рабочие процессы;
3) либо хакеры -- виноват безопасник (а если такого нету, то CTO).

"Совершенно не удивлён, и дальше, по мере роста объёмов кода, будет только хуже."

В вк скоро выложу продолжение -- много советов, как писать безумно качественный код, что даёт существенное ускорение сроков разработки.
39👍20🔥64🤔3
Важнейший навык в разработке качественного программного обеспечения -- глубокое понимание домена (предметной области). Если вы плохо понимаете задачу, ваша система, скорее всего, будет представлять собой хаотичный набор всяческих use cases, связанных условными операторами, выполненный в архитектуре "говнокод".
👍6912😁65🫡4