Как стать автором
Поиск
Написать публикацию
Обновить
5
0.7

Пользователь

Отправить сообщение

Хм... Резинка могла бы и энергию деформации в электричество преобразовывать.

Много лет прошло, уже давно не "переносимый ассемблер". Вот и...

Именно что оставить возможность для оптимизации. Там порой не в наносекунды упирается, а выкидываются огромные куски ненужного кода. Причём код библиотек на C++ (где куча метапрограммирования на темплейтах) порой на эти оптимизации закладывается (простите, что перескочил от C к C++).

Не хотите этого безумия – меняйте язык. В более поздних языках гораздо, гораздо меньше UB. Типа пусть прога будет чуть медленнее, но программист не сойдёт с ума. Плюс многие моменты обошли за счёт более совершенной системы типов – и таки могут применять оптимизации.

Ну и даже в чистом C, насколько я помню, UB меньше, чем в C++ (но всё равно хватает).

А на крестиках и на це ваш выбор – писать без UB.

1 парируется магазином: сдал и ждёшь возврата денег в течение месяца или сколько там допустимо по закону.

У вас немного странные знакомые, что проверяют возможность установки того, что им не надо, а не то, что оно не предустановлено.

Смотря какой срок будет для возврата. Если год – кому-то может приглянуться идея попользоваться новым айфоном, а потом вернуть его (и купить следующий).

Мы уже про более тонкое различие, когда компилятор не просто позволит программе упасть при обращении по этому адресу, а полагается на то, что программа не упадёт. Грубо говоря, код

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 норм.

Да, примерно всегда. Но вы гляньте реализацию по ссылке :-)

s/\s+/ /g точно стоит написания целой статьи?

А, пардон – ещё trim. s/^ | $//g (если именно регэкспом)

Нелинейное пространство, не рекомендую. Лучше перевести в Lab какой-нибудь.

Блокчейн наименее уязвим к этому. Достаточно выпустить один блок с пост-квантовой криптографией – и все предыдущие защищены.

Так вроде ж как раз это и убрали, нет? У меня с некоторых пор стоит "Unlimited hearts" – причём подписку не покупал, взломать не пытался.

Причём это не только в России, как раньше было. В какой-то момент стало сложней ("Practice to gain hearts" ограничили получением одной жизни когда у тебя ноль – нельзя накопить пять для "штурма"), а потом вот так, я так и не понял, почему.

Upd: пробы ради их выключил – стало 5:жизней. Решил для пробы включить обратно – на пункте меню пишет "get super", но при нажатии на него – просто включает. Android, 6.45.3.

А не надо ли для использования бета-фич подключаться к программе бета-тестирования приложения (которая может быть не всем доступна)?

Может, просто в промпте потребовать, чтобы смысл слова раскрывался?

1
23 ...

Информация

В рейтинге
2 728-й
Зарегистрирован
Активность