Тут в PCWeek...

Apr 17, 2012 22:33

...некий идиот про Хаскель пишет. Идиот потому, что принимает желчное брюзжание Харпера за доброжелательную критику. И потому, что считает, что ленивые вычисления могут создать проблему в проекте с участием нескольких людей.

Сим прошу редакцию PCWeek унять этого идиота.

Меня не послушают, но не высказаться не мог.

СМИ, не люблю, Хаскель

Leave a comment

Comments 14

jdevelop April 17 2012, 19:15:39 UTC
лично мне не очень понятна необходимость в IO монаде, которая как бы обязывает, писать костыли вида

(C.do_curl_ $!) ....

Reply

thesz April 17 2012, 20:07:09 UTC
Прошу прощения, но я не понимаю, что вы написали.

Reply

jdevelop April 17 2012, 20:15:16 UTC
https://github.com/jdevelop/lj-autorespond/blob/master/LJAutorespond.hs

строка 69, если убрать конструкцию с $! - то работать нифига не будет, что неочевидно ни разу

Reply

thesz April 17 2012, 20:46:19 UTC
Что говорят авторы?

Reply


vshabanov April 17 2012, 21:58:12 UTC
У него еще по первой же ссылке Феномен Haskell, перечислены пункты и написано, что к ним подходит и питон, хотя он подходит от силы к двум-трем пунктам.

А про "дни и дни на тюнинг" ленивых вычислений уже давно неправда. В ghc 7.4, программа в режиме профилирования почти не тормозит. Врубив heap profiling и написав простенький скрипт можно смотреть расход памяти прямо в процессе работы программы. Я, посмотрев на выхлоп, достаточно быстро сообразил, что не форсируется Map-ка, при удалении из нее элементов "(368150)bin/delete.go..." и кушается память в dns-кеше "(6747)resolveA...". Причем последнее навело меня на мысль "ооо, там же bytestring вместо text, вот она откуда фрагментация памяти появилась"

Так что утечки ловить достаточно просто, ибо есть для этого инструмент.

Кстати, фрагментация памяти очень сильно просаживает производительность, так что не стоит применять bytestring-и для долгоживущих данных (особенно если они выделяются не одним махом, а по чуть-чуть, в разных кусках памяти, как было у меня с dns-кешем).

Reply

thesz April 17 2012, 23:58:21 UTC
Товарищ феерический, ты совершенно прав.

Фрагментация тормозит программу в десять раз, даже чуть больше, недавно убедился. ;)

Reply

zelych April 18 2012, 12:37:29 UTC
"ооо, там же bytestring вместо text, вот она откуда фрагментация памяти появилась"

а почему text не способствует фрагментации?
мне казалось что они одинаково внутри устроены.

сейчас вот заглянул в исходники, первое что бросилось в глаза: в байтстроке ForeignPtr, а в тексе Array.
т.е. сборка мусора спасает.
так?

Reply

vshabanov April 18 2012, 18:08:14 UTC
ForeignPtr в pinned memory, т.е. не перемещается по куче (что удобно при работе с Си). Array может перемещаться, убирая фрагментацию

Reply


dmzlj April 18 2012, 02:48:35 UTC
непонятно, чего он вообще именно к хаскеллу прикопался. это не мейнстрим по любому. кто хочет --- пишет, кто не хочет --- не пишет. наверное, просто хотел что-то умное написать

Reply


(The comment has been removed)

thesz April 18 2012, 12:30:28 UTC
Со стороны выглядит, как не разобравшийся в проблеме идиот.

Буду я ещё в сортах журналистов разбираться. ;)

Reply


Leave a comment

Up