Цитата(TarasBer @ 1.09.2011 10:23)
Действительно, зачем компилятор заставляет машину два раза считать функцию, а человека - вручную кешировать результат функции?
Это неизбежные издержки. Была бы функция для куба или хотя бы для степени - этого делать было бы не нужно
в данном случае. А так - приходится выбирать "меньшее из зол". Выделенные болдом слова являются ключевыми. Не в этом, так в другом случае придется что-то "кешировать". Сама по себе математическая запись тоже не идеальна. Все доказательства пестрят словами "обозначим это выражение через Q". И что это, по-твоему, как не "кеширование"? ))
Сомневаюсь, что возможно сделать компилятор, который будет совершенно свободен от этого "недостатка". Оптимизация, конечно, может это учесть (то есть, минимизировать количество вычислений для данного конкретного случая) - но, мне кажется, ты, Тарас, первый взвоешь от такой оптимизации (извини за переход на личности)).