История изменений
Исправление hateyoufeel, (текущая версия) :
Вы показали какой-то школьный пример, который не имеет никакого отношения к сколько-нибудь серьезной обработке данных.
Покажи мне пример серьёзной обработки данных. Можно на примере опенсорцного софта на C++. Потому что тот код, с которым мне приходилось работать, часто представлял собой дикую лапшу на «Си с классами».
Тривиальные случаи, когда нужно проитерироваться по массиву в C++ уже давно решаются посредством range for из C++11.
Решаются кем? Кода, использующего for с счётчиком, всё ещё вагоны.
Даже если мы говорим о 2% от общего числа, то все равно остается вопрос о том, а как доверять результатам нашей ручной оптимизации?
Это другой вопрос, который решается другими средствами. Здесь штука в том, что мы можем сократить количество кода, в котором потенциально может быть ошибка, со 100% до 2%. То есть, в 50 раз. И мы сможем гарантировать, что в 98% кода этой ошибки не будет.
Ну так тесты можно применять и сейчас, без навешивания проверок в реализации operator[].
Чувак, средняя C++-обезьяна понятия не имеет про разницу между .at()
и []
. Я не шучу. Куча народа пишут код вообще не приходя в сознание. И ты прекрасно об этом знаешь.
Мы тут можем бесконечно обсасывать, что мол настоящие программисты на C++ таких ошибок не совершают, но статистика по CVE показывает совершенно другое.
Исходная версия hateyoufeel, :
Вы показали какой-то школьный пример, который не имеет никакого отношения к сколько-нибудь серьезной обработке данных.
Покажи мне пример серьёзной обработки данных. Можно на примере опенсорцного софта на C++.
Тривиальные случаи, когда нужно проитерироваться по массиву в C++ уже давно решаются посредством range for из C++11.
Решаются кем? Кода, использующего for с счётчиком, всё ещё вагоны.
Даже если мы говорим о 2% от общего числа, то все равно остается вопрос о том, а как доверять результатам нашей ручной оптимизации?
Это другой вопрос, который решается другими средствами. Здесь штука в том, что мы можем сократить количество кода, в котором потенциально может быть ошибка, со 100% до 2%. То есть, в 50 раз. И мы сможем гарантировать, что в 98% кода этой ошибки не будет.
Ну так тесты можно применять и сейчас, без навешивания проверок в реализации operator[].
Чувак, средняя C++-обезьяна понятия не имеет про разницу между .at()
и []
. Я не шучу. Куча народа пишут код вообще не приходя в сознание. И ты прекрасно об этом знаешь.
Мы тут можем бесконечно обсасывать, что мол настоящие программисты на C++ таких ошибок не совершают, но статистика по CVE показывает совершенно другое.