Информация об изменениях

Сообщение Re[24]: Да ну и фиг с этой Java-ой. .Net будет убит Rust-ом от 09.08.2016 17:25

Изменено 09.08.2016 17:28 Evgeny.Panasyuk

Здравствуйте, ·, Вы писали:

EP>>·>В С++ — другая крайность. Индекс вообще проверяться не будет (вычислили значение i по таблице неправильно и бабах).

EP>>·>А если захочешь безопасностьи то вместо vect[i] будешь использовать vect.at(i) и компилятор С++ столкнётся с той же бедой, что и сишарп.
EP>>Есть третий вариант: во время разработки и тестирования включаются asserts, checked iterators и прочий defensive programming,
·>А во время эксплуатации что делать? Молитву о здравии заказывать?

Тестировать код — это нужно в любом случае. Все эти defensive примочки от багов не исцеляют, а лишь смягчают последствия фейла.

·>Довольно рисково иметь разный код в дебаге и релизе.


Тестируй и debug и release если есть какие-то сомнения в отсутсвии side-effect'ов у assert'ов.

·>assert вот как-то не прижился в managed языках...


ЕМНИП Sinix рассказывал что использует их во всю как раз в managed языке.

EP>>которые помогают отлавливать подобные проблемы

·>Мало они помогают. Переносят проблемы с плеч компилятора на плечи программиста. Угадай — кто чаще ошибается?

Задача писать корректный код лежит на плечах программиста, и никакие defensive штуки не превратят некорректный код в корректный. Максимум в чём они помогают — это раннее определение уже свершившегося бага
Re[24]: Да ну и фиг с этой Java-ой. .Net будет убит Rust-ом
Здравствуйте, ·, Вы писали:

EP>>·>В С++ — другая крайность. Индекс вообще проверяться не будет (вычислили значение i по таблице неправильно и бабах).

EP>>·>А если захочешь безопасностьи то вместо vect[i] будешь использовать vect.at(i) и компилятор С++ столкнётся с той же бедой, что и сишарп.
EP>>Есть третий вариант: во время разработки и тестирования включаются asserts, checked iterators и прочий defensive programming,
·>А во время эксплуатации что делать? Молитву о здравии заказывать?

Тестировать код — это нужно в любом случае. Все эти defensive примочки от багов не исцеляют, а лишь смягчают последствия фейла.

·>Довольно рисково иметь разный код в дебаге и релизе.


Тестируй и debug и release если есть какие-то сомнения в отсутсвии side-effect'ов у assert'ов.

·>assert вот как-то не прижился в managed языках...


ЕМНИП Sinix рассказывал что использует их во всю как раз в managed языке.

EP>>которые помогают отлавливать подобные проблемы

·>Мало они помогают. Переносят проблемы с плеч компилятора на плечи программиста. Угадай — кто чаще ошибается?

Задача писать корректный код лежит на плечах программиста, и никакие defensive штуки не превратят некорректный код в корректный. Максимум в чём они помогают — это раннее определение уже свершившегося бага, да и то в рантайме