Лаборатория Математики и Программирования Сергея Бобровского – Telegram
Лаборатория Математики и Программирования Сергея Бобровского
1.29K subscribers
1.19K photos
24 videos
930 links
ЛаМПовое с Бобровским
Download Telegram
Когда пришёл на новую работу, и тебе дали первый тикет - пофискить древний баг в легаси-базе.
😁64🔥11🤔6👏4🫡3
Пацан испугался и потёр пост; пока он на веб-архиве ещё хранится, но 💯 рептилоиды со временем и архив целиком прикроют.

"How a single ChatGPT mistake cost us $10,000+"
We copy pasted the code it generated, saw everything worked fine, tried it in production, saw it also worked, and went on our merry way...
This problem became really well hidden because of our backend setup. We had eight ECS tasks on AWS, all running five instances of our backend (overkill, yes we know, but to be fair we had AWS credits). This meant any single user had a pool of potentially 40 unique IDs they could land upon...

Ознакомьтесь пока доступно, очень поучительно.

Но на самом деле это происходит из-за использования моделей программирования без их понимания. Разве сделали бы такое мои курсанты, занимающиеся на hard work например?

В этом десятилетии обучение software design пока ещё остаётся ключевым фактором...
👍39138🤔6😁5
Что выведет этот код?

(пауза)

9 9 9 9 9 9 9 9 9 9

Помните с трека по вычислительным моделям, какие ограничения надо добавить в декларативную модель, чтобы получился чистый функциональный язык (полноценное лямбда-исчисление), а не вот это вот всё?
🤔4118👍9🔥5🫡3
Динамическая типизация, кстати, здесь не при чём.

Скажете, в Java сделано "по-взрослому", значение захватывается как и положено в момент определения лямбда-выражения? Более того, компилятор сам напомнит:
"local variables referenced from a lambda expression must be final or effectively final".

Ну вот например пример на Java с final. Что выведет? :)

(пауза)

что-то такое: 1 9 8 7 3 0 4 6 5 2

Только теперь для понимания этого требуется пройти трек уже по параллельным вычислительным моделям :)

Спрашивали "а как этому всему правильно следовать на практике, чтобы таких косяков не допускать?"

Готовлю несколько новых курсов по software design, в течение лета.
🔥51🤔9👍63🐳3
Товарищи фронтендеры, как вы обычно проверяете на неопределённость?
Anonymous Poll
63%
if (foe === undefined) { ...
8%
if (foe === void 0) { ...
29%
if (typeof foe === "undefined") { ...
🤔47🫡10🤯51
Мне кажется, что качество программного обеспечения можно значительно повысить, просто платя программистам гораздо меньше, чем им платят сегодня. Это автоматически отсеет всех несносных хипстеров и самозванцев, что, как ни парадоксально, может привести к положительному результату.
Жаль, что спрос на программистов (пока) слишком высок.
😁41🫡19🤯16👍10🐳5
"Каждый десятый выпускник вуза получил ИТ-специальность", и это замечательно. Однако количество выпускников университетов по информатике, которые даже не знают, как создать приложение на Django или Spring, просто поражает.
👍59💯97🫡5🔥1
обожаю командные строки:
The lazier way to manage everything docker
A simple terminal UI for both docker and docker-compose, written in Go with the
gocui library (написана тем же автором 10 лет назад, и работает норм :)
👍558😎6🤔1
Как есть программисты +x10 , так есть и -x10, причём один и тот же чел может регулярно плавать биполярочкой в этом диапазоне от одного края к другому. И чаще всего их локальная +x10 приводит к -x20 в целом. Такие "супер-программисты" практически всегда создают узкие места в проекте. Они концентрируют информацию только в своей голове, куда никто другой не может получить доступ, и пишут на основании такой "секретной" информации код, который никто не понимает. Причём проигрывают в итоге и они сами.
На курсе карьеры я специально делал материал "Почему плохо быть критически важным в проекте".
50👍118😁5🤔2
Большинство 10-кратных программистов просто производят мусор в 10 раз быстрее. А с помощью AI -- в 100 раз быстрее. Какой в этом смысл?

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

Но в то же время, конечно, есть и бесконечные программисты: они способны решать за короткое время сложные задачи, которые многие (98%) программистов не смогли бы решить и за всю жизнь.
👍58🤔133👌3🫡2
Когда мастер использует тесты для проектирования, глупцы сосредотачиваются на тестах, а не на проектировании.
4710👍9🤯4
Вышел очередной "супер-кодер" DeepSeek Coder V2 (236B), можно поиграться онлайн тут, даже впн не нужен. Особо ничем не впечатлил, примерно как и GPT-4o.

Просил обоих написать совсем элементарное, для начинающих с нуля: "наивный" (без эвристик) алгоритм Бойера-Мура -- так и не смогли, как ни умолял их. То КМП выдадут, то вообще за O(N*M). Ну наверное, если потратить кучу времени, можно добиться правильного ответа, но зачем тогда мне вообще такой джун-"помощник"?

Идите пока нафиг со своим AI-кодером.
47👍20😁13❤‍🔥1🫡1
В курс карьеры добавлен 87-й материал "Универсальность или специализация - 2".
Вот вопрос, который мне регулярно задают: "Как мне понять, стоит ли больше/глубже изучать текущий стек на работе, или следует добавить новые навыки в других областях? Следует ли мне идти вширь или вглубь?"
Итак, куда лучше инвестировать своё время (ваш самый ценный актив)?

В СильныеИдеи добавлен материал "93) Почему любые дефлотные параметры -- зло".
Разбираемся, как в разных языках (Python, Java, C#, F#, TypeScript) поддерживаются дефолтные параметры, какие они несут скрытые проблемы, и как их правильно готовить.

Обновлён курс "SQL для начинающих" (добавлено 14 задач с разбором по игре Dwarf Fortress). Кто его проходил, рекомендую допройти.

Однако напомню наш стратегический принцип:

Впечатляющим должен быть не ваш код, а ваши результаты.
👍59❤‍🔥7😎42🔥1
Если бы инженеры аэрокосмической отрасли реагировали на дедлайны и давление менеджеров так же, как программисты, самолеты делали бы из фольги, чтобы "снизить затраты и ускорить производство".

Напоминаю, граждане тимлиды ит-начальники ит-менеджеры, будете ускорять проекты в ущерб их качеству, ваша бэд карма будет вас регулярно ставить в ситуации, как с Фредериком Фрисоном.
42😁159💯8👍5
Ну, с трудовым понедельником! 💪🏻
Приступаем к GOVNO.works
😁72👍4331
Лайфхак для сеньоров/тимлидов. Когда вы видите, что хорошо бы "распараллелить работу", но не знаете как, сделайте так: максимально изолируйте исполнителей друг от друга, запретив им общаться с кем-либо в команде, кроме вас; любая обратная связь должна идти только через вас. А вы в эту обратную связь вносите максимально возможную задержку.
🤔61👍9🤓82😁2
Микросервисная архитектура: то, что могло быть одним JOIN, теперь 1000 сетевых вызовов.
39😁27👍7💯4👏3
Если вы сейчас пишете на C#, я думаю, что до конца этого десятилетия вам придётся переквалифицироваться на F#. Однажды вы проснётесь, и все джуниоры будут со смехом смотреть на вас, когда вы начнёте писать на C#. Это просто больше не будет круто.

А если вы думаете, куда вам дальше переходить с Java, C++, да и даже с сишечки? тоже на F# / OCaml 💯 (ну ладно, ещё Elixir — и никаких Go)
🤔58😁12👍4🔥43
В июне сами знаете Кто потерял 7000 папищеков из-за сбоя или ошибки в боте. А это 80 тыс. долл. ежемесячно.

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

Более того, Boeing из-за непофикшенного бага в MCAS потеряли 20 млрд. долл., а выход нашли в убийствах инсайдеров :)

Microsoft Update 1809 просто удаляла ваши файлы, что повторилось через джва года в Update 2004 и в многомиллиардное удаление из них долларов.

Facebook из-за багов с приватностью в "View As" и др. потеряла 5 млрд. долл., и т.д.

Достаточно нанять одного спеца за $300k/s $5k/m, чтобы он обеспечил надёжность сервиса 99,999983% , как у Дурова.

Но невозможно объяснить это эффективным менеджерам, ибо "а чего это он будет получать такие деньжищи за ничегонеделание"...
🤯4119👍123💯3
Шуточки от AI:

- Что говорит программист на PHP, когда видит функцию, принимающую другую функцию в качестве параметра?
- Это так же нереально, как и нормальный session_start() без предупреждений!

В мире функционального программирования PHP — это как человек, который настаивает на том, чтобы работать из офиса в эпоху удаленной работы.

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

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

PHP-код: "У нас есть глобальные переменные и побочные эффекты."
Финансовый советник: "А у нас есть скрытые комиссии и неучтенные налоги."

=

Вспомнилось, в тему: Lambda calculus interpreter in PHP.
😁5012🐳3👍21
Лучший созвон -- которого не было.

Поясняет Дэн Кеннеди ("Жёсткий тайм-менеджмент"):

Первым делом научитесь избегать совещаний вообще. Есть и другие способы сбора и распространения информации.
Например, если поставить перед людьми вопрос, обязав каждого ответить письменно, это заставит их думать, не позволит эмоциям, связанным с личными конфликтами, и подковерным интригам окрасить ответы, избавит от потери времени на демагогию, шутки-прибаутки и споры, и обеспечит вам материал, над которым можно спокойно подумать, крутя баранку или сидя на унитазе. Продуктивность повышается у всех.
Если совсем обойтись без совещания никак не выходит, постарайтесь сократить количество участников. Не надо звать всех, кому есть что сказать или надо быть в курсе. Высказаться могут и заранее письменно, а с выводами ознакомиться после совещания.
👍6012🔥6💯43