Size: a a a

2020 March 13

ПК

Побитый Кирпич in pro.cxx
Dmitriy Salko
UB есть же unspecified и Undefined
Под UB обычно понимают Undefined behavior
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
вроде под UB понимают только Undefined
источник

AZ

Alexander Zaitsev in pro.cxx
ой, простите
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
Побитый Кирпич
Типа ручной контроль, все дела, сишники это обожают
ой не надо лохматить бабушку
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
во-первых реальный UB контролировать невозможно -- я привел пример, во-вторых компилятор почему-то никого не предупреждает, когда радостно начинает резать углы
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
особенно радуются все когда какой-нибудь цикл так срезают и потом нихрена молча не работает
источник

AZ

Alexander Zaitsev in pro.cxx
чувствуется некоторое непонимание внутрянки компилятора
источник

ПК

Побитый Кирпич in pro.cxx
Vyacheslav Olkhovchenkov
во-первых реальный UB контролировать невозможно -- я привел пример, во-вторых компилятор почему-то никого не предупреждает, когда радостно начинает резать углы
> почему-то никого не предупреждает

Это именно то о чём я говорил, компилятор не детектит UB, что увеличивает скорость компиляции и упрощает реализацию
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
Alexander Zaitsev
чувствуется некоторое непонимание внутрянки компилятора
и не хочу понимать, принципиально.
источник

AZ

Alexander Zaitsev in pro.cxx
Vyacheslav Olkhovchenkov
и не хочу понимать, принципиально.
ну тогда кушайте, что дают
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
Побитый Кирпич
> почему-то никого не предупреждает

Это именно то о чём я говорил, компилятор не детектит UB, что увеличивает скорость компиляции и упрощает реализацию
в результате имеем менее надежный код, ура!
и чем больше в стандарт занесем UB, тем менее надежный будут программы, зато компиляторы проще
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
ubsan в руки
источник

ПК

Побитый Кирпич in pro.cxx
Vyacheslav Olkhovchenkov
во-первых реальный UB контролировать невозможно -- я привел пример, во-вторых компилятор почему-то никого не предупреждает, когда радостно начинает резать углы
> реальный UB контролировать невозможно

Программист его не контролировать должен, а ИЗБЕГАТЬ. То есть валидация С++ кода перекладывается с компилятора на программиста, компилятор теперь может допускать на входе невалидную программу, валидировать её должен программист самостоятельно
источник

PK

Pavel Kazakov in pro.cxx
Vyacheslav Olkhovchenkov
и не хочу понимать, принципиально.
на плюсах ты пишешь под абстрактную машину C++, которая описана в стандарте, и там же написано какие вещи компилятор покрывает матом, а для каких прописано NDR -- no diagnostic required, поэтому для начала надо понимать какими сортами прострелов коленей ты хочешь пользоваться, прежде чем затевать крестовый поход на плюсы)
источник

ПК

Побитый Кирпич in pro.cxx
Vyacheslav Olkhovchenkov
в результате имеем менее надежный код, ура!
и чем больше в стандарт занесем UB, тем менее надежный будут программы, зато компиляторы проще
в результате имеем больше скорости и меньше памяти
источник

PK

Pavel Kazakov in pro.cxx
... и если это еще не понятно, то welcome to real world сейчас
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
Побитый Кирпич
в результате имеем больше скорости и меньше памяти
но при этом результат -- говно
источник

ПК

Побитый Кирпич in pro.cxx
Vyacheslav Olkhovchenkov
но при этом результат -- говно
Зато не скучаешь)
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
Pavel Kazakov
на плюсах ты пишешь под абстрактную машину C++, которая описана в стандарте, и там же написано какие вещи компилятор покрывает матом, а для каких прописано NDR -- no diagnostic required, поэтому для начала надо понимать какими сортами прострелов коленей ты хочешь пользоваться, прежде чем затевать крестовый поход на плюсы)
пока не начали массово втаскивать абы что в UB и потом говорить что для UB оптимизируем как хотим -- все было норм.
источник

m

magras in pro.cxx
Vyacheslav Olkhovchenkov
но при этом результат -- говно
А какие альтернативы?
Все обращения к указателям проверять на ноль?
Отлично, а что делать с обращением к адресу равному 1?
Значительную часть UB просто невозможно диагностировать.
источник