Dmitrii Kashin -> [email protected] @ Thu, 15 Oct 2015 21:02:49 +0300:
>>> 1) Позволяет более просто комбинировать функциональное и императивное >>> программирование: не надо изворачиваться монадами, чтобы добиться >>> последовательного выполнения команд. >>> >> Но зачем? DK> "This is no matter of religion or esthetics; a priori neither style is DK> prettier or holier than the other. On the contrary, one style may be DK> more adequate than the other depending on the problem to be solved. DK> The first rule to apply is the rule of simplicity. Whether the algorithm DK> to use implemented is written in a book, or whether its seed is in the DK> mind of the programmer, the algorithm is itself described in a certain DK> style. It is natural to use the same style when implementing it. DK> The second criterion of choice is the efficiency of the program. One may DK> say that an imperative program (if well written) is more efficient that DK> its functional analogue, but in very many cases the difference is not DK> enough to justify complicating the code to adopt an imperative style DK> where the functional style would be natural". [1] DK> Бывает, что императивное программирование разумнее. Большинство DK> алгоритмов можно писать в функциональном стиле, но бывает и так, что это DK> порождает большой оверхед в производительности. При столкновении с DK> подобным "узким горлом" приходится реализовывать часть функционала в DK> императивном стиле. Например, управление большими словарями много DK> выгоднее, если они мутабельны. Было бы клево еще не путать императивность с мутабельностью... Кстати, употребление самого слова "словарь" подразумевает, что операция его изменения по сравнению с операцией запроса - редкая, что вызывает резонный вопрос, управление ли словарем надо оптимизировать... А поиск, я подозреваю, при параллельных запросах будет оптимальнее как раз в иммутабельном случае. Но в любом случае последовательное выполнение команд, даже в императивном случае - не цель, а в лучшем случае средство. Зачем его отдельно добиваться?

