ПРИМЕЧАНИЕ. Уже сделана это Wiki. Меня не волнует, что этот вопрос отмечен как, пока есть хорошая дискуссия.
Я слышал, что, поскольку в чистых функциональных программах нет побочных эффектов, а значения не мутируют, это упрощает компилятор для большей оптимизации времени выполнения. Насколько это верно?
Если это правда, моя следующая забота заключается в том, какова потеря в свободе, для которой мы торгуем этим? Я имею в виду, что в таких языках, как С++/C, разработчик полностью контролирует и может настраивать множество вещей. Если мы отдадим эту работу компилятору, мы потеряем эту возможность. Яркая сторона этого заключается в том, что даже не-эксперт-программист может писать хороший код. Кроме того, в эти дни с таким количеством слоев кеша в архитектуре машины может быть даже эксперт, который не может действительно сделать что-либо стоящее. Итак, делегирование этой работы компилятору, который знает больше о базовой архитектуре, чем программист, является хорошей идеей.
Каковы ваши предложения?