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


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Vladimir Bormotov                    2:5020/400     11 Dec 2001  23:41:39
 To : Ђ«ҐЄб ­¤а „ҐаЄ з
 Subject : Re: Re[4]: goto нет в tcl
 -------------------------------------------------------------------------------- 
 
 
    Hi, arush!
 
 >>>>> "a" == arush  <arush@avest.org> writes:
 
 [skip три вложеных цикла, с goto "внаружу"ъ
 
 VB>>  a>> Как в таком случае без goto придется извращаться?
    
 
 VB>>  AK> Без того, что у тебя скрыто в ... и остального из функции это Г
 VB>>  AK> переделать нельзя.
  a>    (1)
  
 VB>>  а я бы еще хотел посмотреть на f1/f2/f3, на возможность развернуть
 VB>>  циклы, написать рекурентные формулы и так далее...
  a>    (2)
 
 VB>>  Hе, люди просто не понимают ;)
  
 VB>>  Кроме того что это оффтопик и нас сейчас погонят, я вот могу сказать, что
 VB>>  такие вложеные циклы говорят о том, что данные _представлены_ "некрасиво",
 VB>>  и как следсвие "лобовой метод обработки, с тупой оптимизацией".
  a>      (3)
 
  a> (3)А как интересно более красиво можно представить например трехмерную
  a> матрицу? 
  
  _любую_ матрицу - только массивом. Если же матрица "не любая", а например
  "разряженная", и имеет некоторых характер разряженности (который видимо
  проверяется вот в тех f1/f2/f3), то уже можно представить как-то
  интереснее, чем тупой массив. И обрабатывать это все дело соотвевенно
  эфективнее. 
  
  Матрица ведь в памяти материализуется на сама сразу, наведением лучча
  электронов на микросхемы памяти? Есть ведь некоторый вводд-вывод данных?
  Из фафла там, или из какого девайса?
  Почему-бы, например, не преиводить матрицу к удобному для обработки виду
  во время ввода?
  
  a> И с какой точки зрения красиво?  
   
  зависит от целей, которые ставятся.
  
  a> Если сточки зрения экономии памяти - это одно если сточки зрения
  a> максимального быстродействия - это друго, если с точки зрения
  a> абстрактных принципов так называемого "структурного программирования" -
  a> это может быть третье (но мне не нужное).  
  
  третье в чистом виде обычно никому не нужно кроме теоритков программирования. 
  Hо! очень характерно то, что если _думать_ над задачей с точки зрения
  "структурного программирования" (или любой другой методологии), то
  довольно просто получать варианты решений красивые с точки зрения скорости 
  и экономии памяти. Обычно получается некий компромис.
 
   
  a> Hе знаю чем вам не нравиться метод обработки "в лоб", 
  
  такие решения неэфективны, по большей части. ни по использованию мапяти,
  ни по использованию ресурсов процессора.
  
  a> но меня мало волнует какой метод обработки вам больше нравится - через
  a> зад, или с поднаподвыподвертом или еще как, поскольку все это слишком
  a> субъективно. Кому то удобнее писать x=y*128, а кому то - x=y shl 7.
 
  а я вот, запоминл одну интересную задачу. Как-то учитель математики мне
  привел...
  
  Дано: Пирамида. Каждая грань - треугольник. Боковые грани долиной a,b,c
  В вершине, прямые углы. 
  Hайти: объем.
  
  Да, он еще это все нарисовал, для наглядности.
  
  Я был молодой, сильный, складывал умножал быстро. И начал искать площать
  основания, и высоту.
  
  Hа что мне сказали "ты поступаешь как японский компьютер, это хорошо, но
  есть метод лучше. Пользоваться головой.". И просто повернул листочек, так, 
  что одна из боковых граней стала основанием. 
  
  Ответ тривиальный - a*b/2*c/3 
  
  a> (2) Интересно как можно избавиться от циклов, если в цикле по k мы
  a>    производим модификацию/запись/чтение данных в каждой итерации? 
  
  я не говорил "избавиться". Я говорил "развернуть".
  Возможно ли развернуть циклы -  нужно четко знать что там делается.
  Из приведеного не видно производится какая-то там модификация.
  
  a>  Рекурентные формулы с этим слабо связаны 
  
  опять-же, зачем в русском язке запятая знаем?  Конечно рекурентные формулы
  это другое. Hо это один из методов ОПТИМИЗАЦИИ. И если вызов функции
  делается от трех перебираемых индексов, то ПЕРВОЕ что я делаю - пытаюсь
  сделать формулу пересчета значения функции на основе значения ее-же,
  полученого на предидущей итерации. Всякие "оптимизации" могут попаять в
  _те_ вычисления. 
  
  В привденом примере, я не заметил никаких итеративных вычислений.
  
  a>  и разворачивание циклов здесь тоже не поможет (к тому же это гораздо
  a>  лучше делает компилятор).
 
  Компилятор? Hа во таком вызове цункции? и условии? 
  "Вы делаете мне смешно" (с)
  
  Еще можно предположить что процессор предскажет переход, и подгрузит в
  очередь кусок внешнего цикла...
  
  a> (1) Почему интересно вы считаете что это - "Г"? Потому что используется
  a> goto? 
  
  нет. Потому что если "не Г", то goto просто не получится ;)
  
  
  a> Тогда это уже религия и ничего общего с эфективностью она не имеет,
  a> поскольку ограничивает свободу программиста в выборе необходимых ему
  a> средств. 
  
  никто ничего не ограничивает. Люди высказывают свое мнение.
  
  a> К тому же религия бывает разной, кому-то циклы не понравились
  a> - избавимся от циклов, заменим их, например,
  
  a>     рекурсивными вызовами:
  
  ооо!!! Вот в рукурсии, кстати, всякие отсечения гораздо красивее делаются.
  тут я, двумя руками. остается подсчитать стоимость "вызова функции", и
  посмотреть, насколько эфективнее будет рукурсия для конкретного
  инсрумента. например в функциональных языках, это ваще чуть ли не основа.
  Многие даже циклы через рекусию пишут. 
 [skip]
 
  a>  Я не призываю пользоваться goto где нужно и где не нужно, просто
  a>  бывают случаи когда его использование позволяет добиться гораздо
  a>  большей эффективности и "красивости" кода.
 
  бывают, но их БЕЗМЕРHО МАЛО.
         
 
 -- 
    Bor.
 --- ifmail v.2.15dev5
  * Origin: BorHomeLand (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Re: goto нет в tcl   Alexander Dilevsky   10 Dec 2001 00:35:13 
 Re: goto нет в tcl   Andrey Khavryuchenko   10 Dec 2001 01:01:40 
 Re: goto нет в tcl   Alexander Dilevsky   10 Dec 2001 09:43:49 
 Re: goto нет в tcl   Andrey Khavryuchenko   10 Dec 2001 11:40:23 
 Re: goto нет в tcl   Vladimir Bormotov   10 Dec 2001 19:41:52 
 Re: goto нет в tcl   Andrey Khavryuchenko   11 Dec 2001 01:01:08 
 goto нет в tcl   Ilya S Slyzhnyak   13 Dec 2001 09:30:37 
 Re: goto нет в tcl   Serguei Khvatov   10 Dec 2001 12:52:41 
 Re: goto нет в tcl   Andrey Khavryuchenko   10 Dec 2001 14:01:36 
 Re[2]: goto нет в tcl   Ђ«ҐЄб ­¤а „ҐаЄ з   10 Dec 2001 20:47:24 
 Re: Re[2]: goto нет в tcl   Andrey Khavryuchenko   11 Dec 2001 01:01:09 
 Re: Re[2]: goto нет в tcl   Vladimir Bormotov   11 Dec 2001 06:21:54 
 Re[4]: goto нет в tcl   Ђ«ҐЄб ­¤а „ҐаЄ з   11 Dec 2001 14:28:47 
 Re: Re[4]: goto нет в tcl   Andrey Khavryuchenko   11 Dec 2001 15:22:12 
 Re: Re[4]: goto нет в tcl   Vladimir Bormotov   11 Dec 2001 23:41:39 
 Re: goto нет в tcl   Max Ischenko   10 Dec 2001 14:19:59 
 Re: goto нет в tcl   vitus@ice.ru   10 Dec 2001 11:32:14 
Архивное /ru.linux/2541b0ca829c.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional