Re[4]: вдогонку
От: Pavel Dvorkin Россия  
Дата: 27.10.08 06:57
Оценка: -7
IT>>Вот здесь два примера того, как правильные высокоуровневые конструкции могут сделать код в разы проще, понятнее и эффективнее.

Полностью абстрагируясь от эффективного вычисления процентов , отмечу лишь, что сделать код с помощью каких-то высокоуровненвых конструкций проще — можно, понятнее — тоже можно, а вот эффективнее — дудки. Потому что предельно эффективная программа — это наилучшим образом оптимизированная программа, написанная на ассемблере. А в этом самом ассемблере есть только презренные присваивания, if, с грехом пополам циклы, и ни одной лямбды
With best regards
Pavel Dvorkin
Re[5]: вдогонку
От: Aen Sidhe Россия Просто блог
Дата: 27.10.08 07:01
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

IT>>>Вот здесь два примера того, как правильные высокоуровневые конструкции могут сделать код в разы проще, понятнее и эффективнее.


PD>Полностью абстрагируясь от эффективного вычисления процентов , отмечу лишь, что сделать код с помощью каких-то высокоуровненвых конструкций проще — можно, понятнее — тоже можно, а вот эффективнее — дудки. Потому что предельно эффективная программа — это наилучшим образом оптимизированная программа, написанная на ассемблере. А в этом самом ассемблере есть только презренные присваивания, if, с грехом пополам циклы, и ни одной лямбды


Если уж абстрагироваться полностью, то идеальный компилятор идеально (в плане эффективности) скомпилирует все наши лямбды и прочая в понятные процессору ифы и вайлы.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[6]: Жизнь внутри метода
От: Pavel Dvorkin Россия  
Дата: 27.10.08 07:04
Оценка: :)
Здравствуйте, samius, Вы писали:

S>Здравствуйте, FR, Вы писали:


Ответ обоим.

FR>>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>>Все же, если не сложно, сделай, пожалуйста, в разы проще, понятнее и эффективнее сортировку — любую.


FR>>http://www.haskell.org/haskellwiki/Introduction#Quicksort_in_Haskell

S>и
S>http://www.haskell.org/haskellwiki/Introduction#Ease_of_understanding
S>на всякий случай

У меня нет Хаскеля, проверить не могу.
Пожалуйста, приведи данные по скорости работы алгоритма на Хаскеле и на С, если они есть. Обещано же (хоть и не вами обоими) — эффективнее

"Мы обслужим вас быстро, дешево и качественно. Выберите любые два из этих трех слов"
With best regards
Pavel Dvorkin
Re[6]: вдогонку
От: Pavel Dvorkin Россия  
Дата: 27.10.08 07:07
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Если уж абстрагироваться полностью, то идеальный компилятор идеально (в плане эффективности) скомпилирует все наши лямбды и прочая в понятные процессору ифы и вайлы.


Да. Но не более эффективно, чем собственно ассемблер. В лучшем случае (см. выделенное мной) — не хуже. А ведь обещали на порядок — вот я и смеюсь.
With best regards
Pavel Dvorkin
Re[5]: Жизнь внутри метода
От: Трурль  
Дата: 27.10.08 07:09
Оценка: +2
Здравствуйте, FR, Вы писали:

PD>>Все же, если не сложно, сделай, пожалуйста, в разы проще, понятнее и эффективнее сортировку — любую.


FR>http://www.haskell.org/haskellwiki/Introduction#Quicksort_in_Haskell


Фишка в том, что этот Quicksort совcем не quick.
Re[8]: Жизнь внутри метода
От: _FRED_ Черногория
Дата: 27.10.08 07:09
Оценка: 1 (1)
Здравствуйте, netch80, Вы писали:

_FR>>>>и факториал как пример рекурсии

T>>>Убивать за такие примеры рекурсии.
_FR>>За что? Только за то, что "навязло" в зубах?
N>За методическую некорректность. Показывание рекурсии на примере факториала, при том, что рядом он считается просто и тривиально обычным циклом

Факториал — циклом? Реально считать надо таблицей (массивом), в котором индекс элемента — входное значение, а значение в массиве — результат. Но это так, ремарка, к делу отношения не имеющая.

N>Если бы я показывал рекурсию на каком-то примере, первый пример был бы взят максимально практический, причём такой, чтобы его нельзя было в одной функции свести в цикл. А уже после этого — числа Фибоначчи, а собственно факториал — уже в качестве упражнения (если на лекции — вызвать кого-то к доске и заставить преобразовать).


Например? Вот я точно знаю, что лично на меня лучше всего подействовал именно факториал, о нём и говорю. Какой может быть пример? Лучше сказать "такой-то", а я только слышу "какой-то не такой, другой" и т.п. Покажите, и дискуссия исчерпает себя. но помните, что про рекрсию надо рассказвать ещё школьникам (информатика в 10-11 классе).

N>И ещё одно — размахивание факториалом является косвенным указанием на то, что "рекурсия — это очень просто". Когда же выучивший такое сталкивается с реальной жизнью, когда перекладка алгоритма на рекурсивный лад в первую очередь крайне громоздка — следует шок.


Это уже к вопросу отношения не имеет: просто там вообще или нет. Бывает же по-разному.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Help will always be given at Hogwarts to those who ask for it.
Re[7]: Жизнь внутри метода
От: FR  
Дата: 27.10.08 07:10
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>У меня нет Хаскеля, проверить не могу.

PD>Пожалуйста, приведи данные по скорости работы алгоритма на Хаскеле и на С, если они есть. Обещано же (хоть и не вами обоими) — эффективнее

Программа на хаскеле конечно эффективнее, в смысле производительности пишущего (и читающего) код программиста.
В смысле производительности работы готового она малоэффективна. Но можно оптимизировать http://en.literateprograms.org/Quicksort_(Haskell) и все равно код будет проще сишного в разы а по производительности вполне к нему приблизится.
Re[7]: вдогонку
От: Aen Sidhe Россия Просто блог
Дата: 27.10.08 07:13
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Aen Sidhe, Вы писали:


AS>>Если уж абстрагироваться полностью, то идеальный компилятор идеально (в плане эффективности) скомпилирует все наши лямбды и прочая в понятные процессору ифы и вайлы.


PD>Да. Но не более эффективно, чем собственно ассемблер. В лучшем случае (см. выделенное мной) — не хуже. А ведь обещали на порядок — вот я и смеюсь.


Там шёл разговор о том, что эффективнее будет твоя работа, как программиста. Вместо написания 30 ифов и 50 вайлов — пара хайлевел инструкций.

ЗЫ: следует понимать, что про 30 и 50 — утрирование.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[8]: Жизнь внутри метода
От: _FRED_ Черногория
Дата: 27.10.08 07:15
Оценка: +1
Здравствуйте, _DAle_, Вы писали:

_DA>Есть такие программисты вроде меня, которые просто не могут понять, ну как можно "не вспомнить", как реализовывать бинарный поиск. Ну это же простейший кирпичик, который многие дети придумывают сами в школе на уроках информатики.


Как можно не помнить письмо Татьяны! Как можно не суметь выпить двадцать кружек пива за вечер! И т.д.… Про Холмса читали?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Help will always be given at Hogwarts to those who ask for it.
Re[7]: вдогонку
От: FR  
Дата: 27.10.08 07:15
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Да. Но не более эффективно, чем собственно ассемблер. В лучшем случае (см. выделенное мной) — не хуже. А ведь обещали на порядок — вот я и смеюсь.


Некторые современные компиляторы настолько хорошо оптимизируют, в том числе и в compile time что вручную на ассемблере их очень сложно обставить, особенно на нетривиальном коде.
А на порядок обещали поднять эффективность програмиста а не кода. Хотя я думаю на порядок не будет, но в разы да вполне возможно.
Re[6]: Жизнь внутри метода
От: _FRED_ Черногория
Дата: 27.10.08 07:17
Оценка:
Здравствуйте, Константин Л., Вы писали:

_FR>>То есть можно жертвовать надёжностью, модульностью, локализацией ради "читабельности"? Это при том, что мнение "чем локальнее объявление, тем лучше" можно считать верным (или нет?), а "читабельность" — величина субъективная?


КЛ>где ты увидел что я ими жертвую? private static. ни стейта, ни открытости.


Ну представь себе такой не очень маленький класс. Кому-то понадобилось дописать в него некий метод, в котором понадобился какой-то хелпер. Он смотрит: ага! кто-то добрый уже такой написал! и берёт его. Вот связанность и получилась. Когда же хелпер объявлен локально, "случайно", поошибке, "не правильно" заиспользовать его невозможно, нужно явно постараться.

КЛ>>>плюс от к захвату контекста все-же лучше прибегать с осторожностью.


_FR>>Вынося метод "наружу" ты позваляешь кому-то (а как ты запрещаешь? ага, никак!) к нему обратиться, тем самым увеличивая связаность. К лишней связаности надо относиться с ещё большим подозрением чем "к захвату контекста". Кстати, из за чего требуется осторожность? И, между прочим, мы же говорим о методах, не захватывающих контекст.


КЛ>связанность и там и там. только в одном случае по параметрам, в другом по локальным переменным. Наружу это куда? Я же написал — private.


Связанность с параметрами — нормальное дело. Это всё равно что утверждать, что класс связан со своими членами: конечно связан, только это "положительная связь", в том смысле, что не причиняет вреда и которую легко порвать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Help will always be given at Hogwarts to those who ask for it.
Re[5]: вдогонку
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 27.10.08 07:18
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>а вот эффективнее — дудки.


Тут вопрос: эффективнее чем что? Чем идеально оптимизированная программа — действительно вряд ли. А чем обычная — легко.
Чем выше уровнем конструкция, тем ближе она к смыслу операции, а не деталям реализации ("что?" вместо "как?"), и тем больше шансов, что хороший компилятор найдет более удачное решение.
Re[8]: вдогонку
От: Pavel Dvorkin Россия  
Дата: 27.10.08 07:28
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Там шёл разговор о том, что эффективнее будет твоя работа, как программиста.


Ну уж нет. Читай внимательно. Выделено мной.

IT>Вот здесь два примера того, как правильные высокоуровневые конструкции могут сделать код в разы проще, понятнее и эффективнее


Код!
With best regards
Pavel Dvorkin
Re[8]: Жизнь внутри метода
От: Pavel Dvorkin Россия  
Дата: 27.10.08 07:31
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>У меня нет Хаскеля, проверить не могу.

PD>>Пожалуйста, приведи данные по скорости работы алгоритма на Хаскеле и на С, если они есть. Обещано же (хоть и не вами обоими) — эффективнее

FR>Программа на хаскеле конечно эффективнее, в смысле производительности пишущего (и читающего) код программиста.


А это не обсуждалось. Вот что писал IT

IT>Вот здесь два примера того, как правильные высокоуровневые конструкции могут сделать код в разы проще, понятнее и эффективнее


А в смысле работы программиста — вот тебе самое эффективное решение из незабвенного "Hello, World"

Bob, could you please write me a program that prints "Hello,
world."? I need it by tomorrow.

With best regards
Pavel Dvorkin
Re[4]: Жизнь внутри метода
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 27.10.08 07:33
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это я тебе легко подскажу. Делается это так:


http://rsdn.ru/Forum/Default.aspx?mid=3151859&amp;flat=0
Автор: D. Mon
Дата: 25.10.08
Re[8]: вдогонку
От: Pavel Dvorkin Россия  
Дата: 27.10.08 07:34
Оценка:
Здравствуйте, FR, Вы писали:

FR>А на порядок обещали поднять эффективность програмиста а не кода. Хотя я думаю на порядок не будет, но в разы да вполне возможно.


Слушайте, господа, вы чего это все как будто сговорились ? Мне в третий раз приходится цитировать

IT>Вот здесь два примера того, как правильные высокоуровневые конструкции могут сделать код в разы проще, понятнее и эффективнее.


Где тут про эффективность труда программиста ? Тут именно про эффективность кода. Русским по белому.
With best regards
Pavel Dvorkin
Re[9]: вдогонку
От: FR  
Дата: 27.10.08 07:36
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Ну уж нет. Читай внимательно. Выделено мной.


IT>>Вот здесь два примера того, как правильные высокоуровневые конструкции могут сделать код в разы проще, понятнее и эффективнее


PD>Код!


Это

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)


по твоему не код?
Re[9]: вдогонку
От: Aen Sidhe Россия Просто блог
Дата: 27.10.08 07:38
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Aen Sidhe, Вы писали:


AS>>Там шёл разговор о том, что эффективнее будет твоя работа, как программиста.


PD>Ну уж нет. Читай внимательно. Выделено мной.


IT>>Вот здесь два примера того, как правильные высокоуровневые конструкции могут сделать код в разы проще, понятнее и эффективнее


PD>Код!


Придирки к словам, в случае, когда суть кристально понятна, вас не красит.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[9]: Жизнь внутри метода
От: FR  
Дата: 27.10.08 07:39
Оценка: +4
Здравствуйте, Pavel Dvorkin, Вы писали:


PD>А это не обсуждалось. Вот что писал IT


По моему тут только ты единственный его неправильно понял.

PD>А в смысле работы программиста — вот тебе самое эффективное решение из незабвенного "Hello, World"


Это уже работа непрограммиста
Re[6]: вдогонку
От: Pavel Dvorkin Россия  
Дата: 27.10.08 07:40
Оценка: -1
Здравствуйте, D. Mon, Вы писали:

DM>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>а вот эффективнее — дудки.


Уф, хоть один нормальный ответ

DM>Тут вопрос: эффективнее чем что? Чем идеально оптимизированная программа — действительно вряд ли. А чем обычная — легко.


Все зависит от того, что делаем. Если употребить неэффективный алгоритм, то, конечно, да, но язык тут ни при чем. Если неэффективно кодировать — тоже да (например, лишние ненужные действия). Если же обычная программа написана как следует (ты же не будешь утверждать, что обычняа == плохо написанная), то тут уже зависит от оптимизирующих возможносте компилятора.


DM>Чем выше уровнем конструкция, тем ближе она к смыслу операции, а не деталям реализации ("что?" вместо "как?"), и тем больше шансов, что хороший компилятор найдет более удачное решение.


Черт знает. Чем выше уровень, тем больше вероятность, что этот самый компилятор применит стандартное решение, которое как раз в этом случае лучше бы и не применять, может быть. Либо в нем должны быть зашиты эти самые "что" (это в конечном счете эквивалентно набору встроенных высокоэффективных решений). Но все "что" не встроишь, а вот оптимизировать детали можно всегда — на то они и детали, их немного.
With best regards
Pavel Dvorkin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.