Re[26]: Почему преждевременная оптимизация - корень всех зол
От: Юрий Жмеренецкий ICQ 380412032
Дата: 27.08.08 11:59
Оценка: 4 (1)
Здравствуйте, Sinclair, Вы писали:

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


E>>Еще раз: программисты ошибаются. ОШИБАЮТСЯ!

S>Пока что вся эта дискуссия показывает недостатки плюсов как языка по сравнению с полноценным ФП.
Мне тоже яблоки больше груш нравятся.

S>Если я правильно понимаю, на ФЯ написать некорректную реализацию max_element практически нереально.

S>Потому, что непустые последовательности там радикально отличаются от пустых. В итоге программист вынужден явно обработать все случаи:0, 1, и больше элементов.
Это и есть предусловия.

S>А все эти припрыгивания с лишним сравнением (которое предположительно снизит производительность для вырожденных случаев)

Производительность здесь вообще не является главным критерием(это скорее бонус).

Во-первых, каждую проверку необходимо поддерживать. Если сегодня есть 'a > 0', а завтра нужно сделать 'a > 1', то необходимо править _все_ вхождения.

Во-вторых, это банальная логика — прежде чем прыгнуть в басейн, я проверю уровень воды, а вы прыгните в любом случае, плюс необходимо будет добавить реакцию на исключение — "прыгнуть не получилось". Зачем ? А потом огрмное количство кода занимается обработкой таких вот фиктивных ошибок. А ведь этот код опять же, надо поддерживать.

Да, бывают такие места где проверить не получается(или это сложно) — там приходится прыгать.

eao197 пропагандирует defensive programming, где все(функции) друг другу не доверяют. Я, в принципе, применяю этот же подход, только более "крупномасштабно": функции разростаются до неких trusted regions, где данные могут существовать только если удовлетворяют некоторым условиям, а проверки происходят на их границах. Это снижает количество проверок, локализует места появления багов, делает логику более чистой, но за это необходимо платить некоторую цену — в данном случае соблюдение контрактов. Где-то помогает типизация, где-то тестирование. С++ не навязывает своих решений.

S>и надеждой на корректную обработку [b]неочевидных контрактов[b] — соревнования в эквилибристике.

Вот кому неочевидно, тому остается только надеятся.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.