Именно что оставить возможность для оптимизации. Там порой не в наносекунды упирается, а выкидываются огромные куски ненужного кода. Причём код библиотек на C++ (где куча метапрограммирования на темплейтах) порой на эти оптимизации закладывается (простите, что перескочил от C к C++).
Не хотите этого безумия – меняйте язык. В более поздних языках гораздо, гораздо меньше UB. Типа пусть прога будет чуть медленнее, но программист не сойдёт с ума. Плюс многие моменты обошли за счёт более совершенной системы типов – и таки могут применять оптимизации.
Ну и даже в чистом C, насколько я помню, UB меньше, чем в C++ (но всё равно хватает).
Смотря какой срок будет для возврата. Если год – кому-то может приглянуться идея попользоваться новым айфоном, а потом вернуть его (и купить следующий).
Мы уже про более тонкое различие, когда компилятор не просто позволит программе упасть при обращении по этому адресу, а полагается на то, что программа не упадёт. Грубо говоря, код
if (p&1) puts("bad pointer");
x = *p;
имеет право не напечатать bad pointer перед падением.
Это было бы implementation-specific. Описано, что на этом железе падает – значит, падает.
Но штука именно в том, что программист обязан дать компилятору гарантию, что UB не будет. Например, есть у нас указатель, мы проверяем его младший бит и если тот равен 1 – выполняем какой-то код. Ok, работает. А теперь добавляем после if разыменование этого указателя – фигак, и наш код волшебным образом вырезало, потому что теперь указатель "гарантированно" кратен 4 (или 8).
А был бы implementation-defined – прога бы выполнила наш код, а потом упала.
Как обычно: потому что UB компилятор воспринимает, как контракт с программистом ("я никогда не буду этого делать"), и может, исходя из этого контракта, применять какие-то оптимизации. Нет никаких других причин, чтобы что-то было UB, а не implementation-defined.
Это обычная практика. Покойный скайп с определённого момента был таким же, и тимс такой же (и на маке тащит внутри своего бандла эдж целиком). Оба ужасны, хотя это и не обязательно для такого приложения – например, VS Code норм.
Так вроде ж как раз это и убрали, нет? У меня с некоторых пор стоит "Unlimited hearts" – причём подписку не покупал, взломать не пытался.
Причём это не только в России, как раньше было. В какой-то момент стало сложней ("Practice to gain hearts" ограничили получением одной жизни когда у тебя ноль – нельзя накопить пять для "штурма"), а потом вот так, я так и не понял, почему.
Upd: пробы ради их выключил – стало 5:жизней. Решил для пробы включить обратно – на пункте меню пишет "get super", но при нажатии на него – просто включает. Android, 6.45.3.
Хм... Резинка могла бы и энергию деформации в электричество преобразовывать.
Много лет прошло, уже давно не "переносимый ассемблер". Вот и...
Именно что оставить возможность для оптимизации. Там порой не в наносекунды упирается, а выкидываются огромные куски ненужного кода. Причём код библиотек на C++ (где куча метапрограммирования на темплейтах) порой на эти оптимизации закладывается (простите, что перескочил от C к C++).
Не хотите этого безумия – меняйте язык. В более поздних языках гораздо, гораздо меньше UB. Типа пусть прога будет чуть медленнее, но программист не сойдёт с ума. Плюс многие моменты обошли за счёт более совершенной системы типов – и таки могут применять оптимизации.
Ну и даже в чистом C, насколько я помню, UB меньше, чем в C++ (но всё равно хватает).
А на крестиках и на це ваш выбор – писать без UB.
1 парируется магазином: сдал и ждёшь возврата денег в течение месяца или сколько там допустимо по закону.
У вас немного странные знакомые, что проверяют возможность установки того, что им не надо, а не то, что оно не предустановлено.
Смотря какой срок будет для возврата. Если год – кому-то может приглянуться идея попользоваться новым айфоном, а потом вернуть его (и купить следующий).
Мы уже про более тонкое различие, когда компилятор не просто позволит программе упасть при обращении по этому адресу, а полагается на то, что программа не упадёт. Грубо говоря, код
имеет право не напечатать bad pointer перед падением.
Это было бы implementation-specific. Описано, что на этом железе падает – значит, падает.
Но штука именно в том, что программист обязан дать компилятору гарантию, что UB не будет. Например, есть у нас указатель, мы проверяем его младший бит и если тот равен 1 – выполняем какой-то код. Ok, работает. А теперь добавляем после if разыменование этого указателя – фигак, и наш код волшебным образом вырезало, потому что теперь указатель "гарантированно" кратен 4 (или 8).
А был бы implementation-defined – прога бы выполнила наш код, а потом упала.
Как обычно: потому что UB компилятор воспринимает, как контракт с программистом ("я никогда не буду этого делать"), и может, исходя из этого контракта, применять какие-то оптимизации. Нет никаких других причин, чтобы что-то было UB, а не implementation-defined.
Так он в аппсторе есть.
Это обычная практика. Покойный скайп с определённого момента был таким же, и тимс такой же (и на маке тащит внутри своего бандла эдж целиком). Оба ужасны, хотя это и не обязательно для такого приложения – например, VS Code норм.
Да, действительно, плюс/звезду забыл.
Да, примерно всегда. Но вы гляньте реализацию по ссылке :-)
s/\s+/ /g точно стоит написания целой статьи?
А, пардон – ещё trim. s/^ | $//g (если именно регэкспом)
/g или аналог в питоне не надо разве?
Нелинейное пространство, не рекомендую. Лучше перевести в Lab какой-нибудь.
Блокчейн наименее уязвим к этому. Достаточно выпустить один блок с пост-квантовой криптографией – и все предыдущие защищены.
Так вроде ж как раз это и убрали, нет? У меня с некоторых пор стоит "Unlimited hearts" – причём подписку не покупал, взломать не пытался.
Причём это не только в России, как раньше было. В какой-то момент стало сложней ("Practice to gain hearts" ограничили получением одной жизни когда у тебя ноль – нельзя накопить пять для "штурма"), а потом вот так, я так и не понял, почему.
Upd: пробы ради их выключил – стало 5:жизней. Решил для пробы включить обратно – на пункте меню пишет "get super", но при нажатии на него – просто включает. Android, 6.45.3.
А не надо ли для использования бета-фич подключаться к программе бета-тестирования приложения (которая может быть не всем доступна)?
Может, просто в промпте потребовать, чтобы смысл слова раскрывался?