
Сообщение от
rikimaru2013
что такое side-effects и с чем их едят?
побочные эффекты.
любая ботва, которая может неявно (скрытно от программиста) влиять на среду.
например, первая функция подкрутила гайки глобальной переменной
а вторая функция рассчитывает на то, что этой переменной кто-то подкрутит гайки.
в чем тут подвох?
логика второй функции зависит от логики первой.
нельзя поправить первую функцию без учета второй,
есть риск, что она поломается.
другой пример:
какой то идиот вкрячил в конструктор копии сайд эффект:
инициализацию базы данных.
в релизе компилятор оптимизировал конструкторы копии
забив на все побочные эффекты (copy elision)
а потом приперся на форум,
и выложил километр своего говнокода со словами:
"у меня тут чота не работает"
третий пример:
по стандарту, циклы без побочных эффектов
(без изменения внешнего состояния) - UB
почитайте про то, как компилятор сумел доказать теорему Ферма:
http://habrahabr.ru/post/229963/
там есть ссылки на оригинальный текст.
а ниже - перевод на русском.