Re[37]: Они сделали дерьмо опять
От: Kluev  
Дата: 13.07.20 12:47
Оценка: :)
Здравствуйте, so5team, Вы писали:

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


K>>"Всегда будет" — это громкие, но пустые заявления. Вот к примеру простой жизненный пример: итерация пар соседних элементов в массиве для вычисления длинны полилинии


K>>
K>>    double len = 0;
K>>    for (int i = 0; i < points.size() - 1; i++)
K>>        len += distance(point[i], point[i + 1]);
K>>    return len;

K>>


K>>Один универсальный цикл на все случаи жизни. Никакие дополнительные ветки не нужны. В std::С++ такое естественно работать не будет, std-программист либо наступит на грабли, либо будет вынужден погрузиться в микро-менеджмент и "перебрасывать слагаемые"


S>А теперь представим, что в процессе сопровождения и оптимизации у вас points из вектора превратился в простой список или список чанков. И у вас больше нет индекса, зато есть итераторы, которые позволяют вам итерироваться по новому контейнеру последовательно.


А давайте представим, что земля завтра налетит на небесную ось?
У классов на основе списков и на основе массивов разные сценарии использования, и если требуется то такие в программе живут параллельно, а не переделываются из одного в другой.

S>Ведь ваш цикл останется именно таким на все случаи жизни, не правда ли?


S>Ну или давайте посмотрим на знаковые индексы/размерности с другой стороны. Насколько они удобны не для последовательных итераций, а для произвольного доступа. Вот у нас есть вектор v размера N и мы по сложной формуле вычисляем позицию i в этом векторе. А перед обращением к v(i) нам нужно убедится, что i валидный. Что нам потребуется?


S>Потребуется написать два условия в проверке:

S>
S>if(i >= 0 && i < N)
S>

S>вместо всего одной для случая беззнаковых размеров и индексов.

Это вам потребуется. А мне потребуется написать

if (vec.valid_index(i))


Я использую свои классы с рациональным набором операций

S>Так вот, поскольку вы наверняка не поймете к чему я привожу эти примеры,


Если вы себя официально позиционируете умнее своего собеседника, то вам надо видеть хотя-бы дальше своего носа. Но в вашем наивном примере, в якобы эффективном переходе от двух сравнений в if(i >= 0 && i < N) к одному в беззнак.арифметике, вы не видите леса за своим носом. Если вы "вычисляете" индекс в беззнаковой арифметике, то чтобы избежать переполнения ваши проверки просто переедут из кода обращения к массиву, в код вычисления индекса. Причем их число будет пропорционально размеру кода. В знаковой арифметике вы откупаетесь одним простым и эффективным if(i >= 0 && i < N)

S> мораль сей басни такова: ваш "малолетний дебилизм" состоит в том, что вы признаете единственно правильной только свою точку зрения. И в упор отказываетесь принимать тот факт, что ни у знаковых размерностей, ни у беззнаковых нет абсолютных преимуществ во всех сценариях использования. А раз так, то какой бы выбор не был сделан, всегда будут сценарии, когда сделанный выбор ведет либо к проблемам, либо к дополнительным накладным расходам.


Вы так говорите как будто каждый раз в коде делаете осознанный выбор в пользу знак. или беззнак. индексов. На самом деле кушаете то, что подают в стл. Мой осознанный выбор знаковая арифметика. Согласитесь что в такой ситуации ваши нравоучения и напыщенное сектанство не уместны. Вы — человек действующий шаблонно по указивке комитета, пытаетесь поучать человека действующего осознанно. Это просто смешно.


S>Понимай вы это, вы бы не позволили себе высказывания в стиле юношеского максимализма, вроде: "Человек который имеет другую точку зрения, конечно имеет на нее полное право, но по сути является садомазохистом и не подходит для принятия общественно значимых решений по моральным качествам." Именно такой юношеский максимализм в ваших высказываниях и позволяет классифицировать вас как "малолетнего дебила".


А вас как великовозрастного.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.