Сообщение 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 штуки не превратят некорректный код в корректный. Максимум в чём они помогают — это раннее определение уже свершившегося бага
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 штуки не превратят некорректный код в корректный. Максимум в чём они помогают — это раннее определение уже свершившегося бага, да и то в рантайме
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 штуки не превратят некорректный код в корректный. Максимум в чём они помогают — это раннее определение уже свершившегося бага, да и то в рантайме