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)