Re[3]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 06:50
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>Все вышесказанное верно, но тут есть интересный момент, про который часто забывают говоря о C++ – санитарайзеры. Я наугад взял два примера из приведенных тобой и собрал следующим образом:


Так это примеры. Они намеренно очевидны, и санитайзеры опознают их ситуации. Я же говорю, что для подавляющего большинства кода нужен не какой-то санитайзер особый, а просто постоянно действующий контроль и более очевидные правила. Например, с тем же переполнением — если санитайзер не заподозрил проблему, то он допустит сложение со скрытым переполнением, а по-нормальному должен проверить и сигнализировать ошибку.

Причём он должен давать не тяжёлый вылет (типичный санитайзер генерирует недопустимую процессорную инструкцию), а нормальное исключение или его выбранный аналог (например, установку переменной — флага ошибки).

И эти санитайзеры пока что есть ой далеко не везде, никакой стандарт их не требует. (Неудивительно.)

KP>Так что с одной стороны проблемы есть, наследие тяжелое, грабли тщательно прикрыты листьями и т.д. С другой стороны, знать наизусть про то, где и как разложены грабли не надо, надо писать юнит-тесты и гонять их под всеми имеющимися санитайзерами и в общем случае проблемы не будет, ну или она будет сопоставима по сложности с проблемами в управляемых языках.


Нет, совсем как в управляемых — ты не добьёшься.
То, что санитайзеры, если доступны, должны входить в базовый набор инструментов — да, согласен.
Но это как те assert'ы, которые в релизном варианте не включаются. В 70-х, может, такой подход был и нормален. Сейчас — нет, нормально это когда 95% таких ассертов всё равно оставлены, а убраны только там, где критично по скорости.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.