[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Стабильная система?



Dmitrii Kashin -> debian-russian@lists.debian.org  @ 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> выгоднее, если они мутабельны.

Было бы клево еще не путать императивность с мутабельностью...

Кстати, употребление самого слова "словарь" подразумевает, что операция
его изменения по сравнению с операцией запроса - редкая, что вызывает
резонный вопрос, управление ли словарем надо оптимизировать...  А поиск,
я подозреваю, при параллельных запросах будет оптимальнее как раз в
иммутабельном случае.

Но в любом случае последовательное выполнение команд, даже в
императивном случае - не цель, а в лучшем случае средство.  Зачем его
отдельно добиваться?


Reply to: