Telegram Group & Telegram Channel
Во-вторых, авторы, кажется, слона то и не заметили. С тех пор, как для 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 марта, который так и будет называться "Эволюция моделей памяти". Именно прогон черновой версии этого доклада меня и отправил в чтение статьи про сломанную модель памяти в сишечке нашей любимой. Рекомендую, доклад будет огонь!

#дух_машины



group-telegram.com/gdb_dbg/379
Create:
Last Update:

Во-вторых, авторы, кажется, слона то и не заметили. С тех пор, как для 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 марта, который так и будет называться "Эволюция моделей памяти". Именно прогон черновой версии этого доклада меня и отправил в чтение статьи про сломанную модель памяти в сишечке нашей любимой. Рекомендую, доклад будет огонь!

#дух_машины

BY Алло, это отладочная?


Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260

Share with your friend now:
group-telegram.com/gdb_dbg/379

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

The fake Zelenskiy account reached 20,000 followers on Telegram before it was shut down, a remedial action that experts say is all too rare. Now safely in France with his spouse and three of his children, Kliuchnikov scrolls through Telegram to learn about the devastation happening in his home country. That hurt tech stocks. For the past few weeks, the 10-year yield has traded between 1.72% and 2%, as traders moved into the bond for safety when Russia headlines were ugly—and out of it when headlines improved. Now, the yield is touching its pandemic-era high. If the yield breaks above that level, that could signal that it’s on a sustainable path higher. Higher long-dated bond yields make future profits less valuable—and many tech companies are valued on the basis of profits forecast for many years in the future. "Markets were cheering this economic recovery and return to strong economic growth, but the cheers will turn to tears if the inflation outbreak pushes businesses and consumers to the brink of recession," he added. Telegram has gained a reputation as the “secure” communications app in the post-Soviet states, but whenever you make choices about your digital security, it’s important to start by asking yourself, “What exactly am I securing? And who am I securing it from?” These questions should inform your decisions about whether you are using the right tool or platform for your digital security needs. Telegram is certainly not the most secure messaging app on the market right now. Its security model requires users to place a great deal of trust in Telegram’s ability to protect user data. For some users, this may be good enough for now. For others, it may be wiser to move to a different platform for certain kinds of high-risk communications.
from ru


Telegram Алло, это отладочная?
FROM American