Re: Как закодировать?

From
Pavel P ()
To
Andrew Ezhguroff
Date
2002-10-10T13:52:14Z
Area
RU.ALGORITHMS
 <ao2fd4$dik$1@host.talk.ru> <ao2qp5$2a62$1@ddt.demos.su> <ao3ddj$15m$1@host.talk.ru>
From: "Pavel P" <vprin@indiainfo.com>


"Andrew Ezhguroff" <eandr@com2com.ru> wrote in message
news:ao3ddj$15m$1@host.talk.ru...
> Привет! "Pavel P" <vprin@indiainfo.com>  сообщил(а):
>
>  PP> Еще для организации циклов. А подавляющее большиство задач
>  PP> к этому и сводиться: циклы, преобразования, обработка списков
>  PP> и деревьев.
>
> Понятно, что циклы и рекурсия взаимозаменяемы. Но я говорю о другом - о
том,
> что некоторые алгоритмы "прозрачнее" в рекурсивном виде, а некоторые - в
> циклическом.
>
> Но при этом "прозрачность" не гарантирует эффективность:

Согласен. Но! Для построения прототипа программы я могу писать все
прозрачно. Потом если скорость чего либо меня не устраивает, я могу
переписать нужные мне куски. Они станут менее прозрачными, но более
эффективными. Но все переписывать мне не придется. В этом я полностью
убедился при реализации распаковывателя GIF файлов. То есть... о чем это
я ... :) Делается прозрачный прототип проекта, а потом отшлифовывается
его медленная часть ( как и в любом другом языке ).

> Классический пример (не уверен, что правильно разобрался с синтаксисом
> языка) прозрачности при абсолютной неэффективности (во всяком случае при
> реализации в лоб; или Haskell умеет хранить промежуточные результаты и
> использовать их для оптимизации?):
>
> Fib 0 = 1
> Fib 1 = 1
> Fib x = Fib (x-1) + Fib (x-2)

Логично. Но для прототипа самое то. Это потом я просто заменю на

fib 0 = 1
fib 1 = 1
fib x = f x (1, fib 0, fib 1)
where
   f x (n, fnx2, fnx1) = if (x == n) fnx1 (f x (n + 1, fnx1, fnx2 + fnx1))

и получу максимальную эффективность :) все не так плохо :)

[....]
>  >> Краткость - это только для ленивых.

Лень - двигатель прогресса :)

>  >> Прозрачность - это скорее для статей и учебников. В реальном
>  >> программировании "прозрачность" в значительной степени обеспечивается
>  >> комментариями (что автоматически снимает требование "краткости").
>  PP> И то и другое незаменимо при поддержке и развитии большого
>  PP> проекта.
>
> Прозрачность - да. Хотя при выборе между прозрачностью и эффективностью,
> скорее предпочтут эффективность. Но вот что касается краткости - не
> согласен... Или ты не об этом,

Для прототипа я выберу прозрачность, для релиза - эффективность,
но только отдельных критических мест.

Я о краткости записи алгоритмов, не имен функций и переменных, а
только алгоритмов.

B.R.
Pavel



--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)