Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Andrew Ezhguroff                     2:5020/400     10 Oct 2002  12:23:39
 To : Pavel P
 Subject : Re: Как закодировать?
 -------------------------------------------------------------------------------- 
 
 Привет! "Pavel P" <vprin@indiainfo.com>  сообщил(а):
 
  PP> Еще для организации циклов. А подавляющее большиство задач
  PP> к этому и сводиться: циклы, преобразования, обработка списков
  PP> и деревьев.
 
 Понятно, что циклы и рекурсия взаимозаменяемы. Hо я говорю о другом - о том,
 что некоторые алгоритмы "прозрачнее" в рекурсивном виде, а некоторые - в
 циклическом.
 
 Hо при этом "прозрачность" не гарантирует эффективность:
 
 Классический пример (не уверен, что правильно разобрался с синтаксисом
 языка) прозрачности при абсолютной неэффективности (во всяком случае при
 реализации в лоб; или Haskell умеет хранить промежуточные результаты и
 использовать их для оптимизации?):
 
 Fib 0 = 1
 Fib 1 = 1
 Fib x = Fib (x-1) + Fib (x-2)
 
  PP> Си не всегда интерпретаторы то догоняет. Perl со строками
  PP> быстрее чем С работает в области регулярных выражений.
 
 Программа, написанная на Си, работает с регулярными выражениями быстрее, чем
 Си? Забавная шутка...
 
  PP> То что с предпоследного это понятно. Hо статик ведет к тому
  PP> что при вызове этой функции из двух паралельных thread'ов
  PP> с большой вероятностью получишь не то что ждешь.
 
 Hо Си - не многопоточный язык (вероятно, к счастью - судя по тому, во что
 превратили многозадачность в Аде). В этом отношении лямбда-языки скорее
 всего имеют преимущество (во всяком случае Хоор для описания взаимодействия
 процессов использовал Лисп).
 
 Если нужен итерационный вариант для параллельных процессов, то
 
   static char  Buf[CHAR_BIT*sizeof(int)+1];
          char *Tmp = Buf+(sizeof(Buf)-1);
 
 меняем на (появился явный '\0'):
 
   char  Buf[CHAR_BIT*sizeof(int)+1];
   char *Tmp = Buf+(sizeof(Buf)-1);
   *Tmp='\0';
 
 , а
 
   return Tmp;
 
 меняем (для gcc) на:
 
   return strdup(Tmp);
 
 , либо (более стандартный вариант):
 
   return strcpy((new char[sizeof(Buf)-(Buf-Tmp)]), Tmp);
 
 Разумеется, этот вариант несколько медленнее (хотя и не слишком). И память,
 выделенную по strdup, или new, придется явно освобождать...
 
  >> Краткость - это только для ленивых.
  >> Прозрачность - это скорее для статей и учебников. В реальном
  >> программировании "прозрачность" в значительной степени обеспечивается
  >> комментариями (что автоматически снимает требование "краткости").
  PP> И то и другое незаменимо при поддержке и развитии большого
  PP> проекта.
 
 Прозрачность - да. Хотя при выборе между прозрачностью и эффективностью,
 скорее предпочтут эффективность. Hо вот что касается краткости - не
 согласен... Или ты не об этом,
 
  PP> Сортировка та же рекурсия, но конечная :)
 
 Быстрая сортировка - да. Hо ИМХО, большинство сортировок куда понятнее в
 "циклическом", чем в рекурсивном варианте.
 
 С уважением, Андрей.
 -- 
 Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
 --- ifmail v.2.15dev5
  * Origin: Talk.Mail.Ru (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Как закодировать?   Alexander Chislov   01 Oct 2002 16:42:22 
 Re: Как закодировать?   Ruslan Teluk   01 Oct 2002 19:17:39 
 Re: Как закодировать?   Alexander Chislov   02 Oct 2002 19:12:38 
 Re: Как закодировать?   Mike Makhov   02 Oct 2002 09:28:02 
 Re: Как закодировать?   Alexander Chislov   02 Oct 2002 19:26:54 
 Re: Как закодировать?   Mike Makhov   07 Oct 2002 09:30:38 
 Re: Как закодировать?   Alexander Chislov   07 Oct 2002 18:16:40 
 Re: Как закодировать?   Oleg I. Khovayko   02 Oct 2002 23:06:34 
 Re: Как закодировать?   Viktor Karev   03 Oct 2002 12:13:13 
 Re: Как закодировать?   Oleg I. Khovayko   03 Oct 2002 19:44:19 
 Как закодировать?   Egor Tsygvintsev   03 Oct 2002 22:50:20 
 Re: Как закодиpовать?   Sergey Bychkov   04 Oct 2002 01:42:17 
 Re: Как закодировать?   Andrew Ezhguroff   04 Oct 2002 09:45:58 
 Как закодировать?   Alexey Krasnov   05 Oct 2002 19:23:50 
 Re: Как закодировать?   Andrew Ezhguroff   07 Oct 2002 19:21:08 
 Re: Как закодировать?   Mike Makhov   08 Oct 2002 10:59:46 
 Re: Как закодировать?   Andrew Ezhguroff   08 Oct 2002 13:46:59 
 Re: Как закодировать?   Pavel P   08 Oct 2002 13:11:38 
 Re: Как закодировать?   Andrew Ezhguroff   08 Oct 2002 23:34:21 
 Re: Как закодировать?   Pavel P   09 Oct 2002 08:14:07 
 Re: Как закодировать?   Andrew Ezhguroff   09 Oct 2002 14:05:23 
 Re: Как закодировать?   Pavel P   09 Oct 2002 15:29:35 
 Re: Как закодировать?   Andrew Ezhguroff   10 Oct 2002 03:51:51 
 Re: Как закодировать?   Pavel P   10 Oct 2002 07:06:44 
 Re: Как закодировать?   Andrew Ezhguroff   10 Oct 2002 12:23:39 
 Re: Как закодировать?   Pavel P   10 Oct 2002 13:52:14 
 Re: Как закодировать? GA   Pavel P   10 Oct 2002 12:36:00 
 Вдогонку...   Andrew Ezhguroff   10 Oct 2002 04:50:37 
 Как закодировать?   Victor Bazhenov   10 Oct 2002 19:07:33 
 Как закодировать?   Victor Bazhenov   10 Oct 2002 19:29:44 
 Re: Как закодировать?   Pavel P   11 Oct 2002 06:29:11 
 Как закодировать?   Victor Bazhenov   11 Oct 2002 15:49:41 
 Re: Как закодировать?   Pavel P   12 Oct 2002 09:34:12 
 Как закодировать?   Victor Bazhenov   12 Oct 2002 12:10:49 
 Re: Как закодировать?   Pavel P   14 Oct 2002 06:49:20 
 Как закодировать?   Victor Bazhenov   14 Oct 2002 17:25:42 
 Re: Как закодировать?   Pavel P   15 Oct 2002 06:34:49 
 Как закодировать?   Victor Bazhenov   15 Oct 2002 18:04:55 
 Re: Как закодировать?   Pavel P   16 Oct 2002 07:28:29 
 Как закодировать?   Victor Bazhenov   16 Oct 2002 16:09:36 
 Как закодировать?   Egor Tsygvintsev   04 Oct 2002 21:34:38 
 Как закодировать?   Alexey Krasnov   06 Oct 2002 14:21:18 
 Как закодировать?   Egor Tsygvintsev   06 Oct 2002 22:28:46 
 Как закодировать?   Alex Cvetkov   07 Oct 2002 13:21:55 
 Как закодировать?   Ianos Gnatiuc   08 Oct 2002 22:43:11 
 Как закодировать?   Alexey Krasnov   09 Oct 2002 21:20:00 
 Re: Как закодировать?   Vitaly Slobodskoy   07 Oct 2002 22:01:27 
 Re: Как закодировать?   Sergey Andrianov   02 Oct 2002 08:46:38 
Архивное /ru.algorithms/6488ca862ecc.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional