Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
370 - Telegram Web
Telegram Web
Ложиться спать в последнюю ночь каникул, конечно, совершенно не хочется.
😭238🤝3😁2💯1
аааа, как же у меня быстро работает мозг после каникул! Как ясно думается, как легко переключаться между задачами! И насколько же я, оказывается, был перегружен в конце декабря, жесть.

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

Понятно, что буквально за пару дней все вернется обратно, но сейчас этой скоростью соображалки можно насладиться. Главное в этом состоянии не начинать думать, почему же было так тяжко в конце года. А то можно начать всякие несвоевременные на данный момент реформы.
👍20💯6
Вот буквально оно:
Авен: А какими остались в твоей памяти 90-е? Ну да, ты был все время занят…

Чубайс: Знаешь, у меня тут все совсем просто. Не хочу кокетничать, но я реально жил в режиме 12–14 рабочих часов в день. Сидишь где-нибудь, стоят три стула. “Вот сейчас бы дойти бы до них, лечь на эти три стула и хоть на 10 минут уснуть”. Непрерывно перегруженный мозг, дикие риски. Я не рефлексировал, я не прочел ни одной книжки за это время.

Авен: Но это очень снижает эффективность.

Чубайс: Конечно. Я помню это ощущение – мозг аж больной. Первая мысль: “Если сейчас кто-нибудь спросит, сколько будет семью восемь, я скажу: «Не могу, не спрашивайте, у меня все переполнено»”. А потом вторая мысль: “Ни хрена себе. И в этом состоянии я управляю экономикой страны. Чего ж я там науправляю?”
😁5🙏32
Один китаец все время втягивает меня во всякие политические игры и сомнительные корпоративные авантюры, ну сколько можно уже :(

Думаю пойти с ним в бар и набухать.
🔥9
"Без лица" – это фильм про китайца, который давно работает с русской командой и уже совсем привык терять лицо в неудобных ситуациях. Китайца играет Джон Траволта.

*когда-нибудь я обязательно напишу пост про особенности китайского менталитета, и как это влияет на работу*
👍9💯3🤣3🤔1
Это я показываю, как мои правки повлияли на бенчи
😁34🏆3👍2💯1
Наткнулся тут на статью с провокационным названием "C is NOT a Low-level language". Она простая и научно-популярная, заканчивается откровенно политическими лозунгами, прославляющими Erlang, но в целом декларирует интересную мысль.

Мысль, что зачастую C, как язык, восхваляют за "близость к железу", дескать системный программист, глядя на свой код на С, легко поймет в какие ассемблерные инструкции этот код будет превращен. И так оно и было лет 50 назад, когда таргетом был PDP-11, а компиляторы были значительно проще (лет так на 50 непрерывной разработки многими поколениями писателей компиляторов), а оптимизаций было не так много. А вот в современном мире есть множество факторов, которые делают C куда более абстрактным и на самом деле далеким от железа.

Часть аргументов в статье кивает на сложность современного железа (instruction-level parallelism, который делает идею последовательного исполнения абстрактной; иерархию кэшей, про которую ничего не говорит язык, декларирующий flat memory model, и знание про которую разработчику приходится держать в голове). В принципе справедливо, но не сказать, что у вас есть полный контроль над этими вещами, когда вы пишите на асме (хотя, на x86, например, есть movntdq и прочие non-temporal hint инструкции).

Другая же часть статьи поинтереснее: она про то, насколько оптимизации в современных компиляторах могут поменять ожидаемый разработчиком сгенерированный код. Среди примеров там довольно вольное обращение с паддингами при scalar replacement структур; замена мертвого кода на явное UB при loop unswitching (хе-хе, это прикольно), и удаление налчека после безусловного разыменования (компилятор может себе это позволить, т.к. если это таки был NULL, то мы уже на территории UB, а значит может произойти все, что угодно). Почти все примеры корректны с точки зрения С, что-то неожиданное может произойти только тогда, когда в коде уже и так UB, а на что тогда пенять? Ведь это одна из причин существования UB - дать простор оптимизациям.



И вот дальше авторы статьи начинают резко хвалить Erlang и мечтать об альтернативном будущем, где люди пишут код в другой парадигме, а я вместо этого хочу вставить свои 5 копеек.

Во-первых, как системный программист, я довольно хорошо понимаю авторов на уровне эмоций. Мне тоже часто хочется сказать: "что этот компилятор себе позволяет, прикрываясь UB?". Ну т.е. если я хочу разыменовать в коде указатель, полученный из литеральной константы, значит мне это зачем-то нужно. Значит я реально хочу исполнить mov rax, [rax], когда в rax физически лежит 42, вот я его только что туда и положил. Не хочу я слушать про UB, я хочу получить трап, который потом будет обработан в рантайме. Но головой я понимаю, почему в язык введено UB, и что без него половина оптимизаций бы не работала, а перфоманс был бы как в 70-ые. ↓

#дух_машины
👍7🔥4🆒3👎1
Во-вторых, авторы, кажется, слона то и не заметили. С тех пор, как для C/C++ появилась формальная модель памяти (а если точнее разные memory order), аргумент про "что этот компилятор себе позволяет" стали просто пугающе правдивыми. Известно, что C11 memory model отличается от Java memory model тем, что гонки по данным означают UB. По мне, так это очень хорошее изменение, которое делает понимание модели памяти куда проще. Ноооо, это ведь только когда мы говорим про конкурентный доступ к обычным переменным и полям. А вот если мы говорим про атомики, то все сильно сложнее: поведение при гонках полностью определено и сильно зависит от memory order.

Так вот есть другая, прекрасная статья (с еще более броским названием Common Compiler Optimisations are Invalid
in the C11 Memory Model and what we can do about it
), в которой автор показывает, что безобидные вроде бы оптимизации* компилятора могут полностью поменять семантику программы и изменить множество потенциально наблюдаемых результатов при гонке на атомиках 🤯 Там много примеров, но все начинается с тривиального: когда код, исполняемый изначально в двух тредах просто выполняется в результате оптимизации последовательно в одном треде (и это меняет семантику!). Все это при условии гонки на атомиках с relaxed mo с участием третьего треда. Если не хотите читать полную статью и разбирать матан, то есть короткая преза про это от того же автора.

*речь про source-to-source оптимизации, либо отдельные фазы, до кодегена, понятно, тут дело не доходит, иначе было бы все хорошо.



В общем, аргументы любителей C в духе "я понимаю, в какой асм это будет скомпилировано" в современном мире звучат как-то слегка высокомерно. Между сишным кодом и получившимся асмом настоящая бездна, 50 лет разработки оптимизирующих компиляторов и слегка так сломанная модель памяти (бывает, че). Да и вообще, на это указывает само существование undefined behavior в спецификации языка. Так что стоит признать, что программирование на C тоже подразумевает некоторый абстрактный (а не железный) исполнитель, на котором исполнение этого кода и происходит.

Кстати, если хотите послушать про эволюцию моделей памяти в Java и не только (и вот в том числе про отличие JMM от C11 MM), то приходите на SnowOne на доклад Саши Ланцова 1 марта, который так и будет называться "Эволюция моделей памяти". Именно прогон черновой версии этого доклада меня и отправил в чтение статьи про сломанную модель памяти в сишечке нашей любимой. Рекомендую, доклад будет огонь!

#дух_машины
🔥7👍5🆒5
Алло, это отладочная?
Ой, все. Какой еще Balur's Gate. Император защищает.
Прошёл!

Хорошо, просто замечательно, брутально и безумно тестостероново. Особенно та часть игры, где делаешь суп из тиранидов (с хаоситами уже чуть душновато, как по мне).

Три мысли:

1) отличная алко-игра: пить каждый раз, когда какой-нибудь спейсмарин говорит: "брат";

2) в первого спейсмарина я, получается, играл 14 лет назад или типа того 🤯. Если темпы разработки сохранятся, то в третью часть сыграю уже под полтинник (пиздец);

3) приятно, что такую игру сделала команда из Питера!

В общем: Император хранит, Кадия стоит (ну, не совсем), Магнус не предавал.
🔥15
ЭЛЕКТРОХИМИЯ [Просто: успех] - Я бы посмотрел.
👍9😁3
С днём резиновой уточки!

У технарей есть так называемый "метод резиновой уточки" — когда зашёл в тупик, ставишь перед собой резиновую уточку и объясняешь ей свою проблему. Внезапно оказывается, что просто от того, что тебе надо сформулировать вопросы, пусть даже в такой своеобразной форме, оказываешься ближе к решению своей проблемы.

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

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

Так что, со старым новым годом вас! Ну и с днём резиновой уточки заодно 🙃
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤‍🔥6😁3
Я, впрочем, с неодушевленным предметами обычно не разговариваю, только с другими своими личностями.
👍114💯2
Опять скоро схожу на подкаст => снова скажу что-нибудь, что кого-нибудь не уcтроит => снова словлю хейта. Ну что ж!
🔥141🍾1
День, когда у меня сгорела жопа 🔥
😢17😁3👾2👍1🤣1
Сегфолтнется.
😁11🔥1😱1😐1
Тут ведь как: главное правильно задизайнить балловую систему
15😁11👍1
2025/07/09 19:20:13
Back to Top
HTML Embed Code: